Можно ли вырастить разделы в RAID1
Я думаю о создании NAS для домашнего хозяйства. Это будет простой файл, принтер, rsync и бит-торрент-сервер с FreeNAS. На сервере будет два 3,5-дюймовых диска SATA, я планирую зеркалировать их с помощью программного RAID1.
У меня есть два вопроса:
Какую файловую систему мне использовать, по умолчанию UFS или ZFS? Насколько я понял из различных постов в блоге, ZFS очень сильно потребляет память и процессор, будет ли он работать с VIA C7? Мне нравится идея снимков ZFS, но я могу жить без них, если она слишком требовательна.
У меня сейчас два накопителя: 640 ГБ и 1 ТБ. Если я использую их в RAID-1, общий размер массива будет минимальным размером двух дисков, то есть 640 ГБ. Пока все в порядке, но что будет, если через год я получу новый, скажем, 1,5 ТБ накопитель? Массив RAID следует перестроить, когда я заменю самый маленький накопитель новым, но удастся ли увеличить его с 640 ГБ до нового минимума - 1 ТБ без потери данных?
Спасибо и извините, если я задаю тривиальные вопросы, я программист.
ОБНОВЛЕНИЕ: чтобы ответить на второй вопрос, в этом сообщении в блоге объясняется, как увеличить раздел RAID1 после замены одного из дисков.
2 ответа
Правила ZFS, но ограничены выбором оборудования ( стабильность ZFS), так как C7 являются 32-битными (в Википедии говорится, что они используют набор команд x86) ZFS может не быть решением, которое вы ищете. Если вы решите иначе (это защищает вас от повреждения данных и сбоя дисков), есть несколько полезных проектов о
Массив RAID следует перестроить, когда я заменю самый маленький накопитель новым, но удастся ли увеличить его с 640 ГБ до нового минимума - 1 ТБ без потери данных?
Не должно быть проблемой (я никогда не использовал FreeNAS), с аппаратными RAID-контроллерами я делал это много раз:
- сделайте резервную копию всех ваших данных:)
- удалить меньший диск из массива
- вставить новый диск
- восстановить массив с использованием исходного диска в качестве основного
В качестве альтернативы, если вам нужно абсолютно безболезненное динамическое изменение размера массива и огромная избыточность, приобретите 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