Назад | Перейти на главную страницу

Можно ли наращивать разделы в RAID1

Я думаю о создании NAS для дома. Это будет простой файловый, принтерный, rsync- и бит-торрент-сервер. FreeNAS. На сервере будет два 3,5-дюймовых SATA-диска, я планирую зеркалировать их с помощью программного RAID1.

У меня два вопроса:

  1. Какую файловую систему мне следует использовать, UFS или ZFS по умолчанию? Насколько я понял из различных сообщений в блогах, ZFS очень требует памяти и процессора, будет ли он работать с VIA C7? Мне нравится идея снимков ZFS, но я могу жить без них, если они слишком требовательны.

  2. Сейчас у меня два диска: 640 ГБ и 1 ТБ. Если я использую их в RAID-1, общий размер массива будет минимальным размером двух дисков, то есть 640 ГБ. Пока все в порядке, но что будет, если через год я получу новый, скажем, 1,5 ТБ диск? Когда я заменяю самый маленький диск на новый, RAID-массив должен быть восстановлен, но можно ли будет увеличить его с 640 ГБ до нового минимума - 1 ТБ без потери данных?

Спасибо и извините, если я задаю тривиальные вопросы, я программист.

ОБНОВЛЕНИЕ: чтобы ответить на второй вопрос, это сообщение в блоге объясняет, как увеличить раздел RAID1 после замены одного из дисков.

Начиная с версии ядра Linux 2.6.11, вы можете создавать общие ресурсы ext3 с изменяемым размером. Я недавно сделал именно то, о чем вы спрашиваете, на сервере CentOS 5.4, на котором был raid1 с использованием диска 300 ГБ и 500 ГБ. Я хотел обновить зеркало, поэтому купил диск емкостью 1 ТБ, который собирался заменить диск на 300 ГБ.

Во-первых, вот как я изначально создал raid1 с дисками 300 + 500 ГБ.

Обычно я использую fdisk для создания одного раздела на диске, помечая тип раздела как fd (linux RAID). Затем я использую mdadm для создания программного массива raid1.

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/hda1 /dev/hdb1

Затем я кладу группу LVM (я назвал ее lvm-raid) поверх массива raid1.

vgcreate -s 8M lvm-raid /dev/md0

Определите, сколько физических экстентов доступно для группы томов. Вы можете использовать команду vgdisplay lvm-raid и найти строку «Total PE». В моем примере это было 59617. С этой информацией теперь я могу создать логический том в группе томов lvm-raid.

lvcreate -l 59617 lvm-raid -n lvm0

Наконец, я поместил раздел ext3 на логический том.

mkfs.ext3 /dev/lvm-raid/lvm0

... А вот как я перенес raid1 на диск 500 ГБ + 1 ТБ

Я добавил диск емкостью 1 ТБ в качестве горячего резерва в raid1 и синхронизировал его как участник. После того, как он был синхронизирован, я потерпел неудачу, а затем удалил диск на 300 ГБ. Это позволило мне увеличить размер массива raid1 до 500 ГБ, поскольку диск на 500 ГБ теперь был самым маленьким членом массива. В моих заметках об этом шаге отсутствуют подробности, но я думаю, что сделал следующее:

mdadm --manage --add /dev/md0 /dev/sda1
mdadm --manage /dev/md0 --fail /dev/hda1

...wait for it to sync...
cat /proc/mdstat
...wait for it to sync...
cat /proc/mdstat

...sync is done...

mdadm /dev/md0 -r /dev/hda1

Увеличьте рейд до максимума. размер остальных членов массива. В этом случае у нас есть диск на 500 ГБ и 1 ТБ в raid 1, поэтому мы можем увеличить raid до 500 ГБ.

mdadm --grow /dev/md0 --size=max

После того, как массив raid увеличился до 500 ГБ, я выполнил следующие команды, чтобы использовать дополнительное пространство, доступное в LVM, и, в конечном итоге, фактический общий ресурс ext3.

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

pvresize /dev/md0

Затем я выполнил команду pvdisplay / dev / md0, чтобы определить, сколько «свободных экстентов» теперь доступно. В моем случае это было 23845. Я выполнил эту команду, чтобы поглотить их в логический том.

lvextend -l +23845 /dev/lvm-raid/lvm0

Наконец, я выполнил команду resize2fs, чтобы добавить дополнительное пространство в общий ресурс ext3.

resize2fs /dev/lvm-raid/lvm0

Вот как выглядит resize2fs при запуске:

resize2fs 1.39 (29-May-2006)
Filesystem at /dev/lvm-raid/lvm0 is mounted on /export/raid1; on-line resizing
required Performing an on-line resize of /dev/lvm-raid/lvm0 to 122095616 (4k) blocks. 
The filesystem on /dev/lvm-raid/lvm0 is now 122095616 blocks long.

И когда все будет готово, df теперь показывает следующее:

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/lvm--raid-lvm0
                      459G  256G  180G  59% /export/raid1

Правила ZFS, но ограничены выбором оборудования (Стабильность ZFS), поскольку C7 являются 32-битными (википедия утверждает, что они используют набор инструкций x86), ZFS может не быть тем решением, которое вы ищете. Если вы решите иначе (это защищает вас от повреждения данных и выхода из строя дисков), есть несколько полезных проекты около

Когда я заменю самый маленький диск на новый, RAID-массив должен быть восстановлен, но можно ли будет увеличить его с 640 ГБ до нового минимума - 1 ТБ без потери данных?

Не должно быть проблем (я никогда не использовал FreeNAS), с аппаратными RAID-контроллерами я делал это много раз:

  1. сделайте резервную копию всех ваших данных :)
  2. удалить меньший диск из массива
  3. вставьте новый диск
  4. перестроить массив, используя исходный диск в качестве основного

В качестве альтернативы, если вы хотите полностью безболезненно динамическое изменение размера массива и огромную избыточность, получите Дробо (новые модели заметно лучше) - однако вы не можете запустить это как простой сервер. Итак, вы можете запустить сверхнизкое энергопотребление SheevaPlug как сервер (дешево как чипсы) и подключите к нему Drobo. Это мое рекомендованное ультра-масштабируемое решение с низким энергопотреблением (ограничено только текущей максимальной емкостью жесткого диска).