フォルダーがどの物理デバイス上にあるかを見つけるにはどうすればよいですか?


110

具体的にはsudo mkdir /work、私はやった、そしてそれが実際に私のハードドライブ上にあり、他のドライブにマップされていないことを確認したい。

このフォルダが物理的に配置されている場所を確認するにはどうすればよいですか?


回答:


148

この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デバイス。

ブロックデバイスをネストできる他の方法(ヒューズ、ループバックファイルシステム)があり、独自の方法で基盤となるブロックデバイスを決定します。また、複数のレイヤーをネストして、作業を進めなければなりません。あなたはそれが来るごとにそれぞれのケースを取る必要があります。


4
+1。面白い。私dfはとても親切だったことを知りませんでした。
ファヒムミタ

OK、それをして、ファイルシステムとして/ dev / mapper / fun-rootを取得しました。それで?(マイコンピュータの名前が「楽しい」です)
ripper234

1
その後、おそらくLVMを使用していますか?lvdisplayまたはlvsあなたの友達になります。
プネヘヘ

5
この答えに感銘を受けたので、LVMやMDがネストされている場合でも、パスまたはパーティションの基になるデバイスを返すコマンド「rawdev」の基礎として使用しました。これは、Githubの上で利用可能です:github.com/BMDan/rawdev
BMDan

5

スクリプトの場合、次を使用できます。

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

これはPOSIX互換です。


ほとんどの場合機能しますが、<pathname>がbtrfsスナップショットにある場合、これは「-」を報告します。
楕円ビュー

1

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ます。
ダンダスカレスク

@DanDascalescuフェアポイント。この質問に答えるときに私が探していた実際のハードウェアデバイスを知りたい場合、またはその場合に役立ちます。
arielf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.