2磁盘格式_分区ch7

本文为《鸟哥的Linux私房菜》学习笔记系列,如有问题欢迎打扰

文件系统

ext2 文件系统构成

  1. 超级区块:记录此文件系统的整体信息(inode,数据区块的总量、剩余量、使用量等)
  2. inode:记录文件的属性,及文件数据所在区块的号码。一个文件占用1个
  3. 数据区块:记录文件实际内容
  • BootSector,Block Group1,Block Group2,Block Group3...
  • 区块群组:inode和数据区块太大时,不方便管理,因此分成多个区块,每个区块由对应的区段组成:
    • superblock
      • 数据区块和inode的总量
      • 未使用和已使用的数据区块与inode的数量
      • 数据区块与inode的大小
      • 文件系统的挂载时间、最近写入数据时间、最近一次检验磁盘的时间等文件系统相关信息
      • 一个有效位数值,若此文件系统已被挂载,有效位为0;若未被挂载,则为1
    • 文件系统描述
      • 描述每个区块群组的开始与结束
      • 及说明每个区段(超级区块、对照表、inode对照表)分别介于哪一个区块之间
    • 区块对照表
      • 记录哪些区块是空的
    • inode对照表
      • 记录使用与未使用的inode号码
    • inode table:
      • 文件读写属性
      • 文件拥有者及群组
      • 文件大小
      • 文件创建、修改、读取等时间信息
      • 数据区块号(12直接,1间接,1双间接,1三间接)
    • Data Block
      • 存放实际数据,block大小影响着最大单一文件的大小和最大文件系统容量
  1. 查询ext系列超级区块信息dumpe2fs [-bh]
  2. 显示文件(夹)等的inode编号ll -di / /etc /etc/passwd
  3. 列出文件系统的整体磁盘使用量df [-hi]
  4. 查看文件系统的磁盘使用量du [-sm]

Linux文件系统的运行

  • 异步处理
    • 当文件加载到内存后,若未被修改,则内存区段的文件被标记为Clean
    • 若被修改过,则被标记为Dirty
    • 系统会时不时地将Dirty数据写回到磁盘中
    • sync命令可手动强制写入磁盘
  • 不正常关机时,由于数据未写回到磁盘,因此重新启动后可能会花很多时间进行磁盘校验,甚至导致文件系统的损坏(非磁盘损坏)
  • 挂载点意义
    • 一定是目录,该目录为进入该文件系统的入口
    • ...

XFS

硬链接与符号连接

  • 硬链接
    • 一条链接到某inode号码的关联记录
    • 导致有多个文件名对应到同一个inode号码
    • 若有两个文件名链接到同一个inode号码,删除其中一个文件后,另一个文件不受影响
    • 除了文件名,两个文件一模一样
    • 不能跨文件系统,不能链接目录
  • 软链接(符号链接)
    • 是一个新文件
    • 这个文件会让数据的读取指向它链接的那个文件的文件名
    • 大小为绝对路径的字符数
  • 链接数

    • 即与同一个inode关联的文件的数量
    • 目录的链接数

      • 空目录的链接数为2,空目录有:
      • /tmp/test
      • /tmp/test/.
      • /tmp/test/..

        ln [-sf] 
        ln passwd passwd-hd #硬
        ln -s passwd passwd-so #软
        

磁盘的分区、格式化、检验与挂载

观察磁盘分区状态

  • 列出系统上所有磁盘列表(list blcok device)lsblk [-dfimpt] [device]
  • 列出设备的UUID等参数(block id)blkid
  • 列出分区表类型和分区信息parted device_name print

磁盘分区:gdisk/fdisk

MBR使用fdisk分区,GPT使用gdisk分区

  • gdisk 设备名
  • fdisk 设备名

磁盘格式化(创建文件系统)p238

综合指令(make filesystem)mkfs XFS

mkfs.xfs [-b bsize] [-d parms] ... 设备名
-b 后接区块容量512~64k
...

ext4 mkfs.ext4 [-b bsize] ... 设备名

文件系统校验

xfs_repair [-fnd] 设备名
fsck.ext4 [-pf] [-b 超级区块] 设备名

文件系统的挂载与卸载

注意点

  • 单一文件系统不应重复挂载到不同目录
  • 单一目录不应重复挂载多个文件系统
  • 要作为挂载点的目录,理论上应该都是空目录
  • 如果原本挂载点不为空,则挂载后原本的数据/目录会被暂时隐藏,新分区被卸载后会重新出现

mount

mount -a #依照配置文件/etc/fstab的数据将所有未挂载的磁盘都挂载上
mount [-l] #显示挂载信息
mount [-t 文件系统] UUID='' 挂载点 #建议使用
                  LABEL=''
                  设备文件名
        #现在系统太聪明,可能不需要加上-t参数,他会自动匹配合适的文件系统
-n #默认情况下,系统会将实际情况及时写入/etc/mtab中,以利于其他程序运行
   #但在某些情况下(如单人维护模式),为了避免问题会刻意不写入,所以要使用-n
-o #后接额外参数。如账号,密码,读写权限等

umount

umount [-fn] 设备名/挂载点 #有时候设备会有其他方式挂载,因此用挂载点卸载更直接

磁盘/文件系统参数自定义

lsblk #查看major和minor数值` 
mknod 设备文件名 [bcp] [Major] [Minor] #b:设置设备名为一个外接储存设备,如磁盘
                                     #c:设置设备名为一个外接输入设备,如鼠标键盘
                                     #p:设置设备名为一个FIFO文件

xfs_admin
tune2fs [-l]#读出超级区块的数据 [-L Label]#修改LABEL name [-U UUID]#修改UUID

设置启动挂载

/etc/fstab 及/etc/mtab

/etc/fstab是系统启动时使用的配置文件,格式为:
[设备/UUID等] [挂载点] [文件系统] [文件系统参数] [...] [...]
文件系统参数:async/sync auto/noauto rw/ro exec/noexec

实际文件系统的挂载记录到/etc/mtab与/proc/mounts中
每次修改系统文件的挂载时,也会同时修改这两个文件

特殊设备loop挂载(镜像文件不刻录就挂载使用)

挂载CD/DVD镜像文件

mkdir /data/dvd
mount -o loop /tmp/CentOS-aoauwhfo-DVD.iso /data/dvd
df /data/dvd

umount /data/dvd

制作loop设备文件

  1. 建立大文件:dd if=/dev/zero of=/srv/loopdev bs=1M count=512
  2. 格式大文件:mkfs.ext4 /srv/loopdev #即创建文件系统
  3. 挂载:sudo mount -o loop /srv/loopdev /mnt #使用UUID挂载时,报 找不到 UUID=fd16089d-5202-403b-8066-5e46c6255a57
  4. 此时这个挂载只是暂时的,为了将它一直挂载,需要修改/etc/fstab内容
  5. 在/etc/fstab中加入一行/srv/loopdev /mnt/mymountDirectory ext4 defaults,loop 0 0
  6. 先将其卸载umount /mnt/
  7. 创建目录mkdir /mnt/mymountDirectory
  8. mount -a

swap的创建

...

对文件系统的观察与操作

  1. 块的内部空隙的空间浪费
  2. parted...

LVM

创建

需要在物理分区的基础上创建
若此时有一个物理分区sda6,其格式为LVM,则:

  1. 在其上建立physical volume:pvcreate /dev/sda6
  2. 在此pv上创建卷组:vgcreate myvg /dev/sda6
  3. 在此卷组上创建逻辑卷:lvcreate -L 2G -n mylogicalvolume myvg
  4. 查看信息(其他类似命令):pvdisplay /dev/sda6
  5. 创建文件系统,与物理分区相似,如:mkfs -t ext4 /dev/myvg/mylogicalvolume

扩容

待扩容卷组:myvg
额外空间:/dev/sda5(需提前将其创建为pv)

  1. 扩容卷组myvg:vgextend myvg /dev/sda5
  2. 扩容逻辑卷:lvextend -L +3G /dev/myvg/mylogicalvolume
  3. 扩容完成后,此时分区大小确实已扩容,但文件系统还未扩容
  4. 文件系统扩容:resize2fs [-f] /dev/myvg/mylogicalvolume

减容

建议先卸载挂载点,否则可能损害文件系统
类似扩容,可直接:lvreduce -L -1G /dev/myvg/mylogicalvolume

编辑于2025-04-08
关于我
zinkt
西南大学2019级本科生
zinkt@foxmail.com
前端基于bootstrap5
后端使用gink&ginkorm
基于它们构建的一个个人博客系统
目录