img

Как расширить диск сервера в CentOS?

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

Ну просто очень частый кейс: создается виртуальная машина на Linux ОС (Hyper-V или VMware, не важно), которая работает длительное время. Но в один прекрасный момент, память сервера переполняется и приходится расширять диск. В виртуализации (гипервизоре) это сделать очень просто - нарастить виртуальный диск с физического. А что делать внутри виртуалки, где живет Linux/CentOS?

В статье мы расскажем, как расширить пространство памяти (диск) на сервера под управлением Linux/CentOS, последовательно управляя PV (Physical Volume, физические тома), VG (Volume Group, группа томов) и LV (Logical Volume, логические разделы).

Как расширить диск сервера в CentOS?

А вообще мы можем расширить диск или нужно создать новый?

Это очень важный пункт. Обязательно проверьте вот что: дело в том, что диск разделенный на 4 раздела более не сможет быть расширен. Проверить это легко. Подключаемся к серверу CentOS и вводим команду fdisk -l:

# fdisk -l
Disk /dev/sda: 187.9 GB, 187904819200 bytes
255 heads, 63 sectors/track, 22844 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          25      200781   83  Linux
/dev/sda2              26        2636    20972857+  8e  Linux LVM

Если вывод команды у вас выглядит так, как показано выше - все хорошо. У вас пока только два раздела - /dev/sda1 и /dev/sda2. Можно создать еще два.

Однако, если вывод команды будет выглядеть вот так:

# fdisk -l

Disk /dev/sda: 187.9 GB, 187904819200 bytes
255 heads, 63 sectors/track, 22844 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          25      200781   83  Linux
/dev/sda2              26        2636    20972857+  8e  Linux LVM
/dev/sda3            2637       19581   136110712+  8e  Linux LVM
/dev/sda4           19582       22844    26210047+  8e  Linux LVM

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


Создаем новую партицию

Проверяем что у нас на физических дисках командой fdisk -l

# fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         391     3036285   8e  Linux LVM

Сервер видит 10.7 ГБ места на диске. Начинаем создавать новую партицию (раздел) командой fdisk /dev/sda. После запроса ввода команды, указываем n, чтобы создать новую партицию:

# fdisk /dev/sda

The number of cylinders for this disk is set to 1305.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n

В следующем разделе конфигурации, указываем ключ p чтобы создать раздел. Тут будьте внимательны - самый первый пункт нашей статьи - у вас должно быть на этот момент строго меньше 4 партиций на диске!

Command action
e   extended
p   primary partition (1-4)
 p

На следующем экране задаем номер для партиции. Так как у нас уже есть партиции /dev/sda1 и /dev/sda2, то следуя порядковому номеру, мы указываем цифру 3:

Partition number (1-4): 3

В следующем пункте, мы рекомендуем нажать Enter дважды, то есть принять предложенные по умолчанию значения:

First cylinder (392-1305, default 392): 
Using default value 392
Last cylinder or +size or +sizeM or +sizeK (392-1305, default 1305): 
Using default value 1305

Отлично. Теперь мы меняем типа нашего раздела. Для этого, в следующем меню нажимаем ключ t, указываем номер партиции, который только что создали (напомним, это был номер 3), 3, а в качестве Hex code укажем 8e, а дальше просто Enter:

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)

Готово. Мы вернулись в основное меню утилиты fidsk. Сейчас ваша задача указать ключ w и нажать Etner, чтобы сохранить опции партиций на диске:

Command (m for help): w

После, что самое важное этого метода - перезагружать ничего не нужно! Нам просто нужно заново сканировать партиции утилитой partprobe:

#  partprobe -s

Если команда выше не работает, то попробует сделать с помощью partx:

#  partx -v -a /dev/sda

И если уже после этого у вас не появляется новая партиция - увы, вам придется согласовать время перезагрузки сервера и перезагрузить его. Успешным результатом этого шага будет вот такой вывод команды fdisk, где мы видим новую партицию:

# fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         391     3036285   8e  Linux LVM
/dev/sda3             392        1305     7341705   8e  Linux LVM

Расширяем логический раздел LV с новой партиции

Теперь наша задача следующая: создаем физический том (PV) из новой партиции, расширяем группу томов (VG) из под нового объема PV, а затем уже расширяем логический раздел LV. Звучит сложно, но поверьте, это легко!

Итак, по шагам: создаем новый физический том (PV). Важно: у вас может быть не /dev/sda3, а другая, 4, например, или вообще /dev/sdb3! Не забудьте заменять в командах разделы, согласно вашей инсталляции.

# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created

Отлично. Теперь находим группу томов (VG, Volume Group). А точнее, ее название. Делается это командой vgdisplay:

# vgdisplay
--- Volume group ---
VG Name               MerionVGroup00
...

Найдено. Наша VG называется MerionVGroup00. Теперь мы ее расширим из пространства ранее созданного PV командой vgextend:

# vgextend MerionVGroup00 /dev/sda3
Volume group "MerionVGroup00" successfully extended

Теперь расширяем LV из VG. Найдем название нашей LV, введя команду lvs:

#  lvs
  LV      VG        Attr       LSize
  MerionLVol00    MerionVGroup00 

MerionLVol00 - найдено.Расширяем эту LV, указывая до нее путь командой lvextend /dev/MerionVGroup00/MerionLVol00 /dev/sda3:

# lvextend /dev/MerionVGroup00/MerionLVol00 /dev/sda3
Extending logical volume MerionLVol00 to 9.38 GB
Logical volume MerionLVol00 successfully resized

Почти у финиша. Единственное, что осталось, это изменить размер файловой системы в VG, чтобы мы могли использовать новое пространство. Используем команду resize2fs:

# resize2fs /dev/MerionVGroup00/MerionLVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/MerionVGroup00/MerionLVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/MerionVGroup00/MerionLVol00 to 2457600 (4k) blocks.
The filesystem on /dev/MerionVGroup00/MerionLVol00 is now 2457600 blocks long.

Готово. Проверяет доступное место командой df -h. Enjoy!


Получаете ошибку в resize2fs: Couldn't find valid filesystem superblock

Если вы получили ошибку вида:

$ resize2fs /dev/MerionVGroup00/MerionLVol00
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/MerionVGroup00/MerionLVol00
Couldn't find valid filesystem superblock.

Это значит, что у вас используется файловая система формата XFS, вместо ext2/ext3. Чтобы решить эту ошибку, дайте команду xfs_growfs:

$  xfs_growfs /dev/MerionVGroup00/MerionLVol00
meta-data=/dev/MerionVGroup00/MerionLVol00 isize=256    agcount=4, agsize=1210880 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=4843520, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Как тебе такое, Илон Маск?

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Системное администрирование
Скидка 10%
Администратор Linux
Стань Linux администратором и сделай весомый шаг в сторону карьеры в DevOps. Самые важные знания от сертифицированного и практикующего тренера с 20 летним стажем
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Fail2ban — это программное обеспечение, которое защищает ваш сервер от атак. ПО отслеживает журналы сервера и выявляет любую под
img
Виртуализация серверов — популярная тема в мире ИТ, особенно на уровне предприятий. Она позволяет разным операционным системам з
img
  Введение Системные вызовы выступают в роли посредников между приложениями и ядром. Они создают уровень абстракции, который защ
img
  Введение SWAP (SWAP-память или SWAP-пространство) – это раздел жесткого диска или SSD компьютера, где операционная система (ОС
img
  Введение Абсолютные и относительные пути определяют расположение файла или каталога в файловой системе. Это набор инструкций д
img
  Введение Файлы конфигурации Linux определяют поведение и функциональное наполнение операционной системы. Файлы конфигурации –
21 ноября
20:00
Бесплатный вебинар
Введение в Docker