安装新的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
文件自动挂载分区。如果您有任何问题或反馈,请随时发表评论。