Можно ли вырастить разделы в 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 после замены одного из дисков.

2 ответа

Решение

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

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

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

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

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

Начиная с версии ядра 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

Расти рейд на макс. размер оставшихся членов массива. В этом случае у нас в рейде 1 есть 500 ГБ и 1 ТБ, поэтому мы можем увеличить его до 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
Другие вопросы по тегам