目录
fdisk命令来自于英文词组“Partition table manipulator for Linux”的缩写,其功能是用于管理磁盘的分区信息。如果一套几百平米的房子内部没有墙壁,虽然看起来会很敞亮,但是各种声音、气味、物品会随意充斥在整个房子内,让人极不舒适,因此需要用墙壁按照功能进行划分,例如卧室、厕所、厨房、阳台等等。
fdisk命令可以用于对磁盘进行分区操作,用户可以根据实际情况进行合理划分,这样后期挂载和使用时会方便很多。
语法格式:fdisk [参数] [设备]
常用参数:
-b | 指定每个分区的大小 |
-l | 列出指定的外围设备的分区表状况 |
-s | 将指定的分区大小输出到标准输出上,单位为区块 |
-u | 搭配”-l”参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址 |
-v | 显示版本信息 |
-m | 查看全部可用参数 |
-n | 添加新的分区 |
-d | 删除某个分区信息 |
-t | 改变某个分区的类型 |
-p | 查看分区表信息 |
-w | 保存并退出 |
-q | 不保存直接退出 |
如果是自己的虚拟机,则手动添加磁盘(后续操作省略不写):
- # 查看当前系统的分区情况:
- root@fbi:~# fdisk -l
使用 fdisk 命令管理前面我们新增的磁盘 /dev/vdb 。在看到提示信息后输入参数 p 来查看硬盘设备内已有的分区信息,其中包括了磁盘的容量大小、扇区个数等信息:
输入参数 n 尝试添加新的分区。系统会要求用户选择继续输入参数 p 来创建主分区,还是输入参数 e 来创建扩展分区。这里输入 p 来创建一个主分区:
在确认创建一个主分区后,系统要求用户先输入主分区的编号。主分区的编号范围是1~4,因此这里输入默认的1就可以了。接下来系统会提示定义起始的扇区位置,这不需要改动,敲击回车键保留默认设置即可,系统会自动计算出最靠前的空闲扇区的位置。最后,系统会要求定义分区的结束扇区位置,这其实就是要去定义整个分区的大小是多少。我们不用去计算扇区的个数,只需要输入+60G 即可创建出一个容量为60GB的硬盘分区。
再次使用参数 p 来查看硬盘设备中的分区信息。果然就能看到一个名称为/dev/vdb1、起始扇区位置为2048、结束扇区位置为123734015的主分区了。这时千万不要直接关时窗口,而应该敲击参数 w 后按回车键,这样分区信息才是真正地写入成功啦。
在上述步骤执行完毕之后,Linux系统会自动把这个硬盘主分区抽象成/dev/vdb1设备文件。可以使用file命令查看该文件的属性,但在工作中发现,有些时候系统并没有自动把分区信息同步给Linux内核,而且这种情况似乎还比较常见(但不能算作严重的bug)。可以输入 partprobe 命令手动将分区信息同步到内核,而且一般推荐连续两次执行该命令,效果会更好。如果使用这个命令都无法解决问题,那么就重启计算机吧,这个“杀手铜”百试百灵,一定会有用的。
- root@fbi:~# file /dev/vdb1
- /dev/vdb1: block special (252/17)
- # 不成功的话会显示 cannot open ... 则执行 partprobe
-
- root@fbi:~# partprobe
- root@fbi:~# partprobe
如果硬件存储设备没有进行格式化,则Linux系统无法得知怎么在其上写入数据。因此,在对存储设备进行分区后还需要进行格式化操作。在Linux系统中用于格式化操作的命令是 mkfs。这个mkfs命令很贴心地把常用的文件系统名称用后缀的方式保存成了多个命令文件,用起来也非常简单——mkfs.文件类型名称。例如要将分区为ext4的文件系统进行格式化,则命令应为mkfs.ext4 /dev/vdb1。
- root@fbi:~# mkfs
- mkfs mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.jffs2 mkfs.msdos mkfs.ubifs mkfs.xfs
- mkfs.bfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.minix mkfs.ntfs mkfs.vfat
-
- root@fbi:~# mkfs.ext4 /dev/vdb1
- mke2fs 1.44.1 (24-Mar-2018)
- Creating filesystem with 15466496 4k blocks and 3866624 inodes
- Filesystem UUID: b60067cc-5523-41ab-aa25-9f330a17b58d
- Superblock backups stored on blocks:
- 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
- 4096000, 7962624, 11239424
-
- Allocating group tables: done
- Writing inode tables: done
- Creating journal (65536 blocks): done
- Writing superblocks and filesystem accounting information: done
终于完成了存储设备的分区和格式化操作,接下来就是要来挂载并使用存储设备了。与之相关的步骤也非常简单:首先是创建一个用于挂载设备的挂载点目录;然后使用mount命令将存储设备与挂载点进行关联;最后使用df -Th命令来查看挂载状态和硬盘使用量信息。
- root@fbi:~# mkdir /fbi
-
- root@fbi:~# mount /dev/vdb1 /fbi
-
- root@fbi:~# df -Th
- Filesystem Type Size Used Avail Use% Mounted on
- udev devtmpfs 7.9G 0 7.9G 0% /dev
- tmpfs tmpfs 1.6G 6.9M 1.6G 1% /run
- /dev/vda2 ext4 39G 3.1G 34G 9% /
- tmpfs tmpfs 7.9G 0 7.9G 0% /dev/shm
- tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
- tmpfs tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
- /dev/vda1 vfat 512M 264K 512M 1% /boot/efi
- tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/0
- /dev/vdb1 ext4 58G 53M 55G 1% /fbi
给硬盘分区的过程经历以下几个步骤:
经过这几个步骤,我们的硬盘分区才可以正常使用