10个基本且功能强大的命令,用于检查Linux/Unix中的文件系统类型
任何操作系统都必须能够访问和管理存储设备上的文件;但是,文件在存储设备上的组织方式实际上是由底层文件系统设置的。对于Linux和Unix,存在各种文件系统类型,因此在本文中,我将共享"多种命令和方法来检查文件系统类型"。
在尝试确定和检查文件系统类型之前,我们必须熟悉术语"文件系统"。
什么是文件系统?
我们可能知道,或者至少可以猜测,硬盘驱动器不是单片实体,数据只是随意散布在硬盘驱动器周围。硬盘分为扇区和群集。任何类型的数据都被组织到文件中。无论是文档,图像,电子表格,还是可执行程序,它都是文件。该文件可以存储在一个或者多个群集中。
文件系统负责组织,查找和使用硬盘驱动器上的那些文件。任何文件系统都必须解决一些问题才能有效地处理文件。
发生第一个问题是因为许多文件大于单个扇区或者群集。因此,在硬盘上查找整个文件是必须解决的问题。操作系统可能需要检查几个群集(不一定是连续的)才能找到文件。
另一个问题是如何将文件存储在群集和扇区中。此外,文件系统必须解决如何处理由于删除或者移动文件而留下的空间。
现在,既然我们知道什么是文件系统,那么让我们从本文的实际议程开始。
在Linux或者Unix中检查文件系统类型的命令
1. blkid
blkid可以确定内容的类型(例如 块设备保存的文件系统或者交换),以及内容元数据(例如LABEL或者UUID字段)中的属性(令牌," NAME =值"对)。
我们必须在没有任何指令的情况下以root用户身份执行blkid
,并检查TYPE字段以检查Linux或者Unix中相应分区或者设备的文件系统类型。
[root@centos-8 ~]# blkid /dev/mapper/rhel-root: UUID="0b5322d5-887d-4c03-9933-b75c2a1ca880" TYPE="ext4" /dev/sda2: UUID="pXZ2Iy-hwtF-mFH2-nbej-0Yz9-Py2O-AqLQNH" TYPE="LVM2_member" PARTUUID="fcbab19d-02" /dev/sdb1: UUID="1b3910d9-11a9-4f68-894e-47a51bd077a8" TYPE="crypto_LUKS" PARTUUID="09181a39-01" /dev/sda1: UUID="2b857500-a7cf-4ec4-8453-0ef636943d86" TYPE="ext4" PARTUUID="fcbab19d-01" /dev/sr0: UUID="2019-08-15-21-52-52-00" LABEL="CentOS-8-BaseOS-x86_64" TYPE="iso9660" PTUUID="3e04f576" PTTYPE="dos" /dev/mapper/rhel-swap: UUID="cd18aa4a-e2d3-423c-b120-7fef1b1d9aac" TYPE="swap"
使用-t,--match-token NAME = value
,我们可以搜索带有名为NAME的令牌的块设备,这些令牌具有值value,并显示找到的任何设备。 NAME的常见值包括TYPE,LABEL和UUID。
例如,列出并检查ext4 FS的文件系统类型:
[root@centos-8 ~]# blkid -t TYPE=ext4 /dev/mapper/rhel-root: UUID="0b5322d5-887d-4c03-9933-b75c2a1ca880" TYPE="ext4" /dev/sda1: UUID="2b857500-a7cf-4ec4-8453-0ef636943d86" TYPE="ext4" PARTUUID="fcbab19d-01"
2. lsblk
lsblk列出有关所有可用或者指定的块设备的信息。
" lsblk"命令提供了更多信息,可以更好地控制输出格式,易于在脚本中使用,并且不需要root权限即可获取实际信息。
[root@centos-8 ~]# lsblk --fs NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 2b857500-a7cf-4ec4-8453-0ef636943d86 /boot └─sda2 LVM2_member pXZ2Iy-hwtF-mFH2-nbej-0Yz9-Py2O-AqLQNH ├─rhel-root ext4 0b5322d5-887d-4c03-9933-b75c2a1ca880 / └─rhel-swap swap cd18aa4a-e2d3-423c-b120-7fef1b1d9aac [SWAP] sdb └─sdb1 crypto_LUKS 1b3910d9-11a9-4f68-894e-47a51bd077a8 sr0 iso9660 CentOS-8-BaseOS-x86_64 2019-08-15-21-52-52-00 sr1
3. df
df是另一个流行且最常用的命令,用于显示包含每个文件名参数的文件系统上可用的磁盘空间量。
如果未提供文件名,则会显示所有当前已安装文件系统上的可用空间。
使用带有-d指令的-T指令可以打印所有已挂载文件系统的文件系统类型。
[root@centos-8 ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 2.4G 0 2.4G 0% /dev tmpfs tmpfs 2.4G 0 2.4G 0% /dev/shm tmpfs tmpfs 2.4G 8.6M 2.4G 1% /run tmpfs tmpfs 2.4G 0 2.4G 0% /sys/fs/cgroup /dev/mapper/rhel-root ext4 14G 9.2G 3.5G 73% / /dev/sda1 ext4 488M 129M 325M 29% /boot tmpfs tmpfs 479M 0 479M 0% /run/user/0
或者,我们可以使用" df"命令指定设备以检查相应设备的文件系统类型
# df -Th /boot /dev/sda1 ext4 488M 129M 325M 29% /boot
4.findmnt
findmnt将列出所有已挂载的文件系统或者搜索文件系统。
使用findmnt命令可以在/etc/fstab,/etc/mtab或者/proc/self/mountinfo中进行搜索。如果未提供设备或者安装点,则显示所有文件系统。
使用--fstab
指令,findmnt
命令将在/etc/fstab
中搜索,而使用-t
将限制打印文件系统的集合。
[root@centos-8 ~]# findmnt --fstab -t ext4 TARGET SOURCE FSTYPE OPTIONS / /dev/mapper/rhel-root ext4 defaults /boot UUID=2b857500-a7cf-4ec4-8453-0ef636943d86 ext4 defaults
如果不带任何指令使用,findmnt
命令将为我们提供所有绑定安装的一长串输出
[root@centos-8 ~]# findmnt -t ext4 TARGET SOURCE FSTYPE OPTIONS / /dev/mapper/rhel-root ext4 rw,rela ├─/boot /dev/sda1 ext4 rw,rela ├─/var/named/chroot/etc/localtime /dev/mapper/rhel-root[/usr/share/zoneinfo/Asia/Kolkata] │ ext4 rw,rela ├─/var/named/chroot/etc/named.root.key /dev/mapper/rhel-root[/etc/named.root.key] ext4 rw,rela ├─/var/named/chroot/etc/named.conf /dev/mapper/rhel-root[/etc/named.conf] ext4 rw,rela ├─/var/named/chroot/etc/named.rfc1912.zones /dev/mapper/rhel-root[/etc/named.rfc1912.zones] ext4 rw,rela ├─/var/named/chroot/etc/rndc.key /dev/mapper/rhel-root[/etc/rndc.key] ext4 rw,rela ├─/var/named/chroot/etc/crypto-policies/back-ends/bind.config │ /dev/mapper/rhel-root[/usr/share/crypto-policies/DEFAULT/bind.txt] │ ext4 rw,rela ├─/var/named/chroot/etc/protocols /dev/mapper/rhel-root[/etc/protocols] ext4 rw,rela ├─/var/named/chroot/etc/services /dev/mapper/rhel-root[/etc/services] ext4 rw,rela ├─/var/named/chroot/etc/named /dev/mapper/rhel-root[/etc/named] ext4 rw,rela ├─/var/named/chroot/usr/lib64/bind /dev/mapper/rhel-root[/usr/lib64/bind] ext4 rw,rela └─/var/named/chroot/var/named /dev/mapper/rhel-root[/var/named] ext4 rw,rela
5.file
file命令通常仅尝试读取并确定参数文件的类型。
指定-s
选项会使文件还读取参数文件,这些文件是块或者字符特殊文件。这对于确定和检查原始磁盘分区(属于块特殊文件)中数据的文件系统类型很有用。
# file -s /dev/sda1 /dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=2b857500-a7cf-4ec4-8453-0ef636943d86 (needs journal recovery) (extents) (64bit) (large files) (huge files)
6. udevadm
udevadm命令在udev数据库中查询存储在udev数据库中的设备信息。
它还可以从其sysfs表示形式查询设备的属性,以帮助创建与该设备匹配的udev规则。
使用--query可以查询数据库中指定类型的设备数据。以下命令给出了很长的输出,因此我们将grep所需的数据以检查设备/dev/sda1
的文件系统类型。
# udevadm info --query=property /dev/sda1 | egrep "DEVNAME|ID_FS_TYPE" DEVNAME=/dev/sda1 ID_FS_TYPE=ext4
现在上面是一些最常用的命令来检查文件系统类型的命令,但是还有许多其他方法可以用来确定文件系统类型
7.文件/etc/fstab内容
通常,我们使用的所有设备都是通过/etc/fstab
文件挂载的,以使挂载重启持久。
因此,我们始终可以参考/etc/fstab
文件来检查文件系统类型,例如:
# cat /etc/fstab /dev/mapper/rhel-root / ext4 defaults 1 1 UUID=2b857500-a7cf-4ec4-8453-0ef636943d86 /boot ext4 defaults 1 2 /dev/mapper/rhel-swap swap swap defaults 0 0
在此,文件的第一列指定分区设备路径,而第三列显示相应设备的文件系统类型。
8.文件/etc/mtab内容
与/etc/fstab
类似,我们也可以参考/etc/mtab
来获取当前已挂载文件系统的列表以及文件系统类型。
# grep root /etc/mtab /dev/mapper/rhel-root/ext4 rw,relatime 0 0
在此文件的第一列也指定了分区设备路径,而第三列则显示了相应设备的文件系统类型。
9.文件/proc/mounts
现在/proc/mounts文件指的是/etc/mtab
,所以这不是一个新方法,而只是另一个文件,我们可以查看它来检查Linux或者Unix中的文件系统类型。
10.挂载命令
同样,mount命令还将引用/etc/mtab
文件来获取已安装文件系统的列表,并且还可以确定单个设备的文件系统类型。
# mount 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=2436780k,nr_inodes=609195,mode=755) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)