Как правильно выровнять таблицу разделов?

Я нахожусь в процессе создания моего первого массива RAID5. Я использовал mdadm для создания следующих настроек:

root@bondigas:~# mdadm --detail /dev/md1
/dev/md1:
        Version : 00.90
  Creation Time : Wed Oct 20 20:00:41 2010
     Raid Level : raid5
     Array Size : 5860543488 (5589.05 GiB 6001.20 GB)
  Used Dev Size : 1953514496 (1863.02 GiB 2000.40 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Wed Oct 20 20:13:48 2010
          State : clean, degraded, recovering
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

 Rebuild Status : 1% complete

           UUID : f6dc829e:aa29b476:edd1ef19:85032322 (local to host bondigas)
         Events : 0.12

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       4       8       64        3      spare rebuilding   /dev/sde

Пока я шел, я решил отформатировать зверя с помощью следующей команды:

root@bondigas:~# mkfs.ext4 /dev/md1p1 
mke2fs 1.41.11 (14-Mar-2010)
/dev/md1p1 alignment is offset by 63488 bytes.
This may result in very poor performance, (re)-partitioning suggested.
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=16 blocks, Stripe width=48 blocks
97853440 inodes, 391394047 blocks
19569702 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
11945 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848

Writing inode tables: ^C 27/11945
root@bondigas:~# ^C

Я не уверен, что делать с "выравнивание /dev/md1p1 смещено на 63488 байт." и как правильно разделить диски, чтобы соответствовать, чтобы я мог отформатировать его правильно.

4 ответа

Решение

Мой друг указал, что я могу просто mkfs.ex4 прямо на /dev/md1 без разбиения чего-либо, поэтому я удалил раздел и сделал это, и теперь он, кажется, форматирует.

Так как выравнивание появляется во многих местах -

  • Жесткие диски "Advanced Format" с 4k блоками
  • SSD-накопители
  • RAID
  • LVM

- Я немного расширю вопрос.

Выравнивание разделов

"Linux на дисках сектора 4kB" (IBM developerWorks) рассказывает о fdisk, parted и GPT fdisk.

С помощью fdisk:

sudo fdisk /dev/XXX 
c # turn off DOS compatibility
u # switch to sector units
p # print current partitions, check that start sectors are multiples of 8

# for a new partition:
n # new partition
<select primary/secondary and partition #>
first sector: 2048 
  # 2048 is default in recent fdisk, 
  # and is compatible with Vista and Win 7, 
  # 4k-sector disks and all common RAID stripe sizes

Выравнивание файловой системы

Это в первую очередь относится к RAID (уровни 0, 5 и 6; не уровень 1); Файловая система работает лучше, если она создана со знанием размеров полосы.

Его также можно использовать для твердотельных накопителей, если вы хотите настроить файловую систему по размеру стираемого блока SSD (Теодор Цо, разработчик ядра Linux).

В посте ОП mkfs по-видимому, автоматически определяются оптимальные настройки, поэтому никаких дальнейших действий не потребовалось.

Если вы хотите проверить, для RAID соответствующие параметры:

  • размер блока ( размер блока файловой системы, например 4096)
  • размер полосы (такой же, как размер фрагмента mdadm, например 64 КБ)
  • шаг: stripe size / block size (напр. 64k / 4k = 16)
  • полоса ширины: stride * #-of-data-disks (напр. 4 диска RAID 5 - это 3 диска с данными; 16*3 = 48)

Из Linux Raid Wiki. Смотрите также этот простой калькулятор для разных уровней RAID и количества дисков.

Для выравнивания стираемого блока SSD параметры:

  • размер блока FS (например, 4096)
  • Размер стираемого блока SSD (например, 128 КБ)
  • ширина полосы: размер блока стирания / размер блока фс (например, 128k / 4k = 32)

Из сообщения Теодора о SSD.

Выравнивание экстентов LVM

Потенциальная проблема заключается в том, что LVM создает заголовок 192k. Это кратно 4 КБ (поэтому нет проблем с дисками по 4 КБ), но не может быть кратным размеру полосы RAID (если LVM работает на RAID) или размеру стираемого блока SSD (если LVM работает на SSD).

Посмотрите сообщение Теодора для обходного пути.

Я считаю этот способ самым простым

parted -a opt /dev/md0
(parted) u MiB
(parted) rm 1
(parted) mkpart primary 1 100%

или альтернативный грязный метод будет просто так

(parted) mkpart primary ext4 1 -1

Кажется, что mkfs.ext4 хочет, чтобы файловые системы на вашем RAID запускались на границе 64 КБ. Если вы используете весь диск, он начинается с 0, что, конечно, также кратно 64 КиБ...

В настоящее время большинство инструментов разбиения по умолчанию используют границу в 1 МБ (fdisk, вероятно, этого не делает).

Причина этого заключается в том, что большинство жестких дисков и твердотельных накопителей используют физические сектора на устройстве, которые намного больше, чем логические сектора. Результатом этого является то, что если вы читаете логический сектор размером 512 байт с диска, аппаратное обеспечение фактически должно считывать намного больший объем данных.

В случае вашего программного RAID-устройства происходит нечто подобное: данные на нем хранятся в виде "кусочков" объемом 64 КиБ с настройками mdadm по умолчанию.

Другие вопросы по тегам