Просмотрите физическое местоположение файла/каталога на жестком диске

В энергии можно сделать что-то как:

:set showbreak=..
4
14.10.2014, 01:08
1 ответ

Для некоторых файловых систем, таких как Ext4 или BTRFS на Linux, вы можете использовать файлфраг для получения смещений сегментов данных для файла в блочном устройстве. Файловая система включена.

$ 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 / Storage / Home - 384 сектора в пределах устройства 8:98, что происходит / dev / sdg2 для меня.

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

Таким образом, SDG2 - 489060352 секторов внутри / dev / sdg (7-й диск в этой системе).

Итак, я могу получить смещение в одном диске, который файл включен:

$ 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
9
27.01.2020, 20:49

Теги

Похожие вопросы