在Linux中执行存储设备的基本管理任务的方法
介绍
在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的可用空间。其他的条目使用的是tmpfs或devtmpfs文件系统,这是一种被当作永久存储的易失性内存。键入以下内容可以排除这些条目:
- 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
. . . 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
挂载点是指定新文件系统应该附加到文件层次结构的位置的最后一个参数,几乎总是应该是一个空目录。
通常,在挂载时,您会希望选择更具体的选项。尽管挂载可以尝试猜测文件系统类型,但是通过使用-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
TARGET SOURCE FSTYPE OPTIONS /mnt /dev/sda1 ext4 ro,relatime,data=ordered
如果你一直在尝试多个选项,并最终发现了自己喜欢的一组选项,那么这将会非常有用。你可以使用findmnt找到它正在使用的选项,以便了解将来挂载时添加到/etc/fstab文件中的适当选项。
卸载文件系统
使用umount命令可以卸载给定的文件系统。再强调一次,这是umount而不是unmount。
一般的命令格式是指定当前挂载文件系统的挂载点或设备名称。确保您没有在挂载点上使用任何文件,并且没有任何应用程序(包括当前的Shell)在挂载点内运行。
- cd ~
- sudo umount /mnt
通常没有选项可添加到默认的卸载行为中。
结论
虽然这份清单并不详尽无遗,但其中的工具应该涵盖了大部分日常系统管理任务所需。通过学习几种工具,您可以处理服务器上的存储设备。