Mon, May 07, 2012 at 16:29:00, vsjcfm wrote about "[freebsd] Re: [freebsd] ZFS на винтах с 4К секторами":
> В случае 64-битной версии ОС Microsoft Windows NT, > за GPT зарезервировано 32 сектора или 16 384 байта (при использовании > сектора размером 512, а не 4 096 байт), так что первым используемым > сектором каждого жёсткого диска в ней будет блок LBA 34. В общем случае это не только Windows. Полностью GPT состоит из: * primary header - 92 байта - по LBA=1 (здесь и далее смещения в секторах, рапортуемых на шине), остаток сектора свободен * partition array - не менее 128 записей, каждая из которых не менее 128 байт; есть методы расширения, но на практике они никому нафиг не нужны и поэтому у всех нынешних ОС свежесозданная таблица занимает 16384 байта. * backup header - те же 92 байта в начале последнего сектора (LBA=max) (но может быть раньше, если, например, диск из массива, созданного под RAID-контроллером, читается вне контроллера; но редактировать такую таблицу нельзя без исправления размещения) Если LBA=0 занято под PMBR, а LBA=1 - под GPT primary header, то partition array займёт 32 512-байтных сектора, или 4 4K-байтных. Соответственно и first usable LBA будет 34 или 6 соответственно. В сумме тут дикая смесь правил "считать по количеству секторов" или "считать по размеру данных", поэтому думать такое неудобно. Лучше запомнить пару чисел или свести в табличку. > > А как он себя поведёт, если появятся диски, рапортующие 4Kb сектор (без > > эмуляции 512-ых байт секторов)? > man gnop - можете проверить :) А зачем gnop? Это лишний уровень. cd /var/tmp dd if=/dev/zero of=disk1 bs=1m count=100 mdconfig -a -t vnode -f /var/tmp/disk1 -S 4096 gpart create -s GPT /dev/md0 gpart add -s 2m -t freebsd-ufs /dev/md0 yes 'Ha ha' | dd of=/dev/md0p1 bs=4096 dd if=disk1 | hd | less и видим: 00001000 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 |EFI PART....\...| [...] 00002000 b6 7c 6e 51 cf 6e d6 11 8f f8 00 02 2d 09 71 2b |І|nQоnж.Ь..-.q+| 00002010 67 a0 9e ab 3e 99 e1 11 80 be 00 01 02 64 8e a0 |g═╚>А.╬...d═| 00002020 06 00 00 00 00 00 00 00 05 02 00 00 00 00 00 00 |................| 00002030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| [...] 00006000 48 61 20 68 61 0a 48 61 20 68 61 0a 48 61 20 68 |Ha ha.Ha ha.Ha h| 00006010 61 0a 48 61 20 68 61 0a 48 61 20 68 61 0a 48 61 |a.Ha ha.Ha ha.Ha| 00006020 20 68 61 0a 48 61 20 68 61 0a 48 61 20 68 61 0a | ha.Ha ha.Ha ha.| 00006030 48 61 20 68 61 0a 48 61 20 68 61 0a 48 61 20 68 |Ha ha.Ha ha.Ha h| -netch-
