Куда идут накладные расходы для ZFS RAIDZ2 на дисках сектора 4K?

8

Я начал с создания 16 пустых файлов размером ровно 1 миллиард байт:

for i in {1..16}; do dd if=/dev/zero of=/mnt/temp/block$i bs=1000000 count=1000 &> /dev/null; done

Затем я создал все больше и больше томов RAIDZ2 над файлами, заставив ashift = 12 симулировать 4K секторный диск, например

zpool create tank raidz2 -o ashift=12 /mnt/temp/block1 /mnt/temp/block2...

а затем сравнили, используя, df -B1чтобы увидеть фактический размер.

Filesystem  1B-blocks
tank        12787777536

Мои результаты:

+-------+-------------+-------------+------------+------------+
| disks |  expected   |   actual    |  overhead  | efficiency |
+-------+-------------+-------------+------------+------------+
|     3 |  1000000000 |   951975936 |   48024064 | 95.2       |
|     4 |  2000000000 |  1883766784 |  116233216 | 94.2       |
|     5 |  3000000000 |  2892234752 |  107765248 | 96.4       |
|     6 |  4000000000 |  3892969472 |  107030528 | 97.3       |
|     7 |  5000000000 |  4530896896 |  469103104 | 90.6       |
|     8 |  6000000000 |  5541068800 |  458931200 | 92.4       |
|     9 |  7000000000 |  6691618816 |  308381184 | 95.6       |
|    10 |  8000000000 |  7446331392 |  553668608 | 93.1       |
|    11 |  9000000000 |  8201175040 |  798824960 | 91.1       |
|    12 | 10000000000 |  8905555968 | 1094444032 | 89.1       |
|    13 | 11000000000 | 10403577856 |  596422144 | 94.6       |
|    14 | 12000000000 | 11162222592 |  837777408 | 93.0       |
|    15 | 13000000000 | 12029263872 |  970736128 | 92.5       |
|    16 | 14000000000 | 12787908608 | 1212091392 | 91.3       |
+-------+-------------+-------------+------------+------------+

Как график:

график эффективности

  1. Верны ли мои результаты или я что-то пропустил?
  2. Если они правы, почему? Куда идет космос?
  3. Могу ли я сделать что-нибудь для повышения эффективности?
  4. Есть ли формула для расчета эффективности?
steveh7
источник
Почему? Просто почему?!?
Ewwhite
@ewwhite - На 11% меньше места, чем я ожидал. Если бы у вас было, скажем, 12x1TB дисков, вы бы ожидали иметь 10TB, но менее 9TB.
steveh7
Нет, это хороший вопрос. Я не знаю ответа. У меня большие различия в использовании zpool между ashift 9 и 12 и теми же наборами данных.
августа
Можете ли вы выполнить их заново с значениями пепла от 0 до 12 и построить график в 3D?
Андрей

Ответы:

3

Ответ glib, потому что RAIDZ (2) сосет на 4k дисках.

  • Проблема № 548 : крайне неэффективное использование пространства, наблюдаемое при использовании raidz2 с ashift = 12
  • Проблема № 1807 : zvol на RAIDZ2 занимает вдвое больше ожидаемого пространства # 1807

Это связано с вычислениями четности, которые поглощают кучу дополнительного пространства, особенно с небольшими файлами. Попробуйте выполнить тот же тест для файлов размером менее 50 МБ, если вы хотите увидеть некоторые реальные недостатки.

RobbieCrash
источник
Этот ответ не актуален, ошибки исправлены ...
Arman
@Arman Если вы читаете комментарии на 548, это объясняет, почему это так. «Ошибка» в 548 не исправлена, она просто закрыта; это не считается ошибкой.
RobbieCrash