Я не на 100% уверен, что это - то, что Вы ищете, но я полагаю, что можно сделать это использование команды hdparm
, конкретно с --fibmap
переключатель.
выборка
--fibmap
When used, this must be the only option given. It requires a
file path as a parameter, and will print out a list of the block
extents (sector ranges) occupied by that file on disk. Sector
numbers are given as absolute LBA numbers, referenced from sector
0 of the physical device rather than from the partition or
filesystem. This information can then be used for a variety of
purposes, such as examining the degree of fragmenation of larger
files, or determining appropriate sectors to deliberately corrupt
during fault-injection testing procedures.
This option uses the new FIEMAP (file extent map) ioctl() when
available, and falls back to the older FIBMAP (file block
map) ioctl() otherwise. Note that FIBMAP suffers from a 32-bit
block-number interface, and thus not work beyond 8TB or 16TB.
FIBMAP is also very slow, and does not deal well with
preallocated uncommitted extents in ext4/xfs filesystems, unless a
sync() is done before using this option.
Скажите, что у нас есть файл примера.
$ echo "this is a test file" > afile
Теперь, когда мы работаем hdparm
.
$ sudo hdparm --fibmap afile
afile:
filesystem blocksize 4096, begins at LBA 0; assuming 512 byte sectors.
byte_offset begin_LBA end_LBA sectors
0 282439184 282439191 8
Другой хороший метод для обнаружения начала файла и конечных блоков filefrag
. Необходимо будет использовать соответствующие переключатели хотя, для получения желаемого вывода. Один позитивный аспект этого инструмента hdparm
тот любой пользователь, может выполнить его, таким образом, нет sudo
требуется. Необходимо будет использовать -b512
переключитесь так, чтобы выводы были отображены в 512-байтовых блоках. Также мы должны сказать filefrag
быть подробным.
$ filefrag -b512 -v afile
Filesystem type is: ef53
File size of afile is 20 (8 block of 512 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 7: 282439184.. 282439191: 8: eof
afile: 1 extent found
Третий метод для получения LBAs файла должен использовать debugfs
. Этот метод потребует небольшой математики, но я думал, что это важный показало, как можно преобразовать из значения степеней, о котором сообщают debugfs
к LBAs, для тех, которым могло бы быть любопытно.
Поэтому давайте запустимся с inode файла.
$ ls -i afile
6560281 afile
Примечание: Мы могли также использовать имя файла в debugfs
но для этой демонстрации я собираюсь использовать inode вместо этого.
Теперь давайте доберемся stat
информация через debugfs
о нашем inode.
$ sudo debugfs -R "stat <6560281>" /dev/mapper/fedora_greeneggs-home
debugfs 1.42.7 (21-Jan-2013)
Inode: 6560281 Type: regular Mode: 0664 Flags: 0x80000
Generation: 1999478298 Version: 0x00000000:00000001
User: 1000 Group: 1000 Size: 20
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x52be10c3:a640e994 -- Fri Dec 27 18:44:03 2013
atime: 0x52bff8a1:a9f08020 -- Sun Dec 29 05:25:37 2013
mtime: 0x52be0fe7:18a2f344 -- Fri Dec 27 18:40:23 2013
crtime: 0x52be0dd8:64394b00 -- Fri Dec 27 18:31:36 2013
Size of extra inode fields: 28
Extended attributes stored in inode body:
selinux = "unconfined_u:object_r:user_home_t:s0\000" (37)
EXTENTS:
(0):35304898
Важная информация находится в разделе степеней. Это блоки на самом деле файловой системы, которые используются этим inode. Мы просто должны преобразовать их в LBA. Мы можем сделать это посредством следующего уравнения.
Примечание: Предположение, что наша файловая система использует 4k размеры блока и что используемое оборудование использует 512-байтовые единицы, мы должны умножить exents на 8.
beginning LBA = (BEGIN EXTENT) * 8
ending LBA = (((ENDING EXTENT) + 1) * 8) - 1
Таким образом в нашем примере наше начало и конечная степень являются тем же, начиная с наших соответствий файла в единственной степени.
beginning LBA = 35304898 * 8 = 282439184
ending LBA = ((35304898 + 1) * 8) - 1 = 282439191
Таким образом, наши LBAs 282439184.. 282439191.
Так что кажется, что это не ISO, в конце концов. В какой-то момент я заметил, что у USB-палочки был на ней раздел GPT. Итак, следуя инструкциям в https://fedoraproject.org/wiki/how_to_create_and_use_live_usb#litd
Я сбрасываю его:
#livecd-iso-to-disk --format --reset-mbr --overlay-size-mb 1024 /home/alf/Fedora-Live-MATE_Compiz-x86_64-21-5.iso /dev/sd
, который дал мне нерабочее палку. Хотел бы я сказать легко и интуитивно понятно - это не.
У меня это тоже сработало. Спасибо "Alien Life Form".
Здесь я устанавливаю Fedora.iso на USB-накопитель, который идентифицируется как / dev / sdb. Для полноты (но не показано) я удалил все разделы на этом USB-накопителе, на всякий случай.
root@linux# dnf install livecd-tools
root@linux# livecd-iso-to-disk --format --reset-mbr --overlay-size-mb 1024 /home/user/Download/Fedora.iso /dev/sdb