具体的には次のとおりです。sudo mkdir /work
実際に私のハードドライブにあり、他のドライブにマップされていないことを確認したかったです。
このフォルダの物理的な場所をどのように確認できますか?
答え1
この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
基本的なブロックデバイスを決定するための独自の方法があるブロックデバイスをネストする別の方法(回路、ループバックファイルシステム)があり、複数のレベルをネストすることもできるので、以下を作業する必要があります。すべてのケースを受け入れる必要があります。
答え2
スクリプトの場合は、次のものを使用できます。
$ df -P <pathname> | awk 'END{print $1}'
これはPOSIXと互換性があります。
答え3
最新の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の一部です。
答え4
$ findmnt -no source -T / # mountpoint
/dev/nvme0n1p2
$ findmnt -no source -T /usr # directory under mountpoint
/dev/nvme0n1p2
$ COLUMNS=70 man findmnt | sed -E '/^ {7}-[noT]/,/^$/!d;s/^ {7}//'
-n, --noheadings
Do not print a header line.
-o, --output list
Define output columns. See the --help output to get a
list of the currently supported columns. The TARGET
column contains tree formatting if the --list or --raw
options are not specified.
-T, --target path
Define the mount target. If path is not a mountpoint file
or directory, then findmnt checks the path elements in
reverse order to get the mountpoint (this feature is
supported only when searching in kernel files and
unsupported for --fstab). It’s recommended to use the
option --mountpoint when checks of path elements are
unwanted and path is a strictly specified mountpoint.