Потрібно перенести /home на окремий LVM-том без перезавантаження та простою сервісів? Це реально. Ми зробимо «живу» міграцію за допомогою rsync, перевіримо дані, швидко перемкнемо точки монтування та підготуємо план відкату на випадок проблем. Поїхали! 🙂
Що підготуємо заздалегідь
Ми будемо працювати через термінал Linux. Знадобляться права root або sudo, вільний простір у Volume Group (VG) для нового LVM-тома, а також базові навички з управління файлами. Рекомендовано мати актуальне резервне копіювання системи — хоча ми й мігруємо без простою, підстрахуватися ніколи не зайве. Перевірте також використання диска, щоб правильно підібрати розмір нового тому.
# Огляд томів і файлових систем
lsblk -f
vgs; lvs; pvs
# Перевіряємо, чи /home це звичайна директорія, а не окремий розділ
findmnt /home
# Оцінюємо обсяг даних для нового LV
du -sh /home
Покрокова міграція /home на LVM без простою
1) Створюємо LVM-том і файлову систему
# Припустимо, ваша VG називається vg0 і ви хочете 200G під /home
sudo lvcreate -L 200G -n home vg0
# Форматуємо (ext4 приклад, підійде і xfs)
sudo mkfs.ext4 -L HOME /dev/vg0/home
# Монтуємо тимчасово
sudo mkdir -p /mnt/newhome
sudo mount -o noatime /dev/vg0/home /mnt/newhome
# Перевіряємо
df -h /mnt/newhome
2) Початкове копіювання (онлайн)
Використаємо rsync із збереженням прав, ACL і xattr, щоб не втратити налаштування доступу.
sudo rsync -aAXH --info=progress2 --numeric-ids /home/ /mnt/newhome/
3) Атомне перемикання з майже нульовою паузою
Фокус у тому, що якщо /home — звичайна директорія на кореневому розділі, ми можемо швидко перейменувати її, змонтувати новий том у «свіжу» порожню /home та зробити фінальний дельта-обмін. Відкриті дескриптори в старому /home продовжать працювати, а нові логіни потраплятимуть на новий том.
# Коротка підготовка: обмежимо створення нових сесій (необов'язково)
# Наприклад, на сервері: тимчасово забороніть нові SSH-логіни у sshd_config (optional)
# або повідомте користувачів про зміну.
# Перемикаємося
sudo mv /home /home.old
sudo mkdir /home
sudo chmod 755 /home
sudo chown root:root /home
# Монтуємо новий LVM-том у /home
sudo mount /dev/vg0/home /home
# Фінальний дельта-обмін, щоб догнати зміни
sudo rsync -aAXH --delete --numeric-ids /home.old/ /home/
4) Прописуємо постійне монтування у /etc/fstab
Рекомендується використовувати UUID для надійності.
UUID=$(blkid -s UUID -o value /dev/vg0/home)
echo "UUID=$UUID /home ext4 defaults,noatime 0 2" | sudo tee -a /etc/fstab
# Перевіряємо синтаксис та тестуємо монтування
sudo mount -a && echo "fstab OK" || echo "fstab FAIL"
5) Перевірка цілісності та вживання
# Порівнюємо вміст (сухий прогін)
sudo rsync -aAXHvn --delete --numeric-ids /home.old/ /home/
# Переконуємось, що ніхто не тримає старий /home.old
sudo lsof +D /home.old || true
# Перевіряємо монтування і використання
findmnt /home
df -h /home
Якщо все добре, залиште /home.old на кілька днів як резервну копію і потім видаліть, звільнивши місце.
# Коли будете готові очистити
sudo rm -rf /home.old
Альтернативні способи
Варіант з systemd-монтуванням
Замість fstab можна створити unit-файл /etc/systemd/system/home.mount, що дає контроль над порядком монтування та залежностями. Але для більшості сценаріїв fstab достатньо.
Копіювання через tar|pv|tar
Якщо не хочете rsync, можна копіювати потоком збереження атрибутів. Проте rsync зручніший для дельти.
(cd /home && sudo tar cpf - .) | pv | (cd /mnt/newhome && sudo tar xpf -)
Шифрування
Потрібне шифрування? Типова схема: LUKS на блочному пристрої → всередині LUKS створити PV/VG/LV → файлову систему. Процедура копіювання не змінюється.
GUI-спосіб (з KDE Partition Manager)
Якщо ви на Desktop і маєте встановлений KDE Partition Manager, ним можна створити LV і відформатувати його (LVM підтримується). Далі все одно знадобиться термінал Linux для rsync і швидкого перемикання /home. Кроки:
- Відкрити KDE Partition Manager → вибрати VG → створити LV «home» потрібного розміру.
- Створити файлову систему ext4/xfs на LV, задати мітку HOME.
- Змонтувати LV у /mnt/newhome.
- Повернутися до кроків з rsync і перемикання, як у розділі вище.
FAQ
Чи справді без простою?
Так, «гаряче» копіювання + швидке перейменування /home → /home.old і монтування нового /home забезпечує практично нульову паузу. Відкриті файли лишаються доступними через /home.old, нові сесії підуть у новий /home.
Що, якщо /home уже окремий розділ/том?
Тоді замість перейменування виконайте копіювання між старим і новим томами, потім перемкніть запис у fstab на новий LV і перемонтуйте. Можна тимчасово використати іншу точку монтування і зробити швидкий switchover.
ext4 чи xfs?
Обидва підходять. Для xfs: створюйте з reflink=1 за потреби клонування: mkfs.xfs -m reflink=1 /dev/vg0/home.
SELinux/ACL/атрибути?
rsync із ключами -aAXH зберігає ACL і xattr. На системах із SELinux після міграції виконайте:
sudo restorecon -RFv /home
Квоти користувачів?
Якщо використовували дискові квоти, увімкніть їх на новому /home (опції у fstab та репобудова quotа-баз).
Як підібрати розмір LV?
Оцініть du -sh /home і залиште запас 20–30%. У LVM легко розширити LV і ФС пізніше.
Що, якщо mount -a впав?
Перевірте правильність UUID, тип ФС та опції. За потреби тимчасово закоментуйте рядок у /etc/fstab, змонтуйте вручну і знову протестуйте.
План швидкого відкату
Якщо після перемикання щось пішло не так:
# 1) Повертаємо старий /home
sudo umount /home || true
sudo rm -rf /home
sudo mv /home.old /home
# 2) Прибираємо запис про новий том із /etc/fstab (або коментуємо його)
# 3) Перевіряємо
sudo mount -a
findmnt /home
# За потреби залишаємо новий LV як резерв або видаляємо
# sudo lvremove /dev/vg0/home
Порада від Kernelka
Залиште /home.old на тиждень як страховку, а ще краще — налаштуйте регулярні інкрементальні бекапи (наприклад, через systemd timers і rsync/borg). Також виміряйте навантаження на диски перед і після міграції — це підкаже, чи варто вмикати noatime, змінювати планувальник I/O або збільшити кеш. І пам’ятайте: акуратне планування економить години troubleshooting 😉
Підсумок
- Створили LVM-том, відформатували й змонтували як /mnt/newhome.
- Скопіювали дані rsync, швидко перемкнули /home через перейменування.
- Зафіксували монтування у /etc/fstab і перевірили цілісність.
- Залишили /home.old на випадок відкату й підчистили після перевірки.
- Ознайомилися з альтернативами та планом швидкого відновлення.

Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.