前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一天一个 Linux 命令(26):fdisk 命令

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

作者头像
joshua317
发布2021-10-18 11:46:19
1.2K0
发布2021-10-18 11:46:19
举报
文章被收录于专栏:技术博文技术博文

本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/162

一、简介

Linux里的fdisk(英文全称:"Partition table manipulator for Linux")是一个创建和维护磁盘分区表的命令,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表。进行硬盘分区从实质上说就是对硬盘的一种格式化, 用一个形象的比喻,分区就好比在一张白纸上画一个大方框,而格式化好比在方框里打上格子。

二、格式说明

代码语言:javascript
复制
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

三、选项说明

代码语言:javascript
复制
-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 显示当前分区情况

代码语言:javascript
复制
# 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
代码语言:javascript
复制
#参数说明
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 显示指定设备的分区

代码语言:javascript
复制
# 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 创建一个分区
代码语言:javascript
复制
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 查看新分区信息
代码语言:javascript
复制
fdisk -lu /dev/vdb

运行结果如下所示,如果出现/dev/vdb1的相关信息,表示新分区已创建完成。

5.3.3 为分区创建文件系统

在新分区上创建一个文件系统。以下命令介绍如何创建ext4和xfs文件系统,您可以根据实际需求,创建对应的文件系统。

本示例中,创建一个ext4文件系统。

5.3.4 配置/etc/fstab文件并挂载分区

在/etc/fstab中写入新分区信息,启动开机自动挂载分区。

注意: 建议您在/etc/fstab中使用全局唯一标识符UUID来引用新分区。由于释放云盘等操作可能会导致其他云盘的设备名变动,如果在/etc/fstab中直接使用设备名,当设备名变动时可能影响您的存储数据。

代码语言:javascript
复制
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

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

代码语言:javascript
复制
4.挂载/etc/fstab配置的文件系统
mount -a
5.检查挂载结果。
df -h

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

本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/162

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-10-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简介
  • 二、格式说明
  • 三、选项说明
  • 四、命令功能
  • 五、常见用法
    • 5.1 显示当前分区情况
      • 5.2 显示指定设备的分区
        • 5.3 对指定设备创建分区和文件系统并挂载,使磁盘变为可用
          • 5.3.1 创建一个分区
          • 5.3.2 查看新分区信息
          • 5.3.3 为分区创建文件系统
          • 5.3.4 配置/etc/fstab文件并挂载分区
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档