加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux 学习之路(十):磁盘及文件系统管理

发布时间:2022-11-19 11:34:52 所属栏目:Linux 来源:
导读:  磁盘及文件系统管理 文件系统访问控制列表

  setfacl

  ? -b Remove all

  ? -m

  ? -k

  块位图:bitmap

  硬链接:多个文件的路径指向同一个inode号

  软链接|符号

  磁盘及文件系统管理 文件系统访问控制列表
 
  setfacl
 
  ? -b Remove all
 
  ? -m
 
  ? -k
 
  块位图:bitmap
 
  硬链接:多个文件的路径指向同一个inode号
 
  软链接|符号链接:
 
  该文件被硬链接的次数drwxr-xr-x. 4 root root88 9月 3 13:43 airflow 创建链接 ln [-s -v] SRC DEST
 
  ls -i显示文件的inode号
 
  硬链接(不带任何选项):
 
  ? 1.只能对文件创建,不能应用于目录;
 
  ? 2.不能跨文件系统;
 
  ? 3.创建硬链接会增加文件被硬链接的次数;
 
  符号链接(-s):
 
  ? 1.可应用于目录
 
  ? 2.可以跨文件系统
 
  ? 3.不会增加被链接文件的链接次数
 
  ? 4.其大小为指定的路径所包含的字符个数
 
  df:
 
  ? 评估一个分区磁盘块和inode的使用情况。
 
  设备文件:
 
  ? b:按块为单位,随机访问的设备
 
  ? c:按字符为单位,线性设备
 
  ? b:硬盘
 
  ? c:键盘
 
  /dev/
 
  ? 主设备号(major number)
 
  ? 标识设备类型
 
  ? 次设备号(minor number)
 
  ? 标识同一种类型下不同设备
 
  主设备号和次设备号存在inode中,链接存的路径
 
  创建设备文件:
 
  mknod
 
  mknod [options] name {bc} major minor
 
  ? -m MODE 指定权限
 
  mknod mydev c 23 0 在当前目录下指定一个字符设备mydev,主设备号23,次设备号0
 
  ls -l查看
 
  crw-r--r--. 1 root root23, 0 10月 23 08:32 mydev[root@localhost ~]# mknod -m 640 mydev2 c 23 1crw-r-----. 1 root root23, 1 10月 23 08:34 mydev2
 
  发往设备文件的内容指向对应设备:
 
  shell1:[root@localhost ~]# tty/dev/pts/0[root@localhost ~]# echo "hello" >> /dev/pts/1shell2:[root@localhost ~]# tty/dev/pts/1[root@localhost ~]# hello 硬盘设备的设备文件名:
 
  IDE.ATA:/dev/hd
 
  SATA:sd
 
  SCSI:sd
 
  USB:sd
 
  ? a,b,c…来区别同一种类型下的不同设备
 
  IDE:
 
  ? 第一个IDE口:主、从
 
  ? /dev/hda,/dev/hdb
 
  ? 第二个IDE口:主、从
 
  ? /dev/hdc,/dev/hdd
 
  hda:
 
  ? hda1:第一个主分区
 
  ? hda2…hda4:要么是扩展分区,要么是主分区
 
  ? hda5…第一个逻辑分区
 
  查看当前系统识别了几块硬盘
 
  fdisk -l
 
  [root@localhost ~]# fdisk -l磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x000d6891设备 BootStartEndBlocks Id System/dev/sda1 *204820991991048576 83 Linux/dev/sda22099200 41943039 19921920 8e Linux LVM 管理磁盘分区
 
  fdisk /dev/sda
 
  ? p:显示当前硬件的分区,包括没保存的改动
 
  ? n:创建新分区
 
  ? e:扩展分区
 
  ? p:主分区
 
  ? d:删除一个分区
 
  ? w:保存并退出
 
  ? q:不保存退出
 
  ? t:修改分区类型
 
  ? L:
 
  ? l:显示所支持的分区类型
 
  Linux 支持的文件系统:
 
  文件系统是内核中的基本功能,管理文件系统的软件在用户进程。
 
  格式化:低级格式化创建磁道
 
  ? 高级格式化:mkfs -t ext3 创建文件系统
 
  VFS:Virtual File System 虚拟文件系统
 
  FAT32->vfat
 
  光盘:ISO9660
 
  网络文件系统:CIFS
 
  Linux:ext2,ext3,ext4,xfs,reiserfs,jfs(日志文件系统),nfs,ocfs2,gfs2,swap
 
  VFS也是内核中,每一个分区使用不同的文件系统。但都要归并在根下,即挂载或关联的方式。
 
  只有根才可以自引用。
 
  partprode
 
  所有进程运行在用户模式的用户空间中。
 
  ext3,ext4,ext2:extended
 
  磁盘分割在创建时就已经预留起来了。
 
  block size:1024(1k),2048,4096
 
  bitmap:加快数据查找的数据结构
 
  ? inode bitmap
 
  ? block bitmap
 
  super block:超级块,保存磁盘块中的块组,以及块组里有多少东西
 
  块组描述符表
 
  每一个块组都有自己的inode和bitmap
 
  MBR不属于任何一个分区,Boot Block每一个分区第一个块,装Boot Loader.
 
  而Boot Loader属于一个程序,放在MBR中。
 
  Block Group 0块组0
 
  每个组里面有一个超级块:Super Block,有备份,也可以手动恢复
 
  GDT:Group Description Table 块组描述表:当前分区上每一个块组名,块组起始以及结束号。
 
  逐级引用磁盘块
 
  一个磁盘块指向一个文件,但是可以有多个路径,这些路径叫做硬链接。
 
  ext3
 
  ? journal file system
 
  ? 日志文件系统
 
  数据区,元数据区,日志区
 
  数据存完后,把文件从日志区挪到元数据区,要多用一次io操作。
 
  ext3:加快文件系统修复速度。
 
  读分区表:
 
  cat /proc/partitons
 
  partprobe [/dev/sda]->partx
 
  文件系统管理
 
  重新创建文件系统会损坏原有文件。
 
  我创建了一个新的分区,大概有1个G
 
  可以看到我刚才创建的扩展分区。
 
  创建某一个分区上的文件系统:
 
  mkfs:make file system
 
  ? -t FSTYPE 指定要创建的分区
 
  mkfs -t ext2 = mkfs.ext2
 
  mkfs -t ext3 = mkfs.ext3
 
  cat /proc/filesystems:查看当前内核所支持的文件系统类型
 
  文件系统类型:
 
  ? ext2
 
  ? ext3
 
  专门管理ext系列文件:
 
  mke2fs
 
  ? -j:创建ext3类型文件系统
 
  ? -b BLOCK_SIZE:指定块大小,默认为4096,可用取值为1024、2048或4096
 
  ? -L LABEL:指定分区卷标(Filesystem label)
 
  ? -m #:指定预留给超级用户的块数百分比
 
  ? -i #:用于指定为多少字节的空间创建一个inode,默认为8192,这里给出的数值应该为块大小的2^n.
 
  ? -N #:指定inode个数
 
  ? -F :强制创建文件系统
 
  ? -E : 用于指定额外文件系统属性
 
  blkid :查询或查看磁盘设备的相关属性
 
  ? UUID:全局统一的标识符
 
  ? TYPE
 
  ? LABEL 卷标
 
  e2label:用于查看或定义卷标
 
  ? e2label 设备文件 卷标: 设定卷标
 
  tune2fs:调整文件系统的相关属性
 
  ? -j:不损害原有数据,将ext2升级为ext3
 
  ? -L LABEL:设定或修改卷标
 
  ? -m #:调整预留百分比;
 
  ? -r #:指定预留块数
 
  ? -o:设定默认挂载选项
 
  ?
 
  facl
 
  ? -c #:指定挂载次数达到#次之后进行自检,0/-1表示关闭功能。
 
  ? -i #:每挂载使用多少天后进行自检,0/-1表示关闭此功能
 
  ? -l:显示超级块中的信息
 
  dumpe2fs:显示文件属性信息
 
  ? -h:只显示超级块中的信息
 
  fsck:检查并修复Linux文件系统
 
  ? -t FSTYPE:指定文件系统类型
 
  ? -a:自动修复
 
  e2fsck:专用于修复ext2/ext3文件系统
 
  ? -f:强制检查
 
  ? -p:自动修复
 
  挂载:将新的文件系统关联至当前根文件系统
 
  卸载:将某文件系统从当前根文件系统的关联关系予以移除
 
  mount:挂载
 
  mount 设备 挂载点
 
  ? 设备:
 
  ? 设备文件 /dev/sda5
 
  ? 卷标:LABEL=“ ”
 
  ? UUID: UUID=" "
 
  ? 挂载点:目录
 
  ? 要求:
 
  ? 1.此目录没有被其他进程使用
 
  ? 2.目录得事先存在
 
  ? 3.目录中得原有得文件将会暂时隐藏
 
  挂载完成后,要通过挂载点访问对应文件系统上的文件
 
  media 挂载移动设备
 
  mount /dev/sda5 /mnt/test/
 
  umount:卸载某文件系统
 
  ? umount 设备
 
  ? umount 挂载点
 
  ? 卸载注意事项:
 
  ? 挂载的设备没有进程使用
 
  mount 显示当前系统上已挂载设备
 
  mount \[options] \[-o options] DEVICE MOUNT_POINT-a:表示挂载/etc/fstab文件中定义的所有文件系统?-n:默认情况下,mount命令每挂载一个设备,都会把挂载的设备信息保存至/etc/mtab文件,使用-n选项意味着挂载设备时,不把信息写入此文件。?-t:FSTYPE:指定正在挂载设备上的文件系统类型,不使用此选项,mount 会调用blkid命令获取对应文件系统的类型。?-r:只读挂载,挂载光盘时常用此选项?-w:读写挂载?-o:指定额外的挂载选项,也即指定文件系统启用的属性?remount : 重新挂载当前文件系统?ro:挂载为只读?rw:读写挂载
 
  异步:数据先在内存中编辑,然后再写入硬盘中。
 
  suid是一种不安全的做法
 
  重新挂载时不用指定挂载点Linux 磁盘管理,重新挂载在原来的位置
 
  [root@localhost ~]# mount -t auto /dev/cdrom /mnt/cdrommount: 挂载点 /mnt/cdrom 不存在[root@localhost ~]# mkdir /mnt/cdrom[root@localhost ~]# mount -t auto /dev/cdrom /mnt/cdrommount: /dev/sr0 写保护,将以只读方式挂载[root@localhost ~]# unmount /mnt/cdrombash: unmount: 未找到命令...[root@localhost ~]# umount /mnt/cdrom[root@localhost ~]# mount -t auto /dev/cdrom /mnt/cdrommount: /dev/sr0 写保护,将以只读方式挂载[root@localhost ~]# ls /mnt/cdromCentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL swap分区
 
  free 查看当前系统上物理内存和交换空间的使用情况
 
  ? -m
 
  fdisk命令中,调整分区类型为82
 
  创建交换分区:
 
  mkswap /dev/sda8
 
  ? -L LABEL
 
  swapon /dev/sda8 启用交换分区
 
  swapoff /dev/sda8 关闭交换分区
 
  回环设备
 
  loopback,使用软件来模拟实现硬件
 
  创建一个镜像文件,120G
 
  dd命令:
 
  ? if=数据来源
 
  ? of=数据存储目标
 
  ? bs=1
 
  ? count=2
 
  ? seek=# : 创建数据文件时,跳过的空间大小
 
  创建一个大小为1024(1G)的镜像文件,里面填满了0
 
  dd if=/dev/zero of=/var/swapfile bs=1M count=1024
 
  cp以文件为单位,dd复制的是底层数据流
 
  x86:(32bit)虚拟地址、线性地址
 
  虚拟内存:
 
  timesharing\multiplex
 
  CPU:time slice
 
  Memory
 
  I/O设备:多路复用
 
  过载:overcommit内存过载使用
 
  mount命令,可以挂载iso镜像
 
  mount DEVICE MOUNT_POINT
 
  ? -o loop:挂载本地回环设备
 
  wget ftp://172.16.0.1/pub/isos/rhci-5.8-1.iso
 
  swapon -a启用所有的定义在/etc/fstab文件中的交换设备
 
  mount /dev/sda5 /mnt/test
 
  文件系统的配置文件/etc/fstab
 
  ? os在初始时,会自动挂载此文件中定义的每个文件系统。
 
  要挂载的设备 挂载点 文件系统类型 挂载选项 转储频率 文件系统检测次序
 
  /dev/mapper/cl-root/xfsdefaults0 0
 
  转储频率表示每隔多少天对文件系统做一次完全备份,控制系统自动备份的机制。
 
  文件系统检测次序,只有根可以为1
 
  mount -a:挂载/etc/fstab文件中定义的所有文件系统
 
  /etc/mtab:挂载的信息不想写在mtab.那么使用mount -n
 
  fuser:验证进程正在使用的文件或套接字文件
 
  ? -v:查看某文件上正在运行的进程
 
  fuser -km /mnt/test 终止正在访问此挂载点的所有进程。
 
  压缩、解压缩命令
 
  压缩格式:gz,bz2,xz,zip,Z
 
  压缩算法不同,压缩比(压缩后的大小-压缩前的大小/压缩前的大小)可能也会不同。
 
  compress:FILENAME.Z
 
  uncompress
 
  只能压缩文件,默认会删除原文件保留压缩后文件:
 
  gzip: .gz
 
  gzip /PATH/TO/SOMEFILE-d:表示解压缩-#:1-9,指定压缩比,默认是6
 
  gunzip:
 
  gunzip /PATH/TO/SOMEFILE.gz:解压完成后会删除原文件
 
  zcat /PATH/TO/SOMEFILE.gz:不解压的情况,查看文本文件内容
 
  比gzip有着更大压缩比的压缩工具,使用格式近似
 
  bzip2: .bz2
 
  bzip2 /PATH/TO/SOMEFILE
 
  -d-#:1-9,默认是6-k:压缩时保留原文件bunzip2 /PATH/TO/SOMEFILE.bz2bzcat
 
  xz: .xz
 
  xz /PATH/TO/SOMEFILE-d-#:1-9,默认是6-k:压缩时保留原文件unxzxzdecxzcat
 
  xz,bz2,gz
 
  zip:
 
  zip FILENAME.zip FILE1 FILE2 ...:压缩后不删除原文件unzip FILENAME.zip
 
  archive:归档,归档本身并不意味着压缩
 
  tar:归档工具
 
  -c:创建归档文件-f FILE.tar:操作的归档文件-x:展开归档文件--xattrs:归档时,保留文件的扩展属性信息-t:不展开归档,直接查看归档了哪些文件-zcf:归档并调用gzip压缩-zxf:调用gzip解压缩并展开归档-jcf、-jxf:bzip2-Jcf、-Jxf:xz归档所有以test开头的文件tar -cf test.tar test*.txt展开归档文件tar -xf test.tar
 
  cpio:归档工具
 
  练习:写一个脚本
 
  从键盘让用户输入几个文件,脚本能够将此几个文件归档压缩成一个文件。
 
  read:
 
  #!/bin/bashecho -n "Input two integers:"read A B echo "$A plus $B is: $[$A+$B]"[root@localhost ~]# cd jiaoben[root@localhost jiaoben]# 。/plus。shInput two integers:3 53 plus 5 is: 8#myar。sh#!/bin/bashread -p "Three files: " FILE1 FILE2 FILE3read -p "Destination: " DESTtar -jcf ${DEST}。tar。bz2 $FILE1 $FILE2 $FILE3#shell[root@localhost jiaoben]# 。/myar。shThree files: test/test1。txt test/test2。txt test/test3。txtDestination: test/myartest[root@localhost jiaoben]# ls test -ln总用量 4-rw-r--r--。 1 0 0 140 10月 25 16:20 myartest。
 
  tar。bz2-rw-r--r--。 1 0 0 0 10月 25 16:18 test1。txt-rw-r--r--。 1 0 0 0 10月 25 16:18 test2。txt-rw-r--r--。 1 0 0 0 10月 25 16:18 test3。txt[root@localhost jiaoben]# ls test -lh总用量 4。0K-rw-r--r--。 1 root root 140 10月 25 16:20 myartest。tar。bz2-rw-r--r--。 1 root root 0 10月 25 16:18 test1。txt-rw-r--r--。 1 root root 0 10月 25 16:18 test2。txt-rw-r--r--。 1 root root 0 10月 25 16:18 test3。txt[root@localhost jiaoben]# tar -tf myartest。tar。bz2tar: myartest。tar。bz2:无法 open: 没有那个文件或目录tar: Error is not recoverable: exiting now[root@localhost jiaoben]# tar -tf test/myartest。tar。bz2test/test1。txttest/test2。txttest/test3。txt
 
  指定压缩格式版本的脚本myar.sh:
 
  #!/bin/bashread -p "Three files: " FILE1 FILE2 FILE3read -p "Destination: " DESTread -p "Compress[gzip|bzip2|xz]:" COMPcase $COMP ingzip)tar -zcf ${DEST}.tar.gz $FILE1 $FILE2 $FILE3 ;;bzip2)tar -jcf ${DEST}.tar.bz2 $FILE1 $FILE2 $FILE3 ;;xz)tar -cf ${DEST}.tar $FILE1 $FILE2 $FILE3xz ${DEST}.tar ;;*)echo "Unknoen."exit 9 ;;

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!