Миграция ZFS RAIDZ с 3 дисков на 4 диска, когда в пуле более 1/3 свободного пространства
Я предполагал, что при создании своего пула RAID-Z в ZoL я мог бы просто добавить дополнительные диски позже. Между тем я узнал, что это пока невозможно.
Но... у меня была похожая проблема при создании моего первоначального пула. Только 4 свободных порта SATA, но старый RAID5 с тремя дисками по 2 ТБ и новый RAIDZ1 с тремя дисками по 4 ТБ. Решение состояло в том, чтобы: а) ухудшить RAID5 и б) создать начальный RAIDZ с разреженным файлом как "виртуальный третий диск", который был сразу же переведен в автономный режим после создания пула:
- Создать разреженный файл:
dd if=/dev/zero of=/zfs1 bs=1 count=1 seek=4100G
- Создайте пул raidz:
zpool create zfspool raidz /dev/disk1 /dev/disk2 /zfs1
- Сразу сними разреженный файл:
zpool offline zfspool /zfs1
- Перенос данных в
zfspool
, Удалите старые диски RAID5, добавьте третий, новый диск 4 ТБ - Замените и восстановите разреженный файл в пуле фактическим третьим диском:
zpool replace zfspool /zfs1 /dev/disk3
Это сработало действительно здорово! Теперь я узнал, что ZFS напрямую не поддерживает добавление одного диска в RAIDz, но поддерживает замену дисков один на один большими.
Итак, вот мой план. Кто-нибудь видит в этом недостаток?
- Купите четвертый диск объемом 4 ТБ и отключите один диск от существующего пула
- Создайте разделы 2x2 ТБ на этих двух свободных дисках.
- Создайте RAIDz из этих четырех "дисков": 3x2 ТБ = 6 ТБ сетевого хранилища.
- По соображениям производительности: переведите один из 2-х разделов в автономный режим
- Миграция макс. 6 ТБ данных в новый пул и уничтожить старый пул
- Замените автономный "диск 2 ТБ" реальным 4 ТБ одного из старого пула. Подождите, пока не получится.
- На диске с двумя активными разделами: переведите 2-й раздел по 2 ТБ в автономный режим и замените его вторым диском по 4 ТБ из старого пула. Ждите перевоплощения.
- Один за другим: переведите оставшиеся 2 ТБ разделы в автономный режим, увеличьте размер раздела до 4 ТБ и заново добавьте диск в пул. Ждите перевоплощения.
- Промойте и повторите для самого последнего 2 ТБ диска / раздела
Будет ли это работать? Я знаю, что я более уязвим к потере данных из-за отсутствующей избыточности во время процесса, но у меня будет резервная копия наиболее важных данных. Просто недостаточно для всей полезной нагрузки 6 ТБ.
И будет ли ZFS автоматически увеличивать пул до (3+1)x4TB = 12TB после последнего шага?
2 ответа
Ужасно, но это сработает.
За исключением случаев, когда это не так;).
- Будьте очень осторожны при указании разделов и при замене дисков
- попробуйте это в моей виртуальной машине заранее, настройте виртуальные диски, как ваше оборудование, и запустите его 1 или 2 раза.
- перед началом работы сделайте скраб и посмотрите на информацию SMART с дисков. Вы бы не попробовали это с уже ненадежным диском.
Важное замечание: Вам лучше иметь проверенную резервную копию на другом носителе или компьютере, прежде чем пытаться это сделать
Да, ZFS увеличит пул, если последний диск или раздел размером 2 ТБ будет заменен на пул размером 4 ТБ (если у вас есть автоэкспандирование = вкл для пула)
zpool get autoexpand $pool
zpool set autoexpand=on $pool
На заметку: вы не должны использовать RAID-Z на дисках размером более 2 ТБ. Вероятность получения ошибки при повторном переносе при замене неисправного диска очень высока. Пожалуйста, рассмотрите RAID-Z2.
Это звучит ужасно. Это ваши данные, так что вы можете делать, как хотите... Никто не одобрит решение, хотя.
Это действительно ситуация, когда вы должны начать все сначала.
Переместите ваши данные куда-нибудь временно и восстановите.