LVM поверх RAID

Алексей Федорчук

Казалось бы, зачем может понадобиться сочетание 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<): lvm-on-raid_001
Кстати, утилита эта также по умолчанию в системе не валяется, её нужно установить обычным порядком:

# 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. И создание внутри неё логических томов с файловыми системами и точками их монтирования — дело несложной техники, подробно описанной ранее:

lvm-on-raid_002
Облегчающееся ещё и тем, что предварительная работа по объединению физических томов в их группу уже выполнена.

LVM поверх RAID: 4 комментария

  1. У Вас лишняя буква а в команду установки пакета mdadm вкралась

  2. Очепятку нашёл: «Которая выведёт нечто вроже этого:»

Добавить комментарий