How to 're-balance' data in zfs? (Make sure the data is spread amongst all striped mirrors)

Изучите журнал ошибок сервера (your_hostname.err). Необходимо найти подробное сообщение там.

IIRC, 1067 является недостающим каталогом данных.

7
задан 4 July 2017 в 09:21
2 ответа

Только новые записанные (добавленные) данные разделяются между всеми текущими активными vdev, в ZFS нет явной операции перебалансировки.

Два возможных решения:

  1. Подождите, пока все старые данные не будут сохранены. перезаписывается (из-за CoW это может занять очень много времени, в худшем случае удвоить время, необходимое для полной записи на диск).
  2. Удалите все данные и запишите их заново (zfs send / recv полезен в получение всех данных из пула и обратно без потери ничего). Это не обязательно делать за один раз, и это можно сделать в одном и том же пуле.

Чтобы быть более точным, я бы выбрал второе решение и переносил каждую файловую систему отдельно в моменты, когда нагрузка на систему низкая ( например, ночью):

  • Сделайте снимок ( zfs snapshot -r ) файловой системы приличного размера (и подчиненных файловых систем, рекурсивно)
  • Используйте zfs send | zfs recv с соответствующими параметрами для отправки моментального снимка во вновь созданную временную файловую систему (может находиться в том же пуле, если позволяет пространство);эта файловая система должна находиться в том же месте иерархии, что и старая.
  • После завершения копирования (может занять некоторое время, потому что диски должны читать и писать), zfs уничтожает старую снимок и старая файловая система
  • zfs переименовать временную систему в старое имя
  • Проверьте и измените точки монтирования с помощью zfs mount , изменив предыдущую ситуацию для вашей замененной файловой системы
  • Повторяйте, пока все файловые системы не будут перемещены
6
ответ дан 2 December 2019 в 23:37

возможное 3-е решение (как упомянуто SirMaster на этом форуме FreeNAS сообщение ):

  • добавляют новый диск (диски) для буферизования
  • копия, много файлов к другому новому/mnt/pool/temp/каталогу
  • удаляют исходные файлы: rm -rf original/
  • переименовывают dir назад: mv temp/ original/

Это работает, потому что ZFS пропорционально поместит записи в то, какой бы ни vdev имеет большую часть свободного пространства, в этом случае совершенно новые диски, которые были пусты. (с 0,7, zfs будет польза более быстрые диски для записей , но позволяет, предполагают, что Ваши 2 новых диска являются той же или большей производительностью, чем исходные диски)

, Это, вероятно, медленнее, чем zfs send | zfs recv, но более просто, потому что Вы не должны создавать/уничтожать снимки.

можно работать zpool list -v прежде и после видеть каждое vdev использование.

кроме того, нашел сценарий php , который делает скопировать/удалить/переименовать процедуру на основе файла файлом. Это было связано в ответ от подобного (но zvol) вопрос несколько более старых лет. (не протестировал этот сценарий лично)

1
ответ дан 2 December 2019 в 23:37

Теги

Похожие вопросы