Можно ли найти физический адрес файла на диске?

Вот один

secs=378444
echo $(($secs/86400))d $(($(($secs - $secs/86400*86400))/3600))h:$(($(($secs - $secs/86400*86400))%3600/60))m:$(($(($secs - $secs/86400*86400))%60))s

Выход:

4d 9h:7m:24s
0
20.04.2020, 18:48
1 ответ

Вы можете сделать это с помощьюhdparm --fibmap:

# hdparm --fibmap /var/log/messages

/var/log/messages:
 filesystem blocksize 4096, begins at LBA 360720384; assuming 512 byte sectors.
 byte_offset  begin_LBA    end_LBA    sectors
           0  413190576  413190583          8
        4096  409598016  409598135        120
       65536  371059584  371059711        128
      131072  371060224  371060359        136
      200704  360802936  360803567        632
      524288  399259648  399260047        400
      729088  360797952  360798207        256
      860160  413419968  413420335        368
     1048576  413421568  413422199        632

# echo LOL >/tmp/lol
# hdparm --fibmap /tmp/lol

/tmp/lol:
 filesystem blocksize 4096, begins at LBA 360720384; assuming 512 byte sectors.
 byte_offset  begin_LBA    end_LBA    sectors
           0  413374584  413374591          8
# dd if=/dev/sda skip=413374584 count=8 status=none | hexdump -C
00000000  4c 4f 4c 0a 00 00 00 00  00 00 00 00 00 00 00 00  |LOL.............|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00001000

hdparmиспользует FS_IOC_FIEMAPioctl и возвращается к FIGETBSZ/FIBMAP, если он недоступен.

1
19.03.2021, 02:27

Теги

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