- Mint и LVM. Часть 1, вводная
- Что такое LVM и для чего он используется?
- Плюсы LVM
- Минусы LVM
- Что такое LVM
- Зачем использовать LVM?
- Основы LVM
- Специфика LVM
- Изменение размера разделов
- Перемещение разделов
- Много разделов
- Снимки
- Как использовать LVM
- Итак, как мне начать использовать LVM?
- Изменение размера разделов
- Перемещение разделов
- Снимки
Mint и LVM. Часть 1, вводная
Эта история началась с того, что в силу стечения ряда обстоятельств я стал счастливым обладателем SSD-накопителя производства Crucial MX100 объёмом 512 ГБ. От описания его особенностей воздержусть — эта линейка моделей (от 128 ГБ до указанной выше цифры), ввиду сочетания «брендовости», вышесредних скоростных показателей и гуманной цены, сейчас, что называется, на слуху, и на любом «железячном» сайте можно найти её обзоры и тесты. Для дальнейшего сюжета важно, что в результате дисковая подсистема, упакованная внутри моего десктопа, стала выглядеть так:
- вышеупомянутый полутерабайтный Crucial — на первом SATA-разъёме;
- SanDisk Extreme SSD, 120 Гбайт — на втором;
- он же, то есть точно такой же — на третьем;
- традиционный винчестер Seagate ST3500410AS о 500-х гигабайтах — на четвёртом.
Поскольку «мама» моя на чипсете H77, только первые два SSD-накопителя могут пользоваться всеми прелестями интерфейса SATA-III, третьему же с приходом «жирного» родственника пришлось сесть на зауженный канал. Что, впрочем, легко улавливается на тестах, но с трудом — на реальных задачах: в любом случае любой SSD будет очень ощутимо быстрее механического винчестера. Тем не менее, хотелось подойти к этому вопросу вдумчиво и распорядиться наличными хренилищами рационально.
Впрочем, вру: поначалу хотелось поскорей водрузить на Crucial MX100 систему и записать рабочие данные. Согласитесь, ведь ещё совсем недавно SSD в десять раз меньшего объёма казался трудно достижимой мечтой. Так что, думаю, желание поглядеть на это чудо в деле понятно. Однако, как обычно, нетерпение привело к тому, что объект его, сиречь MX100, был размечен по весьма неудачной схеме, а оба SanDisk’а вообще оказались не при делах. И потому я ждал только повода для полной переустановки системы на полностью перекомпонованные носители.
Поводом этим послужил выход кандидата в релизы Mint 17.1, она же Rebecca — и процесс её установки пошёл сразу по скачивании образа, о чём было отрапортовано своевременно.
Описывать процесс установки не буду — он ничем не изменился с прежних времён. В рамках нынешнего сюжета важна только дисковая разметка при инсталляции, каковая, естественно, проводилась на MX100 (файл устройства /dev/sda ). Он был разбит на три раздела:
- /dev/sda1 объёмом 20 ГБ с файловой системой ext4 под корень файловой иерархии;
- /dev/sda2 объёмом 10 ГБ, также с ext4 — под каталог будущего пользователя, то есть меня — /home/alv (в домашнем каталоге я храню только dot-файлы и некоторые служебные данные, на что указанного объёма хватало с лихвой);
- /dev/sda3 на всё оставшееся пространство — без файловой системы и, сооветственно, без точки монтирования.
На обоих SanDisk’ах было создано по разделу, занимающему их целиком ( /dev/sdb1 и /dev/sdc1 , соответственно), также без файловой системы. Вместе с /dev/sda3 они предназначались для объединения в хренилище моих рабочих данных — организация оного и является предметом данных очерков.
Винчестер у меня служит для экспериментальных целей, и потому разметка его постоянно меняется, да и к нашей теме не относится. За исключением того, что первые 16 ГБ диска выделены в раздел /dev/sdd1 , служащий swap’ом для всех моих систем.
Очевидно, что организация хренилища из трёх устройств требовала их объединения тем или иным способом, каковых приходило на ум четыре:
- программный RAID в «линейном» режиме;
- том btrfs с её субтомами (subvolumes);
- пул ZFS с её наборами данных (datasets);
- технология LVM (Logical Volume Manager).
Линейный RAID сразу был отметён с негодованием как лишённый в данной ситуации смысла (и вообще плохо применимый к SSD-накопителям, не любящим полного заполнения). Вариант с btrfs я тоже всеръёз не рассматривал, что бы ни говорили о готовности этой системы к промышленному использованию. Характерно, что в openSUSE, кажется, первой взявшей её на вооружение как умолчальной, btrfs задействуется под корневую файловую систему, тогда как бесценные пользовательские данные по умолчанию предлагается размещать на XFS.
Выбор ZFS, казалось бы, напрашивался: эту систему хранения данных я люблю, более-менее знаю, даже кое-чего про неё сочинил (например, это), и включал её поддержку в сборки своих вариантов Mint 17. Однако тут модули ZFS у меня неожиданно с первого раза не собрались. Правда, проблема решилась (благодаря помощи Станислава Шрамко aka stanis, о чём в другой раз), однако, как говорится, осадок остался. Ибо случай этот послужил напоминанием не только о бренности бытия, но и птичьих правах, на которых существует ZFS on Linux.
В своё время, более десяти лет назад, я очень увлекался технологией LVM, тогда ещё 1-й версии, и даже сочинил про неё довольно подробную статью. Потом я это дело забросил по двум причинам. Во-первых, во времена винчестеров с PATA-интерфейсом было очень сложно сконфигурировать многодисковую систему LVM без деградации производительности. Во-вторых, инструментарий CLI для создания такой системы и последующего управления ею показался мне при использовании в «домашних» условиях неоправданно сложным — особенно в сравнении с появившейся вскоре ZFS.
Ныне, в эпозу безраздельного господства SATA-накопителей, первое препятствие к применению LVM отпало полностью. Что касается второго, то оно во многом сглаживается наличием графических оболочек, изолирующих применителя от низкоуровневых команд. Одну из которых system-config-lvm , я и использовал нынче.
С тех пор, как я имел дело с LVM, появилась LVM2, предоставляющая ряд дополнительных возможностей, таких, как расширение логического тома на вновь подключённые физические тома. Однако суть технологии, терминология, утилиты CLI для работы с LVM почти не изменились. Да и в сети можно найти много не менее подробных, но более свежих материалов по теме (пожалуй, вот наиболее полный). Так что на этих вопросах останавливаться не буду, ограничившись маленьким терминологическим конспектом.
Сама по себе система LVM — уровень абстракции между физическими носителями (дисками, их разделами и массивами) и обычными файловыми системами. Она позволяет объединять в логические тома разделы с разных дисков, изменять их размер в сторону увеличения (за счёт присоединения новых накопителей) и, с некоторыми оговорками, уменьшения. В основе её лежит понятие физического тома (PV — Physical volume). Это — обычный дисковый раздел, для которого устанавливается идентификатор типа (ID) 8e . Вопреки написанному в некоторых сетевых материалах, целый диск как raw-устройство типа /dev/sd? в качестве физического тома выступать не может. Другое дело, что созданный на нём раздел с ID 8e может занимать и весь диск и даже RAID, программный или аппаратный.
Физический том делится на «куски», именуемые физическими экстентами (Physical Extent, PE — по традиции олставлю этот термин без перевода, так как предлагаемый русскоязычной Википедией диапазон может ввести в заблуждение). Это — нечто вроде аналогов физических блоков (секторов) обычного винчестера, их размер по умолчанию 4 МБ, но может быть изменён в обе стороны.
Физические тома объединяются в группу томов (VG — Volume group), которая выступает как единое целое и может рассматриваться как логическиий аналог raw-накопителя. И, подобно последнему, делится на разделы — поскольку над физикой мы уже поднялись, они назваются логическими томами (LV — Logical volume). А уж те — опять-таки на «куски», которые, как нетрудно догадаться, носят имя логических экстентов (LE — Logical extent). По размеру логический экстент равен экстенту физическому, которому он ставится в соответствие — однозначно, но одним из двух методов:
- линейным (linear mapping), когда логические экстенты последовательно привязываются к физическим сначала первого физического тома, потом второго, и так далее, подобно линейному режиму RAID;
- «черезполосным» (striped mapping), при котором «куски» логических экстентов (так называемые блоки чередования, по умолчанию равные 4 КБ) распеределяются по физическим экстентам чередующихся физических томов.
Последний метод, сходен с расщеплением данных в RAID Level 0 и, подобно последнему, обычно способствует быстродействию дисковых операций. При этом очевидно (и важно в контексте дальнейшего развития сюжета), что размер логического тома с чередованием не может быть больше наименьшего из входящих в него томов физических.
В ходе создания собственного хренилища LVM, описанного на следующей странице, оказалось, что существует ещё и метод зеркалирования. Надо полагать, что это некое подобие RAID Level 1. Но, поскольку для меня это не актуально, выяснением деталей не занимался.
Вне зависимости от метода соответствия логических и физических экстентов, логические тома предназначены для того, чтобы нести на себе файловые системы, подобно обычным дисковым разделам, причём точно те же самые — любые нативные для Linux’а: ext2/ext3/ext4, XFS, ReiserFS, JFS.
На этом терминологическое введение можно считать законченным — перехожу к описанию действий по организации хренилища данных.
Источник
Что такое LVM и для чего он используется?
Некоторые дистрибутивы Linux при установке операционной системы вместо обычного раздела предлагают выбрать LVM раздел или даже динамический LVM. Что такое LVM и для чего он используется, если вы новичок в Linux, Ubuntu?
Какие преимущества даёт установка веб-сервера на LVM раздел?
Рекомендуется ли использовать LVM или лучше обычные разделы?
Плюсы LVM
Вы можете думать о LVM как о «динамических разделах», что означает, что вы можете создавать, изменять размер, удалять «разделы» LVM (на языке LVM они называются «логическими томами») из командной строки во время работы системы Linux: нет необходимо перезагрузить систему, чтобы ядро узнало о вновь созданных разделах или разделах с измененным размером.
Другие полезные функции, которые предоставляет LVM «Logical Volumes»:
- Если у вас более одного жёсткого диска, логические тома могут охватывать более одного диска: то есть они не ограничиваются размером одного отдельного диска, а скорее общим совокупным пространством.
- Вы можете настроить «чередующиеся» LV, чтобы ввод-вывод можно было распределять на все диски, на которых размещён LV, параллельно. (Аналогично RAID-0, но немного проще в настройке.)
- Вы можете создать моментальный снимок (только для чтения) любого LV. Вы можете позже вернуть исходный LV к снимку или удалить снимок, если он вам больше не нужен. Это удобно, например, для резервного копирования серверов (вы не можете остановить запись всех своих приложений, поэтому вы создаёте моментальный снимок и делаете резервную копию снимка LV), но также это может использоваться для обеспечения «сети безопасности» перед критическим обновлением системы (клонировать корневой раздел, обновить, откатить изменения, если что-то пошло не так).
Будучи наиболее полезными в серверных системах, я думаю, что функции 1. и 3. в сочетании с возможностью LVM создавать, изменять размер, удалять LV на лету также весьма удобны в настольных системах. (Особенно, если вы много экспериментируете с системой.)
Минусы LVM
Конечно, всё это имеет свою цену: начальная настройка LVM более сложна, чем просто разбиение диска, и вам определённо необходимо понять терминологию и модель LVM (логические тома, физические тома, группы томов), прежде чем вы сможете начать его использовать. (Однако после настройки пользоваться им становится намного проще.)
Кроме того, если вы используете LVM на жёстких дисках, вы можете потерять все свои данные, когда выйдет из строя только один диск.
Что такое LVM
LVM расшифровывается как Logical Volume Management. Это система управления логическими томами или файловыми системами, которая является гораздо более продвинутой и гибкой, чем традиционный метод разделения диска на один или несколько сегментов и форматирования этого раздела с файловой системой.
Зачем использовать LVM?
В течение долгого времени я задавался вопросом, зачем кому-то использовать LVM, если вы можете использовать gparted для изменения размера и перемещения разделов. Ответ в том, что lvm может делать эти вещи лучше, а также некоторые отличные новые вещи, которые вы просто не можете сделать иначе. Я объясню несколько задач, которые может выполнять lvm, и почему он это делает лучше, чем другие инструменты, а затем как их выполнять. Сначала вы должны понять основы lvm.
Основы LVM
LVM управляет тремя концепциями:
- Группы томов
- Физические тома
- Логические тома
Группа томов — это именованный набор физических и логических томов. Типичным системам требуется только одна группа томов, чтобы содержать все физические и логические тома в системе, и мне нравится называть свою группу по имени машины. Физические тома соответствуют дискам; это блочные устройства, которые предоставляют пространство для хранения логических томов. Логические тома соответствуют разделам: они содержат файловую систему. Однако, в отличие от разделов, логические тома получают имена, а не номера, они могут занимать несколько дисков и необязательно должны быть физически смежными.
Специфика LVM
Одно из самых больших преимуществ LVM заключается в том, что большинство операций можно выполнять «на лету», пока система работает. Большинство операций, которые вы можете выполнять с помощью gparted, требуют, чтобы разделы, которыми вы пытаетесь манипулировать, в данный момент не использовались, поэтому для их выполнения вам необходимо загрузиться с livecd. Вы также часто сталкиваетесь с ограничениями формата таблицы разделов msdos с gparted, включая только 4 основных раздела, и все логические разделы должны содержаться в одном непрерывном расширенном разделе.
Изменение размера разделов
С помощью gparted вы можете расширять и сжимать разделы, но только если они не используются. LVM может расширять раздел во время когда диск смонтирован, если файловая система, используемая на нём, также поддерживает это (например, обычный ext3/4). При расширении раздела gparted может расширить его только на соседнее свободное пространство, но LVM может использовать свободное пространство в любом месте группы томов, даже на другом диске. При использовании gparted это ограничение часто означает, что вы должны перемещать другие разделы, чтобы освободить место для расширения одного из них, что является очень трудоёмким процессом, который может привести к значительной потере данных в случае сбоя или прерывания работы (отключение электричества).
Перемещение разделов
Перемещение разделов с помощью gparted обычно необходимо только в первую очередь из-за требования, чтобы разделы были физически смежными, поэтому вам, вероятно, никогда не понадобится делать это с LVM. Если вы это сделаете, в отличие от gparted, LVM может перемещать раздел, пока он используется, и не повредит ваши данные, если операция будет прервана. В случае, если ваша система выйдет из строя или потеряет питание во время перемещения, вы можете просто перезапустить операцию перемещения после перезагрузки, и она завершится нормально. Когда я получил свой SSD-накопитель, я просто подключил его, загрузил и попросил lvm переместить мою работающую корневую файловую систему на новый диск в фоновом режиме, пока я продолжал работать. Другая причина, по которой вы можете захотеть переехать, — это заменить старый диск на новый, большего размера. Вы можете перенести систему на новый диск во время его использования, а затем удалить старый.
Много разделов
Если вам нравится тестировать различные дистрибутивы Linux, или просто другие версии Ubuntu, или и то, и другое приводит к созданию довольно большого числа разделов. С обычными разделами msdos (MBR) это становится проблематичным из-за его ограничений (хотя нужно отметить, что с GPT такой проблемы уже нет). С LVM вы можете создать столько логических томов, сколько захотите, и обычно это довольно просто, поскольку обычно у вас остаётся много свободного места. Обычно люди выделяют весь диск на один раздел при первой установке, но, поскольку расширение раздела с помощью LVM настолько простое, для этого нет никаких причин и вы можете начать с создания раздела не в целый диск. Лучше выделить только то, что, по вашему мнению, вам понадобится, а остальное пространство оставить свободным для использования в будущем. Если в конечном итоге исходное выделенное место закончилось, добавление дополнительного пространства к этому тому — это всего лишь одна команда, которая выполняется немедленно, пока система работает в обычном режиме.
Снимки
Это то, что вы просто не можете сделать без LVM. Это позволяет вам заморозить существующий логический том во времени в любой момент, даже когда система работает. Вы можете продолжать использовать исходный том в обычном режиме, но том с моментальным снимком выглядит как образ оригинала, застывший во времени в момент его создания. Вы можете использовать это, чтобы получить целостный образ файловой системы для резервного копирования, не выключая систему. Вы также можете использовать его для сохранения состояния системы, чтобы позже можно было вернуться в это состояние, если вы что-то напутали. Вы даже можете смонтировать том моментального снимка и внести в него изменения, не затрагивая оригинал.
Как использовать LVM
Итак, как мне начать использовать LVM?
Установщик Linux может предложить вам создать раздел с LVM. Либо перед установкой Linux вы можете создать раздел LVM с помощью LIVE CD. Либо если вы планируете переустановку ОС, вы можете установить пакет lvm2 в существующую систему и вручную настроить LVM.
Во-первых, вам нужен физический том. Обычно вы начинаете с жёсткого диска и создаёте на нем раздел типа LVM. Вы можете создать его с помощью gparted или fdisk и обычно хотите, чтобы только один раздел использовал весь диск, поскольку LVM будет обрабатывать его разделение на логические тома. В gparted вам нужно проверить флаг lvm при создании раздела, а с помощью fdisk пометить тип кодом 8e.
Когда у вас есть раздел LVM, вам необходимо инициализировать его как физический том. Предполагая, что это раздел /dev/sda1:
Это записывает заголовок LVM в раздел, который идентифицирует его как физический том, и устанавливает небольшую область для хранения метаданных, описывающих всё о группе томов, а остальную часть раздела как неиспользуемые физические экстенты. После этого вам нужно создать группу томов с именем foo:
Теперь у вас есть группа томов с именем foo. Я предлагаю вам заменить foo значимым для вас именем. foo содержит только один физический том. Теперь вы хотите создать логический том из некоторого свободного места в foo:
Это создаёт логический том с именем bar в группе томов foo, используя 5 ГБ пространства. Если вы выполняете установку ОС Linux, вы, вероятно, захотите создать логический том, подобный этому, для использования в качестве корневой файловой системы, один для подкачки и, возможно, один для /home. В настоящее время у меня есть логический том для установки Lucid и один для установки Maverick, поэтому я назвал эти тома именно так. Вы можете найти блочное устройство для этого логического тома в ‘/dev/foo/bar‘ или ‘dev/mapper/foo-bar‘.
Вы также можете попробовать команды lvs и pvs, которые перечисляют логические тома и физические тома соответственно, а также их более подробные варианты; lvdisplay и pvdisplay.
Если вы делаете это с рабочего стола livecd, после создания логических томов из терминала вы можете запустить установщик и использовать ручное разбиение на разделы, чтобы выбрать, как использовать каждый логический том, а затем выполнить установку.
Изменение размера разделов
Вы можете расширить логический том с помощью:
Это добавит 5 ГБ к логическому тому bar в группе томов foo. Вы можете указать абсолютный размер, если хотите, вместо относительного, опуская начальный +. Пространство выделяется из любого свободного места в любом месте группы томов bar. Если у вас несколько физических томов, вы можете добавить имена одного или нескольких из них в конец команды, чтобы ограничить, какие из них следует использовать для удовлетворения запроса.
После расширения логического тома вам необходимо расширить файловую систему, чтобы использовать новое пространство. Для ext 3/4 вы просто запустите:
Перемещение разделов
Если у вас есть только один физический том, вам, вероятно, никогда не придётся перемещать его, но если вы добавите новый диск, возможно, вы захотите это сделать. Чтобы переместить логический том bar из физического тома /dev/sda1, выполните:
Если вы опустите аргумент -n bar, все логические тома на физическом томе /dev/sda1 будут перемещены. Если у вас есть только один другой физический том, то он будет перемещён туда, или вы можете добавить имя одного или нескольких конкретных физических томов, которые должны использоваться для удовлетворения запроса, вместо любого физического тома в группе томов со свободным местом. Этот процесс можно безопасно возобновить, если он прерван из-за сбоя или отключения питания, и его можно выполнить, пока используются соответствующие логические тома. Вы также можете добавить -b, чтобы выполнить перемещение в фоновом режиме и немедленно вернуться, или -i СЕКУНДЫ, чтобы он печатал, какой прогресс он сделал каждые СЕКУНДЫ секунд. Если вы выбрали фоновый режим перемещения, вы можете проверить его ход с помощью команды lvs.
Снимки
Когда вы создаёте моментальный снимок, вы создаёте новый логический том, который будет действовать как клон исходного логического тома. Том моментального снимка изначально не использует никакого пространства, но по мере внесения изменений в исходный том изменённые блоки копируются в том моментального снимка перед их изменением, чтобы сохранить их. Это означает, что чем больше изменений вы вносите в исходную точку, тем больше места требуется для снимка. Если том моментального снимка использует всё выделенное ему пространство, то моментальный снимок повреждается и больше не может использоваться, оставляя вас только с измененным источником. Команда lvs сообщит вам, сколько места было использовано в логическом томе моментального снимка. Если он начинает заполняться, вы можете расширить его с помощью команды lvextend. Чтобы создать моментальный снимок логического тома bar и назвать его snap, запустите:
Это создаст моментальный снимок с именем snap оригинального логического тома bar и выделит для него 5 ГБ пространства. Поскольку том моментального снимка хранит только те области диска, которые изменились с момента его создания, он может быть намного меньше исходного тома. Недавно я использовал моментальный снимок логического тома объёмом 12 Гбайт, содержащий мою корневую файловую систему Maverick, и выполнил dist-upgrade до Natty в источнике, который использовал только около 50-60% пространства моментального снимка.
Пока у вас есть моментальный снимок, вы можете смонтировать его, если хотите, и увидите исходную файловую систему такой, какой она была на момент создания моментального снимка. В приведённом выше примере вы должны смонтировать устройство /dev/foo/snap. Вы можете изменить снимок, не затрагивая оригинал, и изменит оригинал оригинал, не затрагивая снимок. Если вы сделаете снимок корневого логического тома, а затем обновите некоторые пакеты или целый дистрибутив до следующего выпуска, а затем решите, что вам не нравится, как он работает, вы можете объединить снимок обратно в исходный том, эффективно вернувшись к состоянию во время создания снимка. Для этого просто запустите:
Если исходный том foo/snap уже используется, он сообщит вам, что слияние произойдёт при следующей активации томов. Если это корневой том, вам необходимо перезагрузить компьютер, чтобы это произошло. При следующей загрузке том будет активирован, и слияние начнётся в фоновом режиме, поэтому ваша система загрузится так, как будто вы никогда не вносили изменений с момента создания моментального снимка, а фактическое перемещение данных будет происходить в фоновом режиме, пока вы работаете в обычном режиме.
Источник