Недавно я начал использовать LVM на некоторых серверах для жестких дисков размером более 1 ТБ. Они полезны, расширяемы и довольно просты в установке. Однако я не смог найти никаких данных об опасностях и предостережениях LVM.
Каковы недостатки использования LVM?
linux
filesystems
lvm
data-integrity
advanced-format
Адам Матан
источник
источник
Ответы:
Резюме
Риски использования LVM:
Первые две проблемы LVM объединяются: если кэширование записи не работает должным образом, и у вас есть сбой питания (например, сбой блока питания или ИБП), вам, возможно, придется восстанавливаться после резервного копирования, что означает значительное время простоя. Основной причиной использования LVM является увеличение времени безотказной работы (при добавлении дисков, изменении размера файловых систем и т. Д.), Но важно правильно настроить настройку кэширования записи, чтобы избежать фактического сокращения времени работы LVM.
- Обновлен декабрь 2018: обновлен материал моментальных снимков, включая стабильность ZFS и btrfs в качестве альтернативы снимкам LVM
Снижение рисков
LVM все еще может хорошо работать, если вы:
подробности
Я немного исследовал это в прошлом, испытав некоторую потерю данных, связанных с LVM. Основные риски и проблемы LVM, о которых я знаю:
Уязвим к кешированию записи на жесткий диск из-за гипервизоров ВМ, дискового кеширования или старых ядер Linux и затрудняет восстановление данных из-за более сложной структуры на диске - подробности см. Ниже. Я видел, как полные настройки LVM на нескольких дисках были повреждены без возможности восстановления, а LVM плюс кэширование записи на жесткий диск - опасная комбинация.
data=ordered
опции ext3 (илиdata=journal
для дополнительной безопасности), плюс,barrier=1
чтобы гарантировать, что кэширование ядра не влияет на целостность. (Или используйте ext4, который включает барьеры по умолчанию .) Это самый простой вариант и обеспечивает хорошую целостность данных за счет производительности. (Linux изменил вариант ext3 по умолчанию на более опасныйdata=writeback
некоторое время назад, поэтому не полагайтесь на настройки по умолчанию для FS.)hdparm -q -W0 /dev/sdX
для всех дисков/etc/rc.local
(для SATA) или используйте sdparm для SCSI / SAS. Однако, согласно этой записи в FAQ по XFS (которая очень хороша в этой теме), диск SATA может забыть об этой настройке после устранения ошибки диска - поэтому вам следует использовать SCSI / SAS, или, если вы должны использовать SATA, затем установите Команда hdparm в задании cron выполняется каждую минуту или около того.Включение кэширования записи для повышения производительности (и работа с лежащими дисками)
Более сложный, но производительный вариант - оставить включенным кэширование записи на SSD / жестком диске и полагаться на барьеры записи ядра, работающие с LVM на ядре 2.6.33+ (перепроверьте, просматривая «барьерные» сообщения в журналах).
Вам также следует убедиться, что при настройке RAID, настройке гипервизора ВМ и файловой системе используются барьеры записи (т. Е. Требуется, чтобы диск сбрасывал ожидающие записи до и после записи метаданных / журнала ключа). XFS по умолчанию использует барьеры, но ext3 нет , поэтому с ext3 вы должны использовать
barrier=1
в опциях монтирования и все равно использоватьdata=ordered
илиdata=journal
как указано выше.Твердотельные накопители проблематичны, поскольку использование кэша записи имеет решающее значение для срока службы твердотельного накопителя. Лучше всего использовать твердотельный накопитель с суперконденсатором (чтобы включить сброс кэша при сбое питания и, следовательно, включить кэш с обратной записью, а не с обратной записью).
Расширенная настройка формата диска - запись, кэширование, выравнивание, RAID, GPT
pvcreate
для выравнивания PV. Этот поток списка электронной почты LVM указывает на работу, проделанную в ядрах в течение 2011 года, и на проблему частичной записи блоков при смешивании дисков с 512-байтовыми секторами и секторами по 4 КиБ в одном LV.Труднее восстановить данные из-за более сложных структур на диске :
/etc/lvm
, что может помочь восстановить базовую структуру LV, VG и PV, но не поможет с потерянными метаданными файловой системы.Труднее правильно изменить размер файловых систем - простое изменение размера файловой системы часто дается в качестве преимущества LVM, но вам нужно выполнить полдюжины команд оболочки для изменения размера FS на основе LVM - это можно сделать, когда весь сервер работает, а в некоторых случаях с установленной ФС, но я бы никогда не рискнул последним без своевременного резервного копирования и использования команд, предварительно протестированных на эквивалентном сервере (например, клон аварийного восстановления производственного сервера).
lvextend
поддерживают опцию-r
(--resizefs
) - если она доступна, это более безопасный и быстрый способ изменить размер LV и файловой системы, особенно если вы уменьшаете FS, и вы можете пропустить этот раздел.resize2fs
для ext3, и дляlvextend
илиlvreduce
. Без особой осторожности размеры могут немного отличаться из-за разницы между 1 ГБ (10 ^ 9) и 1 ГБ (2 ^ 30) или из-за того, что различные инструменты округляют размеры вверх или вниз.Кажется, что размер LV должен быть больше, чем размер FS, в 2 раза больше размера физического экстерьера (PE) LVM - но проверьте ссылку выше для деталей, так как источник этого не является достоверным. Часто достаточно 8 МБ, но может быть лучше позволить больше, например, 100 МБ или 1 ГБ, просто для безопасности. Чтобы проверить размер PE и ваш логический том + размеры FS, используя блоки 4 КиБ = 4096 байт:
Показывает размер PE в КиБ:
vgdisplay --units k myVGname | grep "PE Size"
Размер всех LV:
lvs --units 4096b
Размер (ext3) FS, предполагает размер блока 4 KiB FS:
tune2fs -l /dev/myVGname/myLVname | grep 'Block count'
В отличие от этого, установка без LVM делает изменение размера FS очень надежным и простым - запустите Gparted и измените размеры требуемых FS , тогда он сделает все за вас. На серверах вы можете использовать
parted
из оболочки.Снимки сложны в использовании, медленны и содержат ошибки - если снимок исчерпывает заранее выделенное пространство, он автоматически удаляется . Каждый снимок данного LV является дельтой по отношению к этому LV (не к предыдущим снимкам), который может занимать много места при создании снимков файловых систем со значительной активностью записи (каждый снимок больше, чем предыдущий). Безопасно создать моментальный снимок LV того же размера, что и исходный LV, так как в моментальном снимке никогда не закончится свободное место.
Снимки также могут быть очень медленными (т. Е. В 3–6 раз медленнее, чем без LVM для этих тестов MySQL ) - см. Этот ответ, охватывающий различные проблемы со снимками . Медлительность отчасти связана с тем, что для снимков требуется много синхронных записей .
У снимков были некоторые существенные ошибки, например, в некоторых случаях они могут сделать загрузку очень медленной или вызвать полный сбой загрузки (потому что ядро может прервать ожидание корневой FS, когда это снимок LVM [исправлено в
initramfs-tools
обновлении Debian , март 2015] ).Альтернативные снимки - файловые системы и гипервизоры виртуальных машин
Снимки виртуальной машины / облака:
Снимки файловой системы:
Снимки на уровне файловой системы с ZFS или btrfs просты в использовании и, как правило, лучше, чем LVM, если вы работаете на голом железе (но ZFS кажется более зрелой, просто сложнее в установке):
Снимки для онлайн-резервных копий и fsck
Снимки можно использовать для обеспечения согласованного источника резервных копий, если вы осторожны с выделенным пространством (в идеале моментальный снимок имеет тот же размер, что и резервное копирование LV). Превосходный rsnapshot (начиная с 1.3.1) даже управляет созданием / удалением снимка LVM для вас - посмотрите это руководство по rsnapshot с использованием LVM . Однако обратите внимание на общие проблемы со снимками и то, что снимок не должен рассматриваться как резервный файл сам по себе.
Вы также можете использовать моментальные снимки LVM для создания интерактивного fsck: снимок LV и мгновенный снимок fsck, при этом все еще используется основная не снимочная FS - описанная здесь - однако, она не совсем проста, поэтому лучше использовать e2croncheck, как описано Тедом Ц. 'O , сопровождающий ext3.
Вы должны временно «заморозить» файловую систему во время создания снимка - некоторые файловые системы, такие как ext3 и XFS, будут делать это автоматически, когда LVM создает снимок.
Выводы
Несмотря на все это, я все еще использую LVM на некоторых системах, но для настольной установки я предпочитаю необработанные разделы. Основное преимущество, которое я вижу в LVM, - это гибкость перемещения и изменения размера FS, когда вам необходимо иметь большое время безотказной работы на сервере - если вам это не нужно, gparted проще и имеет меньший риск потери данных.
LVM требует большой осторожности при настройке кэширования записи из-за гипервизоров виртуальных машин, кэширования записи на жестком диске / SSD и т. Д., Но то же самое относится и к использованию Linux в качестве сервера БД. Отсутствие поддержки со стороны большинства инструментов (
gparted
включая вычисления критических размеров иtestdisk
т. Д.) Затрудняет использование, чем должно быть.При использовании LVM будьте осторожны со снимками: по возможности используйте снимки виртуальной машины / облака или изучите ZFS / btrfs, чтобы полностью избежать LVM - вы можете обнаружить, что ZFS или btrs достаточно развиты по сравнению с LVM со снимками.
Итог: если вы не знаете о проблемах, перечисленных выше, и о том, как их решать, лучше не использовать LVM.
источник
Я [+1] этот пост, и, по крайней мере, для меня, я думаю, большинство проблем существуют. Просматривайте их во время работы нескольких 100 серверов и нескольких 100 ТБ данных. Для меня LVM2 в Linux ощущается как «умная идея», которую кто-то имел. Как и некоторые из них, они иногда оказываются «не умными». Т.е. отсутствие строго разделенных состояний ядра и пользовательского пространства (lvmtab) могло бы показаться по-настоящему умным, потому что могут быть проблемы с повреждением (если вы не понимаете код правильно)
Ну, просто это разделение было по какой-то причине - различия проявляются в обработке потерь PV и онлайн-активации VG с отсутствующими PV, чтобы вернуть их в игру - Что является легким для «оригинальных LVM» (AIX , HP-UX) превращается в дерьмо на LVM2, так как обработка состояния недостаточно хороша. И даже не говорите мне об обнаружении потери кворума (хаха) или обработке состояния (если я удалю диск, он не будет помечен как недоступный. У него даже нет столбца состояния чертовски)
Re: стабильность pvmove ... почему
такая популярная статья в моем блоге, хммм? Только сейчас я смотрю на диск, где данные о фискальном lvm все еще подвешены к состоянию с середины pvmove. Я думаю, что были некоторые утечки памяти, и общая идея, что хорошо копировать данные живого блока из пользовательского пространства, просто печальна. Хорошая цитата из списка lvm "похоже на vgreduce --missing не обрабатывает pvmove" Фактически означает, что если диск отсоединяется во время pvmove, то инструмент управления lvm изменится с lvm на vi. Да, также была ошибка, когда pvmove продолжается после ошибки чтения / записи блока и фактически больше не записывает данные на целевое устройство. WTF?
Re: Снимки CoW выполняется небезопасно, обновляя НОВЫЕ данные в области lv снимка, а затем объединяя их после удаления снимка. Это означает, что у вас будут большие всплески ввода-вывода во время последнего слияния новых данных с исходным LV, и, что гораздо важнее, у вас, конечно, также будет гораздо более высокий риск повреждения данных, потому что не снимок не будет поврежден, как только вы нажмете стена, но оригинал.
Преимущество в производительности, делая 1 запись вместо 3. Выбор быстрого, но небезопасного алгоритма - это то, что, очевидно, можно ожидать от таких людей, как VMware и MS, в «Unix», я бы предпочел, чтобы все было «сделано правильно». Я не видел особых проблем с производительностью, пока у меня есть хранилище резервных копий снимков на другом диске, чем первичные данные (и, конечно, резервное копирование на еще один)
Re: Барьеры Я не уверен, можно ли винить в этом LVM. Насколько я знаю, это была проблема разработчика. Но может быть какая-то вина в том, что на самом деле эта проблема не решена, по крайней мере, с ядра 2.6 до 2.6.33. AFAIK Xen - единственный гипервизор, который использует O_DIRECT для виртуальных машин, проблема была в том случае, когда использовался «цикл», потому что ядро все равно будет кешировать с помощью этого. Virtualbox, по крайней мере, имеет некоторые настройки для отключения подобных вещей, и Qemu / KVM, как правило, разрешает кэширование. Все FUSE FS также имеют проблемы там (нет O_DIRECT)
Re: размеры я думаю LVM делает "округление" отображаемого размера. Или он использует GiB. В любом случае вам нужно использовать размер VG Pe и умножить его на номер LE LV. Это должно дать правильный размер сети, и эта проблема всегда является проблемой использования. Это усугубляется файловыми системами, которые не замечают такого во время fsck / mount (привет, ext3) или не имеют работающего онлайн "fsck -n" (привет, ext3)
Конечно, это говорит о том, что вы не можете найти хорошие источники для такой информации. "сколько LE для VRA?" «Какое смещение в физическом выражении для PVRA, VGDA и т. д.»
По сравнению с оригинальным LVM2 является ярким примером того, что «те, кто не понимает UNIX, обречены плохо его изобретать».
Обновление через несколько месяцев: я уже запускаю сценарий «полного снимка» для теста. Если они заполнены, снимок блокируется, а не исходный LV. Я был не прав, когда впервые опубликовал это. Я взял неправильную информацию из какого-то документа, или, может быть, я ее понял. В своих настройках я всегда был очень параноиком, чтобы не дать им заполниться, поэтому я никогда не исправлялся. Также возможно увеличить / уменьшить снимки, что является удовольствием.
Что я до сих пор не могу решить, так это как определить возраст снимка. Что касается их производительности, на странице проекта «thinp» есть примечание, в котором говорится, что методика снимков пересматривается, чтобы они не замедлялись с каждым снимком. Я не знаю, как они это реализуют.
источник
если вы планируете использовать моментальные снимки для резервного копирования - будьте готовы к значительному снижению производительности при наличии моментального снимка. читайте больше здесь . в противном случае это все хорошо. Я использую lvm в производстве в течение нескольких лет на десятках серверов, хотя моя главная причина использовать его - атомарный снимок, а не способность легко расширять тома.
Кстати, если вы собираетесь использовать диск емкостью 1 ТБ, помните о выравнивании разделов - этот диск, скорее всего, имеет физические сектора 4 КБ.
источник
Адам,
Еще одно преимущество: вы можете добавить новый физический том (PV), переместить все данные на этот PV и затем удалить старый PV без каких-либо перерывов в обслуживании. Я использовал эту возможность по крайней мере четыре раза за последние пять лет.
Недостаток, который я еще не видел, ясно указал: есть несколько крутая кривая обучения для LVM2. Главным образом в абстракции он создается между вашими файлами и базовым носителем. Если вы работаете с несколькими людьми, которые выполняют общие обязанности на наборе серверов, вы можете столкнуться с дополнительными сложностями для вашей команды в целом. У больших команд, посвященных работе с ИТ, обычно такой проблемы не возникает.
Например, мы широко используем его здесь, на моей работе, и нашли время, чтобы научить всю команду основам, языку и основам восстановления восстанавливаемых систем, которые не загружаются правильно.
Следует особо отметить одно: если вы загружаетесь с логического тома LVM2, вы затрудняете восстановление после сбоя сервера. Knoppix и друзья не всегда имеют для этого подходящие вещи. Итак, мы решили, что наш каталог / boot будет находиться в своем собственном разделе и всегда будет маленьким и собственным.
В целом, я фанат LVM2.
источник
/boot
отдельно всегда хорошая идеяvgchange -ay
для поиска томов LVM.