介绍
欢迎来到 Linux 文件系统与磁盘管理实验!本实验专为刚开始探索 Linux 系统管理世界的初学者设计。我们将引导你学习有关管理磁盘空间、创建虚拟磁盘以及维护文件系统的核心命令和概念。通过本实验,你将获得使用 Linux 基础磁盘管理工具的实战经验。
使用 df 查看磁盘使用情况
df(disk free)命令是检查 Linux 系统磁盘空间使用情况的首选工具。让我们来探索如何使用它:
打开你的终端。你应该处于
/home/labex/project目录下。如果不确定,可以随时使用pwd命令检查当前目录。运行以下命令查看磁盘使用情况:
df你将看到类似如下的输出:
Filesystem 1K-blocks Used Available Use% Mounted on overlay 20971520 128744 20842776 1% / tmpfs 65536 0 65536 0% /dev tmpfs 3995004 0 3995004 0% /sys/fs/cgroup shm 65536 0 65536 0% /dev/shm /dev/vdb 104806400 57754052 47052348 56% /etc/hosts如果起初看起来很困惑,请不要担心!让我们来拆解一下:
Filesystem:这一列显示磁盘或分区的名称。1K-blocks:这是以 1 KB 为单位的文件系统总大小。Used:显示当前已使用的空间。Available:显示剩余的可用空间。Use%:显示已使用的文件系统百分比。Mounted on:显示该文件系统在目录树中的挂载点。
现在,让我们让输出结果更易读。运行:
df -h-h选项代表「易读的」(human-readable)。你将看到如下输出:Filesystem Size Used Avail Use% Mounted on overlay 20G 126M 20G 1% / tmpfs 64M 0 64M 0% /dev tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup shm 64M 0 64M 0% /dev/shm /dev/vdb 100G 56G 45G 56% /etc/hosts好多了,对吧?现在大小以 GB 和 MB 显示,更容易理解。
如果你想检查特定文件系统的空间,可以指定它:
df -h /dev/vdb这将仅显示
/dev/vdb文件系统的信息。
df 命令对于快速检查剩余磁盘空间非常有用。如果你遇到系统提示空间不足的问题,df 通常是你用来排查的第一个命令。
使用 du 检查目录大小
虽然 df 让我们对磁盘使用情况有了概览,但有时我们需要深入挖掘。这就是 du(disk usage)派上用场的地方。它能帮助我们了解哪些目录和文件占用了最多的空间。
让我们先使用最简单的
du形式。运行:du ~你会看到一长串数字和目录名。每个数字代表该目录的大小(以 KB 为单位)。这可能会让人眼花缭乱,所以让我们把它变得更易于管理。
为了获得更易读的输出,请使用
-h选项:du -h ~与
df一样,-h选项使输出变得易读。你会看到根据情况显示的 KB、MB 或 GB 大小。通常,我们只想知道一个目录的总大小。为此,请使用:
du -sh ~这里,
-s表示「汇总」(summarize),而~代表你的家目录。此命令将显示家目录中所有内容的总体大小。要查看家目录中直接子目录的大小,请使用:
du -h --max-depth=1 ~这将显示每一级子目录的大小。
--max-depth=1选项限制了du递归进入子目录的深度。让我们检查家目录中各项物品的大小:
du -sh ~/*这将显示家目录下每个非隐藏文件和目录的大小。
这是一个查找家目录中最大物品的强大命令:
du -h ~ | sort -rh | head -n 10让我们拆解一下:
du -h ~列出家目录中所有的文件和目录及其大小。sort -rh以逆序(最大的排在前面)且易读的格式对列表进行排序。head -n 10仅显示输出的前 10 行。|是管道符,它将一个命令的输出作为下一个命令的输入。
这个命令是结合简单的 Linux 命令来执行复杂操作的一个绝佳示例。
当你尝试释放磁盘空间时,du 命令是无价之宝。它能帮你识别哪些目录或文件占用了最多的空间,从而让你知道清理工作的重点应该放在哪里。
创建与管理虚拟磁盘
在开始之前,我们先了解一下什么是虚拟磁盘。虚拟磁盘就是一个表现得像物理磁盘驱动器的文件。可以把它想象成创建一个容器文件,操作系统可以像对待真实的硬盘一样对待它。这类似于虚拟机使用虚拟磁盘文件来存储数据的方式。
我们为什么要这样做?虚拟磁盘在以下场景非常有用:
- 安全地测试磁盘操作,而不会冒损坏真实硬件的风险。
- 创建隔离的存储空间。
- 在不需要额外物理硬件的情况下学习磁盘管理。
- 创建真实磁盘的备份镜像。
理解核心概念
在进行实战部分之前,让我们先理解一些重要的概念:
文件系统:可以将文件系统想象成文件和文件夹在磁盘上的组织方式。它就像办公室里的文件归档系统——决定了数据如何存储和检索。常见的 Linux 文件系统包括 ext4(我们将使用的)、XFS 和 btrfs。
挂载:挂载(Mounting)是使文件系统可被操作系统访问的过程。当你挂载一个文件系统时,你是在告诉 Linux「让这个磁盘的内容在特定的目录下可用」。这类似于:
- 插入一个 U 盘(物理连接)。
- 然后告诉电脑在哪里显示它的内容(挂载点)。
分区:分区(Partition)是磁盘中被视为独立单元的一个部分。可以把它想象成将一个大硬盘分割成较小的、独立的部分。分区的原因包括:
- 将系统文件与用户文件分开。
- 为不同的用途使用不同的文件系统。
- 使备份更容易。
- 限制磁盘故障的影响。
让我们来创建并操作一个虚拟磁盘:
首先,使用
dd命令创建一个 256MB 的虚拟磁盘:dd if=/dev/zero of=virtual.img bs=1M count=256让我们拆解这个命令:
dd是一个用于复制和转换文件的工具。if=/dev/zero表示「输入文件是 /dev/zero」(一个提供无限零数据的特殊文件)。of=virtual.img表示「输出文件是 virtual.img」(我们新的虚拟磁盘文件)。bs=1M设置块大小为 1 MB(一次复制多少数据)。count=256表示复制 256 个块(从而产生一个 256MB 的文件)。
这将创建一个充满零的空文件,我们将把它用作虚拟磁盘。
验证文件大小:
ls -lh virtual.img你应该看到
virtual.img正好是 256MB。现在,让我们用 ext4 文件系统格式化这个虚拟磁盘:
sudo mkfs.ext4 virtual.img这里发生了什么?这个命令:
- 在我们的虚拟磁盘文件内部创建了一个新的 ext4 文件系统。
- 建立了存储文件和目录所需的基础结构。
- 类似于在第一次使用前格式化一个新的 U 盘。
ext4 文件系统是许多 Linux 发行版的默认选择,因为它可靠且经过了充分测试。
接下来,我们需要创建一个挂载点。这是虚拟磁盘内容将要出现的目录:
sudo mkdir /mnt/virtualdisk把挂载点想象成进入虚拟磁盘的「窗口」。挂载后,当你查看这个目录时,你实际上看到的是虚拟磁盘的内容。
现在我们可以挂载虚拟磁盘了:
sudo mount -o loop virtual.img /mnt/virtualdisk让我们拆解一下发生了什么:
-o loop选项告诉 Linux 将我们的文件视为真实的磁盘设备。virtual.img是我们的源(我们创建的虚拟磁盘)。/mnt/virtualdisk是我们希望内容出现的地方。
这与你插入 U 盘时自动发生的情况类似,只不过我们是在对虚拟磁盘文件进行手动操作。
让我们验证磁盘是否已挂载:
mount | grep virtualdisk你应该看到一行信息,表明
virtual.img已挂载到/mnt/virtualdisk。挂载后,我们可以像使用其他目录一样使用它。让我们创建一个文件:
sudo touch /mnt/virtualdisk/testfile ls /mnt/virtualdisk你应该能看到列出的
testfile。当你使用完虚拟磁盘后,应该卸载它:
sudo umount /mnt/virtualdisk卸载(Unmounting)会从该目录移除文件系统,确保操作系统在分离它之前完成所有待处理的读写操作。未能正确卸载可能会导致数据损坏。虽然命令语法侧重于卸载目录,但在底层,操作系统知道该目录对应于已挂载的磁盘镜像。
创建、格式化和挂载虚拟磁盘的过程与插入新硬盘或 U 盘时发生的情况非常相似。主要区别在于我们是使用文件而不是物理设备来完成所有操作。
挂载文件系统意味着将其附加到指定的目录,以便操作系统可以访问文件系统内部的数据。在本实验中,虚拟磁盘镜像文件被视为物理磁盘,挂载使其内容在特定目录(例如 /mnt/virtualdisk)下可用。
使用 fdisk 管理磁盘分区
在真实系统中,在创建文件系统之前,通常需要创建分区。虽然我们无法在这个虚拟环境中修改实际的磁盘分区,但我们可以探索如何使用 fdisk 查看分区信息。
首先,让我们查看所有磁盘分区的信息:
sudo fdisk -l这将显示所有磁盘设备及其分区的信息。你将看到有关磁盘大小、扇区数和分区表的详细信息。
现在,让我们看看虚拟磁盘的分区信息:
sudo fdisk -l virtual.img这将显示虚拟磁盘的分区表。由于我们直接在磁盘镜像上创建了文件系统而没有进行分区,你可能会看到一条消息,说明它不包含有效的分区表。
在真实系统中,你会交互式地使用 fdisk 来创建、删除或修改分区。以下是其工作流程的简要概述:
- 你会通过
sudo fdisk /dev/sdX启动fdisk(将 X 替换为你想要分区的磁盘对应的字母)。 - 你会使用命令
n来创建一个新分区。 d会删除一个分区。t会更改分区的系统 ID(指示分区的预期用途)。w会写入更改并退出。
请记住,修改分区可能会导致数据丢失,因此在对磁盘分区进行更改之前,务必小心并备份重要数据。
fdisk 不仅仅局限于显示分区信息。它还可以交互式地创建、删除和修改磁盘分区。虽然它是磁盘分区的重要工具,但在保存关键数据的系统上使用 fdisk 修改分区时要格外小心;不当的更改可能会导致数据丢失。
总结
恭喜!在本实验中,你学习了如何:
- 使用
df查看磁盘使用情况。 - 使用
du检查目录大小。 - 创建、格式化、挂载和卸载虚拟磁盘。
- 使用
fdisk查看分区信息。
这些技能构成了更高级 Linux 系统管理任务的基础。它们对于在 Linux 系统中管理存储、排查磁盘空间问题以及维护文件系统健康至关重要。
作为一个额外的挑战,尝试编写一个 Shell 脚本,找出你家目录中最大的前 10 个文件或目录,并以易读的格式显示它们的大小。这将结合你在本实验中学到的几个命令。
请记住,实践是掌握这些概念的关键。不要犹豫,在安全的环境中尝试这些命令,以加深你的理解。祝你在 Linux 系统管理的学习旅程中取得更大进步!



