Алексей Федорчук
Казалось бы, зачем может понадобиться сочетание LVM и RAID? Ведь обе эти системы функционально во многом дублируют друг друга, позволяя объединять диски и их разделы в единые логические тома, обеспечивать расслоение данных между ними (так называемый стриппинг) для увеличения быстродействия или, напротив, зеркалирование для повышения надёжности. Однако всё оказывается не так просто.
Представим ситуацию, что имеется три накопителя (в данном случае SSD, но в отношении HDD сказанное ниже ещё более существенно) — один объёмом на полтерабайта, и два одинаковых — по 120 ГБ. И имеется естественное желание объединить их в логически единое пространство, причём желательно с выигрышем в производительности за счяёт стриппинга (как я неоднократно говорил, зеркалирование в бытовых условиях полагаю неоправданным). Причём по некоторым причинам самый простой и лучший способ это сделать (то есть через пул ZFS) не подходит — опять же по причинам, о которых ранее говорилось много раз.
Именно такая ситуация была некогда описана — и задача была решена тогда «в лоб», то есть не оптимальным образом: просто объединением в группу томов большого раздела на большом носителе и обоих «маленьких» целиком. Поначалу — с созданием логических томов в режиме стриппинга. Однако очевидно, что расслаивать данные можно только на утроенный объем наименьшего носителя. И в результате «лимит на стриппинг» был достаточно быстро исчерпан — прочие логические тома, лежащие за пределами 120 ГБ, можно было создавать уже только в линейном режиме.
Вот тут-то и впору вспомнить о том, что в группу томов LVM могут объединяться не только дисковые разделы, но и уже мультидисковые системы, то есть RAID’ы разного уровня. Хотя в рамках поставленной задачи, повторяю, имеет смысл говорить только о массивах Level 0. И потому в следующий раз в той же ситуации я об этом и вспомнил. А именно — обрёл права root’а на долгие времена:
$ sudo -s
Затем обнулил разметку на обоих меньших носителях:
# dd if=/dev/zero of=/dev/sdb bs=512 count=1 # dd if=/dev/zero of=/dev/sdc bs=512 count=1
Разметил посредством cfdisk
каждый из них на один раздел с идентификатором типа файловой системы fd
(Linux raid autodetect). Да, поскольку дело происходило в Linux Mint (конкретно — в релиз-кандидатствующей 17.2 Rafaela), не забыл установить нужный пакет:
# apt install mdadm
В этом дистрибутиве, как известно, по умолчанию он отсутствует. После этого можно было заняться созданием массива нулевого уровня:
# mdadm --create /dev/md0 --auto=yes --level=0 --raid-device=2 /dev/sd[b,c]1
Правда, в приведённом уравнении значение имени устройства /dev/md0
условно — как это в обычае среди Ubuntu’ева племени, после перезагрузки оно волшебным образом преобразуется в /dev/md127
, и даже опция --auto=yes
, якобы специально предназначенная для предотвращения этого явления, не помогает (в причины вдаваться здесь не буду).
Однако в данном случае это было не принципиально и не страшно. Гораздо интересней оказалось то, что описывавшаяся ранее графическая утилита system-config-lvm
в упор не видит RAID’а ни как /dev/md0
, ни как /dev/md127
, ни до разметки его в качестве единого раздела, ни после оной (и придания ему Id 8e, Linux LVM<):
Кстати, утилита эта также по умолчанию в системе не валяется, её нужно установить обычным порядком:
# apt install system-config-lvm
После чего она появляется в секции Администрирование главного меню под именем Управление логическими томами.
Так или иначе, но пришлось вспоминать, как выглядит процесс объединения физических томов в их группу — достаточно просто:
# vgcreate data /dev/sda4 /dev/md127p1
Посмотреть результат можно командой
# vgdisplay
Которая выведёт нечто вроде этого:
--- Volume group --- VG Name data System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 5 VG Access read/write VG Status resizable ... VG Size 606,77 GiB PE Size 4,00 MiB Total PE 155332 Alloc PE / Size 128000 / 500,00 GiB Free PE / Size 27332 / 106,77 GiB VG UUID Edxgqs-K7Nk-6izJ-gvjt-VJ0c-fny8-lRp0Fy
Здесь надо обращать внимание на значение в строке VG Size
— оно равно сумме объёмов раздела большого диска и RAID’а. А удвоенный объём последнего как раз примерно и лимитирует максимальный объём логических томов с чередованием. Который, как нетрудно подсчитать, будет составлять около 480 МБ — против 360 МБ, каким он был бы при объединении трёх отдельных физических томов.
Одновременно с этим возникает каталог /dev/data
, пока ещё пустой: его содержимым будут файлы устройств логических томов, которые сейчас и предстоит создать. И вот это — занятие существенно более муторное, требующее знания опций команды lvcreate
, многочисленных и не очевидных, особенно при использовании чередования. Благо рыться в их поисках нет необходимости — образованная командой vgcreate
группа томов будет прекрасно видна утилитой system-config-lvm
. И создание внутри неё логических томов с файловыми системами и точками их монтирования — дело несложной техники, подробно описанной ранее:
Облегчающееся ещё и тем, что предварительная работа по объединению физических томов в их группу уже выполнена.
У Вас лишняя буква а в команду установки пакета mdadm вкралась
Спасибо, поправил
Очепятку нашёл: «Которая выведёт нечто вроже этого:»
Спасибо