Saya akan melakukan pembaruan eksperimental pada server CentOS 5 saya. Jika pemutakhiran gagal, saya ingin dapat mencadangkan perubahan pada sistem berkas. Skenario ini tampaknya mirip dengan contoh pada Bagian 3.8 dari LVM HOWTO untuk LVM2 snapshot baca-tulis - tetapi contohnya agak kurang dalam bagaimana-caranya yang sebenarnya.
Bagaimana saya melakukan perubahan, menggabungkannya kembali ke partisi asli?
Bagaimana saya mengembalikan perubahan, mengembalikan sistem file kembali ke keadaan semula? Haruskah saya berasumsi bahwa saya perlu me-restart beberapa layanan, jika tidak langsung reboot?
Apakah mungkin untuk memotret direktori tertentu saja pada partisi, atau apakah itu operasi partisi?
dmsetup targets
harus memperlihatkan snapshot-gabungan jika itu adalah kasus gabungan perintah, diterapkan pada snapshot-lv akan kembali ke keadaan di mana snapshot diambil.Saya baru saja mencoba upgrade berbasis snapshot dengan Ubuntu. Dan ya, saya perlu reboot beberapa kali. Pertama, ganti nama root-lv menjadi sesuatu yang lain, sehingga Anda dapat memberikan snapshot nama asli (karena upgrade membuat banyak perubahan dan perubahan lebih cepat pada snapshot daripada yang asli):
Ukuran harus dipilih dengan tepat. Kemudian reboot, sehingga lvm / ubuntu 'baru' di-mount sebagai root dan Anda dapat melakukan upgrade. Sekarang Anda dapat menguji versi baru dan bahkan mengubah ke sistem lama dengan
Jika Anda ingin menghentikan pemutakhiran, jalankan saja (dari sistem yang lama)
Jika Anda ingin melakukan perubahan, jalankan saja (dari sistem yang lama)
atau, dari sistem baru
diikuti oleh reboot. Sistem akan menolak untuk melakukan penggabungan segera, karena volume terbuka. Jadi penggabungan akan dimulai selama boot dan dilanjutkan selagi Anda sudah dapat bekerja dengan sistem.
Oh, dan omong-omong: Saat mengubah antar sistem, ingatlah untuk menggunakan kernel yang sesuai. Karena / boot bukan bagian dari lvm, kernel lama dan baru akan ditempatkan di sana berdampingan.
sumber
Ok, saya pikir saya sudah menemukannya dari membaca kembali HOWTO 3.8.
Cara kerja snapshot adalah serangkaian perubahan tingkat blok dari aslinya. Jadi, ketika aslinya ditulis untuk, hal-hal berikut terjadi:
Jadi, membuang snapshot sama sekali tidak akan memengaruhi yang asli - karena yang asli telah diubah, dan snapshot itu hanya berisi daftar perubahan itu.
Menjawab pertanyaan saya sendiri:
Buat snapshot baru dengan LVM. Jika pembaruan dapat dikonfigurasi untuk menulis ke titik pemasangan snapshot, gunakan snapshot R / W. Kalau tidak, RO atau R / W akan dilakukan.
Kemudian:
Saya masih belum menemukan alat khusus untuk melakukan penggabungan ini - dan, mengingat skenario saya tidak persis seperti penggunaan snapshots, mungkin tidak ada satu pun. Kedengarannya seperti pekerjaan untuk rdiff.
sumber
lvconvert --merge <snapshot-name>
akan "mengembalikan" disk asli Anda ke snapshot itu, dan menghapus snapshot itu. Anda tentu saja dapat mengembalikannya dengan cepat segera.LVM bekerja di level blok. Bahkan 'tidak tahu' apa itu sistem file. Jadi, Anda tidak dapat memotret hanya direktori tertentu, kecuali jika sistem file dari volume LVM yang berbeda dipasang di sana.
Ketika Anda membuat snapshot LVM Anda sebenarnya meminta duplikat volume 'copy on write'. Blok apa pun yang akan diubah pada volume snapshotted akan disimpan tanpa dimodifikasi di snaphot terlebih dahulu. Jadi untuk 'melakukan perubahan' Anda tidak perlu melakukan apa-apa. Hapus saja volume snapshot.
Saya tidak tahu apa cara yang disarankan untuk 'mengembalikan perubahan', karena saya tidak pernah menggunakan LVM dalam skenario seperti itu, tapi saya kira itu dijelaskan dengan baik dalam dokumentasi LVM di suatu tempat. Apa pun itu, Anda mungkin perlu me-restart apa pun yang diubah, reboot mungkin ide yang bagus.
sumber
lvconvert --merge <snapshot name>
Snapshot 'beku' keadaan LV asli. Hapus snapshot berarti lupakan keadaan itu. Gabungkan snapshot berarti kembali ke kondisi itu
Tetapi di dalam LVM menyimpan data yang ditulis ulang dalam snapshot: pastikan ukuran snapshot memenuhi jumlah perubahan yang diharapkan pada LV dan snapshot
sumber
Dokumentasinya membingungkan. Sepertinya saya bahwa lvcreate --merge berarti mengembalikan semua perubahan, dan lvremove berarti melakukan perubahan. Perbedaannya terletak pada bagaimana Anda menggunakannya.
Dalam kebanyakan kasus, Anda hanya menggunakan snapshot sebagai salinan hanya titik waktu baca dari volume live, dan volume live terus berubah. Dalam hal ini, jika Anda menggabungkan, secara logis itu berarti Anda akan menimpa volume langsung dengan salinan yang dibekukan, atau dengan kata lain, menggabungkan berarti perubahan rollback, dan menghapus berarti melakukan perubahan.
Jika Anda menulis ke snapshot (opsi baru dengan LVM2), yang tampaknya bukan perilaku default, dan mungkin memerlukan perubahan konfigurasi di tempat lain untuk membuat aplikasi menulis ke snapshot alih-alih volume asli, maka kebalikannya akan benar.
Harap berhati-hati ketika berhadapan dengan snapshot, karena beberapa orang akan menganggap Anda bermaksud menggunakannya satu arah dan akan memberi Anda petunjuk yang dapat menghancurkan sistem Anda jika Anda beroperasi dengan asumsi yang berlawanan!
sumber