fdisk 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

fdisk 命令安装:


-bash: fdisk: command not found

#Debian
apt-get install fdisk

#Ubuntu
apt-get install fdisk

#Alpine
apk add util-linux

#Arch Linux
pacman -S util-linux

#Kali Linux
apt-get install fdisk

#CentOS
yum install util-linux

#Fedora
dnf install util-linux

#OS X
brew install util-linux

#Raspbian
apt-get install util-linux

#Docker
docker run cmd.cat/fdisk fdisk

fdisk 命令补充说明:


fdisk 命令是一个菜单驱动程序,用于创建和操作分区表。它了解 DOS 类型的分区表和 BSD 类型或 SUN 类型的磁盘标签。

fdisk 无法理解 GPT(GUID 分区表),因此它不适用于大型分区。在这些情况下,请使用更高级的 GNU Parted

fdisk 不使用 DOS 兼容模式,默认情况下将柱面作为显示单位。可以使用 -c = dos -u = cylinders 命令行选项启用旧的 DOS 行为。

硬盘可以分为一个或多个逻辑磁盘,称为分区。该分区记录在分区表中,该分区表位于磁盘的扇区 0 中。在 BSD 世界中,人们谈论“磁盘片”和“磁盘标签”。

Linux 需要至少一个分区,专门用于其根文件系统。它可以使用交换文件和 / 或交换分区,但后者效率更高。因此,通常人们会想要第二个 Linux 分区专门用作交换分区。在与 Intel 兼容的硬件上,引导系统的 BIOS 通常只能访问磁盘的前 1024 个柱面。因此,拥有大磁盘的人通常会创建第三个分区,该分区通常大几个 MB,通常挂载在 /boot 上,以存储内核映像和启动时所需的一些辅助文件,以确保这些内容可供访问 BIOS。使用安全性,简化管理和备份或测试的原因可能要使用超过最小数量的分区。

fdisk 命令语法:


disk [-uc] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device
fdisk -l [-u] [device...]
fdisk -s partition...
fdisk -v
fdisk -h

fdisk 命令选项:


-b <大小>             扇区大小(512、1024、2048或4096)
-c[=<模式>]           兼容模式:“dos”或“nondos”(默认)
-h                    打印此帮助文本
-u[=<单位>]           显示单位:“cylinders”(柱面)或“sectors”(扇区,默认)
-v                    打印程序版本
-C <数字>             指定柱面数
-H <数字>             指定磁头数
-S <数字>             指定每个磁道的扇区数

fdisk 命令参数:


设备文件:指定要进行分区或者显示分区的硬盘设备文件。

fdisk 命令实例


首先选择要进行操作的磁盘:

[root@localhost ~]$ fdisk /dev/sdb

输入 m 列出可以执行的命令:

command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

输入 p 列出磁盘目前的分区情况:

Command (m for help): p

Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1           1        8001   8e  Linux LVM
/dev/sdb2               2          26      200812+  83  Linux

输入 d 然后选择分区,删除现有分区:

Command (m for help): d
Partition number (1-4): 1

Command (m for help): d
Selected partition 2

查看分区情况,确认分区已经删除:

Command (m for help): print

Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

Command (m for help):

输入 n 建立新的磁盘分区,首先建立两个主磁盘分区:

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p    //建立主分区
Partition number (1-4): 1  //分区号
First cylinder (1-391, default 1):  //分区起始位置
Using default value 1
last cylinder or +size or +sizeM or +sizeK (1-391, default 391): 100  //分区结束位置,单位为扇区

Command (m for help): n  //再建立一个分区
Command action
   e   extended
   p   primary partition (1-4)
p 
Partition number (1-4): 2  //分区号为2
First cylinder (101-391, default 101):
Using default value 101
Last cylinder or +size or +sizeM or +sizeK (101-391, default 391): +200M  //分区结束位置,单位为M

确认分区建立成功:

Command (m for help): p

Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         100      803218+  83  Linux
/dev/sdb2             101         125      200812+  83  Linux

再建立一个逻辑分区:

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e  //选择扩展分区
Partition number (1-4): 3
First cylinder (126-391, default 126):
Using default value 126
Last cylinder or +size or +sizeM or +sizeK (126-391, default 391):
Using default value 391

确认扩展分区建立成功:

Command (m for help): p

Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         100      803218+  83  Linux
/dev/sdb2             101         125      200812+  83  Linux
/dev/sdb3             126         391     2136645    5  Extended

在扩展分区上建立两个逻辑分区:

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l //选择逻辑分区
First cylinder (126-391, default 126):
Using default value 126
Last cylinder or +size or +sizeM or +sizeK (126-391, default 391): +400M    

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (176-391, default 176):
Using default value 176
Last cylinder or +size or +sizeM or +sizeK (176-391, default 391):
Using default value 391

确认逻辑分区建立成功:

Command (m for help): p

Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         100      803218+  83  Linux
/dev/sdb2             101         125      200812+  83  Linux
/dev/sdb3             126         391     2136645    5  Extended
/dev/sdb5             126         175      401593+  83  Linux
/dev/sdb6             176         391     1734988+  83  Linux

Command (m for help):

从上面的结果我们可以看到,在硬 sdb 我们建立了 2 个主分区(sdb1,sdb2),1 个扩展分区(sdb3),2 个逻辑分区(sdb5,sdb6)

注意:主分区和扩展分区的磁盘号位 1-4,也就是说最多有4个主分区或者扩展分区,逻辑分区开始的磁盘号为 5,因此在这个实验中试没有 sdb4 的。

最后对分区操作进行保存:

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

建立好分区之后我们还需要对分区进行格式化才能在系统中使用磁盘。

在 sdb1 上建立 ext2 分区

[root@localhost ~]$ mkfs.ext2 /dev/sdb1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
100576 inodes, 200804 blocks
10040 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=209715200
7 block groups
32768 blocks per group, 32768 fragments per group
14368 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840

Writing inode tables: done                           
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

在 sdb6 上建立 ext3 分区:

[root@localhost ~]$ mkfs.ext3 /dev/sdb6
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
217280 inodes, 433747 blocks
21687 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=444596224
14 block groups
32768 blocks per group, 32768 fragments per group
15520 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

Writing inode tables: done                           
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]#

建立两个目录 /oracle/web,将新建好的两个分区挂载到系统:

[root@localhost ~]$ mkdir /oracle
[root@localhost ~]$ mkdir /web
[root@localhost ~]$ mount /dev/sdb1 /oracle
[root@localhost ~]$ mount /dev/sdb6 /web

查看分区挂载情况:
[root@localhost ~]# df -h
文件系统              容量  已用 可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
                      6.7G  2.8G  3.6G  44% /
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 125M     0  125M   0% /dev/shm
/dev/sdb1             773M  808K  733M   1% /oracle
/dev/sdb6             1.7G   35M  1.6G   3% /web

fdisk 命令的坑:


如果需要每次开机自动挂载则需要修改 /etc/fstab 文件,加入两行配置

[root@localhost ~]# vim /etc/fstab

/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

/dev/sdb1               /oracle                 ext2    defaults        0 0
/dev/sdb6               /web                    ext3    defaults        0 0

fdisk 命令扩展阅读:




fdisk 命令评论

共收录到 489Linux 命令