一天一个 Linux 命令(26):fdisk 命令
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/162
一、简介
Linux里的fdisk(英文全称:"Partition table manipulator for Linux")是一个创建和维护磁盘分区表的命令,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表。进行硬盘分区从实质上说就是对硬盘的一种格式化, 用一个形象的比喻,分区就好比在一张白纸上画一个大方框,而格式化好比在方框里打上格子。
二、格式说明
fdisk [options]
fdisk [参数]
Usage:
fdisk [options] <disk> change partition table
fdisk [options] -l <disk> list partition table(s)
fdisk -s <partition> give partition size(s) in blocks
Options:
-b <size> sector size (512, 1024, 2048 or 4096)
-c[=<mode>] compatible mode: 'dos' or 'nondos' (default)
-h print this help text
-u[=<unit>] display units: 'cylinders' or 'sectors' (default)
-v print program version
-C <number> specify the number of cylinders
-H <number> specify the number of heads
-S <number> specify the number of sectors per track
三、选项说明
-b 指定每个硬盘分区的大小,可用数值为512, 1024, 2048 or 4096
-c 兼容模式:'dos'或'nondos'(默认)
-h 显示帮助信息
-u 搭配”-l”参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址
-v 显示版本信息
-l 列出指定的外围设备的分区表状况
-s 将指定的分区大小输出到标准输出上,以块(block)为单位
-C [cyls]:指定硬盘的柱面数(number of cylinders);
-H [heads]:指定硬盘的磁头数(number of heads),当然不是物理数值,而是作用于分区表。合理取值是255和16
-S [sects]:指定每个磁道的扇区数,当然不是物理数值,而是用于分区表。一个合理的数值是63
块(block)与扇区(sector)的区别。 扇区是对硬盘而言,扇区是硬盘的最小存储单位,块是对文件系统而言,块是文件系统最小存取单位。一般而言,一个扇区大小为512B,一个块大小为4KB,一个block是由连续的8个sector组成。
理解上面选项的含义,需了解磁盘的物理组成结构与相关概念,例如sector、cylinder、head等组成部件的具体含义,可参见硬盘的存储原理和内部架构 。
四、命令功能
创建和维护磁盘分区表
五、常见用法
5.1 显示当前分区情况
# fdisk -l
Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d64b4
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 104857566 52427759+ 83 Linux
# fdisk -lu
Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000d64b4
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 104857566 52427759+ 83 Linux
#参数说明
Device:分区名称;
Boot:是否是活动分区。活动分区只能是主分区,一个硬盘只能有一个活动的主分区;一个硬盘的主分区与扩展分区总和不能超过4个。硬盘分区遵循着“主分区→扩展分区→逻辑分区”的次序原则,而删除分区则与之相反。
主分区:一个硬盘可以划分多个主分区,但没必要划分那么多,一个足矣。
扩展分区:主分区之外的硬盘空间就是扩展分区,
逻辑分区:是对扩展分区再行划分得到的。
Start:分区柱面的开始下标;
End:分区柱面的结束下标;
Blocks:该分区的块数量。
Id:各种分区的文件系统不同,如有ntfs分区,fat32分区,ext3分区,swap分区等。每一种文件系统都有一个代号,对应这里的Id。常见的文件系统ID有:
f:FAT32 Extend,只限于扩展分区。
86:NTFS。
7:HPFS/NTFS
b:FAT32。
83:Linux Ext2。
82:Linux 交换区。
System:文件系统名称。
5.2 显示指定设备的分区
# fdisk -l /dev/vdb
Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xeecbd2e1
Device Boot Start End Blocks Id System
/dev/vdb1 2048 209715199 104856576 83 Linux
[root@iz8vb6yk5a7gzhaw7901zkz ~]#
5.3 对指定设备创建分区和文件系统并挂载,使磁盘变为可用
5.3.1 创建一个分区
1.运行以下命令对数据盘进行分区。
fdisk -u /dev/vdb
2.输入p查看数据盘的分区情况。
本示例中,数据盘没有分区。
3.输入n创建一个新分区。
4.输入p选择分区类型为主分区。
说明 创建一个单分区数据盘可以只创建主分区。如果要创建四个以上分区,您应该至少选择一次e(extended),创 建至少一个扩展分区。
5.输入分区编号,按回车键。
本示例中,仅创建一个分区,直接按回车键,采用默认值1。
6.输入第一个可用的扇区编号,按回车键。
本示例中,直接按回车键,采用默认值2048。
7.输入最后一个扇区编号,按回车键。
本示例中,仅创建一个分区,直接按回车键,采用默认值。
8.输入p查看该数据盘的规划分区情况。
9.输入w开始分区,并在完成分区后退出。
结果如下所示:
5.3.2 查看新分区信息
fdisk -lu /dev/vdb
运行结果如下所示,如果出现/dev/vdb1的相关信息,表示新分区已创建完成。
5.3.3 为分区创建文件系统
在新分区上创建一个文件系统。以下命令介绍如何创建ext4和xfs文件系统,您可以根据实际需求,创建对应的文件系统。
-
运行以下命令,创建一个ext4文件系统。
mkfs -t ext4 /dev/vdb1
-
运行以下命令,创建一个xfs文件系统。
mkfs -t xfs /dev/vdb1
本示例中,创建一个ext4文件系统。
5.3.4 配置/etc/fstab文件并挂载分区
在/etc/fstab中写入新分区信息,启动开机自动挂载分区。
注意: 建议您在/etc/fstab中使用全局唯一标识符UUID来引用新分区。由于释放云盘等操作可能会导致其他云盘的设备名变动,如果在/etc/fstab中直接使用设备名,当设备名变动时可能影响您的存储数据。
1.运行以下命令,备份/etc/fstab文件。
cp /etc/fstab /etc/fstab.bak
2.在/etc/fstab里写入新分区信息。
如果是root用户,可以运行以下命令直接修改/etc/fstab文件。如果是普通用户,可以手动修改/etc/fstab文件
echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /mnt ext4 defaults 0 0 >> /etc/fstab
其中:
/dev/vdb1:已创建好文件系统的数据盘分区,您需要根据实际情况修改对应的分区名称。
/mnt:挂载(mount)的目录节点,您需要根据实际情况修改。
ext4:分区的文件系统类型,您需要根据创建的文件系统类型修改。
注意:
说明 Ubuntu 12.04系统不支持barrier,需要运行echo '`blkid /dev/vdb1 | awk '{print $3}' | sed 's/\"//g'` /mnt ext4 barrier=0 0 0' >> /etc/fstab命令。
3.查看/etc/fstab中的新分区信息。
cat /etc/fstab
结果如下所示,如果出现新建文件系统的信息,表示文件系统挂载成功
4.挂载/etc/fstab配置的文件系统
mount -a
5.检查挂载结果。
df -h
结果如下所示,如果出现新建文件系统的信息,表示文件系统挂载成功。
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/162