LINUX.ORG.RU
решено ФорумAdmin

Как отресайзить /

 , ,


0

1

Короче, нужно добавить места на /dev/vda1 у провайдера DO. Везде пишут что нужно отмонтировать корень, но я не могу убить rsyslogd и systemd-j - они каждый раз создаются с новым PID. Остановить тоже не получается, в итоге что mount -o remount,ro и umount все время жалуются на то, что есть открытые на запись файлы (читай device is busy)

Мне нужно просто по сути добавить в дропплете места к текущему vds(дропплету) с фс ext4. Но оно не даётся никак.

Может кто подскажет как это сделать удаленно то? Локально я бы разлогинился в tty2 и все сделал, а тут не получается.

Везде пишут что нужно отмонтировать корень

Что за ерунду ты читаешь? Нужно из интерфейса гипервизора увеличить размер виртуального диска, потом при необходимоски пересканить размеры устройств, потом изменить размер раздела в разметке (mbr, gpt или lvm), потом расширить ФС.

Это всё на ходу делается, без даунтайма и отмонтирований. Пришли выводы:

lsblk -f
sudo fdisk -l
Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

спасибо за отклик. вот вывод:

rheinhart@rheinhartss:~$ lsblk -f
NAME    FSTYPE   LABEL           UUID                                 FSAVAIL FSUSE% MOUNTPOINT
loop0   squashfs                                                            0   100% /snap/core20/1518
loop1   squashfs                                                            0   100% /snap/core20/2015
loop2   squashfs                                                            0   100% /snap/lxd/22753
loop3   squashfs                                                            0   100% /snap/snapd/20092
loop4   squashfs                                                            0   100% /snap/lxd/24061
vda
├─vda1  ext4     cloudimg-rootfs 74dd579c-a377-487d-b8f7-bc7c6df13ba1    5.6G    41% /
├─vda14
└─vda15 vfat     UEFI            922E-54A6                              99.2M     5% /boot/efi
vdb     iso9660  config-2        2023-09-16-14-37-33-00
rheinhart@rheinhartss:~$ sudo fdisk -l
[sudo] password for rheinhart:
Disk /dev/loop0: 61.95 MiB, 64933888 bytes, 126824 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop1: 63.48 MiB, 66547712 bytes, 129976 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop2: 67.83 MiB, 71106560 bytes, 138880 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop3: 40.86 MiB, 42827776 bytes, 83648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop4: 91.85 MiB, 96292864 bytes, 188072 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/vda: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 2639D658-4A1F-4EBB-A35E-7175BFCD220A

Device      Start      End  Sectors  Size Type
/dev/vda1  227328 20971486 20744159  9.9G Linux filesystem
/dev/vda14   2048    10239     8192    4M BIOS boot
/dev/vda15  10240   227327   217088  106M EFI System

Partition table entries are not in disk order.


Disk /dev/vdb: 474 KiB, 485376 bytes, 948 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
NorthernBlow
() автор топика
Ответ на: комментарий от NorthernBlow

Я не знаю, какая точно конфигурация у тебя на гипервизоре (и какой у тебя он), можешь рассказать? У тебя virtio диск, он в оригинале файл или LVM раздел? Судя по поиску, нужны хитрости, чтобы гость без перезагрузки увидел, что размер увеличился:

https://serverfault.com/questions/1079347/how-to-get-linux-kernel-to-rescan-virtio-disks

https://forum.proxmox.com/threads/extend-rescan-virtio-disk-in-guest-vm.7989/

Но после того, как это сделано, по идее всё просто, судя по вот этому: https://superuser.com/questions/660309/live-resize-of-a-gpt-partition-on-linux

sgdisk -e /dev/vda # увеличиваем GPT разметку по размеру диска
partprobe /dev/vda # ресканим разметку
cgdisk /dev/vda # там в TUI увеличить раздел /dev/vda1 на максимум
resize2fs /dev/vda1 # увеличиваем размер ФС под раздел.
Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

https://imgur.com/a/5g09h3n

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

NorthernBlow
() автор топика
Ответ на: комментарий от NorthernBlow

sudo dmidecode -t system что выдает? Хотя может и само всё сделается, после увеличения нужно sudo fdisk -l /dev/vda проверить. Ну и если перезагрузка допустима, после неё точно всё сработает.

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.

Handle 0x0100, DMI type 1, 27 bytes
System Information
	Manufacturer: DigitalOcean
	Product Name: Droplet
	Version: 20171212
	Serial Number: 372937105
	UUID: 3fb52bf2-cee0-496d-b6c4-9b4e101a0944
	Wake-up Type: Power Switch
	SKU Number: Not Specified
	Family: DigitalOcean_Droplet

Handle 0x2000, DMI type 32, 11 bytes
System Boot Information
	Status: No errors detected
NorthernBlow
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid
Linux rheinhartss 5.4.0-162-generic #179-Ubuntu SMP Mon Aug 14 08:51:31 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.4 LTS
Release:	20.04
Codename:	focal
NorthernBlow
() автор топика
Последнее исправление: NorthernBlow (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

тогда впринципе можно ничего не отмонтировать хочешь сказать, а банально «отключить в панеле vds» перейти на тарифный план а дальше действовать согласно этой инструкции ?

Как отресайзить / (комментарий)

снапшот сделал, впринципе думаю если что-то зафейлю, то восстановлюсь.

И да, спасибо большое за помощь

NorthernBlow
() автор топика
Последнее исправление: NorthernBlow (всего исправлений: 2)
Ответ на: комментарий от NorthernBlow

Те утилиты, что я предложил использовать вслед за примером, лежат в пакетах parted и gdisk, их придется поставить.

Ситуация до:

root@debian12efi:~# lsblk -f /dev/sda
NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda                                                                           
├─sda1 vfat   FAT32       9207-04B1                                72M     7% /boot/efi
├─sda2 swap   1           02cf42ed-5fe7-4911-85a5-6b4527513f18                [SWAP]
└─sda3 ext4   1.0         f4c94d93-513a-48d4-843c-024a3c861dc6   26.2G     6% /
root@debian12efi:~# fdisk -l /dev/sda
Disk /dev/sda: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: VBOX HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 98EEA0A5-FF7F-4B00-8D79-15103DA710A8

Device       Start      End  Sectors  Size Type
/dev/sda1     2048   163839   161792   79M EFI System
/dev/sda2   163840  4069375  3905536  1.9G Linux swap
/dev/sda3  4069376 67106815 63037440 30.1G Linux filesystem

После увеличения диска и загрузки:

root@debian12efi:~# lsblk -f /dev/sda
NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda                                                                           
├─sda1 vfat   FAT32       9207-04B1                                72M     7% /boot/efi
├─sda2 swap   1           02cf42ed-5fe7-4911-85a5-6b4527513f18                [SWAP]
└─sda3 ext4   1.0         f4c94d93-513a-48d4-843c-024a3c861dc6   26.2G     6% /
root@debian12efi:~# fdisk -l /dev/sda
GPT PMBR size mismatch (67108863 != 134217727) will be corrected by write.
The backup GPT table is not on the end of the device.
Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Disk model: VBOX HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 98EEA0A5-FF7F-4B00-8D79-15103DA710A8

Device       Start      End  Sectors  Size Type
/dev/sda1     2048   163839   161792   79M EFI System
/dev/sda2   163840  4069375  3905536  1.9G Linux swap
/dev/sda3  4069376 67106815 63037440 30.1G Linux filesystem

Применяем измения и проверяем результат:

root@debian12efi:~# sgdisk -e /dev/sda
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
root@debian12efi:~# partprobe /dev/sda
root@debian12efi:~# parted /dev/sda
GNU Parted 3.5
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help                                                             
  align-check TYPE N                       check partition N for TYPE(min|opt) alignment
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all]            display the partition table, or available devices, or free space, or all found partitions
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  resizepart NUMBER END                    resize partition NUMBER
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  disk_set FLAG STATE                      change the FLAG on selected device
  disk_toggle [FLAG]                       toggle the state of FLAG on selected device
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information of GNU Parted
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 68.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  83.9MB  82.8MB  fat32                 boot, esp
 2      83.9MB  2084MB  2000MB  linux-swap(v1)        swap
 3      2084MB  34.4GB  32.3GB  ext4

(parted) resizepart 3 100%
Warning: Partition /dev/sda3 is being used. Are you sure you want to continue?
Yes/No? Yes                                                               
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 68.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  83.9MB  82.8MB  fat32                 boot, esp
 2      83.9MB  2084MB  2000MB  linux-swap(v1)        swap
 3      2084MB  68.7GB  66.6GB  ext4

(parted) quit                                                             
Information: You may need to update /etc/fstab.

root@debian12efi:~# resize2fs /dev/sda3
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/sda3 is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 8
The filesystem on /dev/sda3 is now 16268539 (4k) blocks long.

root@debian12efi:~# lsblk -f /dev/sda
NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda                                                                           
├─sda1 vfat   FAT32       9207-04B1                                72M     7% /boot/efi
├─sda2 swap   1           02cf42ed-5fe7-4911-85a5-6b4527513f18                [SWAP]
└─sda3 ext4   1.0         f4c94d93-513a-48d4-843c-024a3c861dc6   56.5G     3% /
root@debian12efi:~# fdisk -l /dev/sda
Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Disk model: VBOX HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 98EEA0A5-FF7F-4B00-8D79-15103DA710A8

Device       Start       End   Sectors  Size Type
/dev/sda1     2048    163839    161792   79M EFI System
/dev/sda2   163840   4069375   3905536  1.9G Linux swap
/dev/sda3  4069376 134217694 130148319 62.1G Linux filesystem

Я в примере расширял раздел через parted, мне так привычнее. Контрольная перезагрузка прошла нормально.

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

Огромное человеческое спасибо за труд! У меня просто многое на диске проделано и не хотелось эту штуку растерять из-за собственного невежества. Буду сейчас воспроизводить)

NorthernBlow
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

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

rheinhart@rheinhartss:~$ sudo fdisk -l /dev/vda
Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 2639D658-4A1F-4EBB-A35E-7175BFCD220A

Device      Start       End   Sectors  Size Type
/dev/vda1  227328 104857566 104630239 49.9G Linux filesystem
/dev/vda14   2048     10239      8192    4M BIOS boot
/dev/vda15  10240    227327    217088  106M EFI System

Partition table entries are not in disk order.

rheinhart@rheinhartss:~$ lsblk -f /dev/vda
NAME FSTYPE LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
vda
├─vda1
│    ext4   cloudimg-rootfs
│                 74dd579c-a377-487d-b8f7-bc7c6df13ba1   44.3G     8% /
├─vda14
│
└─vda15
     vfat   UEFI  922E-54A6                              99.2M     5% /boot/efi

на всякий случай оставлю это здесь, вдруг понадобится кому.

NorthernBlow
() автор топика
Последнее исправление: NorthernBlow (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

да дело в том, что я и собирался руками все это проделывать и как выше ты наблюдал, корень отмонтировать не получалось. Вернее не корень, а этот самый /dev/vda1 у меня был заблочен процессами с открытыми файлами на запись.

NorthernBlow
() автор топика
Ответ на: комментарий от NorthernBlow

Вернее не корень, а этот самый /dev/vda1

Это и есть у тебя корень.

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

Для справки, отмонтировать ФС при изменении размера нужно при его уменьшении, а не увеличении. Увеличение можно на ходу проводить.

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 4)
Ответ на: комментарий от firkax

Ты несешь чушь, явно видно, что ты не работал в энтерпрайзе.

Если говорить об изменениях размера виртуального диска, то энтерпрайзные решения это умеют на ходу. Более того, даже CPU и RAM можно докидывать без даунтайма, например в VMware vSphere.

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

И вот тут уже важно, какой гипервизор, потому что упомянутая выше VMware vSphere эмулирует SCSI диски, и необходимо зачастую руками давать ядру команду на рескан конфигурации диска: https://kerneltalks.com/disk-management/how-to-rescan-disk-in-linux-after-extending-vmware-disk/

Но у ТСа другой гипервизор, у него не эмулированый SCSI, а virtio диск, и там может быть хитрее, ссылки ему давал: Как отресайзить / (комментарий)

внешними утилитами ресайзят раздел (пока виртуалка выключена)

Вот тут я вживую провел увеличение размера / на виртуалке у себя, это реальный вывод: Как отресайзить / (комментарий) — да, это всё на ходу. VirtualBox, насколько помню, не дает ЖД размер на ходу менять, но размер раздела сам Linux отлично может.

у виртуалки где-нить в initramfs это прописано

Кое-что прописано в initramfs, но обычно Linux при загрузке всегда заного сканирует всё оборудование.

А в случае ТСа, как я полагаю, сперва гипервизор увеличил размер виртуального диска, потом агент гипервизора на госте провел процедуры по увеличению / на ходу. Это вполне реально настроить.

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

Это всё очень интересно, но автор выше сказал что виртуалку он выключал на время изменений.

Кое-что прописано в initramfs, но обычно Linux при загрузке всегда заного сканирует всё оборудование.

Причём тут сканирование? Речь шла про то что кто-то resize2fs вызвал незаметно.

гипервизор увеличил размер виртуального диска, потом агент гипервизора на госте провел процедуры по увеличению / на ходу. Это вполне реально настроить.

Агент гипервизора в это время был выключен вместе с виртуалкой.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

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

Не увидел тут выключения. Хотя может и было. Ну тогда после загрузки агент сделал свое дело.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

отключить дропплет

DO так виртуалки называют.

Ну тогда после загрузки агент сделал свое дело.

Может и так, но не исключен и более простой авторесайзер раздела в initramfs.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Дажде если виртуалка выключалась, а операция по расширению была выполнена внешними утилитами, то ядро Linux при загрузке все равно всё инициализирует заново, так что всё бы и так загрузилось. То есть вносить правки в initramfs незачем.

Хотя всё это требует даунтайма, потому странно, если делали так, а не на ходу, что вполне возможно.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Чего?

ядро Linux при загрузке все равно всё инициализирует заново

«Инициализировать заново» в данном случае означает сделать mkfs. А нам надо только модифицировать уже существующее (сделать resize2fs). Ни первое, ни второе ядро разумеется не запускает ни при загрузке, ни когда-либо ещё. И таблицу разделов оно само по себе не поменяет тоже. А вот в initramfs вполне можно засунуть ресайзеры для всех возможных файловых систем, не все умеют ресайзиться на лету, да и даже те что умеют - мне кажется надёжнее это делать до монтирования.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Как я продемонстрировал выше, увеличить размер / на ходу можно штатными средствами гостевого Linux без извращений.

Я не знаю, где он вычитал дичь, что / при расширении должен быть отмонтирован, но это попросту не так. Вот при сжатии — да.

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 2)
Ответ на: комментарий от firkax

Эм… что за муть ты придумал? Если уж мы выключаем виртуалку, то мы можем средствами гипервизора не только изменить размер виртуального диска, но и сменить на нём разметку и размеры ФС.

Достаточно подключить виртуальный диск как блочное устройство, а далее Linux на гипервизоре все сделает, как если бы это было с LiveCD.

И под инициализировать я имел в виду процесс получения ОС данных о текущей конфигурации, а не её изменение.

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 2)
Ответ на: комментарий от Vsevolod-linuxoid

Если уж мы выключаем виртуалку, то мы можем средствами гипервизора не только изменить размер виртуального диска, но и сменить на нём разметку и размеры ФС.

Можем, конечно. Вариантов много, у всех свои плюсы и минусы.

- Лезем напрямую гипервизором (не всегда желательно, но может быть в контексте DO-шных тарифов и оговора минусов не остаётся).

- Прописываем в начало initramfs детектор расширения диска (из плюсов то что оно никак не привязано не только к типу гипервизора, но и вообще универсально годится в т.ч. для реального железа, а так же клиент может по своему желанию это переделать, из минусов что если клиент становит кастомный дистр то этого не будет)

- Ставим демон который ты описал (из плюсов - мгновенный подхват изменений конфига, из минусов - лишний процесс, опять же на кастомном дистре его может не быть, не все ФС можно так на лету переделывать, ну и привязка к конкретной виртуалке, хотя в контексте DO это точно не важно).

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)