Після створення масиву 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).