Migrasi Mesin Virtual dan Penyimpanan
Cockpit memfasilitasi migrasi mesin virtual (VM) yang sedang berjalan dan disk virtualnya di antara host Vapor fisik dan storage pool tanpa menyebabkan gangguan pada beban kerja atau downtime bagi pengguna.
1. Migrasi Komputasi Langsung (Compute Live Migration)
Migrasi komputasi langsung memindahkan status eksekusi runtime yang aktif (vCPU dan RAM) dari VM yang sedang berjalan dari host fisik asal ke host fisik tujuan.
Tergantung pada arsitektur penyimpanan, Cockpit menjalankan migrasi komputasi dengan salah satu dari dua cara berikut:
A. Migrasi Penyimpanan Bersama (Shared Storage Migration)
- Arsitektur: Disk virtual VM berada pada storage pool jaringan (misalnya, NFS, OCFS2, atau SAN) yang dapat diakses oleh host asal dan tujuan.
- Alur Kerja: Hanya status CPU dan halaman memori yang disalin melalui jaringan ke host target. Karena disk virtual tidak perlu diduplikasi atau ditransfer, pengalihan (switchover) selesai dalam hitungan detik.
B. Migrasi Tanpa Penyimpanan Bersama (Shared-Nothing / Block Migration)
- Arsitektur: Disk virtual VM disimpan di disk lokal (misalnya, SSD lokal) milik host asal.
- Alur Kerja: Cockpit memulai penyalinan tingkat blok (block-level copy) dari file disk virtual melalui jaringan saat VM sedang berjalan. Secara bersamaan, halaman memori dan status eksekusi CPU disinkronkan. Setelah salinan blok dan memori sepenuhnya sinkron, Cockpit melakukan pengalihan akhir. Waktu migrasi bergantung pada ukuran volume disk dan bandwidth jaringan.
Identitas dipertahankan. Ketika migrasi komputasi selesai, VM tetap mempertahankan identitas Cockpit-nya: posisinya di dalam pohon inventaris dan izin berlingkup objek yang ditetapkan kepadanya ikut berpindah ke host tujuan. VM direlokasi di tempat daripada dihapus dan diimpor ulang, sehingga Anda tidak perlu menerapkan ulang izin atau memasukkannya kembali ke dalam folder setelah migrasi.
2. Migrasi Khusus Penyimpanan (Storage-Only Migration)
Migrasi penyimpanan memindahkan file disk virtual VM di antara datastore (storage pool) yang berbeda pada host fisik yang sama saat VM tetap aktif.
- Mode Salin Penyimpanan (Storage Copy Mode): Menyalin citra disk yang mendasarinya (biasanya dalam format qcow2 atau raw) blok-demi-blok ke storage pool target.
- Auto-Pivot: Setelah duplikasi disk selesai, Cockpit menjalankan pivot runtime otomatis. Hypervisor mengalihkan operasi penulisan disk baru ke file disk target yang baru dan mengosongkan penulisan yang tersisa.
- Hapus File Asal (opsional): Pemulihan citra disk asli dinonaktifkan secara bawaan. Saat Anda mengaktifkan opsi "Remove source file after migration completes", Cockpit menghapus citra disk asal hanya setelah pivot berhasil. Biarkan dinonaktifkan untuk menyimpan file asli sebagai cadangan (fallback).
- Validasi Tujuan: Sebelum penyalinan dimulai, jalur tujuan divalidasi pada host — jalur tersebut harus berada di dalam storage pool yang dikenal (jalur yang keluar dari pool akan ditolak) dan tidak boleh menimpa file yang sudah ada. Pilih nama file tujuan yang berbeda jika nama file tersebut sudah ada.
3. Konfigurasi Migrasi Lanjutan
Administrator dapat mengonfigurasi parameter lanjutan berikut saat memulai migrasi:
- Live: Mengubah mode migrasi langsung. Menonaktifkan opsi ini akan menjalankan migrasi offline/dingin (menangguhkan VM sebelum memindahkannya).
- Undefine Source (diaktifkan secara bawaan, direkomendasikan): Menghapus definisi XML VM dari host asal setelah migrasi berhasil — perilaku "pemindahan" standar. Membiarkan opsi ini dinonaktifkan tidak direkomendasikan: VM akan tetap terdefinisi di kedua host asal dan tujuan, yang menghasilkan entri inventaris ganda dan, pada penyimpanan bersama, berisiko menyebabkan kerusakan disk jika salinan asal yang usang pernah dijalankan. Hanya nonaktifkan jika Anda secara sengaja ingin menyimpan salinan di host asal.
- Mode Salin Penyimpanan (Storage Copy Mode): Memilih bagaimana disk ditangani. None mengasumsikan disk sudah dapat diakses di tujuan (penyimpanan bersama). Copy all melakukan penyalinan disk penuh (tanpa penyimpanan bersama). Incremental hanya menyalin perbedaan terhadap basis yang sudah ada di tujuan.
- Compressed: Kompresi data migrasi saat transit untuk mengurangi volume yang ditransfer melalui jaringan, dengan mengorbankan penggunaan CPU host asal.
- Auto Converge: Memitigasi skenario di mana OS tamu menulis ke memori (mengotori halaman memori) lebih cepat daripada kemampuan jaringan untuk menyalinnya ke host target. Saat aktif, pengaturan ini secara dinamis membatasi (throttle) tingkat eksekusi CPU VM tamu untuk memungkinkan sinkronisasi memori selesai dan mengakhiri migrasi.
- Hapus Disk Asal (destruktif): Tersedia untuk migrasi komputasi-dan-penyimpanan. Saat diaktifkan, file citra disk asal akan dihapus secara permanen dari host asal setelah migrasi berhasil (perangkat CDROM/floppy dikecualikan). Tindakan ini tidak dapat dibatalkan.
- Pemetaan Jaringan / Disk: Opsional untuk memetakan ulang jaringan asal dan jalur disk VM ke padanannya di host tujuan. Pemetaan yang diberikan divalidasi terhadap host tujuan sebelum migrasi dimulai.
Flag tingkat rendah tambahan — Persistent, Tunnelled, Allow-Unsafe, Verbose, Max Bandwidth, dan Max Downtime — ditampilkan dalam dialog migrasi per-host milik Vapor, bukan di wizard Cockpit. Flag destruktif (Remove Source Disks, Allow-Unsafe) di sana memerlukan konfirmasi eksplisit sebelum migrasi dapat dimulai.
4. Validasi Sebelum Migrasi dan Kepercayaan
Sebelum mengeksekusi migrasi, Cockpit melakukan validasi berikut. Daftar di bawah ini mencerminkan apa yang benar-benar diterapkan saat ini — tinjau catatan operasional untuk pemeriksaan yang dilakukan libvirt saat pengalihan daripada di awal.
- Kepercayaan TLS Host: Aliran migrasi komputasi berjalan melalui
qemu+tls://, yang membutuhkan hubungan kepercayaan mutual TLS antara host Vapor asal dan tujuan. Dalam wizard migrasi, ini adalah langkah eksplisit: setelah memilih host tujuan, klik Establish host trust. Cockpit mempertukarkan dan menginstal sertifikat CA masing-masing host (menjalankan ulanglibvirtdpada host hanya jika trust store-nya benar-benar berubah). Tombol Start Migration tetap dinonaktifkan sampai kepercayaan berhasil dibentuk. - Pemeriksaan Lingkup Penyimpanan Bersama: Untuk migrasi komputasi saja (tanpa salinan penyimpanan), Cockpit memverifikasi bahwa setiap disk berada pada datastore yang ditandai shared. Migrasi komputasi saja untuk VM dengan disk pada penyimpanan lokal (tidak dibagikan) akan ditolak sebelum dimulai.
- Pemeriksaan Tujuan Penyimpanan (migrasi khusus penyimpanan): Jalur target divalidasi pada host — jalur tersebut harus berada di dalam storage pool yang dikenal dan tidak boleh menimpa file yang sudah ada. Wizard juga melakukan perlindungan pool yang sama (same-pool guard) dan pemeriksaan ruang yang tersedia pada datastore target.
- Validasi Pemetaan: Ketika Anda menyediakan pemetaan jaringan atau disk secara eksplisit, pemetaan tersebut divalidasi terhadap host tujuan yang aktif sebelum migrasi dimulai; pemetaan yang tidak dapat diselesaikan di tujuan akan menggagalkan pemeriksaan awal (pre-flight).
Catatan operasional. Cockpit saat ini tidak melakukan pemeriksaan kompatibilitas CPU tujuan secara proaktif atau pemeriksaan jembatan jaringan umum untuk setiap antarmuka. libvirt tetap memberlakukan pemeriksaan ini saat pengalihan — migrasi akan gagal jika CPU tujuan tidak dapat menjalankan model CPU tamu, atau jika jaringan yang digunakan VM (dan tidak Anda petakan ulang) tidak ada di tujuan. Untuk mehindari masalah yang tidak terduga, pastikan host tujuan menyediakan jaringan virtual/bridge yang sama dengan yang digunakan VM, dan CPU-nya kompatibel, sebelum melakukan migrasi. Pemeriksaan pra-migrasi otomatis yang lebih luas sedang direnakan.