如何在Linux中对存储设备进行分区和格式化
介绍
准备用于 Linux 系统的新磁盘既快捷又简单。 如果您有特殊需求,有许多工具、文件系统格式和分区方案可能会使该过程复杂化,但如果您想快速启动和运行,这相当简单。
本指南将涵盖以下过程:
- 识别系统上的新磁盘。
- 创建跨越整个驱动器的单个分区(大多数操作系统都需要分区布局,即使只有一个文件系统存在)
- 使用 Ext4 文件系统格式化分区(大多数现代 Linux 发行版中的默认设置)
- 挂载和设置 引导时自动挂载文件系统
安装工具
要对驱动器进行分区,我们将使用 parted
实用程序。 在大多数情况下,它已经安装在服务器上。
如果您在 Ubuntu 或 Debian 服务器上并且还没有 parted
,您可以通过键入以下命令进行安装:
sudo apt-get update sudo apt-get install parted
如果您在 CentOS 或 Fedora 服务器上,您可以通过键入以下命令进行安装:
sudo yum install parted
识别系统上的新磁盘
在我们设置驱动器之前,我们需要能够在服务器上正确识别它。
如果这是一个全新的驱动器,在您的服务器上找到它的最简单方法可能是查找是否缺少分区方案。 如果我们要求 parted
列出我们磁盘的分区布局,对于任何没有有效分区方案的磁盘都会给我们一个错误。 这可以用来帮助我们识别新磁盘:
sudo parted -l | grep Error
您应该会看到新的未分区磁盘出现 unrecognized disk label
错误:
OutputError: /dev/sda: unrecognised disk label
您还可以使用 lsblk
命令并查找大小正确且没有关联分区的磁盘:
lsblk
OutputNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk vda 253:0 0 20G 0 disk └─vda1 253:1 0 20G 0 part /
警告
在进行更改之前,请记住在每个会话中检查 lsblk
。 /dev/sd*
和 /dev/hd*
磁盘标识符在引导之间不一定一致,这意味着如果您不正确验证磁盘标识符,则存在分区或格式化错误磁盘的危险。
考虑使用更持久的磁盘标识符,例如 /dev/disk/by-uuid
、/dev/disk/by-label
或 /dev/disk/by-id
。 有关更多信息,请参阅我们的 Linux 中的存储概念和术语介绍文章。
当您知道内核为您的磁盘分配的名称时,您可以对您的驱动器进行分区。
对新驱动器进行分区
如简介中所述,我们将在本指南中创建一个跨越整个磁盘的单个分区。
选择分区标准
为此,我们首先需要指定我们希望使用的分区标准。 GPT 是更现代的分区标准,而 MBR 标准在操作系统之间提供更广泛的支持。 如果您没有任何特殊要求,此时使用 GPT 可能会更好。
要选择 GPT 标准,请传入您识别的磁盘,如下所示:
sudo parted /dev/sda mklabel gpt
如果您希望使用 MBR 格式,请输入以下内容:
sudo parted /dev/sda mklabel msdos
创建新分区
选择格式后,您可以通过键入以下内容创建跨越整个驱动器的分区:
sudo parted -a opt /dev/sda mkpart primary ext4 0% 100%
如果我们检查 lsblk
,我们应该会看到可用的新分区:
lsblk
OutputNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk └─sda1 8:1 0 100G 0 part vda 253:0 0 20G 0 disk └─vda1 253:1 0 20G 0 part /
在新分区上创建文件系统
现在我们有了可用的分区,我们可以将其格式化为 Ext4 文件系统。 为此,请将分区传递给 mkfs.ext4
实用程序。
我们可以通过传递 -L
标志来添加分区标签。 选择一个可以帮助您识别此特定驱动器的名称:
笔记
确保传入 分区 而不是整个 磁盘 。 在 Linux 中,磁盘具有 sda
、sdb
、hda
等名称。 这些磁盘上的分区末尾附加了一个数字。 所以我们想使用类似 sda1
和 not sda
的东西。
sudo mkfs.ext4 -L datapartition /dev/sda1
如果您想在以后更改分区标签,可以使用 e2label
命令:
sudo e2label /dev/sda1 newlabel
您可以使用 lsblk
查看识别分区的所有不同方法。 我们要查找分区的名称、标签和 UUID。
如果我们键入以下内容,某些版本的 lsblk
将打印所有这些信息:
sudo lsblk --fs
如果您的版本未显示所有适当的字段,您可以手动请求它们:
sudo lsblk -o NAME,FSTYPE,LABEL,UUID,MOUNTPOINT
你应该看到这样的东西。 突出显示的输出指示可用于引用新文件系统的不同方法:
OutputNAME FSTYPE LABEL UUID MOUNTPOINT sda └─sda1 ext4 datapartition 4b313333-a7b5-48c1-a957-d77d637e4fda vda └─vda1 ext4 DOROOT 050e1e34-39e6-4072-a03e-ae0bf90ba13a /
挂载新文件系统
现在,我们可以挂载文件系统以供使用。
Filesystem Hierarchy Standard 建议使用 /mnt
或其下的子目录来临时挂载文件系统。 它没有建议在何处安装更多永久存储,因此您可以选择您喜欢的任何方案。 在本教程中,我们将在 /mnt/data
下安装驱动器。
通过键入以下内容创建目录:
sudo mkdir -p /mnt/data
临时挂载文件系统
您可以通过键入以下命令临时挂载文件系统:
sudo mount -o defaults /dev/sda1 /mnt/data
引导时自动挂载文件系统
如果您希望每次服务器启动时自动挂载文件系统,请调整 /etc/fstab
文件:
sudo nano /etc/fstab
早些时候,我们发出了一个 sudo lsblk --fs
命令来显示我们文件系统的三个文件系统标识符。 我们可以在这个文件中使用其中的任何一个。 我们在下面使用了分区 label,但是您可以在注释掉的行中使用其他两个标识符看到这些行的样子:
/etc/fstab
. . . ## Use one of the identifiers you found to reference the correct partition # /dev/sda1 /mnt/data ext4 defaults 0 2 # UUID=4b313333-a7b5-48c1-a957-d77d637e4fda /mnt/data ext4 defaults 0 2 LABEL=datapartition /mnt/data ext4 defaults 0 2
笔记
您可以通过键入 man fstab
了解 /etc/fstab
文件中的各个字段。 有关特定文件系统类型可用的挂载选项的信息,请查看 man [filesystem]
(如 man ext4
)。 现在,上面的挂载行应该可以帮助您入门。
对于 SSD,有时会附加 discard
选项以启用连续 TRIM。 以这种方式执行连续 TRIM 的性能和完整性影响存在争议,并且大多数分布包括执行周期性 TRIM 的方法作为替代方案。
完成后保存并关闭文件。
如果您之前没有挂载文件系统,现在可以通过键入以下命令来挂载它:
sudo mount -a
测试安装
在我们挂载卷之后,我们应该检查以确保文件系统是可访问的。
我们可以在 df
命令的输出中检查磁盘是否可用:
df -h -x tmpfs -x devtmpfs
OutputFilesystem Size Used Avail Use% Mounted on /dev/vda1 20G 1.3G 18G 7% / /dev/sda1 99G 60M 94G 1% /mnt/data
您还应该能够在 /mnt/data
目录中看到 lost+found
目录,它通常表示 Ext* 文件系统的根目录:
ls -l /mnt/data
Outputtotal 16 drwx------ 2 root root 16384 Jun 6 11:10 lost+found
我们还可以通过写入测试文件来检查挂载的文件是否具有读写能力:
echo "success" | sudo tee /mnt/data/test_file
读回文件以确保正确执行写入:
cat /mnt/data/test_file
Outputsuccess
确认新文件系统正常运行后,您可以删除该文件:
sudo rm /mnt/data/test_file
结论
您的新驱动器现在应该已分区、格式化、挂载并可以使用了。 这是您可以使用将原始磁盘转换为 Linux 可用于存储的文件系统的一般过程。 有更复杂的分区、格式化和挂载方法,在某些情况下可能更合适,但以上是一般使用的良好起点。