如何在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 中,磁盘具有 sdasdbhda 等名称。 这些磁盘上的分区末尾附加了一个数字。 所以我们想使用类似 sda1not 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 可用于存储的文件系统的一般过程。 有更复杂的分区、格式化和挂载方法,在某些情况下可能更合适,但以上是一般使用的良好起点。