В данном посте вы прочитаете немного о моих странных изыскания во время вынужденного отпуска по болезни. Речь пойдёт сразу о нескольких вещах, которые не являются «best practice», но так же тоже можно! Итак, здесь будет туториал о том, как установить Archlinux(мой любимый дистр) так, чтобы:
без отдельного /boot (просто в /root)
/ на lvm
lvm внутри luks-контейнера
с UEFI
в виртуальной машине.
с secure boot(«сложна», в виртуалке вряд ли получится)
Примечательно, что зашифровано будет всё, кроме EFI system partition с единственным файлом grubx64.efi — EFI-приложением для запуска grub.
Если заинтересовались, — добро пожаловать под кат!
Меня зовут Юрий, я руководитель группы системного администрирования в Ситимобил. Сегодня поделюсь опытом работы с технологией тонкого резервирования (thin provisioning) файловых систем Linux и расскажу, как ее можно применять в технологических CI/CD-процессах компании. Мы разберем ситуацию, когда для автоматического тестирования кода при доставке его в production нам как можно быстрее необходимы копии БД MySQL, максимально приближенные к «боевой» версии, доступные на чтение и на запись.
В данной статье я расскажу о ситуации, которая недавно произошла с одним из серверов нашего облака VPS, поставив меня в тупик на несколько часов. Я около 15 лет занимаюсь конфигурированием и траблшутингом серверов Linux, но данный случай совершенно не укладывается в мою практику — я сделал несколько ложных предположений и слегка отчаялся до того, как смог правильно определить причину проблемы и решить ее.
Преамбула
Мы эксплуатируем облако средних размеров, которое строим на типовых серверах следующего конфига — 32 ядра, 256 GB RAM и NVMe накопитель PCI-E Intel P4500 размером 4TB. Нам очень нравится эта конфигурация, поскольку она позволяет не думать о недостатке IO, обеспечив корректное ограничение на уровне типов инстансов (экземпляров) VM. Поскольку NVMe Intel P4500 обладает впечатляющей производительностью, мы можем одновременно обеспечить как полное предоставление IOPS машинам, так и резервное копирование хранилища на сервер резервных копий с нулевым IOWAIT.
Собственно, хочется просто и доступно рассказать про такую замечательную вещь как Logical Volume Management или Управление Логическими Томами.
Поскольку уже давно пользуюсь LVM-ом, расскажу что он значит именно для меня, не подглядывая в мануалы и не выдёргивая цитаты из wiki, своими словами, чтобы было понятно именно тем кто ничего о нем не знает. Постараюсь сразу не рассказывать о всяческих «продвинутых» функциях типа страйпов, снапшотов и т.п.
Немножко о работе с soft'овым RAID (mdadm) и LVM, возможно при наличии кучи свободного времени ЭТО превратится в какую-то приличную статью… а пока, лишь куча команд с краткими комментариями.
Итак, однажды мне потребовалось больше места под виртуалбоксовую папку…
В связи со своей профессиональной деятельностью, приходиться настраивать сервера наших клиентов. Не все из них хотят или имеют возможность приобрести виндовый сервер. Этим организациям в качестве серверной ОС мы ставим Calculate Directory Server основанном на Gentoo. И, как человеку, который любит крепко спать, хотелось, что бы система стояла на зеркальном рейде (RAID 1). К сожалению, из коробки Calculate Directory Server такой возможности не поддерживает. Так же я не смог найти ни одного более-менее внятного описания того, как можно это сделать. Так что пришлось потратить пару вечеров на поиск решения.
В этой статье я хочу рассказать как установить Arch Linux с LVM на зашифрованный раздел. Сейчас у арча появился инсталлер, но мне больше нравится устанавливать все вручную, так есть более глубокое понимание процесса. Если вам будет интересно, то на моем ютуб канале есть видео в котором я делаю то же самое по этой статье, но для большинства статьи будет достаточно.
Почему Arch?
До этого я использовал ALT Linux, Ubuntu, SuSe, Fedora, Debian, Arch. И когда я попробовал арч я понял, что он полностью удовлетворяет моим потребностям.
Artix Linux - это systemd-free дистрибутив линукс на основе Arch Linux. Он использует свои репозитории, но присутствует частичная совместимость с репозиториями Arch и AUR. Artix Linux предоставляет выбор систем инициализации (OpenRC, Runitб, s6, dinit). В этом гайде будет рассмотрен пример с использованием OpenRC.
Любое повторение действий и необдуманные решения могут привести к полной утрате данных. Не для HowTo-шников, данный материал лишь для воссоздания картины о представлении данных на дисковых носителях.
Итак, приступим. Вводные данные:
7 дисков, 2 primary-раздела на каждом;
1й раздел 7и кратное зеркалирование (RAID1);
2й раздел RAID5, под которым крутится LVM.
Два диска отказывают в одночасье из-за скачка электричества и каких-то еще проблем с железом. Попытки ассемблировать диски обратно не увенчались успехом, т.к. система проработала в автопилоте на умершем рейде часа два, в добавок ко всему диски то оживали то умирали заново, ядро не отрабатывало какой диск на каком месте в данный момент, т.е. что на них писалось и как это происходилос — можно только догадываться.
В общем, имеем, полностью погибший рейд. и mdadm тут бессилен.
Данный способ работает и в остальных версиях Xen и даже подпиливается к венценосному CitrixXen.
что имеем — файловая система XEN DomU на LVM
сервер стоечный с двумя Xeon® E5520 (например)
и необходимость бекапа средствами хотя бы отдаленно похожими на автоматические.
Поскольку никто кроме компании phdvirtual.com так ничего не выпустил для автоматизированного бекапа XEN, все бекапят в силу своей изощренности и глубины знаний.
В основном все варианты из гугла сводятся с получению snapshot указанного LVM и сохранение его на диск.
Вообщем-то это практически единственный и самый продуктивный вариант, поcкольку слепок получается без остановки виртуальной машины.
Парк виртуальных машин на моих серверах подбирается к 20 (на небольшой компании), бекап необходим почти для всех, поэтому данные я архивирую. Использую для этого 7zip в мультипроцессорном режиме.
Так же стоит отметить что машины с db и др. требовательными к потере информации сервисами стоит подготовить перед запуском lvm snapshot. Разный взгляд на эту проблему можно найти в каментариях к этой статье ниже :)
С версии RHEL 6.4 в LVM2 включена поддержка thin provision. На русский я бы перевёл это как «тонкое резервирование», хотя перевод неточен и совершенно не согласуется с реальностью, поэтому далее наравне с русским будет использоваться английское написание.
Thin provisioning — это создание логических томов, которые изначально используют немного места и «растут» по мере записи в них данных. В ZFS это реализовано давно по самой философии этой ФС. В VMware это используется в каждом продукте. Дошло дело до LVM2, широко применяемом в Linux в наши дни. Также одним из основных нововведений является thin snapshots, когда для снэпшотов нет необходимости резервировать место заранее, а он «растёт» вместе с изменёнными данными. Также разрешаются и поощряются вложенные снэпшоты (снэпшоты снэпшотов c любой глубиной), при этом заявляется об отсутствии при этом падения производительности. О нескольких нюансах использования будет рассказано в статье.
Для стабильной работы thin provision в LVM2 требуется ядро 3.4. В Red Hat бэкпортировано и работает на их «классическом» 2.6.32.
В близкой мне Debian Wheezy thin provisioning недоступен ввиду отсутствия ключа при компиляции lvm2 --with-thin=internal и других сложностей. При необходимости, для целей теста, можно скомпилировать этот пакет из исходников.
Меня больше интересовали не снэпшоты, а производительность «тонких логических томов» (Thin Logical Volume) для использовании на серверах. Для нетерпеливых скажу сразу — падение производительности наблюдается, и существенное. Подробности ниже.
Не смотря на наличие нескольких статей на Хабре, про LVM2 и производительность Thin Provisioning, решил провести своё исследование, так как имеющиеся показались мне поверхностными.