Может ли одна VG (группа томов) содержать различные типы PV (физических объемов)?

Может ли одна VG (группа томов) содержать различные типы PV (физических объемов)?

Предыстория такова: у нас есть каталог данных базы данных на LV, который расположен на VG. Мы хотим использовать функцию моментального снимка LVM для резервного копирования данных нашей базы данных, но в этой VG не осталось свободных PE. Мы также не смогли сжать LV (мы используем XFS). VG имеет два PV, каждый из которых представляет собой RAID 10 (каждый с 8 жесткими дисками). У нас есть два дополнительных запасных жестких диска (для горячего переключения, размер такой же, как у PV RAID10).

Я рассматриваю возможность взять один из запасных дисков и создать на нем PV и добавить его в VG, где размещен каталог данных базы данных. Это работает? Может ли VG содержать различные типы PV, например, 2 RAID 10 PV и 1 жесткий диск без RAID?

решение1

Любой узел устройства, который является блочным устройством, может быть сделан PV и добавлен в качестве члена VG. Например, у меня на одном из компьютеров есть жесткий диск и твердотельный диск, являющиеся членами одного PV и работающие как кэш (https://man7.org/linux/man-pages/man7/lvmcache.7.html).

При создании моментального снимка LV вы можете захотеть использовать RAID10 PV для размещения данных живой базы данных и запасной диск для хранения моментального снимка копирования при записи (COW). Я предлагаю сделать это, потому что в случае отказа запасного диска будет потеряна текущая резервная копия, а не живая база данных. Точный PV, размещающий LV, можно указать в командной строке, которая создает моментальный снимок, как показано ниже.

# lvcreate -L 10G -n backup_snap_lv -s data_vg/data_lv /dev/sdb
# lvdisplay --maps data_vg/backup_snap_lv

решение2

Проблем быть не должно, потому что это идея LVM. На нижнем уровне у вас есть физические устройства хранения. На них создаются PV, затем, когда вы добавляете PV в VG, VG не волнует, что находится ниже, затем, когда вы добавляете пространство в LV/создаете LV, LV не волнует, откуда у VG это пространство.

Конечно, есть особые случаи, когда вы создаете зеркало (две копии LV), вы можете разместить их на разных PV (для очень строгого режима вам также понадобится третий PV).

решение3

LVM (в основном) не заботится о специфике блочных устройств, на которых находятся PV VG. Единственным серьезным исключением является то, что он может попытаться передать операции сброса на базовые блочные устройства, если они заявляют, что поддерживают такие операции.

Например, на моем домашнем сервере установлено четыре жестких диска SATA емкостью 4 ТБ и два твердотельных накопителя NVMe емкостью 1 ТБ, все они настроены как физические тома для единственной группы томов в системе. Я сделал это, потому что это упрощает миграцию данных, когда мне нужно заменить диск (это превращается в простую pvmoveкоманду, а не в необходимость делать что-то вроде объединения групп томов).

Однако, есть большая оговорка. Поскольку LVM не заботится о базовых блочных устройствах, он недостаточно умен, чтобы «разумно» размещать новые LV (или в некоторых случаях расширять существующие), если только вас не волнует только минимизация фрагментации свободного пространства. Таким образом, вам следуетвсегдаявно укажите, какие PV следует использовать при создании новых LV в такой настройке, чтобы получить именно то поведение, которое вы ожидаете.


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

Связанный контент