Позволяет ли lvm сжимать файловую систему без простоев

Обновлено: 06.07.2024

Руководства, учебные пособия, обзоры и новости для системных администраторов.

Изменение размера LVM — как уменьшить раздел LVM

Здесь мы покажем вам, как уменьшить объем или раздел LVM в Linux, сначала изменив размер файловой системы, а затем изменив размер логического тома.

Посмотрите здесь, если вы пытаетесь сделать наоборот и расширить том LVM.

Примечание. В этом примере мы работаем в CentOS 7, некоторые команды могут отличаться в разных дистрибутивах Linux. Начиная с CentOS 7 файловой системой по умолчанию является XFS, которую в настоящее время нельзя сжать, этот пример работает с файловой системой ext4.

В этом примере мы уменьшим логический том /var/centos/var с 10 ГБ до 5 ГБ.

Обзор диспетчера логических томов (LVM)

Прежде чем приступить к процессу изменения размера, важно сначала понять некоторые основные понятия, касающиеся физических томов, групп томов, логических томов и файловой системы.

  • Физический том (PV): его можно создать на всем физическом диске (например, /dev/sda) или на разделе Linux.
  • Группа томов (VG): состоит как минимум из одного или нескольких физических томов.
  • Логический том (LV). Иногда его называют разделом, он находится в группе томов, и на него записана файловая система.
  • Файловая система. Файловая система, такая как ext4, будет находиться на логическом томе.

LVM Resize — как уменьшить или сжать логический том

Чтобы уменьшить размер раздела LVM, вы должны сначала уменьшить файловую систему внутри, чтобы избежать возможного повреждения данных. Поскольку это может произойти, если вы введете команду неправильно, настоятельно рекомендуется сделать полную резервную копию ваших данных, прежде чем продолжить. Уменьшение логического тома даст вам больше места в группе томов, а это означает, что вместо этого вы можете расширить другой логический том с помощью этого нового найденного пространства.

Первый шаг будет зависеть от того, хотите ли вы уменьшить корневой том LVM или некорневой том.

Сжатие корневого тома

Корневой том обычно представляет собой логический том, подключенный к /. Вы не можете размонтировать это, чтобы уменьшить его, поскольку оно используется работающей операционной системой, а это означает, что вам придется сначала загрузиться с Live CD, чтобы завершить это. После загрузки с Live CD вам может сначала потребоваться выполнить приведенную ниже команду, чтобы получить тома LVM, однако обычно это происходит во время загрузки, поэтому может не потребоваться, если есть сомнения, просто запустите ее.

Сжатие тома без полномочий root

В качестве альтернативы, если том, который вы сжимаете, является некорневым томом, то есть любым другим томом, не подключенным к корню файловой системы, вы можете размонтировать том, как показано ниже, чтобы продолжить. Обратите внимание, что при размонтировании тома данные будут недоступны, поэтому перед размонтированием вам может потребоваться запланировать время простоя и остановить запуск приложений, использующих данные с него. Размонтируйте, указав либо логический том, либо местоположение, к которому он в данный момент подключен, в приведенном ниже примере мы указываем логический том, который можно найти в /dev/(vg-name)/(lv-name).

Все следующие шаги теперь применимы как к корневому, так и к некорневому тому.

Прежде чем попытаться уменьшить размер тома LVM, вы должны сначала запустить на нем проверку файловой системы. Если вы этого не сделаете, вы получите сообщение об ошибке и не сможете продолжить. Это обязательный шаг, поскольку изменение размера файловой системы в плохом состоянии может привести к повреждению данных. Флаг -f запускает проверку, даже если файловая система кажется чистой, а -y предполагает, что да на все вопросы, и будет отвечать, если вас попросят исправить проблему.

Затем вам нужно сжать файловую систему. На всякий случай мы сожмем файловую систему меньше, чем будет сжиматься логический том. Это связано с тем, что мы не хотим случайно уменьшить логический том до размера меньше, чем размер файловой системы на следующем шаге, так как это может привести к повреждению и потере данных. Не волнуйтесь, мы освободим место в конце.

Приведенная ниже команда сожмет файловую систему так, чтобы ее общий размер составлял всего 4 ГБ. Обратите внимание: какой бы размер вы ни указывали для сжатия, у вас должно быть свободное место в файловой системе, в противном случае вы должны сначала удалить данные.

После уменьшения файловой системы мы можем уменьшить размер логического тома с помощью команды lvreduce. Уменьшите это до размера, который вы хотите, чтобы том был, как указано флагом -L. Вместо этого, если вы хотите уменьшить размер на указанный размер, просто поставьте «-» перед размером. Оба показаны ниже для полноты картины, однако вам нужно запустить только один из них.

Чтобы уменьшить до 5G

Сократить на 5G

После выполнения команды lvreduce вы получите предупреждение с указанием размера, который вы выбрали для уменьшения, поэтому используйте его как шанс подтвердить, что вы сжимаете логический том до размера, который НЕ меньше, чем размер, который вы ранее сжал файловую систему до. После того, как вы подтвердите, что можете продолжить, введите «y» и нажмите Enter.

После того, как логический том будет уменьшен до требуемого размера, запустите resize2fs на томе, так как это расширит файловую систему, чтобы использовать все доступное пространство в логическом томе. Это позволяет использовать все оставшееся свободное пространство, чтобы ничто не было потрачено впустую, когда мы ранее сжимали файловую систему до меньшего размера, чем логический том.

На данный момент все, что осталось сделать, это смонтировать том. Если это был корневой том и вы работаете с Live CD, просто загрузитесь в свою основную операционную систему Linux.

Если это был том без полномочий root, и вы размонтировали его, чтобы завершить преобразование, просто смонтируйте его обратно. Вы можете сделать это с помощью «mount -a», предполагая, что конфигурация уже установлена ​​в /etc/fstab, в противном случае укажите логический том и место, куда он должен подключаться. Здесь мы вручную монтируем /mnt только для тестирования.

После загрузки основной операционной системы или завершения монтирования проверьте отображаемое пространство с помощью команды «df», чтобы убедиться, что оно было уменьшено, как ожидалось.

В этом примере /dev/centos/var правильно отображается как уменьшенный по сравнению с исходным 10G.

Обзор

Теперь мы успешно уменьшили файловую систему и соответствующий логический том LVM. Корневые тома можно уменьшить, только размонтировав файловую систему, что требует загрузки с Live CD для завершения работы. Для некорневых томов сначала необходимо размонтировать файловую систему, чтобы можно было сжать том. Сначала проверили файловую систему, потом уменьшили. Затем сам логический том был уменьшен. Настоятельно рекомендуется сделать резервную копию, прежде чем пытаться это сделать, чтобы избежать потери данных из-за ошибок.

Как видно из названия, LVM — это способ логического управления физическими дисками. Любая современная Linux-система поддерживает LVM, и многие используют LVM по умолчанию для управления дисками и настройки во время установки.

Зачем использовать LVM?

LVM допускает логическую структуру физического диска или нескольких физических дисков. Например, можно объединить два диска по 10 ГБ и получить 20 ГБ пространства из того, из которого можно создать файловую систему ext3 объемом 20 ГБ.

Большое преимущество LVM заключается в том, что в большинстве случаев манипуляции можно выполнять без простоев.

Что нужно знать о LVM?

Основные понятия, которые необходимо знать о LVM, — это физический том (PV), группа томов (VG) и логический том (LV). Физический том в основном сопоставляется с физическими разделами или дисками. Поверх PV находится виртуальная группа, которая может состоять из множества PV. Вот откуда сила LVM; поскольку в VG может быть много PV, когда заканчивается место на диске, всегда можно добавить больше диска и просто расширить его (при условии, что у вас есть место для добавления диска). Для этого расширения не требуется простоя. LV — это подразделение, которое находится поверх VG, и именно на LV создаются файловые системы (например, Ext3). Отличное место, где можно воспользоваться преимуществами LVM, — это когда кто-то использует виртуализацию и у него заканчивается диск. При управлении емкостью не требуется чрезмерно выделять выделенное дисковое пространство.

Ниже я покажу необходимые команды и шаги, необходимые для расширения корневого раздела системы Redhat на 10 ГБ.

Проверьте размер диска системы. Можно отметить, что размер корневого раздела (/) составляет 3,9 ГБ.

Используемый размер файловой системы Доступно Использование % Подключено

/dev/sda1 99M 13M 82M 14% /загрузка

tmpfs 2.0G 0 2.0G 0% /dev/shm

Можно отметить, что на данный момент существует только один физический диск (sda) с двумя разделами

Диск /dev/sda: 8589 МБ, 8589934592 байт

255 головок, 63 сектора на дорожку, 1044 цилиндра

Единицы = цилиндры 16065 * 512 = 8225280 байт

Система идентификаторов начальных и конечных блоков загрузки устройства

/dev/sda1 * 1 13 104391 83 Linux

/dev/sda2 14 1044 8281507+ 8e Linux LVM

Команда vgdispay показывает имеющиеся виртуальные группы. Эти имена VG являются именами по умолчанию, которые используются во время установки ОС. В ВГ нас интересует VolGroup00. Там находится корневой раздел. Приведенная выше команда df -h подтверждает, что путь к устройству разработки

Руководства, учебные пособия, обзоры и новости для системных администраторов.

Изменение размера LVM — как увеличить раздел LVM

Здесь мы покажем вам, как расширить том или раздел LVM в Linux, сначала изменив размер логического тома, а затем изменив размер файловой системы, чтобы воспользоваться дополнительным пространством.

Посмотрите здесь, если вы пытаетесь сделать наоборот и уменьшить том LVM.

Примечание: в этом примере мы работаем в CentOS 7, некоторые команды могут отличаться в разных дистрибутивах Linux.

В этом примере мы будем расширять логический том /var/centos/var с 5 ГБ до 10 ГБ. В настоящее время этот логический том подключен к /mnt.

Обзор диспетчера логических томов (LVM)

Прежде чем приступить к процессу изменения размера, важно сначала понять некоторые основные понятия, касающиеся физических томов, групп томов, логических томов и файловой системы.

  • Физический том (PV): его можно создать на всем физическом диске (например, /dev/sda) или на разделе Linux.
  • Группа томов (VG): состоит как минимум из одного или нескольких физических томов.
  • Логический том (LV). Иногда его называют разделом, он находится в группе томов, и на него записана файловая система.
  • Файловая система. Файловая система, такая как ext4, будет находиться на логическом томе.

LVM Resize — как увеличить или расширить логический том

Этот процесс очень легко выполнить с помощью LVM, так как его можно выполнять на лету без необходимости простоя, вы можете выполнять его на смонтированном томе без перерыва. Чтобы увеличить размер логического тома, в группе томов, в которой он находится, должно быть свободное место.

Чтобы просмотреть свободное место в группе томов, запустите команду vgdisplay, как показано ниже, и посмотрите на поле «Free PE / Size».

В этом примере у нас есть 5 ГБ свободного места в группе томов, как показано "Free PE / Size 1279 / 5,00 GiB".

Примечание. Если у вас недостаточно свободного места в группе томов, вам сначала потребуется расширить группу томов, чтобы завершить изменение размера. В качестве альтернативы, если у вас есть несколько разделов LVM, вы можете сначала сжать другой логический том, чтобы освободить место в группе томов.

Теперь, когда мы убедились, что в группе томов есть свободное место, подтвердите имя логического тома, который вы хотите увеличить, а также объем пространства, который вы планируете добавить. Приведенная ниже команда lvdisplay покажет все логические тома и их текущий размер. Он также покажет группу томов, членом которой является логический том, поэтому убедитесь, что правильная группа томов была проверена на наличие достаточного места с помощью vgdisplay, как упоминалось ранее, чтобы предотвратить попытку увеличения логического тома, который находится внутри какой-либо другой группы томов.

Как показано в примере ниже, мы будем работать с логическим томом «var», который находится в группе томов «centos», группе томов, которую мы видели в vgdisplay. В этом примере у нас есть только одна группа томов, но у вас может быть больше, поэтому вам нужно проверить.

Пришло время расширить логический том. В приведенном ниже примере мы используем флаг -L для увеличения указанного размера (M для мегабайт, G для гигабайт, T для терабайт). В качестве альтернативы вы можете удалить +, чтобы увеличить указанную сумму, а не указанную сумму.

Приведенная выше команда увеличит логический том /dev/centos/var на 5 ГБ, в настоящее время он уже составляет 5 ГБ, поэтому общий объем увеличится до 10 ГБ. Вы можете добиться того же с помощью «lvextend -L 10G /dev/centos/var», что также увеличит логический том до 10 ГБ, поскольку это то, что было указано без +. В качестве альтернативы, если вы хотите просто использовать все свободное пространство в группе томов, а не указывать размер для увеличения, запустите «lvextend -l +100%FREE /dev/centos/var».

Мы можем запустить приведенную ниже команду lvdisplay, показанную ниже, чтобы убедиться, что расширение выполнено должным образом.

Теперь, когда логический том расширен, мы можем изменить размер файловой системы. Это расширит файловую систему, чтобы она заняла только что созданное пространство внутри логического тома. Команда может отличаться в зависимости от типа используемой файловой системы.

Используйте это для файловых систем на основе ext3/4

В качестве альтернативы используйте это для файловых систем на основе xfs

После изменения размера файловой системы пространство должно быть готово к использованию. Если вы запустите команду «df» для просмотра дискового пространства, вы должны увидеть, что оно было успешно увеличено.

В этом примере я запустил команду mount /dev/centos/var /mnt, чтобы смонтировать логический том в /mnt, как показано выше, /mnt правильно сообщает о размере 10 ГБ.

Обзор

Теперь мы успешно расширили файловую систему и соответствующий логический том LVM без простоев. Это было сделано путем расширения логического тома, а затем оперативного изменения размера файловой системы.

Недостаточно места на диске в вашей системе Linux? К счастью, есть несколько способов расширить файловую систему, чтобы увеличить доступное дисковое пространство. При правильной настройке даже без простоев!

Практическое правило

Файловая система (FS) находится «внутри» устройства, которое может быть разделом, логическим томом или чем-то подобным.

Файловая система внутри устройства

Поэтому устройство должно быть расширено (расширено) перед файловой системой.

Использование разделов диска (ВМ)

Расширение файловых систем «настоящих» разделов диска — самая сложная и сложная задача. На массиве mdadm RAID легче расширять файловые системы и намного проще использовать логические тома (см. далее в этой статье).

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

В следующих выходных данных fdisk показана типичная таблица разделов с двумя основными разделами (sda1 и sda2) и одним расширенным разделом (sda3), содержащим логический раздел (sda5). Между разделами нет незанятого пространства.

Поскольку это виртуальная машина (видимая моделью диска), размер виртуального диска обычно может быть изменен гипервизором (VMware, KVM, Proxmox и т. д.). После увеличения виртуального диска с 200 ГБ до 220 ГБ внутри Linux ВМ запускается повторное сканирование блочного устройства:

fdisk теперь показывает новый размер диска (220 ГБ):

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

Чтобы увеличить расширенный раздел sda3 и логический раздел sda5, мы можем использовать команду parted для полного изменения размера раздела (100%):

Примечание. Старые версии parted не поддерживают подкоманду resizepart. Команда resizepart была добавлена ​​в parted 3.2. Обязательно используйте parted 3.2 или новее.

Еще один взгляд с fdisk показывает, что разделы sda3 и sda5 были расширены:

Если бы /dev/sda5 был разделом с файловой системой, для увеличения файловой системы было бы достаточно следующей команды:

Однако в этой ситуации раздел sda5 используется как физический том (PV) для LVM. В этом случае используйте pvresize, за которым следует путь:

Это сработало для последнего раздела диска без простоев. Однако, если вам нужно увеличить основной раздел этого диска, вам не повезло: вам придется сделать это в автономном режиме.

На физических машинах невозможно увеличить секторы физического диска (без замены диска). Для физических машин можно использовать RAID-массивы mdadm; см. следующую главу.

Использование mdadm RAID

Файловые системы, использующие RAID-массивы mdadm, также можно расширять без простоев. Таким образом можно даже увеличить корневой раздел (/). Однако сначала необходимо выполнить несколько требований:

  • Физическая машина должна поддерживать устройства с оперативной заменой.
  • Должны быть под рукой диски большего размера, чем используемые в настоящее время.
  • В ОС Linux должны быть смонтированы разделы с устройств mdX RAID (или логических томов), а не напрямую с физических дисков.

Идея заключается в том, что избыточный RAID-массив, состоящий из двух или более физических дисков, расширяется за счет замены дисков дисками большего размера. Но вместо того, чтобы сохранять ту же таблицу разделов, разделы, используемые mdadm, создаются большего размера, чем раньше, а затем добавляются обратно в массив. Затем массив увеличивается, а затем расширяются и файловые системы.

Предположим, что у нас следующая установка: Два одинаковых диска (sda + sdb) имеют по два раздела на каждом. Эти разделы используются mdadm для создания двух устройств RAID-1: md0 и md1. В то время как /dev/md0 используется как корневой раздел этой системы Linux, /dev/md1 используется как физический том (PV) для LVM.

mdadm RAID и смешанная установка LVM

Теперь первый диск (sda) удален из массива:

Физический диск sda теперь можно заменить диском большего размера. Как только Linux сможет получить доступ к новому /dev/sda, используйте fdisk (или другую команду раздела), чтобы создать два новых раздела (sda1 и sda2), но используйте больший размер, чем ранее. Затем добавьте эти разделы обратно в массивы mdadm:

Просмотрите статус mdadm ( cat /proc/mdstat ) и подождите, пока массивы рейдов не будут успешно восстановлены. Это дает вам промежуточную ситуацию, когда один из дисков (и его разделы) больше другого, но устройства mdraid md0 и md1 по-прежнему имеют одинаковый размер:

Расширить файловую систему с mdadm: один диск заменен на больший

После того, как состояние mdadm покажет, что все массивы снова работоспособны, выполните ту же операцию со вторым диском (sdb): установите его как неисправный, удалите из массива, замените диск, создайте разделы большего размера, добавьте обратно в массив (см. выше, но отрегулируйте команды для этого диска sdb).

Теперь, когда оба диска были заменены на более крупные, а разделы, используемые mdadm, стали больше, чем раньше, можно расширить массивы (устройства) mdadm:

Проверьте статус mdadm еще раз и дождитесь завершения всех операций:

Наконец, корневая файловая система (ext4 в данном примере) может быть расширена (онлайн!) с помощью следующей команды:

В качестве физического тома используется устройство /dev/md1. Его тоже можно увеличить:

Это дает дополнительное доступное пространство в группе томов и, следовательно, на логических томах.

С помощью этого метода можно расширить все файловые системы, включая корневую файловую систему (/), даже без простоев.

Расширенный доступ в Интернет файловые системы (включая корневую файловую систему) в Linux с mdadm

Использование аппаратного рейд-контроллера

То, что относится к mdadm RAID, также применимо к аппаратным RAID-контроллерам. Все современные RAID-контроллеры (должны быть) способны изменять размер RAID-массивов в режиме онлайн.

Операционная система Linux определяет логический диск (устройство RAID, использующее физические диски в фоновом режиме) как /dev/sda, sdb и т. д. Ядро получает информацию о дисках с аппаратного RAID-контроллера и не видит (по умолчанию) физические диски.

В следующем примере контроллер HP SmartArray используется для оперативного изменения размера логического диска, который в Linux отображается как /dev/sdc. Для связи с контроллером SmartArray из ОС Linux используются команды hpacucli или ssacli (новее).

После замены первого физического диска после LD3 дождитесь завершения восстановления RAID ( ssacli ctrl slot=0 ld all show status ). Затем замените второй физический диск за LD3 и снова подождите, пока контроллер завершит восстановление.

Наконец, расширьте логический диск:

Теперь LD3 должен показывать новый размер:

Теперь ОС должна видеть новый размер диска /dev/sdc, и его размер можно изменить:

Примечание. В зависимости от типа аппаратного рейд-контроллера может потребоваться повторное сканирование устройства.

Использование логических томов (LVM)

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

Это делает работу с логическими томами очень интересной, поскольку группы томов и логические тома можно расширять, пока система продолжает работать.

Расширить логический том

Для расширения логического тома используется команда lvextend. Команда поддерживает фиксированный размер или дифференциальный размер (+) с использованием параметра -L. Другой возможностью является использование параметра -l для увеличения LV на процент от оставшегося места в VG.

Изменить размер файловых систем

В следующих примерах используются файловые системы на логических томах (LV), однако фактическая команда расширения файловой системы также применяется к дисковым разделам или RAID-устройствам.

Расширить файловую систему ext2/ext3

ext2 и ext3 (в основном ext2 с включенным ведением журнала) поддерживают динамический рост файловой системы.

Сначала увеличьте логический том до нужного размера с помощью lvextend , затем запустите команду ext2online (или resize2fs ) на пути к LV:

Обратите внимание, что ext2online — довольно старая команда, и в более новых дистрибутивах Linux она была заменена на resize2fs.

Расширить файловую систему ext4

ext4 является преемником ext3 и де-факто стандартной файловой системой в наши дни в Linux. Он очень широко используется и хорошо интегрирован в ядро ​​Linux.

Сначала увеличьте логический том до нужного размера с помощью lvextend , затем запустите команду resize2fs на пути к LV:

Расширить файловую систему xfs

xfs с 2014 года поддерживается большинством дистрибутивов Linux в качестве типа файловой системы. Он стал типом файловой системы по умолчанию в дистрибутивах RHEL (Red Hat Enterprise Linux).

Сначала увеличьте логический том до нужного размера с помощью lvextend , затем запустите команду xfs_growfs на пути к точке монтирования (не LV!):

Расширить файловую систему btrfs

Btrfs — это файловая система, которая была добавлена ​​в ядро ​​Linux очень давно, но прошло много лет, прежде чем btrfs была признана достаточно стабильной для производственных систем. Преимуществом Btrfs является очень сложная технология моментальных снимков, сравнимая с ZFS.

Чтобы расширить файловую систему btrfs, используйте команду изменения размера файловой системы btrfs на смонтированном пути после расширения устройства (здесь LV):

Расширить файловую систему ReiserFS

ReiserFS был типом файловой системы по умолчанию на серверах SUSE/SLES несколько лет назад. После ареста изобретателя ReiserFS Ганса Райзера разработка ReiserFS прекратилась.

Сначала увеличьте логический том до нужного размера с помощью lvextend , затем выполните команду resize_reiserfs для пути к устройству:

Поделиться

С 2008 года Клаудио уже написал более 1000 статей в своем блоге. Он увлечен технологиями, особенно программным обеспечением с открытым исходным кодом. Как старший системный инженер он видел и решал множество проблем и пишет о них.

Читайте также: