如何在 Linux 中执行存储设备的基本管理任务
介绍
有许多工具可用于管理 Linux 中的存储。但是,只有少数用于日常维护和管理。在本指南中,您将回顾一些最常用的用于管理挂载点、存储设备和文件系统的实用程序。
其他资源
本指南不会介绍如何准备存储设备以供在 Linux 系统上首次使用。如果您还没有设置您的存储,这份关于在 Linux 中分区和格式化块设备的指南将帮助您准备您的原始存储设备。
有关用于讨论存储的一些术语的更多信息,请尝试阅读这篇关于存储术语的文章。
使用 df 查找存储容量和使用情况
通常,您需要的有关系统存储的最重要信息是所连接存储设备的容量和当前利用率。
要检查总共有多少存储空间可用以及查看驱动器的当前利用率,请使用 df 实用程序。默认情况下,这会以 1K 块的形式输出测量结果,这并不总是有用的。添加 -h
标志以以人类可读的单位输出:
- df -h
OutputFilesystem 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,而/dev/sda1
挂载在 /mnt/data
的分区是空的,有 94G 的可用空间。其他条目使用 tmpfs
或 devtmpfs
文件系统,这是一种易失性内存,就好像它是永久存储一样。您可以通过键入以下内容来排除这些条目:
- df -h -x tmpfs -x devtmpfs
OutputFilesystem 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
OutputNAME 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
OutputNAME 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
OutputNAME 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
Output. . .
Available columns (for --output):
NAME device name
KNAME internal kernel device name
. . .
SUBSYSTEMS de-duplicated chain of subsystems
REV device revision
VENDOR device vendor
For more details see lsblk(8).
使用文件系统挂载
在使用新磁盘之前,通常必须对其进行分区,使用文件系统对其进行格式化,然后挂载驱动器或分区。分区和格式化通常是一次性过程。您可以在如何在 Linux 中对存储设备进行分区和格式化中找到有关如何使用 Linux 对驱动器进行分区和格式化的更多信息。
安装是您可能会更频繁地执行的操作。挂载文件系统使其在选定的挂载点对服务器可用。挂载点是可以访问新文件系统的目录。
两个互补的命令主要用于管理挂载:mount
和 umount
。 mount
命令用于将文件系统附加到当前文件树。在 Linux 系统中,单个统一的文件层次结构用于整个系统,而不管它由多少物理设备组成。 umount
命令(注意:这是umount
,而不是unmount
)用于卸载文件系统。此外,findmnt
命令有助于收集有关已挂载文件系统当前状态的信息。
使用挂载命令
使用 mount
最直接的方法是传入格式化的设备或分区以及要附加的挂载点:
- sudo mount /dev/sda1 /mnt
挂载点是最后一个参数,它指定新文件系统应该附加在文件层次结构中的哪个位置,几乎应该总是一个空目录。
通常,您会希望在安装时选择更具体的选项。尽管 mount
可以尝试猜测文件系统类型,但使用 -t
选项传递文件系统类型几乎总是更好的主意。对于 Ext4 文件系统,这将是:
- sudo mount -t ext4 /dev/sda1 /mnt
还有许多其他选项会影响文件系统的挂载方式。有通用的安装选项,可以在安装手册的文件系统独立安装选项部分找到。
使用 -o
标志传递其他选项。例如,要使用默认选项(代表 rw,suid,dev,exec,auto,nouser,async
)挂载分区,您可以传入 -o defaults
。如果您需要覆盖读写权限并挂载为只读,您可以添加 ro
作为后面的选项,这将覆盖 中的
选项:rw
默认值
- sudo mount -t ext4 -o defaults,ro /dev/sda1 /mnt
要挂载 /etc/fstab
文件中列出的所有文件系统,您可以传递 -a
选项:
- sudo mount -a
列出文件系统挂载选项
要显示用于特定安装的安装选项,请使用 findmnt
命令。例如,如果您使用 findmnt
查看上面示例中的只读挂载,它看起来像这样:
- findmnt /mnt
OutputTARGET SOURCE FSTYPE OPTIONS
/mnt /dev/sda1 ext4 ro,relatime,data=ordered
如果您尝试了多个选项并最终发现了您喜欢的一组,这将很有用。您可以通过 findmnt
找到它使用的选项,这样您就知道什么适合添加到 /etc/fstab
文件以供将来挂载。
卸载文件系统
umount
命令用于卸载给定的文件系统。同样,这是 umount
而不是 unmount
。
该命令的一般形式是命名当前挂载文件系统的挂载点或设备。确保您没有在挂载点上使用任何文件,并且您没有任何应用程序(包括您当前的 shell)在挂载点内运行:
- cd ~
- sudo umount /mnt
通常没有选项可以添加到默认卸载行为中。
结论
虽然此列表绝不是详尽无遗的,但这些实用程序应该涵盖日常系统管理任务所需的大部分内容。通过学习一些工具,您可以处理服务器上的存储设备。