简介
欢迎来到这个关于 Linux 文件系统和磁盘管理的实验!本实验专为刚开始探索 Linux 系统管理领域的初学者设计。我们将引导你学习与磁盘空间管理、创建虚拟磁盘以及维护文件系统相关的基本命令和概念。通过本实验,你将获得使用 Linux 磁盘管理工具的实践经验。
欢迎来到这个关于 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
:这是文件系统的总大小,以 1KB 块为单位。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
表示“汇总”,~
代表你的主目录。此命令将显示主目录中所有内容的总大小。
要查看主目录中直接子目录的大小,使用:
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
命令非常有用。它帮助你识别哪些目录或文件占用了最多的空间,从而让你知道应该集中清理哪些地方。
现在我们将创建一个虚拟磁盘文件,为其格式化文件系统并挂载它。这个过程类似于设置一个新的硬盘驱动器,但我们是在一个文件中完成所有操作。
首先,使用 dd
命令创建一个 256MB 的虚拟磁盘:
dd if=/dev/zero of=virtual.img bs=1M count=256
以下是该命令的作用:
if=/dev/zero
:输入文件是 /dev/zero
,这是一个特殊的文件,提供尽可能多的空字节of=virtual.img
:输出文件是 virtual.img
bs=1M
:将输入和输出的块大小设置为 1MBcount=256
:仅复制 256 个输入块这实际上创建了一个 256MB 的文件,其中填充了零。
验证文件大小:
ls -lh virtual.img
你应该会看到 virtual.img
正好是 256MB。
现在,让我们用 ext4 文件系统格式化这个虚拟磁盘:
sudo mkfs.ext4 virtual.img
此命令在我们的虚拟磁盘文件上创建一个 ext4 文件系统。你会看到一些关于文件系统创建过程的输出。
接下来,我们需要创建一个挂载点。这是虚拟磁盘内容将出现的目录:
sudo mkdir /mnt/virtualdisk
现在我们可以挂载虚拟磁盘:
sudo mount -o loop virtual.img /mnt/virtualdisk
-o loop
选项是必要的,因为我们是将一个文件挂载为块设备。
让我们验证磁盘是否已挂载:
mount | grep virtualdisk
你应该会看到一行指示 virtual.img
已挂载到 /mnt/virtualdisk
。
现在它已经挂载,我们可以像使用其他目录一样使用它。让我们创建一个文件:
sudo touch /mnt/virtualdisk/testfile
ls /mnt/virtualdisk
你应该会看到 testfile
被列出。
当你完成使用虚拟磁盘后,应该卸载它:
sudo umount /mnt/virtualdisk
创建、格式化和挂载虚拟磁盘的过程与插入新硬盘或 USB 驱动器非常相似。主要区别在于我们是在文件中完成所有操作,而不是使用物理设备。
挂载文件系统意味着将其附加到指定目录,以便操作系统可以访问文件系统内的数据。在本实验中,虚拟磁盘映像文件被视为物理磁盘,挂载使其内容在特定目录(例如 /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
修改包含关键数据的系统上的分区时,请务必谨慎;不当的更改可能会导致数据丢失。
fsck
检查文件系统完整性fsck
(文件系统一致性检查)工具是维护文件系统健康的重要工具。它用于检查并可选地修复文件系统的不一致性。
首先,确保虚拟磁盘已卸载。如果它在上一步中仍然挂载,请卸载它:
sudo umount /mnt/virtualdisk
始终在未挂载的文件系统上运行 fsck
非常重要,以避免数据损坏。
现在,让我们在虚拟磁盘上运行 fsck
:
sudo fsck -f virtual.img
-f
选项强制检查,即使文件系统看起来是干净的。你应该会看到输出,指示 fsck
正在检查文件系统。
如果发现任何错误,fsck
会询问你是否要修复它们。出于学习目的,你可以对这些提示回答 y
。然而,在实际场景中,如果涉及重要数据,你需要在允许自动修复之前仔细考虑每个错误。
fsck
完成后,它会给出一个总结,说明它发现了什么以及采取了哪些操作。
在实际场景中,你会在实际的磁盘分区(如 /dev/sda1
)上使用 fsck
,而不是在磁盘映像文件上。它是维护文件系统健康的重要工具,通常在系统检测到文件系统未干净卸载(例如,断电后)时,在启动过程中自动运行。
请记住,虽然 fsck
可以修复许多文件系统问题,但它不能替代定期备份。始终备份你的重要数据!
恭喜你!在本实验中,你已经学会了如何:
df
查看磁盘使用情况du
检查目录大小fdisk
查看分区信息fsck
检查文件系统完整性这些技能为更高级的 Linux 系统管理任务奠定了基础。它们对于管理存储、排查磁盘空间问题以及维护 Linux 系统中的文件系统健康至关重要。
作为一个额外的挑战,尝试编写一个 shell 脚本,查找主目录中最大的 10 个文件或目录,并以人类可读的格式显示它们的大小。这将结合你在本实验中学到的多个命令。
请记住,练习是掌握这些概念的关键。不要犹豫,在安全的环境中尝试这些命令,以加深你的理解。祝你在 Linux 系统管理的学习旅程中继续取得成功!