如何在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% full,有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对驱动器进行分区和格式化的信息。
另一方面,安装是您可以更频繁地管理的事情。 挂载文件系统使其在选定的挂载点对服务器可用。 挂载点 只是一个可以访问新文件系统的目录。
两个互补的命令主要用于管理安装:mount
和 umount
。 mount
命令用于将文件系统附加到当前文件树。 在 Linux 系统中,整个系统使用一个统一的文件层次结构,而不管它由多少个物理设备组成。 umount
命令(注意:这是 umount
,而不是 unmount
)用于卸载文件系统。 此外,findmnt
命令有助于收集有关已挂载文件系统当前状态的信息。
使用 mount 命令
使用 mount
最基本的方法是传入格式化的设备或分区以及要挂载的挂载点:
sudo mount /dev/sda1 /mnt
挂载点是最后一个参数,它指定新文件系统应该在文件层次结构中的哪个位置附加,应该几乎总是一个空目录。
通常,您会希望在安装时选择更具体的选项。 尽管 mount
可以尝试猜测文件系统类型,但使用 -t
选项传入文件系统类型几乎总是更好的主意。 对于 Ext4 文件系统,这将是:
sudo mount -t ext4 /dev/sda1 /mnt
还有许多其他选项会影响文件系统的挂载方式。 有通用的挂载选项,可以在 man mount
的 FILESYSTEM INDEPENDENT MOUNT OPTIONS 部分找到。 文件系统通常在同一手册页文件系统相关选项中的 FILESYSTEM SPECIFIC MOUNT OPTIONS 标题下也有一个部分。
使用 -o
标志传递其他选项。 例如,要使用默认选项(代表 rw,suid,dev,exec,auto,nouser,async
)挂载分区,我们可以传入 -o defaults
。 如果我们想覆盖读写权限并以只读方式挂载,我们可以添加 ro
作为稍后的选项,这将覆盖 defaults
选项中的 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
对于绝大多数用户来说,除了默认的卸载行为之外,没有什么是必要的。
结论
虽然此列表并不详尽,但这些实用程序应涵盖您日常系统管理任务所需的大部分内容。 通过学习一些工具,您可以轻松处理服务器上的存储设备。