On 8 May 2012, at 21:54, Valentin Nechayev wrote:

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? Это лишний уровень.

gnop нужен только на момент создания пула. Вот например краткое и толковое описание:
http://ivoras.net/blog/tree/2011-01-01.freebsd-on-4k-sector-drives.html

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-

Александр Вырланович
--------------------------
Системный Администратор
ПИК "СМК"

Ответить