安装新的SSD或硬盘后,您需要做的第一件事就是对其进行分区。每个驱动器至少需要一个分区,然后才能对其进行格式化并在其中存储文件。

在Linux中,你可以使用GUI工具GParted或者命令创建分区,其中fdisk是最常用的命令行工具。

在教程中,将说明如何创建磁盘分区使用fdisk命令。fdisk是菜单驱动的命令行程序,可让您在硬盘上创建和操作分区表。列出/查看磁盘的所有分区。我们还说明Linux命名分区模式。如何格式化分区,挂载分区使用mount命令,定义fstab自动挂载分区。

列出/查看分区

如你需要列出指定设备分区表,请使用fdisk命令的-l选项,后跟磁盘设备的名称。对于磁盘设备,这个名称通常是/dev/sda或者是/dev/sdb

sda表示你的计算机第一块磁盘。如果你有多块磁盘/硬盘,将分别表示为/dev/sdb/dev/sdc等,以字母的顺序数下去。

如你需要打印指定设备分区表,可以使用fdisk命令的-l选项打印磁盘设备的分区表。如果你没有指定任何磁盘设备的名称,将打印所有磁盘设备的分区表,包括/dev/sdb/dev/sdc等。

例如以下fdisk命令将列出/dev/sda的设备分区表,如省略设备名称将列出/proc/partitions文件中所包含设备的分区:

sudo fdisk -l /dev/sda

输出将如下所示:

Disk model: WDC WD10EZEX-22M
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xee23bc74

Device     Boot     Start        End    Sectors   Size Id Type
/dev/sda1  *         2048  482349055  482347008   230G  7 HPFS/NTFS/exFAT
/dev/sda2       482349056 1953525167 1471176112 701.5G  f W95 Ext'd (LBA)
/dev/sda5       650121280 1953525167 1303403888 621.5G  7 HPFS/NTFS/exFAT
/dev/sda6       482351104  650119231  167768128    80G 83 Linux

上面的输出显示系统/dev/sda设备的当前分区表。通常,SATA设备名称遵循模式/dev/sd[a-z]来命名设备,而NVMe设备遵循/dev/nvme[1-9]n[1-9]模式来命名设备。

如果未指定任何设备作为参数,fdisk则将的列出所有设备的分区表。你尝试以下fdisk命令的输出:

sudo fdisk -l

创建分区

请注意,fdisk是一种危险的工具,你应格外小心。只有root用户或具有sudo权限的用户才能操纵分区表。

由于在命令行下,很难根据设备空间的大小,对设备进行区分。在对设备进行分区前,请先确定你的磁盘设备在当前计算机的名称,这是非常重要的一点。

当你确定你磁盘/驱动器设备在当前计算机名称后,请运行fdisk命令后跟要进行分区的设备名称。

在此示例中,我们使用fdisk命令对磁盘/dev/sdb设备进行分区,请以root或具有sudo权限的用户运行以下fdisk命令。

sudo fdisk /dev/sdb

你进入fdisk命令的会话中,并提示你注意是write命令,即缩写的w命令。你在fdisk命令执行的子命令都不会马上写入到磁盘中。只有你明确的调用write命令才会写入到磁盘。

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

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.

Command (m for help):

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

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):

创建新的分区之前,可以使用F命令查看当前磁盘/驱动器设备未使用的空间,即未格式化,没被使用的空闲空间。

F命令将打印当前磁盘未使用空间的大小,起始扇区,结束扇区,扇区总数,以及每个扇区的大小。输入如下所示:

Unpartitioned space /dev/sda: 79.102 GiB, 85898330624 bytes, 167770177 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes

    Start       End   Sectors Size
482351104 650121280 167770177  80G

现在我们开始对磁盘创建新的分区,添加新的分区是n命令,它将从磁盘未使用的空间中开始创建分区,默认的开始扇区是未使用空间的第一个扇区。

如果你当前的磁盘没有未使用的空间,命令将提示你No free sectors available.没有可用空闲空间。

但在我们教程中,F命令显示当前磁盘还有80G的磁盘空间是未使用或者空闲的。n命令输出将如下所示:

All space for primary partitions is in use.
Adding logical partition 6
First sector (482351104-650119231, default 482351104): 

将提示从第几个扇区开始进行分区,默认的开始扇区是未使用空间的第一个扇区即482351104。建议使用默认值,然后直接按回车enter键。

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

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

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

Command (m for help): n
All space for primary partitions is in use.
Adding logical partition 6
First sector (482351104-650119231, default 482351104): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (482351104-650119231, default 650119231): +500M

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

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

但是如果磁盘空闲空间存在文件系统的签名,将询问是否删除该文件系统的签名。该签名是之前使用的文件系统的名称。

在我们的教程中,我们需要删除之前文件系统签名,这个一个ext4的文件系统签名,输出如下所示,输入Y删除:

Command (m for help): n
All space for primary partitions is in use.
Adding logical partition 6
First sector (482351104-650119231, default 482351104): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (482351104-650119231, default 650119231): +500M

Created a new partition 6 of type 'Linux' and of size 500 MiB.
Partition #6 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: Y

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

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

/dev/sda1  *         2048  482349055  482347008   230G  7 HPFS/NTFS/exFAT
/dev/sda2       482351102 1953525167 1471174066 701.5G  f W95 Ext'd (LBA)
/dev/sda5       650121280 1953525167 1303403888 621.5G  7 HPFS/NTFS/exFAT
/dev/sda6       482351104  540942900   58591797    28G 83 Linux
/dev/sda7       540946432  624832511   83886080    40G 83 Linux
/dev/sda8       624834560  625858559    1024000   500M 83 Linux

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

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

以下mkfs.ext4命令将使用ext4格式文件系统,格式分区500M分区/dev/sda8

sudo mkfs.ext4 /dev/sda8

挂载分区

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

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

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

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

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

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

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

自动挂载

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

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

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

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

sudo vim /etc/fstab

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

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

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

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

结论

你应该已经熟悉使用fdisk创建分区,格式化分区,挂载分区,配置/etc/fstab文件自动挂载分区。如果您有任何问题或反馈,请随时发表评论。