配置存储设备

LinuxBeginner
立即练习

简介

欢迎来到 Linux 存储设备配置实验。对于任何 Linux 系统管理员来说,管理存储都是一项基本技能。当你向系统中添加新的硬盘或固态硬盘(SSD)时,它并不会立即投入使用。你必须先通过创建文件系统来准备它,然后将其挂载到目录树中,使其能够被访问。

在本实验中,你将完成添加新存储设备的完整生命周期。你将学习如何:

  • 识别新挂载的磁盘。
  • 在磁盘上创建标准的 Linux 文件系统(ext4)。
  • 将磁盘挂载到目录以使其可访问。
  • 验证磁盘使用情况并向其写入数据。
  • 安全地卸载并移除磁盘。

我们将使用 lsblkmkfs.ext4mountdfumount 等命令。通过本实验,你将扎实掌握如何在 Linux 环境中管理基础存储设备。

挂载虚拟磁盘

在本实验环境中,系统已通过自动化设置过程为你创建了一个虚拟磁盘。这模拟了向系统添加新存储设备的过程。设置脚本会创建一个 100MB 的虚拟磁盘文件,并将其关联到一个回环设备(loop device),然后创建一个符号链接 /dev/sdb 以保持一致性。

你的第一个任务是确认操作系统能够识别这个新磁盘。lsblk(列出块设备)命令非常适合此操作。它以树状格式显示所有可用块设备的信息。

在终端中运行以下命令来列出块设备:

lsblk

你应该会看到类似下面的输出。请寻找一个 100MB 的回环设备(它可能被命名为 loop4loop14 或其他可用的回环设备编号),该设备当前未挂载,且没有列出挂载点。

NAME  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0     4K  1 loop /snap/bare/5
loop1    7:1    0  91.4M  1 loop /snap/lxd/35819
...
loop4    7:4    0   100M  0 loop
...
vda    252:0    0    40G  0 disk
├─vda1 252:1    0     1M  0 part
├─vda2 252:2    0   200M  0 part /boot/efi
└─vda3 252:3    0  39.8G  0 part /

这确认了磁盘已被系统识别,并准备好进行下一步:格式化。

如果你没有看到该回环设备,可以运行以下命令来创建它:

## 创建一个 100MB 的文件作为我们的虚拟磁盘
dd if=/dev/zero of=/tmp/disk.img bs=1M count=100 &> /dev/null
## 查找下一个可用的回环设备
LOOP_DEVICE=$(sudo losetup -f)
## 将文件关联到回环设备,模拟物理磁盘
sudo losetup $LOOP_DEVICE /tmp/disk.img
## 为实验的一致性创建符号链接
sudo ln -sf $LOOP_DEVICE /dev/sdb

然后再次运行 lsblk 命令以确认回环设备已创建。

使用 mkfs.ext4 /dev/sdb 命令格式化磁盘

在这一步中,你将格式化新磁盘。未格式化的磁盘就像一张白纸;操作系统不知道如何在其上存储文件。格式化(也称为创建文件系统)会在磁盘上写入数据结构,使其能够组织和存储文件。

我们将使用 ext4 文件系统,它是 Linux 系统中可靠且广泛使用的标准。创建 ext4 文件系统的命令是 mkfs.ext4

警告: 此命令具有破坏性。它将擦除指定设备上的所有数据。在运行之前,请务必仔细检查设备名称。

现在,格式化 /dev/sdb 磁盘。由于这是一个修改设备的特权操作,你必须使用 sudo

sudo mkfs.ext4 /dev/sdb

该命令将输出有关正在创建的文件系统的信息,包括 inode 和块的数量。输出内容如下所示:

mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 25600 4k blocks and 25600 inodes

Allocating group tables: done
Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

磁盘 /dev/sdb 现在已使用 ext4 文件系统格式化,准备好进行挂载。

将磁盘挂载到 /mnt/data 目录

在这一步中,你将使格式化后的磁盘对文件系统可见。这个过程称为“挂载”(mounting)。挂载将设备上的文件系统连接到特定的目录,即“挂载点”。一旦挂载,你就可以通过访问挂载点目录来读取和写入设备。

首先,我们需要创建一个目录作为挂载点。通常的做法是在 /mnt 下创建子目录用于临时挂载。让我们创建一个名为 /mnt/data 的目录。

sudo mkdir /mnt/data

现在,使用 mount 命令将 /dev/sdb 设备挂载到 /mnt/data 目录。语法为 sudo mount [设备] [挂载点]

sudo mount /dev/sdb /mnt/data

如果成功,该命令执行后不会有任何输出。要验证磁盘是否已挂载,可以再次使用 lsblk 命令。

lsblk

注意在下面的输出中,回环设备(/dev/sdb 指向的设备)现在显示 /mnt/data 作为其 MOUNTPOINT

NAME  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0     4K  1 loop /snap/bare/5
loop1    7:1    0  91.4M  1 loop /snap/lxd/35819
...
loop4    7:4    0   100M  0 loop /mnt/data
...
vda    252:0    0    40G  0 disk
├─vda1 252:1    0     1M  0 part
├─vda2 252:2    0   200M  0 part /boot/efi
└─vda3 252:3    0  39.8G  0 part /

磁盘现在可以使用了。

使用 df -h 命令检查磁盘使用情况

在这一步中,你将验证挂载的磁盘是否可用并检查其剩余空间。df(disk free)命令用于报告文件系统的磁盘空间使用情况。使用 -h--human-readable)标志可以使输出更易于阅读,以 1024 的幂(例如 K、M、G)显示大小。

运行 df -h 命令查看所有已挂载的文件系统,包括我们新挂载的磁盘:

df -h

在输出中查找对应 /dev/sdb 的行。它将显示总大小、已用空间、可用空间和挂载点。

Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sdb         98M  2.5M   89M   3% /mnt/data
...

现在磁盘已挂载,/mnt/data 目录充当了新磁盘的根目录。让我们向其中写入一个文件以确认它工作正常。我们将使用 teesudo,因为挂载点的所有者是 root。

echo "Hello LabEx" | sudo tee /mnt/data/test.txt

你可以通过列出目录内容来验证文件是否已创建:

ls /mnt/data

输出应该显示你的新文件:

test.txt

你已经成功格式化、挂载并向新存储设备写入了数据。

卸载并移除磁盘

在最后一步中,你将学习如何安全地卸载并移除存储设备。在从系统中移除底层设备之前,卸载文件系统至关重要。这可以确保所有待处理的数据都已写入磁盘,从而防止数据丢失或损坏。

卸载文件系统的命令是 umount。你可以指定设备名称或挂载点。我们将使用挂载点。

sudo umount /mnt/data

要确认磁盘已卸载,请再次运行 lsblk。你会看到回环设备不再关联任何挂载点。

lsblk
NAME  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0     4K  1 loop /snap/bare/5
loop1    7:1    0  91.4M  1 loop /snap/lxd/35819
...
loop4    7:4    0   100M  0 loop
...
vda    252:0    0    40G  0 disk
├─vda1 252:1    0     1M  0 part
├─vda2 252:2    0   200M  0 part /boot/efi
└─vda3 252:3    0  39.8G  0 part /

现在文件系统已卸载,我们可以“移除”(detach)虚拟磁盘。在我们的模拟环境中,这意味着解除回环设备的关联。由于 /dev/sdb 是指向实际回环设备的符号链接,我们需要将其解析为实际的设备路径才能正确移除它。

## 通过解析符号链接来移除回环设备
sudo losetup -d $(readlink -f /dev/sdb)
## 删除符号链接
sudo rm /dev/sdb

最后,让我们清理一下,删除我们创建的挂载点目录。

sudo rmdir /mnt/data

你现在已经成功完成了添加、使用和移除存储设备的完整周期。

总结

恭喜你完成了本次实验!你已经成功掌握了在 Linux 环境中配置新存储设备的基本工作流程。

在本实验中,你练习了以下关键技能:

  • 使用 lsblk 命令识别新的块设备
  • 使用 mkfs.ext4 在原始磁盘上创建文件系统
  • 使用 mkdir 创建挂载点
  • 使用 mount 命令挂载文件系统以使其可访问。
  • 使用 df -h 检查磁盘使用情况
  • 使用 umount 命令安全地卸载文件系统
  • 使用 losetup -d 移除回环设备以模拟磁盘移除。

这些是管理任何 Linux 服务器或工作站存储的基础操作。你现在可以将这些知识应用于管理真实的硬盘、SSD 或 USB 驱动器。我们鼓励你继续探索更高级的存储主题,例如逻辑卷管理(LVM)、RAID 以及不同的文件系统类型。