fdisk支持几种分区方案。MBR和GPT是两个最受欢迎的分区标准方案,它们以不同的方式将分区信息存储在驱动器上。

GPT是允许使用的较新标准,并且比MBR具有许多优势。 在选择要使用的分区标准时你需要考虑的是。

你BIOS是否支持GPT分区模式,如果不支持GPT则使用MBR。在近年的生产的计算机内置BIOS基本都会支持GPT。

如果BIOS使用了UEFI那么你的计算机时支持GPT的。如果没有大概率时不支持GPT分区,这时你应该使用MBR分区。

MBR标准最多支持创建2 TiB磁盘分区,如果磁盘的容量为2 TiB或更大,请使用GPT。

MBR的限制为4个主分区。 如果需要更多分区,则可以将一个主分区设置为扩展分区,其他都设置为逻辑分区。

使用GPT,最多可以有128个分区。 GPT不支持扩展分区或逻辑分区。

如果你需要对已经存在分区表磁盘进行分区,可参考我们的教程如何创建磁盘分区在Linux

在开始对新的磁盘/硬盘进行分区之前,我需要知道磁盘在计算机上的名称。sudo fdisk -l可以帮助我们找到未创建分区的磁盘。

通常,如果一个磁盘不存在任何分区,那么该磁盘就是我们要创建新分区的磁盘,在本教程的示例中,存在一个未分区的磁盘/dev/sdb。即计算机上第二块磁盘。

注意你的计算机上磁盘可能会跟教程中磁盘命名可能会一样,请根据你自己的实际做出更改。

如果已经创建分区的磁盘将会/dev/sda磁盘一样存在多个分区的名称,如/dev/sda1等。

sudo fdisk -l

#输出
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 sectors
Device     Boot   Start       End   Sectors   Size Id Type
/dev/sda1  *       2048   1050623   1048576   512M  b W95 FAT32
/dev/sda2       1052670 419428351 418375682 199.5G  5 Extended
/dev/sda5       1052672 419428351 418375680 199.5G 83 Linux

Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

现在我们已经找到需要创建分区的新磁盘,接下来使用sudo fdisk /dev/sdb命令开始进行分区。

sudo fdisk /dev/sdb
[sudo] password for myfreax:
Welcome to fdisk (util-linux 2.34).Changes will remain in memory only, until you decide to write them.Be careful before using the write command.
Device does not contain a recognized partition table.Created a new DOS disklabel with disk identifier 0x3d5b6306.

当你进入fdisk命令的会话中时,并提示你作出的任何更改都保存在内存中,直到你使用write命令写设备,即缩写的w命令。

你在fdisk命令执行的子命令都不会马上写入到磁盘中。只有你明确的调用write命令才会写入到磁盘。

如果你在fdisk命令中做了其中一个错误的操作,但又不想一步一步撤销。或者你对当前操作不满意可以使用q命令直接退出,将不会保存你对磁盘的任何操作。

fdisk除了提示命令外,还提示你Device does not contain a recognized partition table.即设备不包含一个可识别的分区表。这表示该磁盘不存在分区表或者分区表损坏,不可识别。

现在你已经进入fdisk命令的会话中,如果要获取所有可用命令的列表或者帮助,可以输入m命令。

Welcome to fdisk (util-linux 2.31.1).
  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition



Command (m for help):

在本教程我们将使用GPT作为分区表,因为GPT比MBR更先进与优秀。另一方面现代的操作系统都已支持GPT分区表方案。

在fdisk会话中运行命令g即可创建GPT分区表。

Command (m for help): g
Created a new GPT disklabel (GUID: 1C147272-34A2-2A42-9426-8BFC977978C1).

现在分区表已创建,下一步是创建新分区。我们将创建一分区。 第一个大小为10 GB。

你可使用fdisk的n命令以创建新分区,当你在fdisk会话中按下n键时,系统会提示您输入分区号。按回车键使用默认值1

我们不建议更改分区号,除非你明白自己在做什么。这个对于你在日常使用意义并不大,因此不需要更改它。

Command (m for help): n

Partition number (1-128, default 1): 按Enter使用默认值1

接下来,命令将要求您指定第一个扇区。 通常,始终建议对第一个值使用默认值。 按Enter以使用默认值2048

First sector (2048-500118158, default 2048):

此时你将进入另一个提示,提示输入最后的扇区。如果直接填写结束的扇区,则需要计算结束扇区到开始扇区来确定大小,默认是最后未使用空间的最后一个扇区。

我们不建议你直接你直接使用扇区值进行分区。可以使用+500M,20G,1T,1P的单位确定分区的大小。

例如在我们教程中,我们将使用+10G的方式来创建10G的新分区,输出将如下所示:

Command (m for help): n
Partition number (1-128, default 1):
First sector (2048-41943006, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943006, default 41943006): +10G

Created a new partition 1 of type 'Linux filesystem' and of size 10 GiB.

如果你需要所有未使用的空间作为一个分区,不要执行+10G的输入,直接回车即可使用磁盘剩余空间作为分区。

当你按enter回车键后,将打印消息Created a new partition 6 of type 'Linux' and of size 10 GiB.然后退出n命令。

现在,你已经创建一个新的10G大小的分区。可以使用p命令打印当前设备的分区表,验证刚创建的分区是否存。

如你的的操作一切执行正常,没有任何错误,你应该会看到当前设备分区表中存在一个10G的分区。输出如下所示:

Device     Start      End  Sectors Size Type
/dev/sdb1   2048 20973567 20971520  10G Linux filesystem

如正确无误,请使用w命令,保存分区表并写入到磁盘中。将提示你分区表已经修改并同步。然后再按q命令退出fdisk会话。

当分区创建完成后,我们需要对分区进行格式化。才可以使用该分区的空间。我们建议你使用ext4文件系统格式以创建的分区。

以下mkfs.ext4命令将使用ext4格式文件系统,格式分区10G分区/dev/sdb1

sudo mkfs.ext4 /dev/sdb1

挂载分区

格式化完成后,Linux系统不会像windows系统一样会自动挂载新的分区。如果你需要马上使用新创建的分区。则需要手动挂载分区/dev/sdb1到指定的挂载点中。

mount是在Linux和UNIX操作系统中的命令。允许你挂载设备到指定的目录中。 也可用于SD卡,USB存储器,DVD和其他可移动存储设备文件系统的挂载。

在挂载设备之前,我还需要先使用mkdir命令创建挂载点。按照Linux惯例,创建挂载通常是在/mnt/目录下。

运行以下mkdir命令创建挂载点,使用chown命令将挂载点更为当前用户所有,chgrp命令更改为当前用户组所有。如果不改变挂载点的权限,挂载分区只有root用户可读写。

最后使用mount命令挂载指定设备/dev/sdb1到/mnt/sdb1目录:

sudo mkdir -p /mnt/sdb1
sudo chown -R $USER /mnt/sdb1
sudo chgrp -R $USER /mnt/sdb1
mount /dev/sdb1 /mnt/sdb1

现在你已经完成了分区的挂载。

自动挂载

分区将保持挂载状态,直到您使用umount命令卸载它或者关闭重启计算机。要在Linux系统启动时自动挂载分区,你需要在/etc/fstab文件中定义挂载配置选项。

/etc/fstab文件存储着文件系统的静态信息,可用于定义磁盘分区,各种其他块设备或远程文件系统,告知Linux内核如何在挂载这些设备文件。

使用你喜欢的文件编辑器修改文件/etc/fstab,在本教程中我们将使用vim编辑器打开文件/etc/fstab

请以root或具有sudo权限的用户运行以下vim命令打开文件/etc/fstab

sudo vim /etc/fstab

复制粘帖以下内容到文件/etc/fstab

/dev/sdb1  /mnt/sdb1 ext4 id=1000,gid=1000  0 2

保存文件并退出vim编辑器。其中选项id是你当前用户的id,gid是你当前用户的gid。设置uid和gid是为了让当前用户对挂载的分区具有所有权。

创建文件或者已经存在的文件。都将权限修改为id=1000的用户所有。至此你已经完成所有步骤。

结论

fdisk是用于创建分区方案的命令行工具。有关fdisk命令的更多信息,请在终端中键入man fdisk

如果您有任何问题或反馈,请随时发表评论。