linux文件系统管理

admin 2022年04月11日 929次浏览

一、文件系统简介

Linux 最传统的磁盘文件系统使用的是 EXT2 ,因此要了解Linux的文件系统就得要由认识 EXT2 开始

文件的权限与属性放到 inode 中,实际数据则放置到 block 中,还有一个超级区块(superblock)会记录整个文件系统的整体信息,包括 inode 与 数据块的总量、使用量、剩余量等

  • 超级区块:记录此文件系统的整体信息,包括 inode与数据块的总量、使用量、剩余量,以及文件系统的格式与相关信息等

  • inode:记录文件的属性,一个文件占用一个 inode,同时记录此文件的数据所在的区块号码

  • block :实际记录文件的内容,若文件太大时,会占用多个区块

假设某一个文件的属性与权限数据是放置到 inode 4号,而这个 inode 记录了文件数据的实际放置点为 2, 7, 13, 15 这四个区块号码,此时我们的操作系统就能够据此来排列磁盘的阅读顺序,可以一口气将四个区块的内容读出来

1、EXT2 文件系统

文件系统格式化的时候,就将 inode 与 block 规划好了,除非重新格式化(或者利用resize2fs 等指令变更文件系统大小),否则 inode 与 block 固定后就不再变动

由于 inode 与 block 的数量太庞大,不容易管理,因此 EXT2 文件系统在格式化的时候,基本上是区分为多个区块群组(block group)的,每个区块群组都有独立的 inode、 block 、超级区块系统

在文件系统最前面有一个启动扇区(boot sector),这个启动扇区可以安装开机管理程序,我们可以将不同的开机管理程序安装到个别的文件系统最前端,而不用覆盖整块硬盘唯一的 MBR,从而实现多重引导

1.1、data block

data block (数据区块)是用来放置文件内容数据地方,在 Ext2 文件系统中所支持的 block 大小有 1K,、2K 及4K 三种,在格式化时 block 的大小就固定了,且每个 block 都有编号,以方便 inode 的记录,由于 block 大小的差异,会导致该文件系统能够支持的最大磁盘容量与最大单一文件容量并不相同

数据区块大小 1K 2K 4K
最大单一文件限制 16GB 256GB 2TB
最大文件系统总容量 2TB 8TB 16TB

EXT2文件系统数据块的限制:

  • 原则上, block 的大小与数量在格式化完就不能够再改变了(除非重新格式化)

  • 每个 block 内最多只能够放置一个文件的数据

  • 如果文件大于 block 的大小,则一个文件会占用多个 block 数量

  • 若文件小于 block ,则该 block 的剩余容量就不能够再被使用了

1.2、inode table

inode 记录的文件数据至少包括:

  • 该文件的权限(read、write、excute)
  • 该文件的拥有者与群组(owner、group)
  • 该文件的容量
  • 该文件建立或状态改变的时间(ctime);
  • 最近一次的读取时间(atime)
  • 最近修改的时间(mtime)
  • 定义文件特性的标识(flag),如 SetUID…
  • 该文件真正内容的指向(pointer)
  • 每个 inode 大小均固定为 128 bytes(ext4 与 xfs 可设定到 256 bytes)

inode 要记录的数据非常多,但是只有128bytes, 而 inode 记录一个 block 号码就要花掉4byte ,如果需要存储一个大文件时,就需要很多的 inode ,因此系统将 inode 记录 block 号码的区域定义为 12 个直接,一个间接, 一个双间接与一个三间接记录区

上图最左边为 inode 本身(128 bytes),里面有 12 个直接指向 block 号码的对照,这12条记录就能够直接获取到 block 的号码,至于所谓的间接就是再拿一个 block 来当作记录 block 号码的记录区,如果文件太大时, 就会使用间接的 block 来记录编号,如果文件持续长大,那么就会利用所谓的双间接,第一 block 仅再指出下一个记录编号的 block 在哪里, 实际记录的 block 号码在第二个 block 中,依此类推,三间接就是利用第三层 block 来记录编号

1.3、Superblock

Superblock (超级区块)是记录整个文件系统相关信息的地方,没有 Superblock ,就没有这个文件系统了

Superblock 记录的信息主要有:

  • block 与 inode 的总量

  • 未使用与已使用的 inode与 block 数量

  • block 与 inode 的大小( block 为 1K, 2K, 4K,inode 为 128bytes 或 256bytes)

  • 文件系统的挂载时间、最近一次写入数据的时间、最近一次检验磁盘(fsck)的时间等文件系统的相关信

  • 一个 valid bit(有效位)数值,若此文件系统已被挂载,则 valid bit 为 0 ,若未被挂载,则 valid bit 为 1

1.4、Filesystem Description

Filesystem Description (文件系统描述说明)可以描述每个 block group 的开始与结束的 block 号码,以及说明每个区段(superblock, bitmap, inodemap, data block)分别介于哪一个 block 号码之间

1.5、block bitmap

从 block bitmap (区块对照表)当中可以知道哪些 block 是空的,因此我们的系统就能够很快速的找到可使用的空间来处置文件;同样,如果你删除某些文件时,那么那些文件原本占用的 block 号码就江释放出来, 此时在 block bitmap 当中相对应到该 block 号码的标志就将修改成为“未使用中”,这就是 bitmap 的功能

1.6、inode bitmap

inode bitmap (inode对照表) 与 block bitmap 是类似的功能,只是 block bitmap 记录的是使用与未使用的 block 号码,而 inode bitmap 则是记录使用与未使用的 inode 号码

1.7、dumpe2fs

该命令用于查询 Ext 系列文件系统的 superblock 信息

  • 语法

    dumpe2fs [-h] 分区

    • 常用参数

      -h :仅列出 superblock 的数据,不会列出其他的区段内容(如:具体空闲 block 号码)

  • 实例

    [root@localhost ~]# dumpe2fs /dev/sda1
    # --- 部分内容 ---
    # 文件系统的名称
    Filesystem volume name:   <none>
    # 上一次挂载的目录位置
    Last mounted on:          /
    Filesystem UUID:          659e6f89-71fa-****-****-************
    # 预设在挂载时会主动加上的挂载参数
    Default mount options:    user_xattr acl
    # 文件系统的状态,clean为正常状态
    Filesystem state:         clean
    Errors behavior:          Continue
    Filesystem OS type:       Linux
    # inode 的总数
    Inode count:              3276800
    # block 的总数
    Block count:              13106939
    # 保留的 block 总数
    Reserved block count:     545215
    # 剩余 block 可用数量
    Free blocks:              10632122
    # 剩余 inode 可用数量
    Free inodes:              3161412
    First block:              0
    # 单个 block 的容量大小
    Block size:               4096
    # inode 的容量大小
    Inode size:	          256
    # Journal 日志式数据的可供纪录总容量
    Journal size:             64M
    # 第一块 block group 位置
    Group 0:(Blocks 0-32767)csum 0xd669 [ITABLE_ZEROED]
      # 主要 superblock 的所在位置
      Primary superblock at 0, Group descriptors at 1-7
      Reserved GDT blocks at 8-1024
      Block bitmap at 1025(+1025), csum 0x5d37c57c
      Inode bitmap at 1041(+1041), csum 0x4d66d539
      # inode table 的所在位置
      Inode table at 1057-1568(+1057)
      # 该 block group 剩余的 block 和 inode容量
      21989 free blocks, 1977 free inodes, 1482 directories
    

1.8、inode与目录树的关系

  • 目录

    当我们在 Linux 下的文件系统建立一个目录时,文件系统会分配一个 inode 与至少一块 block 给该目录。其中,inode 记录该目录的相关权限与属性,并可记录分配到的那块 block 号码; 而 block 则是记录在这个目录下的文件名与该文件名占用的 inode 号码数据

  • 文件

    当我们在 Linux 下的 ext2 建立一个普通文件时, ext2 会分配一个 inode 与相对于该文件大小的 block 数量给该文件。例如:假设我的一个 block 为 4 Kbytes ,而我要建立一个 100 KBytes 的文 件,那么 linux 将分配一个 inode 与 25 个 block 来储存该文件,由于 inode 仅有12个直接指向,因此还要多一个 block 来作为区块号码的记录

  • 目录树读取

    因为文件名是记录在目录的 block 当中, 因此当我们要读取某个文件时,就务必会经过目录的 inode 与 block ,然后才能够找到那个待读取文件的 inode 号码,最终才会读到正确的文件的 block 内的数据。由于目录树是由根目录开始读起,因此系统通过挂载的信息就可以找到挂载点的 inode 号码,此时就能够得到根目录的 inode 内容,并依据该 inode 读取根目录的 block 内的文件名数据,再一层一层的往下读到正确的文件名

2、EXT2、EXT3、EXT4文件的存取与日志式文件系统的功能

创建新文件的流程:

  • 先确定用户对于欲新增文件的目录是否具有 w 与 x 的权限,有的话才能新增

  • 根据 inode bitmap 找到没有使用的 inode 号码,并将新文件的权限/属性写入

  • 根据 block bitmap 找到没有使用中的 block 号码,并将实际的数据写入 block 中,且更新 inode 的 block 指向数据

  • 将刚刚写入的 inode 与 block 数据同步更新 inode bitmap 与 block bitmap,并更新 superblock 的内容

一般来说,我们将 inode table 与 data block 称为数据存放区域,至于其他例如 superblock、 block bitmap 与 inode bitmap 等区段就被称为 metadata(元数据区),因为 superblock, inode bitmap 及 block bitmap 的数据是经常变动的,每次新增、移除、编辑时都可能会影响到这三个部分的数据,因此才被称为元数据

2.1、数据的不一致(Inconsistent)状态

如果文件在写入文件系统时,因为各种原因,写入的数据仅有 inode table 及 data block 而已, 最后一个同步更新元数据的步骤并没有做完,此时就会发生 metadata 的内容与实际数据存放区产生不一致(Inconsistent) 的情况

在早期的 Ext2 文件系统中,如果发生这个问题, 那么系统在重新启动的时候,就会由 Superblock 当中记录的 valid bit(是否有挂载)与 filesystem state(clean 与否)等状态来判断是否强制进行数据一致性的检查,若有需要检查时,则以 e2fsck 这个程序来进行的,不过因为要针对 metadata 区域与实际数据存放区来进行比对,如果文件系统特别大,那么所费时间也就特别长了

2.2、日志式文件系统(Journaling filesystem)

为了避免上述提到的文件系统不一致的情况发生,因此在我们的文件系统中规划出一个区块,该区块专门在记录写入或修改文件时的步骤, 那就可以简化一致性检查的步骤了

日志文件系统写入(修改)数据的流程:

  • 预备:当系统要写入一个文件时,会先在日志记录区块中纪录某个文件准备要写入的信息

  • 实际写入:开始写入文件的权限与数据;开始更新 metadata 的数据

  • 结束:完成数据与 metadata 的更新后,在日志记录区块当中完成该文件的纪录

在这样的程序当中,万一数据的纪录过程当中发生了问题,那么我们的系统只要去检查日志记录区块,就可以知道哪个文件发生了问题,针对该问题来做一致性的检查即可,而不必针对整块 filesystem 去检查, 这样就可以达到快速修复文件系统的能力了

3、XFS 文件系统

xfs 也是一个日志式文件系统,而且是 CentOS 7.x 默认文件系统,早期 xfs 就是被开发来用于高容量磁盘以及高性能文件系统使用的

xfs 文件系统在资料的分布上,主要规划为三个部份,一个数据区(data section)、一个文件系统活动登录区(log section)以及一个实时运作区(realtime section)

3.1、数据区(data section)

同 ext 文件系统相同,也包括 inode、data block、superblock 等数据,都放置在这个区块。 这个数据区与 ext 系列的 block group 类似,也是分为多个储存区群组(allocation groups)来分别放置文件系统所需要的数据。 每个储存区群组都包含了:整个文件系统的 superblock、 剩余空间的管理机制、 inode 的分配与追踪。此外,inode 与 block 都是系统需要用到时, 这才动态配置产生,所以格式化特别快

另外,与 ext 系列文件系统不同的是, xfs 的 block 与 inode 有多种不同的容量可供设定,block 容量可由 512bytes ~ 64K 调整,不过,Linux 的环境下, 由于内存控制的关系 (页面文件 pagesize 的容量的原因),因此最高可以使用的 block 大小为 4K 而已,至于 inode 容量可由 256bytes 到 2M 这么大。不过,一般还是保留 256bytes 的默认值就够用了

3.2、文件系统活动登录区 (log section)

该区块主要被用来纪录文件系统的变化,和日志区相似,文件的变化会在这里纪录下来,直到该变化完整的写入到数据区后, 该条纪录才会被结束。如果文件系统因为某些原因而损毁时,系统会拿这个登录区块来进行检验,看看系统挂掉之前, 文件系统正在运作哪些动作,从而快速的修复文件系统

因为系统所有动作都会在这个区块做个纪录,因此这个区块的磁盘活动是相当频繁的,在这个区中,可以指定外部的磁盘来作为 xfs 文件系统的日志区块,例如,可以将 SSD 磁盘作为 xfs 的登录区,这样当系统需要进行任何活动时, 就可以更快速的进行工作

3.3、实时运作区 (realtime section)

当有文件要被建立时,xfs 会在这个区段里面找一个到数个的 extent 区块,将文件放置在这个区块内,等到分配完毕后,再写入到 data section 的 inode 与 block 去。这个 extent 区块的大小得要在格式化的时候就先指定,最小值是 4K 最大可到 1G。一般非磁盘阵列的磁盘默认为 64K 容量,而具有类似磁盘阵列的 stripe 情况下,则建议 extent 设定为与 stripe 一样大较佳。这个extent 最好不要乱动,因为可能会影响到实体磁盘的性能

3.4、XFS 文件系统的描述数据查看

xfs 文件系统的信息可以通过 xfs_info 工具查看

  • 示例

    [root@localhost ~]# xfs_info /dev/sda1
    meta-data=/dev/sda1              isize=512    agcount=4, agsize=65536 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0 spinodes=0
    data     =                       bsize=4096   blocks=262144, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal               bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    
    • 第一行:isize 指的是 inode 的容量,agcount 是储存区群组 (allocation group) 的个数, agsize 是指每个储存区群组具有 65536 个 block

    • 第二行:sectsz 指的是逻辑扇区 (sector) 的容量

    • 第四行:bsize 指 block 的容量,blocks是该文件系统中 block 的数量

    • 第五行:sunit、swidth 与磁盘阵列的 stripe 相关

    • 第七行:internal 指这个登录区的位置在文件系统内,而不是外部设备的意思。且占用了 4K * 2560 个 block,总共约 10M 的容量

    • 第九行:realtime 区域,里面的 extent 容量为 4K,未使用

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

1、查看磁盘分区状态

1.1、lsblk 列出系统上的所有磁盘列表

使用 lsblk 可以列出本系统下的所有磁盘与磁盘内的分区信息

  • lsblk [-dfimpt] [device]

    选项与参数:

    -d :仅列出磁盘本身,并不会列出该磁盘的分区数据

    -f :同时列出该磁盘内的文件系统名称

    -i :使用 ASCII 字符输出,不要使用复杂的编码

    -m :同时输出该设备在 /dev 底下的权限数据 (rwx 的数据))

    -p :列出该设备的完整文件名,而不是仅列出最后的名字而已

    -t :列出该磁盘装置的详细数据,包括磁盘阵列机制、预读写的数据量大小等

  • 示例

    # 列出本系统下的所有磁盘与磁盘内的分区信息
    [root@localhost ~]# lsblk
    NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sr0          11:0    1 1024M  0 rom  
    nvme0n1     259:0    0   40G  0 disk 
    ├─nvme0n1p1 259:1    0    1G  0 part /boot
    └─nvme0n1p2 259:2    0   39G  0 part 
      ├─cl-root 253:0    0   37G  0 lvm  /
      └─cl-swap 253:1    0    2G  0 lvm  [SWAP]
    

    列名解释:

    • NAME:设备名称,会省略 /dev 等前导目录

    • MAJ:MIN:分别是主要:次要设备代码

    • RM:是否为可卸除设备 (removable device),如光盘、USB 磁盘等等

    • SIZE:设备容量大小

    • RO:是否为只读设备的意思

    • TYPE:是磁盘 (disk)、分区(partition) 还是只读存储器 (rom) 等输出

    • MOUTPOINT:挂载点

1.2、blkid 列出设备的 UUID 等参数

blkid 主要是用于查看设备的 UUID 、文件系统类型等信息

[root@localhost ~]# blkid
/dev/nvme0n1: PTUUID="e92740a6" PTTYPE="dos"
/dev/nvme0n1p1: UUID="7a2867e4-883a-4ed5-99b1-e6c283eb98c6" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="e92740a6-01"
/dev/nvme0n1p2: UUID="lCPAlW-8dvU-s4Ed-LeHv-8b0Y-ddDS-XzTo5d" TYPE="LVM2_member" PARTUUID="e92740a6-02"
/dev/mapper/cl-root: UUID="0e1874e6-ab0f-4d80-9e22-3330dc87ba1e" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/cl-swap: UUID="6d0c45fa-dcac-4b62-9c6e-2c03624e4f71" TYPE="swap"

1.3、parted查看磁盘的分区表类型与分区信息

[root@localhost ~]# parted /dev/nvme0n1 print
# 磁盘的模块名称(厂商)
Model: NVMe Device (nvme)
# 磁盘的总容量
Disk /dev/nvme0n1: 42.9GB
# 磁盘的每个逻辑/物理扇区容量
Sector size (logical/physical): 512B/512B
# 分区表的格式 (MBR/GPT)
Partition Table: msdos
Disk Flags: 
# 分区数据
Number  Start   End     Size    Type     File system  标志
 1      1049kB  1075MB  1074MB  primary  xfs          启动
 2      1075MB  42.9GB  41.9GB  primary               lvm

2、 磁盘分区:gdisk/fdisk

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

2.1、fdisk 工具

  • 查看当前分区表
    fdisk -l [<磁盘>]

  • 更改分区表

    fdisk <磁盘>

    常用命令:

    d:删除一个分区

    m:打印帮助菜单

    n:创建一个新的分区

    p:打印分区表

    q:不保存分区表,直接退出 fdisk

    w:保存分区表,然后退出 fdisk

该工具的命令不需要刻意的去记忆,带设备名称时,会默认打印对应的命令说明

2.2、gdisk 工具

该工具常用命令与 fdisk 相同

  • 示例

    # 创建一个新分区
    [root@localhost ~]# gdisk /dev/sda
    GPT fdisk (gdisk) version 1.0.3
    
    Partition table scan:
      MBR: not present
      BSD: not present
      APM: not present
      GPT: not present
    
    Creating new GPT entries.
    # 新建分区
    Command (? for help): n
    # 分区编号,可以使用默认
    Partition number (1-128, default 1): 1
    # 起始扇区,一般默认即可
    First sector (34-20971486, default = 2048) or {+-}size{KMGTP}: 
    # 结束扇区,也就是分区大小,可以使用 “+容量”的方式,由 gdisk 自动计算
    Last sector (2048-20971486, default = 20971486) or {+-}size{KMGTP}: +1G
    Current type is 'Linux filesystem'
    # 文件系统类型编号,默认就是Linux文件系统
    Hex code or GUID (L to show codes, Enter = 8300): 
    Changed type of partition to 'Linux filesystem'
    
    # 查看当前分区表
    Command (? for help): p
    Disk /dev/sda: 20971520 sectors, 10.0 GiB
    Model: VMware Virtual S
    Sector size (logical/physical): 512/512 bytes
    Disk identifier (GUID): 811C1B96-C04F-4301-B51D-066C3DCF8992
    Partition table holds up to 128 entries
    Main partition table begins at sector 2 and ends at sector 33
    First usable sector is 34, last usable sector is 20971486
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 18874301 sectors (9.0 GiB)
    
    Number  Start (sector)    End (sector)  Size       Code  Name
       1            2048         2099199   1024.0 MiB  8300  Linux filesystem
    
    # 保存分区表
    Command (? for help): w
    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!
    # 确认写入分区表
    Do you want to proceed? (Y/N): y
    OK; writing new GUID partition table (GPT) to /dev/sda.
    The operation has completed successfully.
    

2.3、同步分区表

系统在新建分区后,为了系统安全,内核不会立即更新分区表,因此,需要手动更新

  • 更新内核分区表

    [root@localhost ~]#  partprobe -s
    /dev/sda: gpt partitions 1
    /dev/nvme0n1: msdos partitions 1 2
    
  • 查看内核分区表

    [root@localhost ~]#  cat /proc/partitions
    major minor  #blocks  name
    
     259        0   41943040 nvme0n1
     259        1    1048576 nvme0n1p1
     259        2   40893440 nvme0n1p2
      11        0    1048575 sr0
     253        0   38760448 dm-0
     253        1    2129920 dm-1
       8        0   10485760 sda
       8        1    1048576 sda1
    

3、格式化分区

分区完毕后就需要格式化分区了

3.1、XFS 文件系统 mkfs.xfs

  • 语法

    mkfs.xfs [-b bsize] [-d parms] [-i parms] [-l parms] [-L label] [-f] [-r parms] 分区名称

    参数说明

    -b :后面接的是 block 容量,可由 512 到 64k,最大容量限制为 Linux 的 4k

    -d :后面接的是重要的 data section 的相关参数值,主要的值有:

    ​ agcount=数值 :设定需要几个储存群组的意思(AG),通常与 CPU 有关

    ​ agsize=数值 :每个 AG 设定为多少容量的意思,通常 agcount/agsize 只选一个设定即可

    ​ file :指的是“格式化的装置是个文件而不是个装置”的意思(例如虚拟磁盘)

    ​ size=数值 :data section 的容量,也就是可以不将全部的设备容量用完的意思

    ​ su=数值 :当有 RAID 时,那个 stripe 数值的意思,与底下的 sw 搭配使用

    ​ sw=数值 :当有 RAID 时,用于储存数据的磁盘数量(须扣除备份盘与备用盘)

    ​ sunit=数值 :与 su 相当,不过单位使用的是“多少个 sector(512bytes 大小)”的意思

    ​ swidth=数值 :就是 su*sw 的数值,但是以“多少个 sector(512bytes 大小)”来设定

    -f :如果装置内已经有文件系统,则需要使用这个 -f 来强制格式化才行

    -i :与 inode 有较相关的设定,主要的设定值有:

    ​ size=数值 :最小是 256bytes 最大是 2k,一般保留 256 就足够使用了

    ​ internal=[0|1]:log 设备是否为内置,预设为 1 内置,如果要用外部设备置,使用下面的设定

    ​ logdev=device :log 设备为外部设备时,需设定 internal=0

    ​ size=数值 :登录区的容量,通常最小得要有 512 个 block,大约 2M 以上才行

    -L :后面接这个文件系统的标头名称 Label name 的意思

    -r :指定 realtime section 的相关设定值,常见的有:

    ​ extsize=数值 :就是那个重要的 extent 数值,一般不须设定,但有 RAID 时,最好设定与 swidth 的数值相同较佳,最小为 4K 最大为 1G

​ 一般在做分区格式化时,不需要跟任何参数

  • 示例

    [root@localhost ~]# mkfs.xfs /dev/sda1 
    meta-data=/dev/sda1              isize=512    agcount=4, agsize=65536 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=1, sparse=1, rmapbt=0
             =                       reflink=1
    data     =                       bsize=4096   blocks=262144, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    [root@localhost ~]# blkid
    /dev/sda1: UUID="23343ad5-45bb-4692-82ed-aa7055f635a7" BLOCK_SIZE="512" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="83aca294-7e7c-4640-9163-2af7e1369329"
    

3.2、EXT4 文件系统 mkfs.ext4

  • 语法

    mkfs.ext4 [-b size] [-L label] 设备名称

    选项与参数

    -b :设定 block 的大小,有 1K, 2K, 4K 的容

    -L :后面接这个装置的标头名称

  • 示例

    [root@localhost ~]# mkfs.ext4 /dev/sda1
    mke2fs 1.45.6 (20-Mar-2020)
    创建含有 524288 个块(每块 4k)和 131072 个inode的文件系统
    文件系统UUID:4aae8f57-2539-461f-bfd3-d2579d70d977
    超级块的备份存储于下列块: 
    	32768, 98304, 163840, 229376, 294912
    
    正在分配组表: 完成                            
    正在写入inode表: 完成                            
    创建日志(16384 个块)完成
    写入超级块和文件系统账户统计信息: 已完成