Это мое текущее состояние диска на физической машине CentOS:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_ecomwise-lv_root
50G 47G 267M 100% /
tmpfs 5.8G 0 5.8G 0% /dev/shm
/dev/sda1 485M 63M 397M 14% /boot
/dev/mapper/vg_ecomwise-lv_home
406G 158G 227G 41% /home
Как видите, мой корневой раздел почти заполнен, и мне нужно больше места, потому что в каталог / var нельзя записывать дополнительные файлы журналов. Эта проблема возникла после импорта огромной базы данных в каталог / var / lib / mysql.
У меня достаточно места на моем логическом томе lv_home, но я не знаю, как получить фрагмент из lv_home без форматирования и потери данных с любого из разделов. Возможно ли это или мне нужно найти другое решение?
Это можно сделать, используя комбинацию rezise2fs
, lvreduce
и lvextend
. Это довольно опасно, и я бы не рекомендовал делать это в системе с любыми данными, которые вам нужны. Но если вы хотите попробовать, процедура выглядит примерно так:
#Shrink the filesystem to 200G
resize2fs /dev/mapper/vg_ecomwise-lv_home 200G
#Use a bit larger to avoid fatal off-by-something errors
lvreduce -L 210G /dev/mapper/vg_ecomwise-lv_home
#Regrow the filesystem to fill the partition
resize2fs /dev/mapper/vg_ecomwise-lv_home
#Extend the volume by 50G
lvextend -L+50G /dev/mapper/vg_ecomwise-lv_root
#Grow the filesystem
resize2fs /dev/mapper/vg_ecomwise-lv_root
Если вы не хотите рисковать потерять данные из-за изменения размера раздела / файловой системы, почему бы не остановить MySQL, измените домашний каталог в my.cnf
, переместите базу данных в /home/mysql/db
или так, и позволить MySQL хранить свои данные в / home?
Это должно сработать, посмотрите справочные страницы, если вы хотите получить более подробную информацию о конкретных командах;
umount /home
resize2fs /dev/mapper/vg_ecomwise-lv_home {the size you want}
lvreduce -L-{the size you want} /dev/mapper/vg_ecomwise-lv_home
mount /home
lvextend -L +{the size you want} /dev/mapper/vg_ecomwise-lv_root
resize2fs /dev/mapper/vg_ecomwise-lv_root {the size you want}