在Linux系统中,尤其是像CentOS这样的企业级发行版,文件系统的管理是系统管理员的核心职责之一。“挂载”是将一个存储设备(如硬盘分区、光盘、U盘或网络共享)连接到系统目录树中的一个指定点(挂载点)的过程,使其内容可以被访问,有效地查看和管理挂载信息至关重要,本文将深入探讨在CentOS中查看挂载信息的多种方法,从基础命令到高级技巧,旨在为不同水平的用户提供一份全面而清晰的指南。
使用 mount
命令:最直接的查看方式
mount
命令是Linux中用于挂载文件系统的基本工具,但如果不带任何参数直接执行,它会列出当前系统中所有已挂载的文件系统,这是最传统、最直接的查看方法。
执行 mount
命令后,你会看到类似以下的输出:
/dev/sda1 on / type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=8113948k,nr_inodes=2028487,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
...
每一行输出都包含关键信息,其格式通常为:设备文件 on 挂载点 type 文件系统类型 (挂载选项)
。
- 设备文件:如
/dev/sda1
,代表物理磁盘的第一个分区。 - 挂载点:如 ,这是根目录,表示该分区是系统的根文件系统。
- 文件系统类型:如
xfs
、ext4
、proc
、sysfs
等。 - 挂载选项:括号内的内容,如
rw
(读写)、ro
(只读)、noexec
(不允许执行程序) 等,定义了文件系统的访问权限和行为。
为了使输出更具可读性,可以使用 -l
选项来显示卷标:
mount -l
你还可以使用 -t
选项来筛选特定类型的文件系统,只查看 ext4
类型的挂载:
mount -t ext4
使用 df
命令:关注磁盘使用情况
df
(disk free)命令主要用于报告文件系统的磁盘空间使用情况,但它同样会列出所有已挂载的文件系统及其挂载点,这使得它成为查看挂载信息的另一个常用工具。
直接运行 df
会显示以1K为单位的块大小,对普通用户来说不够直观。-h
(human-readable)选项几乎是必用的:
df -h
输出结果会非常清晰:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 3.5G 47G 7% /
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 9.0M 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/sdb1 100G 20G 80G 20% /data
这里的列信息非常丰富:
- Filesystem:文件系统或设备。
- Size:总大小。
- Used:已使用空间。
- Avail:可用空间。
- Use%:使用百分比。
- Mounted on:挂载点。
如果你想在 df
的输出中同时看到文件系统类型,可以结合 -T
选项:
df -hT
使用 findmnt
:现代化且功能强大的工具
findmnt
是一个较新的工具,来自 util-linux
包,它提供了一个更清晰、更灵活的方式来查看挂载信息,它的默认输出通常是一个树状结构,能直观地展示挂载点的层级关系。
findmnt
输出示例:
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda1 xfs rw,relatime
├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime
│ └─/sys/fs/cgroup tmpfs tmpfs rw,nosuid,nodev,noexec,mode=755
│ ├─/sys/fs/cgroup/... cgroup cgroup rw,nosuid,nodev,noexec,relatime,xxx
├─/proc proc proc rw,nosuid,nodev,noexec,relatime
├─/dev devtmpfs devtmpfs rw,nosuid,size=8113948k,nr_inodes=2028487,mode=755
│ └─/dev/pts devpts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000
├─/dev/shm tmpfs tmpfs rw,nosuid,nodev
├─/run tmpfs tmpfs rw,nosuid,nodev,mode=755
└─/data /dev/sdb1 xfs rw,relatime
findmnt
的强大之处在于其丰富的选项:
-l
或--list
:以列表形式输出,类似于mount
或df
,便于脚本处理。-t <类型>
或--types <类型>
:按文件系统类型筛选。-S <源>
或--source <源>
:按设备源筛选,findmnt -S /dev/sdb1
。-T <目标>
或--target <目标>
:按挂载点筛选,findmnt -T /data
。
查看系统配置文件
除了动态命令,还可以通过查看系统文件来获取挂载信息。
这是一个虚拟文件,它直接反映了内核中当前挂载的文件系统视图,它的内容与mount
命令的输出非常相似,但格式更为统一,适合被程序解析。cat /proc/mounts
/etc/fstab
这个文件定义了系统在启动时需要自动挂载的文件系统,查看此文件可以了解哪些设备被配置为永久挂载。cat /etc/fstab
一个典型的
fstab
条目包含六个字段:UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data xfs defaults 0 0
- 设备:可以用设备名(
/dev/sdb1
)、UUID或LABEL,推荐使用UUID,因为它在设备插拔顺序改变时保持不变。 - 挂载点:设备要挂载到的目录。
- 文件系统类型:如
xfs
,ext4
,nfs
。 - 挂载选项:
defaults
是一个常用选项组合,包含了rw
,suid
,dev
,exec
,auto
,nouser
,async
。 - dump:用于
dump
备份工具,通常设为0
。 - pass:用于开机时检查文件系统的顺序,根目录通常为
1
,其他为2
,不需要检查的为0
。
- 设备:可以用设备名(
为了更直观地选择合适的工具,下表对上述方法进行了小编总结:
方法 | 主要用途 | 关键特性 | 典型场景 |
---|---|---|---|
mount | 查看所有当前挂载 | 经典、详细、信息全面 | 快速获取所有挂载点和选项的原始信息 |
df -h | 查看磁盘空间使用 | 直观、人类可读格式 | 检查哪个分区空间不足,同时确认挂载点 |
findmnt | 查看和搜索挂载 | 现代、输出灵活(树状/列表)、易于筛选 | 编写脚本、精确查找特定挂载信息、分析挂载层级 |
/proc/mounts | 获取内核挂载视图 | 实时、格式统一、程序友好 | 被其他程序或脚本解析挂载状态 |
/etc/fstab | 查看静态挂载配置 | 定义开机自动挂载 | 配置新的永久挂载、排查启动挂载问题 |
相关问答FAQs
问题1:我刚刚插入了一个新的U盘,如何手动将它挂载到 /mnt/usb
目录?
解答:
手动挂载一个设备通常需要以下步骤:
识别设备:使用
lsblk
或fdisk -l
命令来找到U盘的设备名,通常是/dev/sdb
、/dev/sdc
等,假设你识别到U盘的分区是/dev/sdb1
。lsblk
创建挂载点:挂载点必须是一个已经存在的空目录。
/mnt/usb
不存在,需要先创建它。sudo mkdir -p /mnt/usb
执行挂载:使用
mount
命令进行挂载,你需要指定设备文件、挂载点,以及文件系统类型(如果不确定,可以尝试让系统自动检测)。# 假设U盘是vfat格式(常见于Windows格式化的U盘) sudo mount /dev/sdb1 /mnt/usb -t vfat # 或者让系统自动检测 sudo mount /dev/sdb1 /mnt/usb
验证挂载:使用
df -hT
或findmnt
检查挂载是否成功。df -hT | grep sdb1
使用完毕后,需要安全卸载:
sudo umount /mnt/usb
问题2:为什么有时候 df -h
和 lsblk
显示的磁盘大小不一致?
解答:df
和 lsblk
显示的磁盘大小不一致,通常是因为它们衡量的对象和计算方式不同,这背后有几个可能的原因:
衡量对象不同:
lsblk
或fdisk -l
显示的是磁盘或分区的原始总大小,这是物理存储介质的总容量。df
显示的是文件系统可用的空间大小,文件系统在创建时,会预留一部分空间给root
用户(或系统)用于紧急情况或维护(如磁盘碎片整理),防止普通用户占满空间导致系统崩溃,这部分空间df
不会计入普通用户的“可用空间”。
文件系统开销:文件系统本身需要空间来存储元数据,如inode表、超级块、日志等,这部分开销在
lsblk
看来属于分区总大小的一部分,但在df
看来,它已经被“使用”了。2的幂次 vs 10的幂次:虽然
df -h
使用了人类可读的单位(G, M),但历史上操作系统使用2的幂次(1GiB = 2^30 Bytes)来计算,而硬盘厂商通常使用10的幂次(1GB = 10^9 Bytes)来标注容量,这会导致理论上的微小差异,但通常不是主要原因。
小编总结来说,lsblk
告诉你“硬盘有多大”,而 df
告诉你“文件系统上还剩多少空间可以给你用”。df
的数字通常会比 lsblk
显示的分区大小略小,这是完全正常的。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复