GPT и WD Advanced format

    Одна из внезапных проблем при использовании GPT — (если мы хотим увидеть приличную скорость записи) необходимость руками подстраивать положение раздела на дисках WD с Advanced format. Суть Advanced Format проста: внутри диск имеет 4к сектора, наружу они эмулируются как 512-байт. Если мы делаем запись двух секторов в пределах одного 4к блока, он записывается один раз. Если мы делаем запись двух секторов так, что задеваем два 4к-сектора — диску приходится читать два сектора, обновлять информацию и записывать их обратно. Плохо и медленно. Современные ОС используют 4к блоки для записи, так что если мы попадём правильно, то каждая операция записи будет просто записью, без чтения. Если же мы попадём неровно (например, 2кб из первого сектора и 2кб из второго), то мы получим огромные тормоза (см ссылку внизу на сайт IBM с статистикой «торможения» при ошибках в разметке).

    WD, когда размышляла насчёт 512 VS 4k, не учла, что помимо MBR есть ещё GPT. В случае 2Тб дисков MBR ещё терпит, однако, впереди диски на 3Тб, и в них MBR просто математически не сможет обеспечить разделы и переход на GPT неизбежен.

    Так что проблему GPT и WD нужно учитывать уже сегодня. Основным инструментом для манипуляций с GPT в настоящий момент является parted и его графическая версия gparted. К сожалению, gparted не умеет того, что нам нужно, так что всё последующее описывает использование parted.

    Основная мысль: Все величины (начало, конец раздела) должны быть кратны 4кБ, или, что чуть проще, 8 секторам. Это требование WD advanced format.

    Сама GPT занимает некоторый объём (33 сектора: 32 сектора GPT, 1 сектор — фальшивый MBR-затычка), так что первое кратное 8 число, с которым мы можем работать — 40 секторов. Оконечное число зависит от ёмкости диска, но тоже, желательно, кратное 8. Кроме того, GPT дублируется в конце диска, так что место в конце диска так же будет «обкусано».

    Для наилучшей производительности нужно учесть размер PE для LVM — 4Mb (8192 сектора) и установить размер тома кратным количеству PE. В результате всех этих манипуляций мы потеряем чуть-чуть места (меньше 8Мб), но зато получим быстрый том, у которого будут отсутствовать «unused» килобайты в описании в LVM.

    Помимо этого есть ещё мнение самого gparted, о том, что лучшее положение тома — кратно мегабайтам. Таким образом, итоговые требования звучат так: том должен начинаться и заканчиваться на величинах, кратных 4Мб.

    Итак, создание LVM тома на WD'шном диске с Advanced Format:


    # parted /dev/sdx

    mklabel gpt
    оздание таблицы разделов GPT

    unit s
    #считать место в секторах.

    print
    >Disk /dev/sdx: 3907029168s
    вывести информацию о винте.

    В этом выводе нас интересует количество секторов, обратите внимание, так как у нас WD'шный диск, то число секторов просто обязано быть кратным 8. Если оно не кратно 8 — либо это не Advanced Format, либо кто-то играется с джамперами, либо ещё что-то страшное случилось (например, вы ошиблись винтом и только что командой mklabel gpt снесли содержимое диска с самым ценным).

    Считаем наши значения: самое старшее, кратное 8192 секторам — 3907026944. Кстати, тут небольшой мухлёж, мы теряем место не два раза, а один, т.к. общий размер нашего тома будет 3907029168-8192 сектора.

    mkpart primary 8192 3907026944
    Если появится надпись

    >Warning: You requested a partition from 39s to 3907029167s.
    >The closest location we can manage is 39s to 3907029134s.
    >Is this still acceptable to you?
    >Yes/No?

    То это означает, что вы ошибись с математикой и нужно пересчитать заново.

    После создания раздела можно выйти из parted и выполнить обычные ритуалы LVM: pvcreate, vgexpand и т.д.

    Литература:
    Share post

    Comments 19

      0
      >>> В случае 2Гб дисков MBR
      2 Тб видимо )
        0
        Тремя нулями больше, тремя меньше. Ерунда какая.
        0
        Кстати, почему-бы не накатывать pv прямо на /dev/sdX без создания ненужного раздела?
          0
          Технически можно, на практике это чревато глупыми ошибками, когда раздел с PV путается с пустым разделом. Особенно это опасно если винты подключаются в другом порядке и одной модели.
          0
          А возможно чем нибудь поправить уже размеченные разделы? Том в GPT.
            0
            На свой страх и риск можно с помощью dd и fdisk, но это очень рисковано.
              0
              А если сектор установлен в 4K не обойтись простым ресайзом?
                0
                Вероятнее всего, нет.

                Кстати, у WD для ADF есть джампер для сдвига секторов — можно попробовать его.
                  0
                  Говорят если его воткнуть после форматирования, то данным конец. Ну это на сколько я понял. По крайней мере сдвиг повлияет на таблицу разделов, что грозит ее поломкой.
                  А конечная цель я так понял выровнять сектора относительно того расположения которое соответствует тому как они на диске расположены. Значит вопрос в том откуда они начинаются? Дробных то по идее быть не может в файловой системе, значит если подвинуть начало, то и все остальные сдвинутся как надо?
                  Paragon вроде умеет с гпт работать.
                    0
                    Кто вам мешает использовать dd?
                      0
                      Нужет еще один дополнителный диск такого же объема.
                        0
                        dd if=/dev/sdb of=/dev/sdb bs=512 seek=1
                          0
                          Это просто клонирует диск самого в себя, плюс пропустит один блок в начале. А вот как это будет сделано? И что это даст?
                            0
                            man dd
                            0
                            А почему тогда seek=1? Это пропустит 512 байт (1 сектор) с начала диска, но из статьи GPT=33. Тут получится 32, как нужно. Другой вопрос, что без этого первого сектора таблице разделов плохо не станет?
                            Ну, и если что-то пойдет не так, то потеряется я так понимаю тоже один сектор?
                              0
                              Я не собираюсь за вас высчитывать кого там на сколько секторов двигать нужно. Я всего лишь показал _КАК_ это можно сделать без пересоздания раздела.

                              Дальше вам нужно всего лишь напрячься и посчитать сам что куда там нужно подвинуть, чтобы яи сектора ровно висели.
                0
                Acronis вам в руки )
                0
                наверное я что-то не так понимаю, но почему пишут про «Суть Advanced Format проста: внутри диск имеет 4к сектора, наружу они эмулируются как 512-байт. „

                вроде джампер “включает» эмуляцию и заставляет видеть диск по старинке с 512 байтным сектором.
                джампера нет и нет эмуляции и мы видим сектор 4096 байтным.
                не так?
                  0
                  На разных моделях разное. На некоторых может эмулировать, на некоторых может делать идиотский сдвиг секторов на 1, специально для идиотизмов майкрософта.

                Only users with full accounts can post comments. Log in, please.