По воле случая, заапгрейдили мне рабочий комп, докупив ему оперативной памяти и SSD диск. Если с оперативой как обычно никогда не возникает проблем - вставил и заработало, то вот с SSD сразу же возник вопрос: что с ним делать? Первое что приходит в голову - установить новую систему. Однако если устанавливать систему заново, потом устанавливать кучу программ, всякие VPN-ы, сертификаты и прочую дребедень, которая повседневно используется... И главное не забыть какой нить файлик, который как всегда понадобится именно тогда, когда его удаляешь. Для этого всего безобразия я слишком ленив. Да и тратить столько времени мне просто жалко. Поэтому второй вариант, который более правильный - разделение и перенос системы.
На моём компе стоит терабайтный HDD с установленной Linux Mint под управлением LVM. При этом, выделен только 1 раздел, куда установлена система. Мне нужно было перенести систему на SSD без "хомяка" и прочих не столь важных для ее работы разделов, чтобы она шустрее работала и сделать загрузку через UEFI, так как текущая система загружалась через BIOS загрузчик. Другими словами, мне нужно было как минимум разбить один большой раздел на несколько, ядро системы и загрузчик перенести на SSD, остальное оставить на HDD.
Понимая, что задачка не такая уж и тривиальная, как может показаться на первый взгляд, я обратился к всемирному разуму, дабы поинтересоваться, как с подобными задачами другой честной народ справляется. Учитывая, что я с LVM не работал вообще в принципе (поставил и забыл), я надеялся увидеть примерно приблизительно развернутые ответы, что и как делать. Но увы и ах. Всемирный разум говорил, что всё "легко и просто" без каких либо подробностей. На практике же всё оказалось совсем не так уж "легко и просто", а порой даже не совсем очевидно, что нужно именно делать именно так, а не иначе.
Собрав небольшую горсть информации и прежде чем с ножом кидаться на рабочую систему, я решил провести ряд экспериментов на VirtualBox, чтобы удостовериться в правильности своих действий. И уж только после успешно проведенной работы производить эти же действия на рабочей системе. В любом случае, если кто решится делать подобные изменения на своей системе, настоятельно рекомендую найти любой способ сделать backup, так как некоторые операции, которые вы будете производить будут необратимыми и вы уже не сможете восстановить систему путём "отката".
Итак, поехали. Грузимся с загрузочного Mint (flash-drive) и переходим на root-а. Лучше сразу загрузиться через UEFI, дабы в дальнейшем не пришлось перегружаться. В чем разница и для чего это требуется, я расскажу позже.
mint@mint:~$ sudo su -
Для начала разберемся с HDD и произведем все нужные разметки
Создаём разделы для монтирования
root@mint:~# cd /mnt root@mint:/mnt# mkdir root core opt srv tmp timeshift home
Смотрим какие есть разделы на физических разделах и LVM
root@mint:/mnt# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 1.9G 1 loop /rofs sda 8:0 0 931.5G 0 disk └─sda1 8:1 0 931.5G 0 part ├─vgmint-root 253:0 0 915.7G 0 lvm └─vgmint-swap_1 253:1 0 15.7G 0 lvm sdb 8:16 0 232.9G 0 disk sdc 8:32 1 59.8G 0 disk ├─sdc1 8:33 1 2G 0 part /cdrom ├─sdc2 8:34 1 3.9M 0 part └─sdc3 8:35 1 57.8G 0 part /var/log root@mint:/mnt# lvdisplay --- Logical volume --- LV Path /dev/vgmint/root LV Name root VG Name vgmint LV UUID gNba7J-a7jh-2g0x-cYwB-c43Q-dbqt-f4I71V LV Write Access read/write LV Creation host, time mint, 2019-01-17 07:41:57 +0000 LV Status available # open 0 LV Size 915.64 GiB Current LE 234404 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/vgmint/swap_1 LV Name swap_1 VG Name vgmint LV UUID fz1oMO-8y04-OglL-R6qA-x5jd-XvIm-jJtiyy LV Write Access read/write LV Creation host, time mint, 2019-01-17 07:41:57 +0000 LV Status available # open 0 LV Size <15.68 GiB Current LE 4014 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1
Подключаем корневой раздел
root@mint:/mnt# mount /dev/vgmint/root /mnt/root
Проводим анализ занятости разделов, сколько есть и сколько нам требуется для разделения
root@mint:/mnt# cd /mnt/root/ root@mint:/mnt/root# du -d 1 -h . 4.0K ./proc 16K ./lost+found 1.6G ./lib 12K ./dev 12G ./var 815M ./opt 44G ./timeshift 124K ./run 88K ./lib32 4.0K ./lib64 8.0K ./mnt 276G ./home 152M ./root 16K ./media 19M ./etc 4.0K ./srv 9.8G ./usr 4.0K ./cdrom 21M ./sbin 18M ./bin 4.0K ./sys 140K ./tmp 318M ./boot 344G .
Пока данная операция занимается подсчетами, открываем еще одну вкладку (или консоль) и проверяем достаточно ли места для дальнейших операций
mint@mint:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 16G 0 16G 0% /dev tmpfs 3.2G 9.4M 3.1G 1% /run /dev/sdc1 2.1G 2.1G 0 100% /cdrom /dev/loop0 1.9G 1.9G 0 100% /rofs /cow 16G 132M 16G 1% / /dev/disk/by-label/writable 57G 55M 54G 1% /var/log tmpfs 16G 0 16G 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 16G 0 16G 0% /sys/fs/cgroup tmpfs 16G 504K 16G 1% /tmp tmpfs 3.2G 36K 3.2G 1% /run/user/999 /dev/mapper/vgmint-root 901G 344G 512G 41% /mnt/root
Мне требуется для разделов opt, srv, tmp, timeshift и home выделить отдельные разделы (для каждого свой). По моим подсчетам, первым трём я решил отдать по 10GB, timeshift - 100GB, для "хомяка" - всё оставшееся свободное пространство, которое останется после всех операций. В итоге, после получения всей статистики по дискам у меня получилось 10+10+10+100+276 = 406GB - это минимальный размер, который мне требуется. Учитывая, что на HDD осталось 512G свободного пространства, я могу спокойно продолжать перенос безо всяких дополнительных операций. Если же получится так, что у вас недостаточно места для этого, придётся делать перенос в несколько этапов. Например, сначала перенести home директорию, далее ее удалить, после выделить место под другой раздел или разделы, зачистить и так далее. В моём случае, для системы будет достаточно комфортно, если я раздел /dev/vgmint/root уменьшу до 400GB
Отключаем раздел
root@mint:/mnt/root# cd / root@mint:/# umount /dev/vgmint/root
Выполняем проверку диска
root@mint:/mnt# e2fsck -fy /dev/vgmint/root
e2fsck 1.45.5 (07-Jan-2020)
Pass 1: Checking inodes, blocks, and sizes
Inode 37752975 extent tree (at level 2) could be narrower. Optimize? yes
Inode 37752989 extent tree (at level 2) could be narrower. Optimize? yes
Inode 38409143 extent tree (at level 1) could be narrower. Optimize? yes
Pass 1E: Optimizing extent trees
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vgmint/root: ***** FILE SYSTEM WAS MODIFIED *****
/dev/vgmint/root: 2574010/60014592 files (1.2% non-contiguous), 94050912/240029696 blocks
Уменьшаем размер файловой системы. Указываем, что новый размер будет равен 400GB. Данная операция достаточно трудоемкая и занимает значительное время. Поэтому наберитесь терпения (чаем и печеньками). В моем случае, она заняла порядка 5 часов, возможно и больше, так как точное время не замерял.
root@mint:/# resize2fs -p /dev/vgmint/root 400G
resize2fs 1.45.5 (07-Jan-2020)
Resizing the filesystem on /dev/vgmint/root to 104857600 (4k) blocks.
Begin pass 2 (max = 64711530)
Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 7326)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 569186)
Updating inode references XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/vgmint/root is now 104857600 (4k) blocks long.
После этого, уменьшаем размер LVM раздела. Также указываем, что новый размер будет равен 400GB
root@mint:/# lvreduce -L 400G /dev/vgmint/root WARNING: Reducing active logical volume to 400.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vgmint/root? [y/n]: y Size of logical volume vgmint/root changed from 915.64 GiB (234404 extents) to 400.00 GiB (102400 extents). Logical volume vgmint/root successfully resized.
Смотрим появление свободного места в группе
root@mint:/# vgdisplay --- Volume group --- VG Name vgmint System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size <931.51 GiB PE Size 4.00 MiB Total PE 238466 Alloc PE / Size 106414 / <415.68 GiB Free PE / Size 132052 / <515.83 GiB VG UUID Z9baPy-yfw9-e0Jn-VC47-rarS-3ImB-8hqV0C
Проверяем, что диск как и прежде подключается, а значит при уменьшении не попортилась файловая система. Не знаю почему, что и как я сделал не так, но когда я в первый раз производил эту операцию на VirtualBox, я каким то образом порушил файловую систему. Думаю, скорее всего сделал неправильные подсчеты. В любом случае, если диск не монтируется и/или не читается, то "это фиаско, братан". Именно поэтому я изначально рекомендовал найти любой способ создания backup-а текущих данных, дабы при подобной ситуации можно было привести убитую систему в рабочее состояние.
root@mint:/# mount /dev/vgmint/root /mnt/root
Можно попытаться зайти в любой раздел диска и отредактировать любой файл, после откатить изменения. Если изменения сохраняются, значит всё в порядке. После проверки отключаем раздел.
root@mint:/# cd / root@mint:/# umount /dev/vgmint/root
Создаём логические разделы на свободном пространстве
root@mint:/# lvcreate -L 10G -n opt vgmint Logical volume "opt" created. root@mint:/# lvcreate -L 10G -n srv vgmint Logical volume "srv" created. root@mint:/# lvcreate -L 100G -n timeshift vgmint Logical volume "timeshift" created. root@mint:/# lvcreate -L 10G -n tmp vgmint Logical volume "tmp" created. root@mint:/# lvcreate -l 100%FREE -n home vgmint Logical volume "home" created.
Смотрим что использовано всё пространство
root@mint:/# vgdisplay --- Volume group --- VG Name vgmint System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 12 VG Access read/write VG Status resizable MAX LV 0 Cur LV 7 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size <931.51 GiB PE Size 4.00 MiB Total PE 238466 Alloc PE / Size 238466 / <931.51 GiB Free PE / Size 0 / 0 VG UUID Z9baPy-yfw9-e0Jn-VC47-rarS-3ImB-8hqV0C
и что созданы дополнительные разделы нужного размера
root@mint:/# lvdisplay --- Logical volume --- LV Path /dev/vgmint/root LV Name root VG Name vgmint [...skipped...] LV Size 400.00 GiB [...skipped...] --- Logical volume --- LV Path /dev/vgmint/swap_1 LV Name swap_1 VG Name vgmint [...skipped...] LV Size <15.68 GiB [...skipped...] --- Logical volume --- LV Path /dev/vgmint/opt LV Name opt VG Name vgmint [...skipped...] LV Size 10.00 GiB [...skipped...] --- Logical volume --- LV Path /dev/vgmint/srv LV Name srv VG Name vgmint [...skipped...] LV Size 10.00 GiB [...skipped...] --- Logical volume --- LV Path /dev/vgmint/timeshift LV Name timeshift VG Name vgmint [...skipped...] LV Size 100.00 GiB [...skipped...] --- Logical volume --- LV Path /dev/vgmint/tmp LV Name tmp VG Name vgmint [...skipped...] LV Size 10.00 GiB [...skipped...] --- Logical volume --- LV Path /dev/vgmint/home LV Name home VG Name vgmint [...skipped...] LV Size <385.83 GiB [...skipped...]
Создаём файловые системы на созданных разделах. /tmp я форматирую под ext2 (сила привычки). Однако, вы можете этот раздел также отформатировать под ext4
root@mint:/# mkfs.ext4 /dev/vgmint/opt mke2fs 1.45.5 (07-Jan-2020) [...skipped...] Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done root@mint:/# mkfs.ext4 /dev/vgmint/srv mke2fs 1.45.5 (07-Jan-2020) [...skipped...] Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done root@mint:/# mkfs.ext4 /dev/vgmint/timeshift mke2fs 1.45.5 (07-Jan-2020) [...skipped...] Allocating group tables: done Writing inode tables: done Creating journal (131072 blocks): done Writing superblocks and filesystem accounting information: done root@mint:/# mkfs.ext2 /dev/vgmint/tmp mke2fs 1.45.5 (07-Jan-2020) [...skipped...] Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done root@mint:/# mkfs.ext4 /dev/vgmint/home mke2fs 1.45.5 (07-Jan-2020) [...skipped...] Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): done Writing superblocks and filesystem accounting information: done
Монтируем разделы
root@mint:/# mount /dev/vgmint/root /mnt/root root@mint:/# mount /dev/vgmint/opt /mnt/opt root@mint:/# mount /dev/vgmint/srv /mnt/srv root@mint:/# mount /dev/vgmint/tmp /mnt/tmp root@mint:/# mount /dev/vgmint/timeshift /mnt/timeshift root@mint:/# mount /dev/vgmint/home /mnt/home
и переносим их из root-раздела
root@mint:/# rsync -aAXv /mnt/root/opt /mnt [...skipped...] root@mint:/# rsync -aAXv /mnt/root/srv /mnt [...skipped...] root@mint:/# rsync -aAXv /mnt/root/tmp /mnt [...skipped...] root@mint:/# rsync -aAXv /mnt/root/timeshift /mnt [...skipped...] root@mint:/# rsync -aAXv /mnt/root/home /mnt
rsync работает достаточно шустро. Однако, в зависимости от объёма переносимых данных, эти операции также могут отнять значительное время. Поэтому, чтобы понимать, что происходит в данный момент, стоит опция -v (verbose). По окончании переноса, правим fstab в root-разделе
root@mint:/# nano /mnt/root/etc/fstab
По умолчанию, там будет находиться запись только для /dev/mapper/vgmint-root. Нужно добавить остальные разделы по подобию этой записи.
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/vgmint-root / ext4 errors=remount-ro 0 1
/dev/mapper/vgmint-opt /opt ext4 errors=remount-ro 0 1
/dev/mapper/vgmint-srv /srv ext4 errors=remount-ro 0 1
/dev/mapper/vgmint-timeshift /timeshift ext4 errors=remount-ro 0 1
/dev/mapper/vgmint-tmp /tmp ext2 errors=remount-ro 0 1
/dev/mapper/vgmint-home /home ext4 errors=remount-ro 0 1
/dev/mapper/vgmint-swap_1 none swap sw 0 0
Выходим с сохранением. Удаляем из уже перенесенных разделов всю информацию.
root@mint:/# cd /mnt/root/opt && rm -rf * root@mint:/mnt/root/opt# cd /mnt/root/srv && rm -rf * root@mint:/mnt/root/srv# cd /mnt/root/tmp && rm -rf * root@mint:/mnt/root/tmp# cd /mnt/root/timeshift && rm -rf * root@mint:/mnt/root/timeshift# cd /mnt/root/home && rm -rf *
Отключаем и делаем проверку всех разделов
root@mint:/mnt/root/home# cd / root@mint:/# umount /dev/vgmint/root root@mint:/# umount /dev/vgmint/opt root@mint:/# umount /dev/vgmint/srv root@mint:/# umount /dev/vgmint/tmp root@mint:/# umount /dev/vgmint/timeshift root@mint:/# umount /dev/vgmint/home root@mint:/# e2fsck -fy /dev/vgmint/opt e2fsck 1.45.5 (07-Jan-2020) [...skipped...] root@mint:/# e2fsck -fy /dev/vgmint/srv e2fsck 1.45.5 (07-Jan-2020) [...skipped...] root@mint:/# e2fsck -fy /dev/vgmint/tmp e2fsck 1.45.5 (07-Jan-2020) [...skipped...] root@mint:/# e2fsck -fy /dev/vgmint/timeshift e2fsck 1.45.5 (07-Jan-2020) [...skipped...] root@mint:/# e2fsck -fy /dev/vgmint/home e2fsck 1.45.5 (07-Jan-2020) [...skipped...] root@mint:/# e2fsck -fy /dev/vgmint/root e2fsck 1.45.5 (07-Jan-2020) [...skipped...]
С HDD теперь у нас всё в порядке. Теперь настало время разобраться с SSD.
Проверяем, какое текущее состояние диска.
root@mint:/# fdisk -l /dev/sdb
Disk /dev/sdb: 232.91 GiB, 250059350016 bytes, 488397168 sectors
Disk model: WDC WDS250G2B0A
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Так как диск новый, никаких разделов у него указано не будет. Мне требуется добавить разделы:
- загрузочный (/dev/sdb1, 512M)
- extended (/dev/sdb2, 100%FREE)
- рабочий для LVM (/dev/sdb5, 100%FREE)
Что собственно и делаем через старую добрую утилиту fdisk.
root@mint:/# fdisk /dev/sdb Welcome to fdisk (util-linux 2.34). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0xaa3f80ad. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): First sector (2048-488397167, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-488397167, default 488397167): +512M Created a new partition 1 of type 'Linux' and of size 512 MiB. Command (m for help): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): e Partition number (2-4, default 2): First sector (1050624-488397167, default 1050624): Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-488397167, default 488397167): Created a new partition 2 of type 'Extended' and of size 232.4 GiB. Command (m for help): n All space for primary partitions is in use. Adding logical partition 5 First sector (1052672-488397167, default 1052672): Last sector, +/-sectors or +/-size{K,M,G,T,P} (1052672-488397167, default 488397167): Created a new partition 5 of type 'Linux' and of size 232.4 GiB. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
Указываем, что диск будет загрузочным. Многие это делают за один такт, то есть в предыдущей команде перед записью, выполняют операцию установки флага. Я же привык это делать в 2 этапа: сначала создаю разделы, потом произвожу с ними нужные операции. Оба варианта являются правильным, выбор устаётся за вами.
root@mint:/# fdisk /dev/sdb Welcome to fdisk (util-linux 2.34). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): a Partition number (1,2,5, default 5): 1 The bootable flag on partition 1 is enabled now. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
Форматируем загрузочный раздел в Fat32
root@mint:/# mkfs.vfat /dev/sdb1
mkfs.fat 4.1 (2017-01-24)
Переходим к форматированию LVM. Помечаем, что LMV будет использоваться на /dev/sdb5 разделе.
root@mint:/# pvcreate /dev/sdb5
Physical volume "/dev/sdb5" successfully created.
Проверяем, что диск добавился в LVM
root@mint:/# pvdisplay --- Physical volume --- PV Name /dev/sda1 VG Name vgmint PV Size 931.51 GiB / not usable 4.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 238466 Free PE 0 Allocated PE 238466 PV UUID zYdZLH-gsuz-bQG3-aC8i-Bfwc-Tdjs-GuCNfP "/dev/sdb5" is a new physical volume of "232.38 GiB" --- NEW Physical volume --- PV Name /dev/sdb5 VG Name PV Size 232.38 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID nEnvcF-ZoP1-g5ZM-phev-khpe-EZ5f-rpPaTc
Добавляем его в общую группу (vgmint)
root@mint:/# vgextend vgmint /dev/sdb5
Volume group "vgmint" successfully extended
Проверяем, что в группе появилось свободное место
root@mint:/# vgdisplay --- Volume group --- VG Name vgmint System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 13 VG Access read/write VG Status resizable MAX LV 0 Cur LV 7 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size <1.14 TiB PE Size 4.00 MiB Total PE 297956 Alloc PE / Size 238466 / <931.51 GiB Free PE / Size 59490 / 232.38 GiB VG UUID Z9baPy-yfw9-e0Jn-VC47-rarS-3ImB-8hqV0C
Cоздаём на нём логический раздел на всё свободное пространство
root@mint:/# lvcreate -l 100%FREE -n core vgmint
Logical volume "core" created.
Проверяем
root@mint:/# lvdisplay
[...skipped...]
--- Logical volume ---
LV Path /dev/vgmint/core
LV Name core
VG Name vgmint
[...skipped...]
LV Size 232.38 GiB
[...skipped...]
Создаём файловую систему
root@mint:/# mkfs.ext4 /dev/vgmint/core
mke2fs 1.45.5 (07-Jan-2020)
Discarding device blocks: done
Creating filesystem with 60917760 4k blocks and 15237120 inodes
Filesystem UUID: e5d191e3-b5b1-47b7-a32d-f1ca9743140a
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
Подключаем корневые разделы
root@mint:/# mount /dev/vgmint/root /mnt/root root@mint:/# mount /dev/vgmint/core /mnt/core
Переносим корневой раздел с HDD на SSD
root@mint:/# rsync -aAXv /mnt/root/* /mnt/core
[...skipped...]
Правим fstab на SSD диске
root@mint:/# nano /mnt/core/etc/fstab
Так как этот файл был перенесен из root-раздела, запись корневого раздела будет ссылаться на него. Требуется поменять его на новый раздел core.
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/vgmint-core / ext4 errors=remount-ro 0 1
/dev/mapper/vgmint-opt /opt ext4 errors=remount-ro 0 1
/dev/mapper/vgmint-srv /srv ext4 errors=remount-ro 0 1
/dev/mapper/vgmint-timeshift /timeshift ext4 errors=remount-ro 0 1
/dev/mapper/vgmint-tmp /tmp ext2 errors=remount-ro 0 1
/dev/mapper/vgmint-home /home ext4 errors=remount-ro 0 1
/dev/mapper/vgmint-swap_1 none swap sw 0 0
Выходим с сохранением и отключаем диски
root@mint:/# umount /dev/vgmint/root root@mint:/# umount /dev/vgmint/core
На этом все изменения с дисками и его разделами выполнены. Однако, если перезагрузиться, по умолчанию система загрузится с HDD, однако новые только что созданные разделы будут примонтированы и будут работать как и прежде (за исключением core конечно же). Но нам требуется чтобы грузилось с SSD. Поэтому исправляем эту проблему, а именно чиним загрузчик. Запускаем утилиту boot-repair от обычного пользователя, под root-ом у меня этот финт ушами почему то не получился. Важный момент, загрузка с флэшки должна быть произведена через UEFI (то о чем я говорил в самом начале). Если загрузка была через BIOS, установить EFI утилита не сможет, указав соответствующее предупреждающее сообщение.
mint@mint:~$ boot-repair
Программа достаточно интуитивно понятная, чтобы ее тут описывать. Я использую расширенные настройки, дабы точно указать программе, какие операции ей требуется выполнить. Что требуется сделать:
- установить EFI загрузчик (/boot/efi, sdb1)
- производить загрузку с диска /dev/mapper/vgmint-core
- остальные настройки по вкусу и цвету. Я лично только отключил вывод загрузочного меню.
После того, как все операции будут выполнены, перегружаемся и проверяем что система теперь грузится с SSD и что всё работает исправно. Практически все работы уже выполнены. Осталось удалить оставшуюся информацию на root разделе и отдать свободное пространство home-разделу.
Перегружаемся снова с загрузочной flash-ки и переходим на root-а
mint@mint:~$ sudo su -
Удаляем логический раздел
root@mint:~# lvremove /dev/vgmint/root Do you really want to remove and DISCARD active logical volume vgmint/root? [y/n]: y Logical volume "root" successfully removed
Отдаём всё свободное место home-разделу
root@mint:~# lvextend -l +100%FREE /dev/vgmint/home
Size of logical volume vgmint/home changed from <385.83 GiB (98772 extents) to <685.83 GiB (175572 extents).
Logical volume vgmint/home successfully resized.
Выполняем проверку диска
root@mint:~# e2fsck -fy /dev/vgmint/home
e2fsck 1.45.5 (07-Jan-2020)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vgmint/home: 464701/25288704 files (0.8% non-contiguous), 74162661/101142528 blocks
Увеличиваем размер файловой системы
root@mint:~# resize2fs -p /dev/vgmint/home
resize2fs 1.45.5 (07-Jan-2020)
Resizing the filesystem on /dev/vgmint/home to 179785728 (4k) blocks.
The filesystem on /dev/vgmint/home is now 179785728 (4k) blocks long.
С диска /dev/sda убираем флаг загрузочного
root@mint:~# fdisk /dev/sda Welcome to fdisk (util-linux 2.34). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): a Selected partition 1 The bootable flag on partition 1 is disabled now. Command (m for help): w The partition table has been altered. Syncing disks.
После этого перегружаемся и наслаждаемся полученным результатом.
На этом все. Если заметили недочеты по статье, пишите в комментариях.
При использовании всего или части содержимого, не забывайте указывать ссылку на источник, то есть на мой блог.
Источники:
https://www.dmosk.ru/instruktions.php?object=lvm
https://codeby.net/threads/kak-dobavit-dopolnitelnyj-vtoroj-zhestkij-disk-v-linux-lvm-i-uvelichit-razmer-xranilischa.67786/
https://dsavenko.me/migrating-centos-system-from-hdd-to-smaller-ssd-on-xfs-filesystem/
Спасибо, ничего не понятно.
ОтветитьУдалитьВот прямо с первых строчек.
<>
Вы где создаёте эти разделы? На старом HDD? На новом SSD? На флешке, с которой Вы загрузились?