Linux存储管理:硬盘分区、格式化与挂载实用指南

Linux存储设备管理:常用工具与技巧

本文是《在Linux中执行存储设备的基本管理任务的方法》系列文章的第1部分(共2部分)。

在Linux系统中,有众多可用的工具用于存储管理。然而,日常维护和管理中常用的工具相对较少。本指南将介绍一些最常用的实用程序,帮助您管理挂载点、存储设备和文件系统。

其他资源

本指南不包括如何在Linux系统上为存储设备进行初始使用的准备工作。如果您尚未设置存储设备,本指南将帮助您了解Linux中的分区和格式化块设备

想了解更多关于存储的相关术语,请阅读这篇存储术语文章

使用 df 命令查找存储容量和使用情况

通常,在系统上您需要了解的存储最重要信息是连接存储设备的容量和当前利用率。

要检查可用的存储空间总量并查看驱动器当前的利用情况,请使用 df 工具。默认情况下,它以1K块为单位输出测量结果,但这并不总是方便。加上 -h 标志以使用易读的单位进行输出。

df -h
输出
Filesystem      Size  Used Avail Use% Mounted on
udev            238M     0  238M   0% /dev
tmpfs            49M  624K   49M   2% /run
/dev/vda1        20G  1.1G   18G   6% /
tmpfs           245M     0  245M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           245M     0  245M   0% /sys/fs/cgroup
tmpfs            49M     0   49M   0% /run/user/1000
/dev/sda1        99G   60M   94G   1% /mnt/data

挂载在 //dev/vda1 分区还有6%的空间被占用,还有18G的可用空间。而挂载在 /mnt/data/dev/sda1 分区为空,有94G的可用空间。其他的条目使用的是 tmpfsdevtmpfs 文件系统,这是一种被当作永久存储的易失性内存。键入以下内容可以排除这些条目:

df -h -x tmpfs -x devtmpfs
输出
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        20G  1.1G   18G   6% /
/dev/sda1        99G   60M   94G   1% /mnt/data

通过移除一些伪设备和特殊设备,此输出以更专注的方式显示当前磁盘利用率。

使用 lsblk 获取有关块设备的信息

块设备是一个泛指的术语,用于读取或写入特定大小的数据块的存储设备。这个术语适用于几乎所有类型的非易失性存储器,包括硬盘驱动器(HDD)、固态硬盘(SSD)等。块设备是文件系统被写入的物理设备。而文件系统则决定了数据和文件的存储方式。

lsblk 工具可用于显示关于块设备的信息。该实用程序的具体功能取决于安装的版本,但一般而言,lsblk 命令可用于显示有关驱动器本身的信息,以及已写入其上的分区信息和文件系统。

如果没有任何参数,lsblk 将显示设备名称、与设备相关的主要和次要编号(用于Linux内核追踪驱动程序和设备)、该驱动器是否可移动、其大小、其是否以只读方式挂载、其类型(磁盘或分区)和其挂载点。某些系统要求使用 sudo 才能正确显示此信息。

sudo lsblk
输出
NAME   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 /

通常在显示的输出中,最重要的部分是设备名称(即 /dev 下的设备名称)、大小、类型和挂载点。在这里,你可以看到你有一个磁盘(/dev/vda),它有一个分区(/dev/vda1),被用作 / 根分区,还有另一个磁盘(/dev/sda)尚未被分区。

为了获取更多与磁盘和分区管理相关的信息,您可以在某些版本上使用 --fs 标志。

sudo lsblk --fs
输出
NAME   FSTYPE LABEL     UUID                                 MOUNTPOINT
sda                                                              
vda                                                              
└─vda1 ext4   DOROOT    c154916c-06ea-4268-819d-c0e36750c1cd /

如果在您的系统上不可用 --fs 标志,您可以通过使用 -o 标志手动复制输出来获取特定输出。您可以使用 -o NAME,FSTYPE,LABEL,UUID,MOUNTPOINT 来获取相同的信息。

要获取关于磁盘拓扑的信息,请键入:

sudo lsblk -t
输出
NAME   ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED    RQ-SIZE RA  WSAME
sda            0    512      0     512     512    1 deadline     128 128    2G
vda            0    512      0     512     512    1            128 128   0B
└─vda1         0    512      0     512     512    1            128 128   0B

有许多其他快捷方式可用于显示有关您的磁盘和分区的相关特征。您可以使用 -O 标志输出所有可用的列,或者您可以使用 -o 标志指定要显示的列名来自定义字段。可以使用 -h 标志列出可用的列。

lsblk -h
输出

处理文件系统挂载

在使用新的磁盘之前,通常需要对其进行分区、使用文件系统格式化,然后挂载驱动器或分区。分区和格式化通常是一次性的操作。您可以在《如何在Linux中对存储设备进行分区和格式化》中找到有关如何分区和格式化驱动器的更多信息。

挂载是一项您可能更频繁进行的操作。挂载文件系统使其在所选择的挂载点对服务器可用。挂载点是一个目录,在该目录下可以访问新的文件系统。

管理挂载主要使用两个互补的命令:mountumountmount 命令用于将文件系统连接到当前的文件树上。在Linux系统中,整个系统使用单一统一的文件层次结构,无论由多少个物理设备组成。umount 命令(注意:这是 umount,不是 unmount)用于卸载文件系统。此外,findmnt 命令有助于获取有关当前挂载文件系统状态的信息。

使用 mount 命令

使用 mount 最直接的方法是传入一个格式化的设备或分区和要挂载的挂载点。

  1. sudo mount /dev/sda1 /mnt

挂载点是指定新文件系统应该附加到文件层次结构的位置的最后一个参数,几乎总是应该是一个空目录。

通常,在挂载时,您会希望选择更具体的选项。尽管 mount 可以尝试猜测文件系统类型,但是通过使用 -t 选项传递文件系统类型几乎总是一个更好的选择。对于 Ext4 文件系统,可以这样设置:

  1. sudo mount -t ext4 /dev/sda1 /mnt

有许多其他选项会影响文件系统的挂载方式。通用挂载选项可以在挂载手册的“文件系统独立挂载选项”部分找到。

使用 “-o” 选项传递其他选项。例如,要以默认选项(即 rwsuiddevexecautonouserasync)挂载分区,可以传递 “-o defaults”。如果需要覆盖读写权限并以只读方式挂载,可以在后面添加 “ro” 选项,它将覆盖默认选项中的 “rw”。

  1. sudo mount -t ext4 -o defaults,ro /dev/sda1 /mnt

要挂载 /etc/fstab 文件中列出的所有文件系统,你可以使用 -a 选项。

  1. sudo mount -a

列出文件系统挂载选项

要显示特定挂载所使用的挂载选项,请使用 findmnt 命令。例如,如果您使用 findmnt 查看上面示例中的只读挂载,它会显示类似于以下内容:

  1. findmnt /mnt
输出
TARGET SOURCE FSTYPE OPTIONS /mnt /dev/sda1 ext4 ro,relatime,data=ordered

如果您一直在尝试多个选项,并最终发现了自己喜欢的一组选项,那么这将会非常有用。你可以使用 findmnt 找到它正在使用的选项,以便了解将来挂载时添加到 /etc/fstab 文件中的适当选项。

卸载文件系统

使用 umount 命令可以卸载给定的文件系统。再强调一次,这是 umount 而不是 unmount

一般的命令格式是指定当前挂载文件系统的挂载点或设备名称。确保您没有在挂载点上使用任何文件,并且没有任何应用程序(包括当前的 Shell)在挂载点内运行。

  1. cd ~
  2. sudo umount /mnt

通常没有选项可添加到默认的卸载行为中。

结论

虽然这份清单并不详尽无遗,但其中的工具应该涵盖了大部分日常系统管理任务所需。通过学习几种工具,您可以处理服务器上的存储设备。

bannerAds