Я проверил это с помощью zdb -ddddd
[см. Http://www.cuddletech.com/blog/pivot/entry.php?id=980 ].
Я создал два файла с именами disk1 и disk2, которые были 400M, а затем disk3 и disk4 на 650M, и я создал zpool "tank", используя их:
zpool create tank mirror disk1 disk2
zpool add mirror disk3 disk4
(Я предполагаю, что вы использовали zpool add mirror
для включения дисков в пул, а zpool attach
не подключал диски к существующему зеркалу vdev; последнее является универсально плохой идеей и не увеличит емкость в любом случае, просто добавит еще один зеркальное устройство)
Когда я заполнил пул на 100 миллионов за раз w/ mkfile, я проверил zdb -ddddd tank <inode#>
чтобы увидеть, в какие записи vdevs записывались, и zfs балансировал нагрузку между ними; из 400 адресов блоков в среднем около 300-350 записывались на меньшие "диски" и 450–500 на большие, даже в последнем файле, который заполнил пул.
Это означает, что ZFS будет балансировать блоки, которые он записывает между каждым vdev в пуле. (В этом случае между каждым из ваших 11 зеркал). OTOH, если вы добавите диск большего размера к существующему зеркалу с помощью zpool attach, ZFS не сможет использовать это дополнительное пространство, так как записывает одинаковые блоки на каждый диск в зеркале.
Обычно рекомендуется использовать одни и те же диски в пуле, но это, очевидно, не обязательно. Не добавляйте более быстрый диск в пул с более медленными дисками; в пуле ваш самый медленный диск - это ваше узкое место (хотя добавление журнала SSD для ZIL может смягчить эту проблему).
Кроме того, я бы не стал беспокоиться о дефрагментации в ZFS, это характер зверя - поскольку ZFS является файловой системой копирования при записи , это неизбежно. (Это означает, что вместо перезаписи блока с новыми данными он записывает новые данные в новый блок, а затем обновляет указатели метаданных и контрольные суммы для использования нового блока.) Я не ожидал бы, что это снизит производительность.
То, что снизит производительность, будет заполнено на 90% (мешает копирование при записи). Рекомендуется сохранять загрузку на уровне или ниже 80% для пиковой производительности.
Что заставляет меня думать о чем-то другом - ваш пул уже существует, а затем вы добавили два новых диска - существующие данные НЕ будут распределены по этим дискам, пока они не будут перезаписаны, поэтому я ожидаю увидеть меньше общих данных на новых дисках в течение некоторого времени.