mkfs中的字母代表"制作文件系统"。命令通常用于管理Linux中的存储设备,你可以将mkfs看作是将磁盘格式化为特定文件系统的命令行工具。mkfs -t [fs type] [target device]
还可以使用以下方式使用mkfs命令。mkfs.[fs type] [target device]
mkfs命令示例
让我向你展示mkfs命令的一些常见用法。请不要盲目地在你的实际系统上尝试这些命令,它将格式化目标设备/磁盘分区,擦除所有数据,
没有任何选项的mkfs创建ext2文件系统
如果没有为目标设备指定文件系统类型,它使用默认的ext文件系统。sudo mkfs /dev/sdb1
使用mkfs指定文件类型
使用ext2并不是很方便或不可取。如今,大多数Linux系统建议使用ext4。可以通过以下方式指定文件系统:sudo mkfs -t ext4 /dev/sdb1
你也可以像这样使用它:sudo mkfs.ext4 /dev/sdb1
检查设备上的坏块
你也可以检查设备上的坏块,但要记住,检查通常需要很长时间。sudo mkfs -c /dev/sdb1
额外提示:检查设备的文件系统类型
您可能要检查刚刚使用mkfs命令格式化的设备的文件系统类型。您可以为此目的使用file命令。sudo file -sL /device
下面是一个示例,显示了它能够显示哪种类型的输出:[email protected]:~$ sudo file -s /dev/nvme0n1p2
/dev/nvme0n1p2: Linux rev 1.0 ext4 filesystem data, UUID=34daa4b7-a2c4-4983-b5cc-df9baa6a6543 (extents) (64bit) (large files) (huge files)
现实生活中的用例:使用mkfs命令在USB设备上创建文件系统
我认为最实用的演示是格式化USB Flash存储驱动器,这些相同的原理将适用于您选择的任何类型的存储。
查找设备
首先你需要找到你的设备,可以使用的一种方法是sudo fdisk -l,这将列出当前挂载的所有磁盘节点。[email protected]:~$ sudo fdisk -l
Disk /dev/sda: 25 GiB, 26843545600 bytes, 52428800 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3c62c49c
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 4096 1023998 1019903 498M 83 Linux
/dev/sda2 1024000 44036094 43012095 20.5G 83 Linux
/dev/sda3 44036096 52424702 8388607 4G 82 Linux swap / Solaris
Disk /dev/sdb: 28.93 GiB, 31040995328 bytes, 60626944 sectors
Disk model: Patriot Memory
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 91A34D6F-E67B-E54D-B19C-5CC828DAAB9A
Device Start End Sectors Size Type
/dev/sdb1 2048 60626910 60624863 28.9G Linux filesystem
输出将明显不同,在识别你所需要的驱动器时,请非常小心,如果不确定,请卸下磁盘,然后再次运行fdisk -l命令。
验证分区
我使用的设备是Patriot内存USB,它位于/dev/sdb,除了识别正确的磁盘之外,您还需要确保更改了所需分区的fs。
我使用fdisk工具删除现有数据,并写入新的分区表,当我这样做时,我创建了一个新的分区来写入,分区将成为目标:/dev/sdb1。
卸载
在尝试更改文件系统之前,需要使用umount命令将它卸载。[email protected]:~$ sudo umount /dev/sdb1
创建文件系统
既然已经验证了目标,并卸载了驱动器,就可以继续创建文件系统了。
我在这里添加了-v verbose选项,以便在运行。[email protected]:~$ sudo mkfs.ext4 /dev/sdb1 -v
mke2fs 1.45.5 (07-Jan-2020)
fs_types for mke2fs.conf resolution: 'ext4'
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1896832 inodes, 7578107 blocks
378905 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2155872256
232 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Filesystem UUID: 73882769-7599-4c79-a00b-ef317ccd921d
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
此过程需要一些时间,但应在20分钟内完成,除非目标大于2TB。
验证新创建的文件系统
首先,检查刚才使用的设备的文件系统,sudo file -sL /dev/sdb1
重要的是要确保要在使用该设备的系统上识别该设备。mkdir test && cd test
touch test.txt
echo "THIS IS ONLY A TEST" > test.txt
cat test.txt
如果一切正常,则应该能够将驱动器安装到所需的系统并访问文件。
结论
如果你喜欢这篇教程,请在社交媒体上分享。