ハードドライブ上のファイル/ディレクトリの物理的な場所を見る

ハードドライブ上のファイル/ディレクトリの物理的な場所を見る

Sysinternals DiskViewと同じ(または一部)機能、特にハードドライブ上のファイルの物理的な場所を表示する機能を提供するLinuxプログラムはありますか?

ディスクビューURL:http://technet.microsoft.com/en-gb/sysinternals/bb896650

ベストアンサー1

一部のファイルシステム(たとえば、Linuxのext4またはbtrfs)の場合、filefragを使用して、ファイルシステムがあるブロックデバイス上のファイルのデータセグメントオフセットを取得できます。

$ seq 1000 > a
$ filefrag -v a
Filesystem type is: ef53
File size of a is 3893 (1 block of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       0:   82784147..  82784147:      1:             eof
a: 1 extent found
$ sudo dd bs=4k skip=82784147 count=1 if=/dev/storage/home 2>&- | head
1
2
3
4
5
6
7
8
9
10

ここで、ブロックデバイスはLVMボリュームです。ボリュームには、ディスク、パーティション、RAIDアレイ、ファイル、RAM、ネットワークブロックデバイスなどの物理ボリュームがあります。物理ディスクまたはディスクグループに戻るのは難しい場合があります。

私の場合、それは線形拡張でGPTパーティションの上にある論理ボリュームだったので、比較的簡単でした。

$ sudo dmsetup table /dev/storage/home
0 1953120256 linear 8:98 384

/dev/sdg2したがって、/ dev / storage / homeはデバイス8:98内の384セクタであり、これは私にとっては大丈夫です。

$ cat /sys/block/sdg/sdg2/start
489060352

したがって、sdg2は/ dev / sdg(このシステムの7番目のディスク)内の489060352セクタです。

したがって、ファイルがある単一のディスク内でオフセットを取得できます。

$ sudo dd if=/dev/sdg skip="$((489060352+384+82784147*8))" count=1 2> /dev/null | head
1
2
3
4
5
6
7
8
9
10

おすすめ記事