Збільшення швидкості програмного raid - як стати програмістом

Після створення масиву RAID5 з трьох двотерабайтний дисків, я був неприємно здивований низькою швидкості запису на масив: всього 55 Мбайт / сек. Довелося повивчати, за допомогою яких параметрів можна домогтися від масиву нормальної продуктивності.

Справа виявилася в тому, що

по-перше - що виставляється для масиву по-замовчуванню значення stripe_cache_size занадто мало;

по-друге - масив я створив зі внутрішнім Write Intent Bitmap (-bitmap = internal) і маленьким bitmap chunk.

Параметри, що впливають на продуктивність

stripe_cache_size

Значення за замовчуванням - 256, діапазон від 32 до 32768, при цьому збільшення хоча б до 8192 сильно допомагає швидкості запису:

Увага. вимірюється в кількості сторінок * на кількість пристроїв. і може бути дуже ненажерливе в плані споживання ОЗУ. При вищевказаному значенні 8192. розмірі сторінки пам'яті в 4096 байт (використовуваному в ядрі Linux на x86 і x86-64) і чотирьох дисках в RAID. споживання пам'яті складе:

Write Intent Bitmap

Дозволяє після некоректної перезавантаження системи виробляти перевірку не тільки RAID 'а, а тільки тих областей, в які на момент перезавантаження або відключення живлення проводився запис. У варіанті -bitmap = internal. вкрай негативно впливає на швидкість запису:

mkfs.ext4 -E stride =, stripe_width =

Важливо правильно задати при створенні ФС ці параметри, якщо забули - нічого страшного, можна і пізніше їх поміняти за допомогою tune2fs.

XFS намагається визначити відповідні значення автоматично, якщо у неї не виходить - див. Man mkfs.xfs на предмет sunit = і swidth =.

Chunk size

Задається при створенні масиву, параметром mdadm -chunk-size. Змінити в уже працює масиві - дуже довга, і ймовірно не цілком безпечна операція, що вимагає, до того ж, найсвіжішої версії mdadm (3.1) і досить нового ядра (2.6.31+) 1).