LinuxBasicsForHackers笔记 -- 文件系统和存储设备管理
作者:mmseoamin日期:2023-12-14

设备目录/dev

Linux 有一个特殊的目录,其中包含代表每个连接设备的文件:相应命名的 /dev 目录。

/dev中有很多设备列表。 特别令人感兴趣的是设备 sda1、sda2、sda3、sdb 和 sdb1,它们通常是硬盘驱动器及其分区以及 USB 闪存驱动器及其分区。

Linux 如何表示存储设备

Linux 对随后安装在文件系统上的驱动器使用逻辑标签。 这些逻辑标签将根据驱动器的安装位置而变化,这意味着同一硬盘驱动器在不同时间可能有不同的标签,具体取决于安装的位置和时间。

当系统有多个硬盘驱动器时,Linux 只是通过按字母顺序递增最后一个字母来连续命名它们,因此第一个驱动器是 sda,第二个驱动器是 sdb,第三个驱动器是 sdc,如下表。 sd 后面的序列字母通常称为主编号。

LinuxBasicsForHackers笔记 -- 文件系统和存储设备管理,在这里插入图片描述,第1张

驱动器分区

某些驱动器可以分为多个分区,以便管理和分离信息。Linux 用驱动器名称后面的次要编号来标记每个分区。 这样,第一个 SATA 驱动器上的第一个分区将是 sda1。 第二个分区将是 sda2,第三个分区是 sda3,依此类推,如下表所示。

LinuxBasicsForHackers笔记 -- 文件系统和存储设备管理,在这里插入图片描述,第2张

有时,您可能想要查看 Linux 系统上的分区,以了解您拥有哪些分区以及每个分区有多少可用容量。 您可以使用 fdisk 实用程序来执行此操作。 将 -l 开关与 fdisk 一起使用会列出所有驱动器的所有分区:fdisk -l

Linux 使用多种不同类型的文件系统,但最常见的是 ext2、ext3 和 ext4。 这些都是 ext(或扩展)文件系统的迭代,其中 ext4 是最新的。

字符设备和块设备

关于 /dev 目录中设备文件的命名还需要注意的是,第一个位置包含 c 或 b。 它看起来像这样:

LinuxBasicsForHackers笔记 -- 文件系统和存储设备管理,在这里插入图片描述,第3张

这些字母代表设备传入和传出数据的两种方式。 c 代表字符,这样的设备被称为字符设备。 通过逐个字符发送和接收数据与系统交互的外部设备,例如鼠标或键盘,都是字符设备。

b 代表第二种类型:块设备。 它们以数据块(一次多个字节)进行通信,并包括硬盘驱动器和 DVD 驱动器等设备。 这些设备需要更高速度的数据吞吐量,以块的形式发送和接收数据(一次多个字符或字节)。 一旦您知道设备是字符设备还是块设备,您就可以轻松获得有关它的更多信息。

使用 lsblk 列出块设备和信息

Linux 命令 lsblk 是 list block 的缩写,列出 /dev 中列出的每个块设备的一些基本信息。结果与 fdisk -l 的输出类似,但它也会以树的形式显示具有多个分区的设备,将每个设备及其分区显示为分支,并且不需要 root 权限即可运行。

我们还可以看到有关驱动器安装点的信息 - 这是驱动器连接到文件系统的位置。 请注意,硬盘驱动器 sda1 安装在 / 处,闪存驱动器安装在 /media 处。

挂载和卸载

即使设备在物理上连接到系统,它也不一定在逻辑上连接到操作系统并且可供操作系统使用。

目录树中连接设备的点称为挂载点。 Linux 中的两个主要挂载点是 /mnt 和 /media。 按照惯例,外部 USB 设备和闪存驱动器等设备可以手动挂载到 /mnt,但自动挂载时,将使用 /media 目录(尽管技术上可以使用任何目录)。

自行挂载存储设备

要在文件系统上挂载驱动器,请使用 mount 命令。设备的挂载点应该是一个空目录; 如果将设备挂载到包含子目录和文件的目录上,则挂载的设备将覆盖该目录的内容,使它们不可见且不可用。要将新硬盘 sdb1 挂载在 /mnt 目录中,输入以下命令:mount /dev/sdb1 /mnt

系统在启动时挂载的文件系统保存在 /etc/fstab(文件系统表的缩写)的文件中,系统在每次启动时都会读取该文件。

使用 umount 卸载

与 mount 命令类似,您可以通过输入 umount 命令,然后输入 /dev 目录中设备的文件条目(例如 /dev/sdb)来卸载第二个硬盘驱动器。 请注意,该命令不是拼写为 unmount,而是拼写为 umount(没有 n)。umount /dev/sdb1

您无法卸载繁忙的设备,因此如果系统正在读取或写入该设备,您只会收到错误。

监控文件系统

获取已挂载磁盘的信息

命令 df(disk free)将为我们提供有关任何硬盘或已安装设备(例如 CD、DVD 和闪存驱动器)的基本信息,包括正在使用的空间和可用空间。如果没有任何选项,df 默认为所有已安装的驱动器。 如果要检查不同的驱动器,只需在 df 命令后加上要检查的驱动器表示(例如 df sdb)即可。df

检查错误

fsck 命令(filesystem check的缩写)检查文件系统是否有错误并修复损坏(如果可能),或者将坏区域放入坏块表中以将其标记为坏。

运行fsck命令需要指定要检查的设备文件。 请务必注意,在运行文件系统检查之前必须卸载驱动器。

我可以添加 -p 选项以使 fsck 自动修复设备的任何问题,如下所示:fsck -p /dev/sdb1