В поисках решения по расширению дискового пространства в CentOS можно найти немало полезных статей в Интернете. Как и в случае с SELINUX выбор достаточно велик – каждый более-менее опытный сисадмин предлагает проверенный на собственной практике способ, не соотнося его при этом с прочими возможностями. Между тем при всем обилии технической информации начинающим достаточно сложно сориентироваться. Сегодня мы попытаемся обобщить всевозможные пути решения данной проблемы.
Данный метод больше подходит для работы с виртуальными машинами, в которых изменение размеров жесткого диска – вполне естественное дело. Также функционал ВМ предусматривает возможность объединять разделы на одном физическом диске.
Предположим, что CentOS устанавливается на ВМ с выделенным дисковым пространством размером в 10 Гб. Достаточно остановить виртуальную машину и увеличить жесткий диск до 15-20 Гб. При этом физический размер HDD-диска увеличился, но операционная система по-прежнему видит все без изменений, продолжая использовать старые из таблиц разделов и файловых систем.
В данном случае перед пользователем возникает сразу две задачи. Первая заключается в изменении данных по файловой системе, а вторая – в смене размеров раздела. Как правило, для их решения используется утилита parted, однако в данном случае она не подходит. Дело в том, что в CentOS по умолчанию при установке используется система дисковой виртуализации LVM (Logical Volume Manager). А с ней, как известно, parted не умеет работать.
Воспользуемся fdisk и удалим существующий раздел, создав на его месте новый раздел нужного размера. Эта операция не требует загрузки с образа rescue и размонтированием раздела, а данные файловой системы останутся в сохранности. Все чем мы ограничимся – изменение в таблице разделов одной строки – при последующей перезагрузке она будет принята к сведению CentOS.
Для этого запустим fdisk –c –u /dev/sda и прописываем команду p. CentOS по дефолту создаст два раздела при установке dev/sda1, dev/sda2. Первый – загрузочный раздел, а на втором хранятся все файлы ОС, и его использует LVM. С последним нам и предстоит поработать.
Теперь нужно записать для раздела стартовый сектор – пусть это будет 1026048. Используя команду d необходимо удалить раздел sda2, который идет порядковым номером 2. Используя команду n, создадим новый Primary-раздел под порядком номером 2. При заданном начальном секторе (1026048), задаем конечный сектор со значением 31456655. Далее меняем тип раздела командой t на 8E (Linux LVM). Сделанные изменения нужно записать на диск, используя команду w, после чего перезагрузить виртуальную машину.
После перезагрузки нам нужно уведомит LVM о внесенных изменениях, выполнив lvm pvresize /dev/sda2 Через lvm pvdisplay просмотрим результат проделанных манипуляций, отметив для себя количество свободных PE блоков. В данном случае из 1280.
Для файлов CentОС /dev/VolGroup/lv_root , а также файла подкачки /dev/VolGroup/lv_swap по умолчанию будет создано 2 логических тома LVM, которые также можно посмотреть через lvm display. Здесь нужно «попросить» LVM расширить lv_root за счет не занятых PE-блоков, которые появились:
lvm lvextend -l +1280 /dev/VolGroup/lv_root
Последнее, что нам предстоит сделать, это изменить параметры файловой системы, используя следующую команду: resize2fs /dev/VolGroup/lv_root.
Многие полагают, что данный метод имеет достаточно сомнительные преимущества в сравнении с классическим вариантом. Кроме того новый раздел в системе не создается.
Классический способ – это монтировать устройства каталогом. Для этого нужно добавить в виртуальную машину либо подключить к системному блоку жесткий диск. При распознавании его CentOS в /dev должно появиться новое устройство (к примеру /dev/sdb).
Теперь нужно ввести команду fdisk – c – u /dev/sdb, где ключом – u мы просим использовать сектор в качестве единицы измерения, в - с – производим отключение режима совместимости с MSDOS. Для того чтобы создать новый раздел нам нужно ввести команду n и ответить на последующие запросы. Далее используя команду w, мы запишем на диск внесенные изменения, после чего, применив q – осуществляем выход из fdisk.
Далее в разделе /dev/sdb1 необходимо создать новую file system mkfs.ext4 -L DATA0 /dev/sdb1 (в данном случае можно присвоить метку DATA1 для удобства). После нам нужно создать mkdir /data_folder –каталог и монтировать к нему раздел: mount /dev/sdb1 /data_folder.
Для монтирования раздела в автоматическом режиме при загрузке нужно добавить в файл /etc/fstab строку параметров
LABEL=DATA0 /data_folder ext4 defaults 0 0
где DATA0 – дисковая метка, data folder – место, куда монтируется раздел, ext4 – файловая система, defaults – опции, 0 – дампирование, 0 – проверка.
Данный способ имеет одно неоспоримое преимущество – нам известно, на какой диск попадают все данные, записанные в каталоге /data_folder. Данный метод можно использовать на любой Linux-сборке.
В данном варианте мы создаем новый раздел и добавляем его в LVM-группу. Для того чтобы создать раздел потребуется добавить новый HDD-диск в систему либо расширить дисковое пространство в виртуальной машине и создать раздел на вновь появившемся свободном месте.
К примеру, мы добавляем в ОС новое дисковое устройство /dev/sdc. Далее необходимо разметить его для того, чтобы использовать в LVM pvcreate /dev/sdc. Теперь добавим раздел в уже существующую группу LVM vgextend VolGroup /dev/sdc.
Данные группы, опять же можно посмотреть в vgdisplay. Здесь нас интересуют свободные PE-блоки (возьмем, к примеру, значение FreePE = 5119). Теперь просматриваем данные lvdisplay /dev/VolGroup/lv_root по созданному LVM-разделу. Пусть значение CurrentLE будет 1217. Зная эти параметры можно вычислить новый размер для логических дисков, сложив значения FreePE и CurrentLE (=6336).
Последний этап сводится к расширению логического раздела lvresize -l 6336 /dev/VolGroup//lv_root и изменению в нем файловой системы resize2fs /dev/VolGroup/lv_root.
Вас также может заинтересовать: