it-swarm.cn

如何查找文件夹位于哪个物理设备上?

具体来说:我做了Sudo mkdir /work,并想验证它确实位于我的硬盘驱动器上,并且未映射到其他驱动器。

如何检查此文件夹的实际位置?

120
ripper234

df(1)命令将告诉您设备上有文件或目录:

_df /work
_

第一个字段具有文件或目录所在的设备。

例如.

_$ df /root
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1              1043289    194300    795977  20% /
_

如果设备是逻辑卷,则需要确定逻辑卷在哪个块设备上。为此,您可以使用lvs(8)命令:

_# df /usr
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/orthanc-usr
                       8256952   4578000   3259524  59% /usr
# lvs -o +devices /dev/mapper/orthanc-usr
  LV   VG      Attr   LSize Origin Snap%  Move Log Copy%  Convert Devices     
  usr  orthanc -wi-ao 8.00g                                       /dev/sda3(0)
_

最后一栏告诉您,逻辑卷usr(_/dev/mapper/orthanc-usr_)中的逻辑卷orthanc在设备_/dev/sda3_上。由于卷组可以跨越多个物理卷,因此您可能会发现列出了多个设备。

逻辑块设备的另一种类型是md(多个设备,我认为以前称为元磁盘)设备,例如_/dev/md2_。要查看md设备的组件,可以使用_mdadm --detail_或查看_/proc/mdstat_

_# df /srv
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/md2             956626436 199340344 757286092  21% /srv
# mdadm --detail /dev/md2
...details elided...
    Number   Major   Minor   RaidDevice State
       0       8        3        0      active sync   /dev/sda3
       1       8       19        1      active sync   /dev/sdb3
_

您可以看到_/dev/md2_在_/dev/sda3_和_/dev/sdb3_设备上。

可以嵌套块设备的其他方法(保险丝,环回文件系统)将具有自己的方法来确定基础块设备,甚至可以嵌套多层,因此您必须逐步解决。您必须随身携带每种情况。

154
camh

对于脚本,可以使用:

$ df -P <pathname> | awk 'END{print $1}'

这是POSIX兼容的。

5
Tom Hale

在现代版本的Ubuntu中,文件/目录与设备之间存在一个附加层(设备映射器)。 /dev/mapper包含指向实际特殊设备的符号链接。例如,尝试当前目录:

$ df . | grep '^/' | cut -d' ' -f1
/dev/mapper/kubuntu--vg-root

$ ls -l /dev/mapper/kubuntu--vg-root
lrwxrwxrwx 1 root root 7 Nov 22 18:02 /dev/mapper/kubuntu--vg-root -> ../dm-1

因此,要以编程方式获取设备的完整路径,可以使用:

$ realpath $(df . | grep '^/' | cut -d' ' -f1)

这是我的案例打印:

/dev/dm-1

realpath是GNU coreutils。

2
arielf