回答:
この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
、ボリュームグループorthanc
(/dev/mapper/orthanc-usr
)内の論理ボリュームがデバイス上にあることを示しています/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
デバイス。
ブロックデバイスをネストできる他の方法(ヒューズ、ループバックファイルシステム)があり、独自の方法で基盤となるブロックデバイスを決定します。また、複数のレイヤーをネストして、作業を進めなければなりません。あなたはそれが来るごとにそれぞれのケースを取る必要があります。
df
はとても親切だったことを知りませんでした。
lvdisplay
またはlvs
あなたの友達になります。
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の一部です。
df
は引き続き表示されmapper
ます。
findmnt -T /work