- Adjust the size of a filesystem
- Resize a filesystem/partition
- Увеличение разделов в Linux на горячую
- План действий
- Сканируем диски в системе
- Меняем размер раздела
- Обычные разделы или LVM
- Большой диск GPT
- Увеличение файловой системы
- Обычная разметка
- LVM
- Итог
- TL;DR
- Как изменить размер раздела Linux
- Работа с разделами в GParted
- Меняем размер разделов диска с помощью fdisk
Adjust the size of a filesystem
A filesystem can be grown to make use of the free space after its partition. Often this is even possible while the filesystem is mounted.
To make space for another partition after the filesystem, it can be shrunk according to the free space within it.
Not all filesystems have resize support.
The partition size will be changed together with the filesystem size. It is also possible to resize a partition without a filesystem in the same way.
Resize a filesystem/partition
- Open Disks from the Activities overview.
- Select the disk containing the filesystem in question from the list of storage devices on the left. If there is more than one volume on the disk, select the volume which contains the filesystem.
- In the toolbar underneath the Volumes section, click the menu button. Then click Resize Filesystem… or Resize… if there is no filesystem.
- A dialog will open where the new size can be chosen. The filesystem will be mounted to calculate the minimum size by the amount of current content. If shrinking is not supported the minimum size is the current size. Leave enough space within the filesystem when shrinking to ensure that it can work fast and reliably. Depending on how much data has to be moved from the shrunk part, the filesystem resize may take longer time.
The filesystem resize automatically involves repairing of the filesystem. Therefore it is advised to back up important data before starting. The action must not be stopped or it will result in a damaged filesystem.
Увеличение разделов в Linux на горячую
Cheatsheet (шпаргалка) по увеличению объема разделов в Linux на горячую без выключения виртуальной машины.
Частая задача в моей текущей работе — увеличить объем раздела на виртуальной машине без выключения машины (на горячую). Под рукой постоянно держу небольшой cheatsheet (шпаргалку) по работе с разделами в Linux.
План действий
Перед изменением размеров разделов рекомендуется отмонтировать диск. Если диск системный, то нужно загружаться в recovery. Я делаю это на горячую на свой страх и риск.
- Делаем бекап машины! (не могу не написать этого)
- Увеличиваем объем диска в гипервизоре (этот пункт не затрагиваем)
- Сканируем диски в системе
- Меняем размер раздела
- Увеличиваем файловую систему
Сканируем диски в системе
После увеличения объема диска есть вероятность того, что в системе мы новый объем сразу не увидим. Проверяем. Я использую команду lsblk :
root@hostname.infra.local:/home/user# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT fd0 2:0 1 4K 0 disk loop0 7:0 0 99,2M 1 loop /snap/core/10908 loop2 7:2 0 99,2M 1 loop /snap/core/10958 sda 8:0 0 32G 0 disk ├─sda1 8:1 0 1M 0 part └─sda2 8:2 0 32G 0 part / sdb 8:16 0 4T 0 disk
Стрелкой я выделил диск, который мы увеличили до 5Т, но увеличенный объем не видим.
Нужно заставить систему просканировать диск.
echo 1 > /sys/block/sdb/device/rescan
Сразу после этого снова выполняем lsblk :
sdb 8:16 0 5T 0 disk └─sdb1 8:17 0 4T 0 part /pgsqldb
То что нужно. Перейдем к увеличению раздела.
Меняем размер раздела
Вообще, мы можем для любых вариантов использовать программу parted, но я покажу еще способ с программой fdisk. Он подходит для разделов объемом менее 4 терабайт.
Здесь будет несколько вариантов:
- у нас обычная разметка диска или LVM
- у нас диск c таблицей разметки GPT более 4 терабайт объемом
Рекомендую на этом этапе сначала выполнить команду parted -l , которая может показать ошибку и предложить опции Fix\\Ignore :
Warning: Not all of the space available to /dev/sdb appears to be used, you can fix the GPT to use all of the space (an extra 41943040 blocks) or continue with the current setting? Fix/Ignore? Fix
Обычные разделы или LVM
Чаще всего я пользуюсь программой fdisk. Можно посмотреть все наши диски\разделы: fdisk -l .
Так как меняем размер раздела на диске sdb , то и заходим в fdisk /dev/sdb.
Вводим команду p и получаем наш текущий список разделов:
Device Start End Sectors Size Type /dev/sdb1 2048 8589843750 8589841703 4T Linux filesystem
Удаляем раздел /dev/sdb1 : вводим команду d .
Command (m for help): d Selected partition 1 Partition 1 has been deleted.
Если разделов на диске больше, программа предложит ввести цифру нужного раздела.
Создаем новый раздел n :
Command (m for help): n Partition number (1-128, default 1): First sector (34-8589934558, default 2048): Last sector, +sectors or +size (2048-8589934558, default 8589934558): Created a new partition 1 of type 'Linux filesystem' and of size 4 TiB.
Обратите внимание, программа сообщает, что при создании раздела она нашла запись ext4 в разделе и предлагает удалить ее. Не удаляем. Нет! Не надо!
Partition #1 contains a ext4 signature. Do you want to remove the signature? [Y]es/[N]o: N
Опять вводим команду p , чтобы посмотреть новую информацию:
Device Start End Sectors Size Type /dev/sdb1 2048 10751953125 10751951078 5T Linux filesystem
Ну вроде все хорошо. Теперь вводим команду w (write). После этого ваши изменения запишутся на диск.
Большой диск GPT
Если по предыдущему пункту попробовать отресайзить диск большого объема (больше 4 терабайт), то появится ошибка Value out of range . Придется воспользоваться программой parted.
Делаем parted /dev/sdb и смотрим текущие разделы командой print :
(parted) print Model: VMware Virtual disk (scsi) Disk /dev/sdb: 4398GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 3299GB 3299GB ext4 primary
Меняем размер раздела командой resizepart 1 :
(parted) resizepart 1 Warning: Partition /dev/sdb1 is being used. Are you sure you want to continue? Yes/No? Yes End? [3299GB]? 4398GB
На вопрос End? пишем новый объем раздела. Если хотим расширить его до максимума, то цифры можно подсмотреть выше в выводе команды print : Disk /dev/sdb: 4398GB
Здесь изменения происходят сразу, поэтому при отсутствии вывода после предыдущей команды можно делать quit.
Увеличение файловой системы
Тут должно быть все просто. Разница только между разметками: обычная или LVM.
Обычная разметка
Просто выполняем команду resize2fs /dev/sdb1 :
root@hostname.infra.local:/home/user# resize2fs /dev/sdb1 resize2fs 1.44.1 (24-Mar-2018) Filesystem at /dev/sdb1 is mounted on /pgsqldb; on-line resizing required old_desc_blocks = 384, new_desc_blocks = 512 The filesystem on /dev/sdb1 is now 1073730212 (4k) blocks long.
LVM
Вообще, LVM позволяет добавлять физические диски (PV - physical volume) в VG - volume group, а в них создавать логические тома (LV - logical volume) примерно по такой схеме:
Следовательно, можно не ресайзить диск в гипервизоре, а добавить еще один. Затем добавить новый PV в VG.
Но мы идем путем джедая увеличения диска, поэтому в случае с LVM к ресайзингу файловой системы добавляется несколько команд.
Для просмотра информации о PV, VG, LV существуют команды pvs , vgs , lvs . И их более подробные варианты pvscan , vgscan , lvscan :
root@hostname:/home/user# pvs PV VG Fmt Attr PSize PFree /dev/sda5 t-ubuntu16-vg lvm2 a-- 49.52g 0 root@hostname:/home/user# vgs VG #PV #LV #SN Attr VSize VFree t-ubuntu16-vg 1 2 0 wz--n- 49.52g 0 root@hostname:/home/user# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root t-ubuntu16-vg -wi-ao---- 48.52g swap_1 t-ubuntu16-vg -wi-ao---- 1.00g
- Меняем размер PV pvresize /dev/sda1
- Увеличиваем размер LV до максимального lvextend -l +100%FREE /dev/mapper/vg1-dsads-lv-root
- Увеличиваем файловую систему на нужном разделе resize2fs /dev/mapper/vg1-dsads-lv-root
Итог
Смотрим, что у нас получилось df -h :
root@hostname.infra.local:/home/user# df -h Filesystem Size Used Avail Use% Mounted on udev 38G 0 38G 0% /dev tmpfs 7,5G 4,4M 7,5G 1% /run /dev/sda2 32G 24G 6,3G 79% / /dev/sdb1 5,0T 3,3T 1,5T 71% /pgsqldb
Видим новый объем. Все счастливы и довольны.
TL;DR
Кратко cheatsheet у меня выглядит так:
Смотрим, видит ли система новое место на дисках: lsblk , parted -l , fdisk -l
Если не видит: echo 1 > /sys/block/sda/device/rescan (вместо sda - нужный диск) fdisk /dev/sda (if sda)
d - удалить раздел который расширяешь
n - создать новый раздел (создастся с тем индексом, который удалишь)
В большинстве случаев везде ответы будут по умолчанию. Когда спросит про затирание метки - НЕ удалять
p - проверить что разделы имеют тот же вид что и в начале
w - записать изменения на диск
resize2fs /dev/sda1 (номер - индекс раздела)
lvextend -l +100%FREE /dev/mapper/vg1-dsads-lv-root
Если ошибка с gpt
💡 Подписывайтесь на Телеграм-канал, чтобы не пропускать новые статьи
Как изменить размер раздела Linux
Изменение размеров логических томов в Linux осуществляется сложнее, нежели в Windows, что связано с особенностями использования консольных команд и доступных графических приложений. Однако эта задача под силу любому пользователю, и приведенные далее инструкции помогут разобраться с тем, как выполнить ее быстро.
Работа с разделами в GParted
Не все юзеры Linux предпочитают использовать терминал, когда можно обойтись без него. К тому же новички в этой операционной системе не особо желают разбираться с активацией сложных команд. Поэтому в качестве первого варианта предлагаю ознакомиться с использованием программы GParted, которая представляет собой полноценную систему управления дисками.
GParted по умолчанию установлена в большинстве популярных дистрибутивов и их оболочках. Однако если при запуске окажется, что она отсутствует, используйте менеджер приложений или пользовательские репозитории для стандартной процедуры инсталляции. После этого приступайте к выполнению следующей инструкции.
- Запустите приложение через терминал, введя там gparted, или нажмите по созданному значку. В главном окне сразу можно выбрать диск, размер которого необходимо изменить, и нажать по кнопке «Изменить размер/Переместить» .
- Отобразится новое окно, где вы можете добавить свободное пространство к диску или же сжать том, освободив тем самым определенное количество мегабайт. Как только выставите новые настройки, подтвердите действие, чтобы закрыть это окно.
- В главном меню разверните всплывающее меню «Редактировать» и нажмите «Применить все операции» .
- В новом окне следите за прогрессом операции, а по ее завершении можете убедиться в том, что размер был успешно изменен.
Если все пространство уже распределено по разделам, учитывайте, что сначала его придется вернуть к нераспределенному, сжав один или несколько логических томов. Затем свободные мегабайты уже можно будет отнести к новому тому, расширив его.
Меняем размер разделов диска с помощью fdisk
Более гибкий, но сложный вариант изменения размера диска в Linux подразумевает использование консольной утилиты fdisk. Для выполнения расширения тома на все свободное пространство понадобится выполнить более десятка разных действий, но на все про все уйдет не больше 10 минут.
- Если вы пока не знаете, под какими метками располагается сам диск и его логические тома, используйте команду sudo fdisk -l, отобразив список со всеми секторами.
- Используйте команду umount /dev/sdb2 для размонтирования раздела. Замените его название на необходимое и учитывайте, что корневой том размонтировать так просто нельзя, понадобится загрузка с LiveCD.
- Далее укажите fdisk /dev/sdb , подключившись тем самым к указанному диску.
- Посмотрите все разделы, введя p и нажав на Enter .
- За удаление отвечает d; после активации этого атрибута понадобится ввести цифру раздела, который вы хотите удалить (при этом форматирования не происходит, все данные сохраняются).
- Последовательно активируйте n (новый раздел), p (основной) и 2 (замените на номер тома). При появлении уведомления о создании первого и последнего сектора подтверждайте операцию нажатием на Enter .
- Проверьте список томов еще раз через p , а затем нажмите w для сохранения изменений.
Осталось только указать файловой системе, что размер тома был расширен до максимального, поскольку пока отображается старое значение. Для этого сначала определите используемую файловую систему через df -T . Введите одну из трех следующих команд, отталкиваясь от полученной информации:
Для ext2/ext3/ext4 :
resize2fs /dev/vg_centos/lv_root
В командах номера разделов указаны в качестве примеров, вы же заменяете их на свои. Еще оставлю пример команды для монтирования диска, если ранее он был отключен:
Сделать это нужно уже после внесения всех изменений.
Для уменьшения размера раздела используйте последовательность команд:
umount /dev/vdb1 fsck -f /dev/vdb1 resize2fs /dev/vdb1 100M fdisk /dev/vdb
После ввода последней снова используйте последовательную активацию букв так, как это было показано в предыдущей инструкции, чтобы создать новый раздел. Кроме того, не забудьте смонтировать его обратно!