Це "продовження" відповіді ewwhite:
Вам потрібно буде переписати свої дані в розширений zpool, щоб збалансувати їх
Я написав сценарій PHP ( доступний на github ), щоб автоматизувати це на своєму хості Ubuntu 14.04.
Потрібно просто встановити інструмент PHP CLI sudo apt-get install php5-cli
і запустити сценарій, пройшовши шлях до даних ваших пулів як перший аргумент. Напр
php main.php /path/to/my/files
В ідеалі слід виконати сценарій двічі для всіх даних у пулі. Перший запуск дозволить збалансувати використання накопичувача, але окремі файли будуть надмірно виділені дискам, які були додані останніми. Другий запуск забезпечить, щоб кожен файл був "справедливо" розподілений між дисками. Я кажу справедливо, а не рівномірно, тому що він буде розподілений рівномірно, лише якщо ви не змішаєте потужність приводу, як і я, з моїм рейдом 10 пар різного розміру (дзеркало 4 Тб + дзеркало 3 ТБ + дзеркало 3 ТБ).
Причини використання сценарію
- Я маю виправити проблему "на місці". Наприклад, я не можу записати дані в іншу систему, видалити їх тут і записати все назад.
- Я заповнив свій пул понад 50%, тому я не міг просто скопіювати всю файлову систему відразу, перш ніж видалити оригінал.
- Якщо є лише певні файли, які потребують успішної роботи, тоді можна просто запустити сценарій двічі над цими файлами. Однак другий запуск ефективний лише в тому випадку, якщо першому циклу вдалося досягти успіху в балансуванні використання накопичувачів.
- У мене дуже багато даних і хочу, щоб я міг бачити вказівки на прогрес.
Як я можу зрозуміти, чи досягнуто навіть використання диска?
Використовуйте інструмент йостата протягом певного періоду часу (наприклад iostat -m 5
) та перевірте записи. Якщо вони однакові, то ви досягли рівномірного розкиду. Вони не є ідеальними навіть на скріншоті нижче, тому що я використовую пару 4TB з 2 парами 3TB накопичувачів в RAID 10, тому два 4 будуть записані трохи більше.
Якщо використання вашого накопичувача "незбалансоване", іостат покаже щось більше, як на скріншоті нижче, де нові диски записуються непропорційно. Ви також можете сказати, що вони є новими накопичувачами, оскільки показання знаходяться на рівні 0, оскільки про них немає даних.
Сценарій не є ідеальним, лише обхідним способом, але він працює для мене тим часом, поки ZFS одного дня не реалізує функцію відновлення балансу, як BTRFS (пальці схрещені).