@Only4You

Как увеличить место под раздел linux?

Добрый день, если вкратце, скачал готовое решение забикс на AlmaLinux и все бы ничего, но через неделю работы перестает работать, а после перезагрузки отваливается MySQL
Лог мускула писал о нехватке места на диске, хотя размер диска был около 7гб, а выделено было 100гб на HyperV.
Вчера начала углубленно копать и накопал следующее
В таком состоянии заббикс уже не работает, видно что места мало.
64451c122da7f247552218.jpeg
Это образец диска с пустой базой, с которой забикс работает неделю.
64451c46651d1662943391.jpeg
Разрабы выделили под базу всего 4,5 гб. Вопрос заключается в том, как расширить раздел /sda5 не потеряв ничего,. Несколько инструкции из интернета ломали систему.
  • Вопрос задан
  • 1315 просмотров
Пригласить эксперта
Ответы на вопрос 5
xotkot
@xotkot
хорошо есть и хорошо весьма
если кратко то в вашем случае будет примерно так:
lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/sda
echo ", +" | sudo sfdisk --no-reread -N 4 /dev/sda
echo ", +" | sudo sfdisk --no-reread -N 5 /dev/sda
sudo partx --update /dev/sda
lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/sda
sudo resize2fs -f /dev/sda5
lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/sda

с помощью lsblk контролируем состояния
первый sfdisk максимально раздвигает расширенный раздел, а второй sfdisk раздвигает уже сам раздел /dev/sda5
sfdisk работает тока с таблицей разделов
partx обновляет для ядра информацию по разделам на указанном диске
ну и под конец с помощью resize2fs расширяем файловую систему до значений в таблице разделов.

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

$ truncate -s 1G test.img
$ echo -e "label:dos\nsize=100M,bootable,type=L\nsize=200M,type=L\nsize=300M,type=L\ntype=Ex\nsize=+" | sfdisk test.img
Проверяется, чтобы сейчас никто не использовал этот диск... ОК
Диск test.img: 1 GiB, 1073741824 байт, 2097152 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт

>>> Заголовок скрипта принят.
>>> Создана новая метка DOS с идентификатором 0xa605c035.
test.img1: Создан новый раздел 1 с типом 'Linux' и размером 100 MiB.
test.img2: Создан новый раздел 2 с типом 'Linux' и размером 200 MiB.
test.img3: Создан новый раздел 3 с типом 'Linux' и размером 300 MiB.
test.img4: Создан новый раздел 4 с типом 'Extended' и размером 423 MiB.
test.img5: Создан новый раздел 5 с типом 'Linux' и размером 422 MiB.
test.img6: Done.

Новая ситуация:
Тип метки диска: dos
Идентификатор диска: 0xa605c035

Устр-во    Загрузочный  начало   Конец Секторы Размер Идентификатор Тип
test.img1  *              2048  206847  204800   100M            83 Linux
test.img2               206848  616447  409600   200M            83 Linux
test.img3               616448 1230847  614400   300M            83 Linux
test.img4              1230848 2097151  866304   423M             5 Расширенный
test.img5              1232896 2097151  864256   422M            83 Linux

Таблица разделов была изменена
Синхронизируются диски.

$ losetup --partscan --show --find test.img
/dev/loop0

$ lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/loop0
NAME           TYPE FSTYPE  SIZE FSSIZE MOUNTPOINT
/dev/loop0     loop           1G
├─/dev/loop0p1 part         100M
├─/dev/loop0p2 part         200M
├─/dev/loop0p3 part         300M
├─/dev/loop0p4 part           1K
└─/dev/loop0p5 part         422M

$ mkfs.ext4 /dev/loop0p5
$ mkdir /tmp/mnt
$ sudo mount /dev/loop0p5 /tmp/mnt

$ lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/loop0
NAME           TYPE FSTYPE  SIZE FSSIZE MOUNTPOINT
/dev/loop0     loop           1G
├─/dev/loop0p1 part         100M
├─/dev/loop0p2 part         200M
├─/dev/loop0p3 part         300M
├─/dev/loop0p4 part           1K
└─/dev/loop0p5 part ext4    422M 385,2M /tmp/mnt


$ truncate -s +1G test.img
$ sudo losetup --verbose --set-capacity /dev/loop0

$ lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/loop0
NAME           TYPE FSTYPE  SIZE FSSIZE MOUNTPOINT
/dev/loop0     loop           2G
├─/dev/loop0p1 part         100M
├─/dev/loop0p2 part         200M
├─/dev/loop0p3 part         300M
├─/dev/loop0p4 part           1K
└─/dev/loop0p5 part ext4    422M 385,2M /tmp/mnt


$ echo ", +" | sudo sfdisk --no-reread -N 4 /dev/loop0
$ sfdisk --dump /tmp/test.img
label: dos
label-id: 0xa605c035
device: /tmp/test.img
unit: sectors
sector-size: 512

/tmp/test.img1 : start=        2048, size=      204800, type=83, bootable
/tmp/test.img2 : start=      206848, size=      409600, type=83
/tmp/test.img3 : start=      616448, size=      614400, type=83
/tmp/test.img4 : start=     1230848, size=     2963456, type=5
/tmp/test.img5 : start=     1232896, size=      864256, type=83

$ echo ", +" | sudo sfdisk --no-reread -N 5 /dev/loop0
$ sfdisk --dump /tmp/test.img
label: dos
label-id: 0xa605c035
device: /tmp/test.img
unit: sectors
sector-size: 512

/tmp/test.img1 : start=        2048, size=      204800, type=83, bootable
/tmp/test.img2 : start=      206848, size=      409600, type=83
/tmp/test.img3 : start=      616448, size=      614400, type=83
/tmp/test.img4 : start=     1230848, size=     2963456, type=5
/tmp/test.img5 : start=     1232896, size=     2961408, type=83

$ sudo partx --update /dev/loop0
$ lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/loop0
NAME           TYPE FSTYPE  SIZE FSSIZE MOUNTPOINT
/dev/loop0     loop           2G
├─/dev/loop0p1 part         100M
├─/dev/loop0p2 part         200M
├─/dev/loop0p3 part         300M
├─/dev/loop0p4 part           1K
└─/dev/loop0p5 part ext4    1,4G 385,2M /tmp/mnt

$ sudo resize2fs /dev/loop0p5
$ lsblk -p -o NAME,TYPE,FSTYPE,SIZE,FSSIZE,MOUNTPOINT /dev/loop0
NAME           TYPE FSTYPE  SIZE FSSIZE MOUNTPOINT
/dev/loop0     loop           2G
├─/dev/loop0p1 part         100M
├─/dev/loop0p2 part         200M
├─/dev/loop0p3 part         300M
├─/dev/loop0p4 part           1K
└─/dev/loop0p5 part ext4    1,4G   1,3G /tmp/mnt

$ sudo umount /tmp/mnt
$ losetup -d /dev/loop0
Ответ написан
@Drno
надо расширить раздел линукса. т.к. видимо он не видит всё место, которое выделено

если Вы взяли готовый образ, в котором размер 7гб и запустили его - то теперь только делать клон виртуалки, например с помощью clonezilla на более большой диск
после клонирования надо будет увеличить раздел в самой системе.
у меня обычно 1 раздел, поэтому я пользуюсь вот такой инструкцией, видимо её надо будет адаптировать
spoiler

As a matter of fact, you CAN enlarge the root filesystem while Ubuntu is running (I learned this recently myself here) - this sounds incredible but it's true :)

Here's the list of steps for a simple scenario where you have two partitions, /dev/sda1 is an ext4 partition the OS is booted from and /dev/sdb2 is swap. For this exercise we want to remove the swap partition an extend /dev/sda1 to the whole disk.

As always, make sure you have a backup of your data - since we're going to modify the partition table there's a chance to lose all your data if you make a typo, for example.

Run sudo fdisk /dev/sda

use p to list the partitions. Make note of the start cylinder of /dev/sda1
use d to delete first the swap partition (2) and then the /dev/sda1 partition. This is very scary but is actually harmless as the data is not written to the disk until you write the changes to the disk.
use n to create a new primary partition. Make sure its start cylinder is exactly the same as the old /dev/sda1 used to have. For the end cylinder agree with the default choice, which is to make the partition to span the whole disk.
use a to toggle the bootable flag on the new /dev/sda1
review your changes, make a deep breath and use w to write the new partition table to disk. You'll get a message telling that the kernel couldn't re-read the partition table because the device is busy, but that's ok.
Reboot with sudo reboot. When the system boots, you'll have a smaller filesystem living inside a larger partition.

The next magic command is resize2fs. Run sudo resize2fs /dev/sda1 - this form will default to making the filesystem to take all available space on the partition.

That's it, we've just resized a partition on which Ubuntu is installed, without booting from an external drive.
источник
https://askubuntu.com/questions/116351/increase-pa...
Ответ написан
Комментировать
@Zerg89
Я бы разметил остаток диска и подключил бы его как /var/lib/mysql1 перенес данные и переподключил как /var/lib/mysql

Подсказки
man fdisk
man mount
Ответ написан
Комментировать
@ProFfeSsoRr
Сис.админ по Linux
хотя размер диска был около 7гб, а выделено было 100гб на HyperV

В такой ситуации проще на свободное место создать рядом еще один раздел, скопировать на него эти ваши 7Гб, и так у вас появится время научится на другой виртуальной машине расширять диски. Когда научитесь - эти 7 гб добавите.
Ответ написан
Комментировать
@Stanislavvv
Linux System Administrator
Варианты:
1) загрузиться с чего-нибудь live (тот же кноппикс подойдёт) и при помощи гуёвого gparted/qtparted подвигать/ресайзить разделы как угодно
2) поставить в систему parted — то же самое, но в командной строке
3) на диске есть свободное НЕРАЗМЕЧЕННОЕ место — сделать там раздел побольше, перетащить туда данные с сохранением owner/perms и смонтировать на старое место.
4) на каком-то разделе есть свободное место - создать там каталог, перетащить туда данные (не забываем про права на файлы опять же!), на старом месте либо сделать симлинк на новое, либо mount --bind /new /old (тут надо ещё в fstab вписать)

А вообще, готовое решение в виде вм - оно больше для демонстрации типа "ОНО РАБОТАЕТ!!!"
Лучше заранее приготовиться и ставить хотя бы в докер, разбив диск так, как надо, а не так, как хз кто придумал.
Как минимум, для zabbix в докере, запущенном в вм вполне себе достаточно одного большого раздела в / + на всякий случай swap.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы