Изменение дискового пространства в CentOS

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

Начнем с классики, монтирование устройства как каталога. Добавляем в системный блок или виртуальную машину жесткий диск. Если CentOS его распознал в /dev появится соответствующее устройство, например, /dev/sdb.

Вводим команду fdisk -c -u /dev/sdb, ключ -c отключает режим совместимости с MSDOS, -u указывает использовать в качестве единицы измерения сектор. Для создания раздела вводим команду n и отвечаем на вопросы. Командой w записываем изменения на диск и выходим из fdisk’а через q.

На разделе /dev/sdb1 создаем файловую систему mkfs.ext4 -L DATA1 /dev/sdb1. Для удобства присваиваем метку DATA1. Создаем каталог mkdir /data_folder.

Теперь осталось примонтировать раздел к каталогу mount /dev/sdb1 /data_folder. Монтирование сохраниться до перезагрузки системы.

Чтобы раздел монтировался автоматически при загрузке необходимо добавить строку в файл /etc/fstab. Строка представляет набор параметров разделеных пробелами или табуляцией:

LABEL=метка_диска   точка_монтирования   файловая_система   опции   дампирование   проверка

В нашем случае добаляем строку:

LABEL=DATA1    /data_folder    ext4    defaults    0 0

Плюс данного способа — однозначность расположения данных. Все что записано в каталог /data_folder попадет на известный нам жесткий диск. Кроме того этот метод работает на любых сборках Linux.

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

Допустим CentOS установлен на виртуальной машине с диском 10 Гб. Останавливаем ВМ и увеличиваем жесткий диск до 15 Гб. Физический размер диска увеличился, однако, для операционной системы ничего не изменилось, она продолжает использовать старые данные из таблицы разделов и файловой системы.

Перед нами две основные задачи: изменение размеров раздела и изменение данных файловой системы. Обе эти задачи решаются утилитой parted. Но не в нашем случае. CentOS при установке по умолчанию использует систему виртуализации дисков Logical Volume Manager (LVM), с которой parted работать не умеет.

Будем делать вручную, используя fdisk удалим существующий раздел и создадим на его месте новый, требуемого размера. Оговорюсь, для этой операции не надо размонтировать раздел, не надо загружаться с rescue образа, данные файловой системы также не будут утеряны. Мы просто перепишем одну строку в таблице разделов, после перезагрузки CentOS примет ее к сведению.

Запускаем fdisk -c -u /dev/sda, вводим команду p. По умолчанию CentOS при установке создал два раздела /dev/sda1 и /dev/sda2 первый раздел загрузочный, второй используется LVM, на нем находятся все файла операционной системы. С ним мы и будем работать. Обратим внимание, что раздел (в моем случае) заканчивается сектором 20969471, а значение total sectors = 31456656. Эта разница, следствие изменения размера жесткого диска.

Запишем стартовый сектор раздела, например, 1026048. Командой d удаляем раздел sda2 (порядковый номер 2). Создаем новый раздел, командой n, пусть будет primary с порядковым номером 2. Задаем сектора начальный = 1026048, конечный = 31456655. Командой t меняем тип раздела на 8E (Linux LVM). Записываем сделанные изменения на диск командой w. Перегружаем ВМ.

Раздел расширен и использует добавленное нами место на жестком диске. Следующий шаг уведомить об этих изменениях LVM. Выполним команду lvm pvresize /dev/sda2. Результаты можно увидеть через lvm pvdisplay. Обратим внимание, что появились свободные блоки PE (physical exent), отметим для себя их количество 1280.

По умолчанию (для CentOS 6.2) создается два логических LVM тома (logical volume) для файла подкачки /dev/VolGroup/lv_swap и для файлов операционной системы /dev/VolGroup/lv_root. Просмотреть их можно командой lvm lvdisplay. Укажем LVM увеличить том lv_root за счет появившихся свободных PE блоков: lvm lvextend -l +1280 /dev/VolGroup/lv_root.

Посмотрите произошедшие изменения через команды pvdisplay и lvdisplay.

Последний штрих — изменение параметров файловой системы. Команда resize2fs /dev/VolGroup/lv_root.

Плюсы данного метода весьма сомнительны. Но есть ньюанс, в системе не создается новый раздел. Зачем это может понадобиться в реальной жизни — не знаю, разве что для эстетики.

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

Допустим, мы добавили в систему новый жесткий диск, устройство /dev/sdc. Размечаем устройство для использования LVM pvcreate /dev/sdc. Добавляем раздел в существующую LVM группу vgextend VolGroup /dev/sdc.

Смотрим данные по группе vgdisplay, видим свободные блоки PE, например FreePE = 5119. Смотрим данные по существующему логическому LVM разделу lvdisplay /dev/VolGroup/lv_root, например, CurrentLE = 1217. Вычисляем новый размер логического раздела 5119+1217=6336.

Расширяем логический раздел lvresize -l 6336 /dev/VolGroup//lv_root. Изменяем размер файловой системы находящейся на разделе resize2fs /dev/VolGroup/lv_root.

По мотивам статьи: http://adminland.ru/blog/dobavlenie-diskovogo-prostranstva-v-centos, спасибо большое автору.