1.命令作用
创建一个ext4格式的文件系统(create an ext4 filesystem);也有很多人解释是以ext4文件系统格式对分区进行格式化(如果分区中有文件,格式化会清除文件);
2.命令语法
Usage: mkfs.ext4 [OPTIONS] device [blocks-count]
3.参数详解
OPTION:
- -c,创建文件系统前检查是否有坏块;-cc则会采用较慢的读写测试,默认是快速的只读测试
- -l filename,配合-c参数使用,将坏块的数据列表保存到文件(文件需要预先创建)
- -b block-size,指定块的大小(以字节为单位),有效值有1024、2048、4096(默认值),其默认值在/etc/mke2fs.conf中由blocksize指定
- -C cluster-size,启用bigalloc特性后,文件系统以簇为单位分配空间,减少碎片化并提升大文件性能;与-O bigalloc启动特性配合使用,-C指定文件系统簇大小;有效的簇大小范围为每簇2048字节至256M字节
- -i bytes-per-inode,指定字节与索引节点的比例;会根据每个索引节点的字节数,为每个磁盘空间单位创建一个索引节点;此值通常不应小于文件系统的块大小,因为那样会导致创建的索引节点数量多于实际能够使用的数量;(文件系统创建后无法修改)
- bytes-per-inode = 磁盘总大小(bytes) / 索引节点数量(inode)
- 磁盘总大小不变情况下,bytes-per-inode值越大,inode越小(该磁盘所能创建的文件目录数量越小,适合大文件存储)
- 磁盘总大小不变情况下,bytes-per-inode值越小,inode越大(该磁盘所能创建的文件目录数量越小,适合大量小文件存储)
- -I inode-size,指定每个索引节点(inode)的大小(以字节为单位);可设置为128、256(默认值)、512等值的2次幂,默认值在/etc/mke2fs.conf中由inode_size指定;该值过大浪费磁盘空间,过小可能不够保存足够元数据,(文件系统创建后无法修改)
- -J journal-options,自定义日志选项配置,支持size、device;命令格式如: mkfs.ext4 -J size=128,device=/dev/sdb2 /dev/sdb1
- -N number-of-inodes,指定索引节点(inode)数量,即可以创建多少个文件和目录,会覆盖文件系统默认的inode计算方法(默认计算方法是使用bytes-per-inode ratio和块数量进行计算的)
- -m reserved-blocks-percentage,指定用于超级用户占有的文件系统块的百分比,默认为5%;可以避免文件系统的碎片化,并使根用户拥有的守护进程在禁止非特权进程写入文件系统的情况下仍能正常运行
- -o creator-os,覆盖了文件系统"creator operating system"字段的默认值,默认值是操作系统名称(Linux);其他可取值FreeBSD、Hurd等;设置后可使用dumpe2fs /dev/sdb1 | grep "Filesystem OS type"查看
- -g blocks-per-group,指定一个块组中的块数量;通常情况下,用户无需设置此参数,因为默认值对于文件系统而言是最优的
- -L volume-label,设置文件系统的卷标。卷标是一个人类可读的标识符
- -M last-mounted-directory,设置该文件系统的最后挂载目录;设置后可使用dumpe2fs /dev/sdb1 | grep "Last mounted on"查看
- -O feature[,...],使用给定的特性(文件系统选项)创建一个文件系统,覆盖默认的文件系统选项。默认启用的特性由base_features关系指定,该关系要么在/etc/mke2fs.conf配置文件的[defaults]部分中,要么在由-T选项指定的使用类型对应的[fs_types]子部分中,进一步通过在 [fs_types]子部分中找到的文件系统和使用类型的特征关系进行修改
- -r fs-revision,为新的文件系统设置文件系统版本(如0,1);0是ext2文件系统版本(无日志功能);1支持ext3/ext4特性的版本(默认推荐值)
- -E extended-option[,...]],为文件系统设置扩展选项,多选项以逗号分隔
- -t fs-type,指定要创建的文件系统类型(例如 ext2、ext3、ext4 等)
- -T usage-type,说明该文件系统将如何使用,以便选择最佳的文件系统参数;系统文件/etc/mke2fs.conf有对应的说明;默认情况按如下方式定义:
- 小于或等于3兆字节,使用文件系统类型floppy
- 大于3兆字节,小于或等于512兆字节,使用文件系统类型small
- 大于或等于4太字节但小于16太字节,使用文件系统类型big
- 大于或等于16 太字节,使用文件系统类型huge
- 其他使用文件系统类型default
- -U UUID,手动自定义指定UUID创建文件系统(可使用uuidgen获取一个UUID)
- -n,不实际创建文件系统,但显示创建文件系统时相关操作步骤(模拟执行,不实际执行)
- -q,安静执行,静默输出,可用于脚本执行
- -v,详细的执行信息(默认)
- -D,格式化创建文件系统启用直接I/O模式,跳过操作系统的页缓存(Page Cache),直接对磁盘进行读写操作
- -f fragment-size,指定片段的大小(以字节为单位);默认值与块大小(block-size)相同,设置时必须小于等于块大小;片段(fragment)是比块更小的分配单元,用于优化小文件存储,减少空间浪费;-f 不能执行,提示语法有问题,-b修改块大小时会修改该值,不建议单独修改
- -F,强制让文件系统处于使用状态或已被挂载的情况下,也能格式化建立文件系统(危险操作)
- -V,打印版本信息并退出
blocks-count,块数量,与block-size来计算总的格式化创建文件系统的大小(即磁盘大小)
4.常用用例
4.1.默认参数格式化(无参数)
[root@node4 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013) # mke2fs工具版本,mkfs.ext4本质是mke2fs的符号链接和封装脚本,实际执行时均调用mke2fs
Filesystem label= # 文件系统标签(未设置为空)
OS type: Linux # 操作系统类型
Block size=4096 (log=2) # 块大小4KB(2^12<2的12次方>);操作系统与存储设备I/O操作的基本单位,决定单次读写的数据量
Fragment size=4096 (log=2) # 文件系统的最小存储单元(碎片大小),此处为4096字节(4KB),与块大小(Block size)通常一致;log=2表示碎片大小的对数计算值(2^12=4096);碎片大小与块大小一致可减少空间浪费;较大的块/碎片尺寸(如4KB)能提升顺序I/O性能;多数情况下碎片大小等于块大小,但可通过-E fragment-size=单独设置(罕见需求);XFS使用sunit/swidth定义条带化存储,而非碎片大小
Stride=0 blocks, Stripe width=0 blocks # Stride表示条带单元与文件系统块大小的比值,用于优化 RAID阵列中的条带化写入,值0表示未显式配置条带化策略,也是默认值(单磁盘模式);Stripe width表示条带宽度(即RAID成员磁盘数量),值0表示未启用多磁盘并行写入(单磁盘或未配置RAID)
343392 inodes, 1371179 blocks # 索引节点总数量,块总数量
68558 blocks (5.00%) reserved for the super user # 预留超级用户的块数量(总块数的5%)
First data block=0 # 文件系统的第一个数据块编号为0
Maximum filesystem blocks=1405091840 # 文件系统支持的最大块数量
42 block groups # 块组数量(总块数/每组块数)
32768 blocks per group, 32768 fragments per group # 每个块组的块数和片段数,两个值相等时表示文件系统未启用片段化存储
8176 inodes per group # 每个块组的索引节点数
Superblock backups stored on blocks: # 超级块备份位置
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done # 分配组表完成
Writing inode tables: done # 写入索引表完成
Creating journal (32768 blocks): done # 创建日志区域完成(默认占用128MB)
Writing superblocks and filesystem accounting information: done # 写入超级块和文件系统说明信息完成(创建文件系统完成)
[root@node4 ~]#
4.2.指定参数格式化
1.格式化磁盘分区且检查否有坏块
执行先检查是否有坏块,然后执行创建格式化文件系统
如果有坏块会将信息输入到指定的文件(文件需要提前创建)
mkfs.ext4 -c /dev/sdb1 -l badblocks.txt
2.自定义块大小格式化磁盘分区
Fragment size会随着Block size一起改变
Block size修改后,其他的一些值,如块数量、inode数量等都会发生改变
mkfs.ext4 -b 2048 /dev/sdb1
3.指定字节与索引节点的比例(min 1024/max 67108864)
bytes-per-inode = 磁盘总大小(bytes)/索引节点数量(inode)
磁盘总大小不变,该值越大,inode数量越小,该值越小,inode数量越大
mkfs.ext4 -i 1024 /dev/sdb1
4.指定每个索引节点(inode)的大小
mkfs.ext4 -I 512 /dev/sdb1
5.指定日志选项大小和外部存储设备
mkfs.ext4 -J size=128,device=/dev/sdb2 /dev/sdb1
6.指定inode数量
mkfs.ext4 -N 700000 /dev/sdb1
7.指定超级用户占有的文件系统块的百分比,默认5%
mkfs.ext4 -m 10 /dev/sdb1
8.覆盖创建者操作系统标识,默认Linux(覆盖后可使用dumpe2fs /dev/sdb1 | grep "Filesystem OS type"查看;格式化输出信息也可以看到OS type: FreeBSD)
mkfs.ext4 -o FreeBSD /dev/sdb1
9.指定一个块组中的块数量
mkfs.ext4 -g 20000 /dev/sdb1
10.设置文件系统的卷标(可使用lsblk -f查看卷标信息),可以用于通过卷标进行磁盘挂载
mkfs.ext4 -L pgdata /dev/sdb1
11.设置最后挂载的位置(可使用dumpe2fs /dev/sdb1 | grep "Last mounted on"查看)
mkfs.ext4 -M /data1 /dev/sdb1
12.覆盖/etc/mke2fs.conf文件的features;默认值为base_features指定的值;如果指定了-T则再-T的基础上覆盖features选项
mkfs.ext4 -O extent,uninit_bg /dev/sdb1
13.覆盖/etc/mke2fs.conf文件的fs_types
mkfs.ext4 -T floppy /dev/sdb1
14.指定文件系统类型,默认是ext4
mkfs.ext4 -t ext3 /dev/sdb1
15.指定文件系统版本(0是旧版本ext2,1是ext3、ext4版本)
mkfs.ext4 -r 1 /dev/sdb1
16.uuidgen生成UUID,然后使用该UUID格式磁盘
mkfs.ext4 -UUID "b1a1f6c4-c66b-443e-b4ad-ef677b2d58bb" /dev/sdb1
17.模拟执行,并不实际格式化创建文件系统
mkfs.ext4 -n /dev/sdb1
18.安静执行,不输出创建文件系统过程信息
mkfs.ext4 -q /dev/sdb1
19.与-q相反,输出创建文件系统过程信息(默认参数)
mkfs.ext4 -v /dev/sdb1
20.直接I/O模式进行格式化创建文件系统
mkfs.ext4 -D /dev/sdb1
21.强制执行(测试时,挂载的目录,强制执行还是会报错)
mkfs.ext4 -F /dev/sdb2
1768

被折叠的 条评论
为什么被折叠?



