Linux 常用命令-文件系统相关命令

418 阅读5分钟
  1. Linux 文件系统特性:
    • Ext2 文件系统: Ext2 文件系统在格式化的时候基本上是区分为多个区块群组(block group), 每个群组有独立的 inode/block/superblock 系统. 区块群组由六个部分组成:
      • data block(数据区块):
        data block 是用来放置文件内容数据地方. 在 Ext2 文件系统中所支持的 block 大小有 1K, 2K及4K 三种. 在格式化时 block 大小就固定好了, 且每个 block 都有编号, 以方便 inode 的记录.
      • inode table (inode 表格):
      • inode 记录信息:
        • 该文件的存取模式
        • 该文件的拥有者与群组
        • 该文件的容量
        • 该文件创建或状态改变的时间
        • 最近一次的读取时间
        • 最近修改的时间
        • 定义文件特性的旗标
        • 该文件真正内容的指向
      • inode 特点:
        • 每个 inode 大小均固定为 128 Bytes
        • 每个文件仅占用一个 inode
        • 文件系统能够创建的文件数量与 inode 的数量有关
        • 系统读取文件时需要先找到 inode, 并分析 inode 所记录的权限与使用者是否符合, 若符合才能够开始读取 block 的内容.
      • Superblock(超级区块): Superblock 大小为 1K, Superblock 记录整个文件系统相关信息, 可以使用dumpe2fs命令查看其信息:
        • block 与 inode 的总量
        • 未使用与已使用的 inode/block 数量
        • block 与 inode 的大小 (block 为 1, 2, 4K, inode 为 128Bytes 或 256Bytes)
        • 文件系统的挂载时间, 最近一次写入数据的时间, 最近一次检验磁盘的时间
        • 一个 valid bit 数值, 若文件系统已被挂载, 则 valid bit 为 0, 反之, 为 1.
      • Filesytem Description(文件系统描述说明): 描述每个 block group 的开始与结束的 block 号码, 以及说明每个区段分别介于哪一个 block 号码之间.
      • block bitmap(区块对照表):
        记录区块使用状态.
      • inode bitmap(inode 对照表):
        记录 inode 使用状态.
    • XFS 文件系统:
      • 数据区 (data section):
        数据区分为多个存储区群组 (allocation groups) 来放置文件系统所需要的数据. 每个存储区群组包含了:
        • 整个文件系统的 superblock
        • 剩余空间的管理机制
        • inode 的分配与追踪 inode 与 block 都是系统需要用到时, 才动态配置产生.
      • 文件系统活动登陆区(log section):
        记录文件系统的变化, 知道变化完整的写入到数据区后, 该笔记录才会被终结.
      • 实时运行区(realtime section):
        当有文件要被创建时, xfs 会在这个区段里面找到一个到数个的 extend 区块, 将文件放置在这个区块内, 等到分配完毕后, 在写入到 data section 的 inode 与 block 去.
        xfs 文件系统可以使用 xfs_info命令查看 superblock 信息.
  2. df du 命令:
    • df 命令: 列出文件系统的整体磁盘使用量
      • -a: 列出所有文件系统
      • -k: 以 KBytes 的容量显示各文件系统
      • -m: 以 MBytes 的容量显示各文件系统
      • -h: 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示
      • -T: 显示该分区的文件系统类型
      • -i: 不是以磁盘容量, 而以 inode 的数量来显示
        df 命令读取的范围主要是在 superblock 内的信息.
    • du 命令: 评估目录所占容量
      • -a: 列出所有的文件与目录容量
      • -h: 以人们较易读的格式显示
      • -s: 列出总量
      • -S: 列出目录下的总计, 但不包括子目录
  3. lsblk 命令:
    • 参数含义:
      • -d: 仅列出磁盘本身, 并不会列出该磁盘的分区数据.
      • -f: 列出该磁盘内的文件系统名称.
      • -m: 输出该设备在 /dev 下面的权限数据.
      • -p: 列出该设备的完整文件名.
      • -t: 列出该磁盘设备的详细数据.
    • 输出信息含义:
      • NAME: 设备文件名.
      • MAJ:MIN: 主要:次要设备代码.
      • RM: 是否为可卸载设备.
      • SIZE: 容量.
      • RO: 是否为只读设备.
      • TYPE: 是磁盘, 分区还是只读存储器.
      • MOUNTPOINT: 挂载点.
  4. blkid 命令:
    • 列出设备的 UUID 等参数: Linux 会将系统内所有的设备都给予一个独一无二的识别码, 这个识别码可以拿来作为挂载或者是使用这个设备/文件系统之用了.
  5. parted 命令:
    • 列出磁盘的分区表类型与分区信息:
      • 示例: parted /dev/sda print
  6. gdisk和fdisk 命令:
    MBR 分区表请使用 fdisk 分区, GPT 分区请使用 gdisk 分区.
    因为 Linux 此时还在使用这颗磁盘, 分区表并没有被更新. 此时可以使用partprobe -s更新分区表.
  7. mkfs.xfs mkfs.ext4 命令:
    • 参数含义:
      • -b: 后接 block 容量.
      • -f: 强制格式化. 想要知道系统支持哪种文件系统的格式化功能, 直接按 Tab 键.
  8. xfs_repair fsck.ext4 命令:
    • xfs_repair:
    • -f: 后面的设备其实是个文件而不是设备.
    • -n: 单纯检查并不修改文件系统的任何数据.
    • fsck.ext4:
      • -f: 强制检查. fsck 没有发现任何 unclean 的旗标不会主动进入细部检查的/
      • -D: 针对文件系统下的目录进行最优化配置.
      • -b: 后接 superblock 的位置. superblock 受损后可以指定文件系统备份的 superblock 来救援.
  9. mount umount命令:
    • mount: mount 命令可以使用设备名或 UUID 来进行挂载
      • 使用设备名挂载: mount /dev/sda1 /home/study
      • 使用 UUID 挂载: mount UUID="06d699ec-4bd3-4849-a050-32b666506076" /home/study
    • umount:
      • -f: 强制卸载
      • -l: 立刻卸载文件系统
      • -n: 不更新/etc/mtab情况下卸载
    • 特殊设备 loop 挂载:
      • 创建大文件: dd if=/dev/zero of=/srv/loopdev bs=1M count=512
      • 格式化大文件: mkfs.xfs -f /srv/loopdev
      • 挂载大文件: mount -o lopp /srv/loopdev /mnt 通过挂载大文件的方式可以扩展分区
  10. mkswap swapon swapoff命令:
    • mkswap: 创建 swap 格式分区
    • swapon: 启动 swap 分区
    • swapoff: 关闭 swap 分区
  11. 参考:
    [1] : 鸟哥的Linux私房菜