Легко расширить Linux программный RAID 5 с XFS. Лучшие практики?

13

Я использую свою машину с Ubuntu в качестве файлового сервера для клиентов Windows / Linux / Mac, использующих общий ресурс Samba. Мне нужно, чтобы его можно было легко расширять, просто добавляя больше жестких дисков, не перемещая данные назад и вперед.

Вот как я это сделал до сих пор. Я успешно добавил четвертый жесткий диск. Теперь было бы интересно узнать, как это должно быть сделано? Что я делаю не так или что я могу сделать лучше?

Создание начального массива из 3 дисков

Я начал с трех пустых дисков: / dev / sdb, / dev / sdc и / dev / sdd.

Сначала я создал пустые разделы для всех дисков:

$ fdisk /dev/sdX
n # Create a new partition
p # Primary
1 # First partition
[enter] # Starting point to first sector (default)
[enter] # Ending point to last sector (default)
t # Change partition type
fd # Type: Linux raid autodetect
w # Write changes to disc

Когда на всех трех дисках были созданы пустые разделы RAID, я создал массив RAID5:

$ mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

Теперь массив RAID5 создан, и он уже создается. Это займет время, но вы можете приступить к созданию нового физического тома LVM2:

$ pvcreate /dev/md0

Теперь давайте создадим новую группу томов:

$ vgcreate vd_raid /dev/md0

Затем нам нужно создать новый логический том внутри этой группы томов. Сначала нам нужно выяснить точный размер созданной группы томов:

$ vgdisplay vg_raid

Размер можно увидеть из строки, которая указывает «Total PE» в физических экстентах. Давайте представим, что это 509. Теперь создайте новый логический том, который занимает все доступное пространство:

$ lvcreate -l 509 vg_raid -n lv_raid

Наконец, мы можем создать файловую систему поверх этого логического тома:

$ mkfs.xfs /dev/mapper/vg_raid-lv_raid

Чтобы иметь возможность использовать наш недавно созданный RAID-массив, нам нужно создать каталог и смонтировать его:

$ mkdir /raid
$ mount /dev/mapper/vg_raid-lv_raid /raid

Теперь он готов к использованию. Но для автоматического монтирования после перезагрузки нам нужно сохранить геометрию RAID в конфигурационном файле mdadm:

$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Затем добавьте следующую строку в / etc / fstab, которая автоматически монтирует массив RAID:

/dev/mapper/vg_raid-lv_raid /raid auto auto,noatime,nodiratime,logbufs=8 0 1

Теперь RAID-массив готов к использованию и автоматически монтируется в каталог / raid после каждой загрузки.

Добавление нового диска в массив

Давайте представим, что теперь у вас есть новый диск / dev / sde, который вы хотите добавить в ранее созданный массив без потери каких-либо данных.

Сначала новый диск должен быть разделен на все другие диски:

$ fdisk /dev/sde
n # Create a new partition
p # Primary
1 # First partition
[enter] # Starting point to first sector (default)
[enter] # Ending point to last sector (default)
t # Change partition type
fd # Type: Linux raid autodetect
w # Write changes to disc

Затем его нужно добавить в массив RAID:

$ mdadm --add /dev/md0 /dev/sde1

Теперь массив RAID5 включает в себя четыре диска, из которых только три используются в настоящее время. Массив необходимо расширить, чтобы включить все четыре диска:

$ mdadm --grow /dev/md0 --raid-devices=4

Затем физический том LVM2 необходимо расширить:

$ pvresize /dev/md0

Теперь размер физического тома по умолчанию изменен, чтобы покрыть все доступное пространство в массиве RAID. Нам нужно выяснить новый размер в физических пределах:

$ vgdisplay vg_raid

Давайте представим, что новый размер теперь 764 (видно из «Total PE»). Теперь разверните логический том, чтобы покрыть это:

$ lvextend /dev/mapper/vg_raid-lv_raid -l 764

Затем разверните файловую систему XFS. Это необходимо сделать, когда файловая система подключена и смонтирована:

$ xfs_grow /raid

По умолчанию он расширяется, чтобы охватить все доступное пространство. Наконец, необходимо обновить геометрию RAID-массива, потому что теперь массив содержит новый диск. Сначала удалите добавленную строку из /etc/mdadm/mdadm.conf, а затем добавьте новую:

$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Taskinen
источник
3
Не размещайте разделы на своих дисках. В этом нет необходимости - автоопределение RAID в ядре (тип раздела fd) устарело.
Джеймс
Таким образом, вместо создания разделов типа 'fd' с помощью fdisk, я должен просто создать массив / dev / md0 для устройств / dev / sdb, / dev / sdc и / dev / sdd напрямую?
Taskinen
1
Я слышал, что не все диски имеют одинаковый размер, поэтому, если я куплю новый терабайтный диск, он может не совпадать по размеру. Будет ли это ввести некоторые проблемы?
Taskinen

Ответы:

5

Я думаю, вы поняли это правильно. Убедитесь, что вы понимаете и учитываете предупреждения относительно растущего RAID 5 in man 8 mdadm.

Лично, если бы я увеличивал объем LVM, я бы не увеличивал существующий массив RAID для этого. Я бы создал другой массив RAID, создал из него новый физвол и добавил бы его в ту же группу томов. Это гораздо более безопасная операция (не требует перезаписи всего массива RAID5 на новом наборе дисков) и уменьшение размера ваших массивов.

Камил Кисиэль
источник
Абсолютно согласен. vgextend твой друг здесь.
Дэн Андреатта
1
В общем, я понимаю, но как насчет ситуации, когда я хочу вырастить вышеупомянутый трехдисковый массив в четырехдисковый массив. Я не могу создать новый массив RAID только на четвертом диске.
Taskinen
1
Я бы не стал расширять дисковый массив сервера хранения по одному диску за раз. Переход от трехдискового массива к четырехдисковому массиву даст вам только на 50% больше памяти, потому что вы должны использовать диски одинакового размера.
Камил Кисиэль
1
Согласовано. К тому времени, когда вам не хватит места, более крупные дисководы подешевеют. Создайте второй массив RAID на новом наборе дисков большего размера, затем перенесите в него ваши старые данные и выведите из эксплуатации старый набор, как только будет завершено. Все это можно сделать, когда файловые системы в логических томах, затронутых pvmove, активно используются.
flabdablet