一天一个 Linux 命令(26):fdisk 命令

一、简介

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

结果如下所示,如果出现新建文件系统的信息,表示文件系统挂载成功。

 

 

 

 

posted @ 2021-10-14 18:36  joshua317  阅读(676)  评论(0编辑  收藏  举报