如何找出我的文件系统(和挂载点)所在的分区以及分区的完整程度?

如何找出我的文件系统(和挂载点)所在的分区以及分区的完整程度?

这个问题本质上是对面的下面的第一个问题,并且与第二个问题相邻,因此不是重复的:

  1. 询问 Ubuntu:如何找出我的分区正在使用的文件系统?
  2. Unix 和 Linux:如何判断您使用的文件系统类型?

df -h显示我的文件系统。前任:

$ df -h
Filesystem                 Size  Used Avail Use% Mounted on
udev                       7.7G     0  7.7G   0% /dev
tmpfs                      1.6G  2.3M  1.6G   1% /run
/dev/mapper/vgubuntu-root  467G  410G   33G  93% /
tmpfs                      7.8G  139M  7.7G   2% /dev/shm
tmpfs                      5.0M  4.0K  5.0M   1% /run/lock
tmpfs                      7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/loop0                 9.0M  9.0M     0 100% /snap/canonical-livepatch/146
/dev/loop1                 128K  128K     0 100% /snap/bare/5
/dev/loop2                 165M  165M     0 100% /snap/gnome-3-28-1804/161
/dev/loop3                  82M   82M     0 100% /snap/gtk-common-themes/1534
/dev/loop9                 291M  291M     0 100% /snap/vault/2012
/dev/loop10                 46M   46M     0 100% /snap/snap-store/638
/dev/loop7                 347M  347M     0 100% /snap/gnome-3-38-2004/115
/dev/sda2                  704M  305M  348M  47% /boot
/dev/loop6                  43M   43M     0 100% /snap/leafpad/91
/dev/loop8                 321M  321M     0 100% /snap/vlc/3078
/dev/loop11                 46M   46M     0 100% /snap/snap-store/599
/dev/loop16                219M  219M     0 100% /snap/gnome-3-34-1804/72
/dev/loop13                117M  117M     0 100% /snap/core/14399
/dev/loop15                296M  296M     0 100% /snap/vlc/2344
/dev/sda1                  511M   26M  486M   6% /boot/efi
/dev/loop14                 64M   64M     0 100% /snap/core20/1738
/dev/loop12                 92M   92M     0 100% /snap/gtk-common-themes/1535
/dev/loop17                219M  219M     0 100% /snap/gnome-3-34-1804/77
/dev/loop19                256K  256K     0 100% /snap/gtk2-common-themes/13
/dev/loop21                9.0M  9.0M     0 100% /snap/canonical-livepatch/164
/dev/loop18                 50M   50M     0 100% /snap/snapd/17883
/dev/loop23                347M  347M     0 100% /snap/gnome-3-38-2004/119
/dev/loop20                163M  163M     0 100% /snap/gnome-3-28-1804/145
tmpfs                      1.6G  196K  1.6G   1% /run/user/1000
/dev/loop24                 56M   56M     0 100% /snap/core18/2667
/dev/loop25                 64M   64M     0 100% /snap/core20/1778
/dev/loop4                 117M  117M     0 100% /snap/core/14447
/dev/loop5                  50M   50M     0 100% /snap/snapd/17950
/dev/loop26                 56M   56M     0 100% /snap/core18/2679

我想知道每个文件系统位于哪个分区,特别是我的根文件系统安装在/.我还想知道每个分区的满度。

我怎样才能找到这个?使用 GUI 工具来证明您的命令行工具可以正常工作,但最终我需要命令行工具,因为我需要在简约的远程嵌入式 Linux 边缘设备上运行它。

答案1

我至少想出了一种方法。欢迎其他答案。

概括

我的/根挂载点位于/dev/sda3分区上(如 底部所示lsblk)。

而且,我的/dev/sda3分区大约是(410 GiB(在 中使用vgubuntu-root,如 所示df -h) + 0.980 GiB(在 中使用vgubuntu-swap,如 所示lsblk))/(475.7 GiB(在 中总计sda3,如 所示lsblk)) = 410.98/475.7 =86.4% 已满。

关键分区或文件系统相关命令:

# get disk usage and see mount points (but not partitions :()
df -h

# see which partition your filesystems are on, and how big they are
lsblk

# and on embedded Linux devices with BusyBox:
mountpoint -n /

# ---------------------

# and maybe useful
blkid

# see also
sudo fdisk -l

# get additional partition info for `/dev/sda3`
sudo fdisk -l /dev/sda3

细节

的末尾lsblk显示了我的所有分区、它们的大小以及它们安装到的安装点。在我的 Ubuntu 20.04 机器上,请注意从sda接近结尾处开始的部分。这就是我的物理分区开始的地方:

$ lsblk
NAME                  MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
loop0                   7:0    0     9M  1 loop  /snap/canonical-livepatch/146
loop1                   7:1    0     4K  1 loop  /snap/bare/5
loop2                   7:2    0 164.8M  1 loop  /snap/gnome-3-28-1804/161
loop3                   7:3    0  81.3M  1 loop  /snap/gtk-common-themes/1534
loop4                   7:4    0 116.7M  1 loop  /snap/core/14447
loop5                   7:5    0  49.8M  1 loop  /snap/snapd/17950
loop6                   7:6    0  42.7M  1 loop  /snap/leafpad/91
loop7                   7:7    0 346.3M  1 loop  /snap/gnome-3-38-2004/115
loop8                   7:8    0 320.4M  1 loop  /snap/vlc/3078
loop9                   7:9    0 290.1M  1 loop  /snap/vault/2012
loop10                  7:10   0    46M  1 loop  /snap/snap-store/638
loop11                  7:11   0  45.9M  1 loop  /snap/snap-store/599
loop12                  7:12   0  91.7M  1 loop  /snap/gtk-common-themes/1535
loop13                  7:13   0 116.7M  1 loop  /snap/core/14399
loop14                  7:14   0  63.2M  1 loop  /snap/core20/1738
loop15                  7:15   0 295.7M  1 loop  /snap/vlc/2344
loop16                  7:16   0   219M  1 loop  /snap/gnome-3-34-1804/72
loop17                  7:17   0   219M  1 loop  /snap/gnome-3-34-1804/77
loop18                  7:18   0  49.6M  1 loop  /snap/snapd/17883
loop19                  7:19   0   140K  1 loop  /snap/gtk2-common-themes/13
loop20                  7:20   0 162.9M  1 loop  /snap/gnome-3-28-1804/145
loop21                  7:21   0     9M  1 loop  /snap/canonical-livepatch/164
loop23                  7:23   0 346.3M  1 loop  /snap/gnome-3-38-2004/119
loop24                  7:24   0  55.6M  1 loop  /snap/core18/2667
loop25                  7:25   0  63.3M  1 loop  /snap/core20/1778
loop26                  7:26   0  55.6M  1 loop  /snap/core18/2679
sda                     8:0    0   477G  0 disk  
├─sda1                  8:1    0   512M  0 part  /boot/efi
├─sda2                  8:2    0   732M  0 part  /boot
└─sda3                  8:3    0 475.7G  0 part  
  └─sda3_crypt        253:0    0 475.7G  0 crypt 
    ├─vgubuntu-root   253:1    0 474.8G  0 lvm   /
    └─vgubuntu-swap_1 253:2    0   980M  0 lvm   [SWAP]

因此,根挂载点 ( /) 位于vgubuntu-root分区 内sda3。其完整分区层次结构为sda/sda3/sda3_crypt/vgubuntu-root. GUIgparted确认了这一点并显示如下:

在此输入图像描述

-n在运行 BusyBox 的嵌入式 Linux 主板上(例如,Ubuntu 没有该选项),您还可以使用mountpoint -n <mount_point>.例如:mountpoint -n /会显示类似这样的内容,确认/文件系统挂载点位于分区上/dev/sda3

$ mountpoint -n /
/dev/sda3 /

同样,在 Ubuntu 上,该-n选项不存在,但在带有 BusyBox 的板上,运行时的帮助菜单只mountpoint显示:

# mountpoint
BusyBox v1.31.1 (2023-01-26 07:37:10 UTC) multi-call binary.

Usage: mountpoint [-q] <[-dn] DIR | -x DEVICE>

Check if the directory is a mountpoint

    -q  Quiet
    -d  Print major/minor device number of the filesystem
    -n  Print device name of the filesystem
    -x  Print major/minor device number of the blockdevice

所以-nPrint device name of the filesystem

现在我们知道lsblkmountpoint -n /文件系统(和根挂载点)的分区是/dev/sda3,我们可以通过以下方式获取更多分区信息:

sudo fdisk -l /dev/sda3

示例运行和输出:

$ sudo fdisk -l /dev/sda3
[sudo] password for gabriel: 
Disk /dev/sda3: 475.74 GiB, 510804361216 bytes, 997664768 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

大小为 475.74 GiB,如之前所示lsblk

之前来自lsblk

└─sda3                  8:3    0 475.7G  0 part  
  └─sda3_crypt        253:0    0 475.7G  0 crypt 
    ├─vgubuntu-root   253:1    0 474.8G  0 lvm   /
    └─vgubuntu-swap_1 253:2    0   980M  0 lvm   [SWAP]

因此,我们可以看到安装在分区中的根文件系统/仅分配了 475.7 GiB 中的 474.8 GiB /dev/sda3

df -h从我之前的问题来看:

Filesystem                 Size  Used Avail Use% Mounted on
...
/dev/mapper/vgubuntu-root  467G  410G   33G  93% /

所以,我的/dev/sda3分区大约是(410 GiB(在 中使用vgubuntu-root,如 所示df -h) + 0.980 GiB(在 中使用vgubuntu-swap,如 所示lsblk))/(475.7 GiB(在 中总计sda3,如 所示lsblk)) = 410.98/475.7 =86.4% 已满。

答案2

您可以用来grep仅显示您感兴趣的文件系统。例如

$ df -h | grep ^/dev/ | grep -vE '^/dev/(loop|shm)'

更好的是,使用awk(因为将 grep 管道传输到 grep 有点愚蠢,而且 awk 可以在模式中使用布尔运算符 - 例如 AND &&、 OR||和 NOT !):

df -h | awk 'NR==1; /^\/dev\// && ! /^\/dev\/(loop|shm)/'

这将打印第一行(标题)以及/dev/以 /dev/shm 或 /dev/loop 开头的任何行。在您的系统上,使用df -h您发布的示例输出,它将显示:

$ awk 'NR==1; /^\/dev/ && ! /dev\/(loop|shm)/' /tmp/df-sample.txt
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vgubuntu-root  467G  410G   33G  93% /
/dev/sda2                  704M  305M  348M  47% /boot
/dev/sda1                  511M   26M  486M   6% /boot/efi

调整正则表达式以满足您的需要。


注意:这不适用于任何 ZFS 文件系统 - 它们作为池/数据集安装,而不是来自 /dev。例如,在我的系统上,rootfs 和池“hex”上有几个其他文件系统,以及用于 /boot 的 mdadm raid1 ext4 和用于 /boot/efi 的 FAT 分区(所有这些都是同一对相同 NVME 驱动器上的分区- 与很多人的想法相反,ZFS 与分区配合得很好,你不必给它整个磁盘):

$ df -Th
Filesystem                 Type  Size  Used  Avail  Use%  Mounted on
hex/ROOT                   zfs   243G  14G   229G   6%    /
/dev/md0                   ext4  2.0G  335M  1.5G   18%   /boot
/dev/nvme1n1p2             vfat  511M  49M   463M   10%   /boot/efi
hex/local                  zfs   230G  855M  229G   1%    /usr/local
hex/home                   zfs   257G  28G   229G   11%   /home
hex/var                    zfs   229G  128K  229G   1%    /var
...
...

但是,由于您知道池名称,因此您可以调整正则表达式以适应,例如:

df -h | awk 'NR==1; /^(\/dev|hex)/ && ! /dev\/(loop|shm)/'

或 fs 类型 ( df -T) 的匹配:

df -Th | awk 'NR==1 || $2 ~ /zfs|btrfs|ext|fat|xfs/'

另请参阅 GNU df-t限制显示文件系统类型的选项,以及-x排除 fs 类型的选项。

答案3

我喜欢这个命令 - lsblk

fred@Z170-jammy:~$ lsblk -e 7 -o model,name,fstype,size,fsused,label,partlabel,mountpoint,uuid
MODEL NAME     FSTYPE   SIZE FSUSED LABEL  PARTLABEL          MOUNTPOINT UUID
HGST  sda             931.5G                                             
      ├─sda1   vfat   510.2M        ESP_B  EFI System Partition
      │                                                                  F496-1330
      ├─sda2   ext4    30.3G   6.1G hirsute
      │                                    hirsute            /media/fre 2888d7ab-23e4-4981-8566-7e23335be781
      ├─sda3   ext4    49.8G    40K ISO_b  ISO_b              /media/fre c395f36d-5e02-4913-a904-e336054b2eff
      ├─sda4   ext4   147.6G 115.6G backup_b
      │                                    backup_b           /media/fre dd4e4a2e-4785-4441-91b0-28234b98e625
      ├─sda5   ext4    30.3G   6.2G focal_a
      │                                    focal_a            /media/fre f2cde08c-a045-43ef-83bd-a4132aa23fbd
      ├─sda6   ext4   302.7G 117.8G data   data               /media/fre f9537995-8b44-4abb-b5fb-ec27023f57b2
      ├─sda7   swap     2.1G                                             3ef43e7c-8a35-4f8b-bc73-c91d6098d4cd
      ├─sda8   ext4    24.4G   8.2G impish impish             /media/fre a269adca-248f-4633-a06d-01348ae42d3a
      ├─sda9   ext4      24G   6.9G groovy_k
      │                                    groovy_k           /media/fre 6fadac33-0cdc-4005-940c-a4d035058dd8
      └─sda10  ext4    33.3G   9.7G jammy-b
                                           jammy_b            /media/fre aa644837-3a50-4cc3-b5b9-683172ea7d60
Samsu nvme0n1         465.8G                                             
      ├─nvme0n1p1
      │        vfat     512M  16.2M ESP_NVME
      │                                    esp_nvme           /boot/efi  4954-C122
      ├─nvme0n1p2
      │        ext4    29.3G   8.7G focal_0
      │                                    focal_0            /media/fre b913e1bc-6f08-4984-b653-9a604d95470a
      ├─nvme0n1p3
      │        ext4    29.3G  10.1G focal_k
      │                                    focal_k            /media/fre 54029c4f-0cbe-413e-80ce-78a4995b0551
      ├─nvme0n1p4
      │        ext4    29.3G  15.7G jammy  jammy              /          9da6b198-e2ca-4e27-8a18-6daf4ecfc324
      └─nvme0n1p5
               ext4   195.3G 134.9G nvme_data
                                           nvme_data          /mnt/data  1a44f4af-6780-4bbd-ad0b-6385ed30830b

相关内容