Добавление дискового пространства в CentOS

Тэги: 

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

Цель статьи дать общую картину по существующим путям решения.

Начнем с классики, монтирование устройства как каталога. Добавляем в системный блок или виртуальную машину жесткий диск. Если 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.

 

Комментарии

>> Плюсы данного метода

>> Плюсы данного метода весьма сомнительны. Но есть ньюанс, в системе не создается новый раздел.

Отнюдь! Для виртаулбокса как показала практика лучший вариант. Монтирование дополнительных дисков иногда встает боком.

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

Спасибо большое за статью.

Спасибо большое за статью. Перерыв интернет в поисках информации, но только здесь нашел действительно рабочую инструкцию. Удивительно, что при предыдущих попытках ничего не запорол :)

ОГРОМЕННОЕ СПАСИБО!!!!

ОГРОМЕННОЕ СПАСИБО!!!! Пробовал разобраться по другим статьям, но оказалось всё сложнее чем я думал. По Вашей статье получилось всё и с первого раза! Уфф. Круто!

Очень пригодилось в

Очень пригодилось в виртуальной машине, спасибо автору. Всё получилось сравнительно легко. Хотя сам процесс.... , команды не так очевидны как хотелось. Ещё раз спасибо за труд.

Я не чайник в технике и

Я не чайник в технике и компьютерах, поставил под свои сайты сервер с Centos у себя дома. А вот в Linux я чайник. Долго изучал Вашу статью, в итоге по ней удалось "довести до сведения системы", что она переехала с винта в 200 гигов на винт 500 Гб. До Вашей статьи я был уверен, что все изменения через fdisk ведут к потерям данных, тем более удаление раздела. В целом, инструкций много в сети, но только у Вас есть маааленькое, но очень важное для меня замечание, о том, что данные не пропадут, за что Вам огромное спасибо! И ещё за то, что Вы один из немногихи илм даже единственный написали, что не надо нтчего отмонтировать, да и вообще можно изменять раздел прямо из системы, лишь перезагрузить для применения изменений.
В общем, пресного благодарен!

Самая правильная статья.

Самая правильная статья.
На тестовом стенде сделал по 2 Варианту.
Плюсы: На лету, надежно 100%.

Вариант1 мне кажется рисковым.
Не понимал как можно удалить и создать раздел не потеряв данные.
В нете наткнулся на статью, что данные не тронутся.
Кто-то писал, что не грузиться система потом.
Почему раздел не отмаунтить?

Пока не наткунлся на эту статью. Но все равно. Почему бы раздел не отмаунтить и не сделать перед этим проверку?

Спасибо за статью, два дня

Спасибо за статью, два дня пытался расширит диск ВМ по разным мануала. Дело в том, что ПО развивается и статьи устаревают.
Хочу обратить внимание. Если вы устанавливаете CentOS 7 в ВМ поколение 2 MS Hyper-V (для запуска нужно отключить "Безопасную загрузку") создается диск с таблицей GPT, не зависимо от размера. По этому для корректной работы, после увеличения диска ПЕРВЫМ запустите /sbin/parted и дайте команду "p free". Вы получите сообщение об ошибке, копия GPT находится не в конце диска, необходимо выполнить Fix. Затем предупреждение, что не все пространство /dev/sda доступно для использования , нужно по фиксить таблицу GPT. Далее по инструкции , обязательно перегрузите ВМ после fdisk и меняем resize2fs на xfs_growfs.
Спасибо. Всем удачи.

Добавка к комментарию 26.03

Добавка к комментарию 26.03.17
Есть ВМ CentOS 7 Hyper-V поколение 2. Пытался решить проблему расширения на останавливая ВМ.
Hyper-V позволяет без проблем увеличить виртуальный диск ВМ2 на ходу. Чтобы увеличение увидел CentOS в терминале даем команду
echo 1 > /sys/class/scsi_disk/X:X:X:X/device/rescan
(у меня это 0.0.0.0 , можно проверить /sys/class/scsi_disk/). Запускаем /sbin/parted вводим P free, дважды Fix, и видим что диск увеличился. После этого fdisk ( по инструкции).
А вот потом пришлось делать reboot. Если кто знает как обойтись без перезагрузки, было бы отлично (/sbin/partprobe не помогло).
Спасибо.

Добавить комментарий.

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.