Apakah ini cara kerja snapshot LVM?

19

Saya mencoba mencari tahu cara kerja snapshot LVM sehingga saya dapat mengimplementasikannya di server file saya, tetapi saya mengalami kesulitan menemukan apa pun di google yang menjelaskan cara kerjanya, daripada bagaimana menggunakannya untuk sistem cadangan dasar.

Dari apa yang saya baca saya pikir itu berfungsi seperti ini:

  • Anda memiliki LVM dengan partisi primer dan banyak dan banyak ruang bebas yang tidak terisi tidak di dalam partisi
  • Kemudian Anda mengambil snapshot dan memasangnya pada Volume Logical baru. Snapshots seharusnya memiliki perubahan sehingga snapshot pertama ini akan menjadi salinan keseluruhan, benar?
  • Kemudian, hari berikutnya Anda mengambil snapshot lain (ukuran partisi yang satu ini tidak harus terlalu besar) dan pasanglah.
  • Entah bagaimana LVM melacak snapshot, dan tidak menyimpan bit yang tidak berubah pada volume primer.
  • Kemudian Anda memutuskan bahwa Anda memiliki snapshot yang cukup dan menyingkirkan yang pertama. Saya tidak tahu bagaimana ini bekerja atau bagaimana itu akan mempengaruhi snapshot berikutnya.

Dapatkah seseorang mengoreksi saya di mana saya salah. Paling-paling, saya kira, saya tidak dapat menemukan apa pun di google.


vgdiplay

obu1: / home / jail / home / qps / backup / D # vgdisplay
  --- Kelompok volume ---
  VG Name fileserverLVM
  ID sistem
  Format lvm2
  Wilayah Metadata 1
  Metadata Sequence No 3
  VG Access baca / tulis
  VG Status dapat diubah ukurannya
  MAX LV 0
  Cur LV 2
  Buka LV 2
  Max PV 0
  Cur PV 1
  Undang-Undang PV 1
  VG Ukuran 931,51 GB
  PE Ukuran 4,00 MB
  Total PE 238467
  Alloc PE / Ukuran 238336 / 931.00 GB
  Gratis PE / Ukuran 131 / 524.00 MB
  VG UUID qSGaG1-SQYO-D2bm-ohDf-d4eG-oGCY-4jOegU
Malfist
sumber

Jawaban:

30

Mengapa tidak melihat bagian snapshots dari LVM-HOWTO ?

Snapshots LVM adalah solusi snapshot "copy on write" dasar Anda. Snapshot benar-benar tidak lebih dari meminta LVM untuk memberi Anda "pointer" ke kondisi saat ini dari sistem file dan untuk menulis perubahan yang dibuat setelah snapshot ke area yang ditentukan.

Snapshots LVM "langsung" di dalam grup volume yang menampung subjek volume ke snapshot - bukan volume lain. Pernyataan Anda "... banyak dan banyak freespace yang tidak terisi bukan partisi" membuatnya seperti pemikiran Anda bahwa snapshot "hidup" di luar grup volume yang terkena snapshot, dan itu tidak akurat. Grup volume Anda tinggal di partisi hard disk, dan volume menjadi sasaran snapshot dan bentuk apa pun yang Anda ambil secara langsung dalam grup volume itu.

Cara normal snapshot LVM digunakan bukan untuk penyimpanan jangka panjang, tetapi untuk mendapatkan "gambar" yang konsisten dari sistem file sedemikian sehingga cadangan dapat diambil. Setelah cadangan selesai, snapshot dibuang.

Saat Anda membuat snapshot LVM, Anda menetapkan jumlah ruang untuk menyimpan perubahan yang dibuat saat snapshot aktif. Jika lebih banyak perubahan dilakukan daripada ruang yang telah Anda tetapkan untuk foto menjadi tidak dapat digunakan dan harus dibuang. Anda tidak ingin membiarkan snapshot tergeletak di sekitar karena (a) mereka akan terisi dan menjadi tidak dapat digunakan, dan (b) kinerja sistem dipengaruhi ketika snapshot aktif - segalanya menjadi lebih lambat.

Edit:

Apa yang dilakukan oleh Microsoft Volume Shadow Copy Services dan snapshot LVM tidak terlalu jauh berbeda. Solusi Microsoft sedikit lebih komprehensif (seperti yang biasanya terjadi pada Microsoft - untuk alat atau produk mereka yang lebih baik atau lebih buruk sering berusaha untuk memecahkan masalah yang cukup besar dibandingkan berfokus pada satu hal).

VSS adalah solusi yang lebih komprehensif yang menyatukan dukungan untuk perangkat keras yang mendukung snapshot dan snapshot berbasis perangkat lunak ke dalam satu API. Lebih lanjut, VSS memiliki API untuk memungkinkan aplikasi dibuat diam melalui API snapshot, sedangkan snapshot LVM hanya berkaitan dengan snapshot - setiap aplikasi quiescing adalah masalah Anda (menempatkan basis data ke dalam status "cadangan", dll.).

Evan Anderson
sumber
1
Jadi itu tidak benar-benar dimodelkan setelah Volume Shadow Copy (VSS), karena itu bukan cara kerja VSS?
Malfist
Ini jauh lebih masuk akal.
Malfist
1
Saya pikir Anda salah paham dengan snapshot LVM. Snapshots LVM membuat perangkat "virtual" yang dipasang seperti volume mandiri, tetapi sebenarnya bukan "partisi". Snapshots LVM "hidup" volume menjadi sasaran snapshot, seperti snapshot VSS.
Evan Anderson
1
Bisakah Anda menjelaskan di mana data yang diperbarui berjalan saat snapshot aktif? ke LV utama dan snapshot menyimpan salinan blok lama? atau ke snapshot LV sementara LV utama tetap tidak tersentuh?
Benoît
1
@Benoit tautan di baris pertama jawaban mencakup ini. Baca catatan di sana pada perilaku snapshot read-only LVM1 dan saya pikir Anda akan memiliki jawaban Anda. (Ini pendekatan pertama yang Anda gambarkan, bukan yang kedua.)
Peter Hansen
28

Snapshots LVM adalah contoh dari solusi snapshot copy-on-write, seperti kata Evan. Cara kerjanya sedikit berbeda dari Evan yang tersirat, tetapi tidak secara keseluruhan.

Ketika Anda memiliki volume LVM tanpa snapshot, menulis ke volume terjadi seperti yang Anda harapkan. Blok diubah, dan hanya itu.

Segera setelah Anda membuat snapshot, LVM membuat kumpulan blok. Kelompok ini juga berisi salinan lengkap metadata LVM volume. Ketika menulis terjadi pada volume utama seperti memperbarui inode, blok yang ditimpa akan disalin ke kumpulan baru ini dan blok baru ditulis ke volume utama. Ini adalah 'copy-on-write'. Karena itu, semakin banyak data yang berubah antara saat foto diambil dan status volume utama saat ini, semakin banyak ruang yang dikonsumsi oleh kumpulan foto itu.

Saat Anda memasang snapshot, meta-data yang ditulis ketika snapshot diambil memungkinkan pemetaan blok kumpulan snapshot atas blok yang diubah dalam volume (atau snapshot level yang lebih tinggi). Dengan cara ini ketika akses datang untuk blok tertentu, LVM tahu yang memblokir akses. Sejauh menyangkut filesystem pada volume itu, tidak ada snapshot.

James menunjukkan salah satu kesalahan sistem ini. Ketika Anda memiliki beberapa snapshot dari volume yang sama, setiap kali Anda menulis ke sebuah blok di volume utama yang berpotensi memicu Anda menulis di setiap snapshot tunggal. Ini karena setiap foto mempertahankan kumpulan blok yang diubah sendiri. Juga, untuk pohon snapshot yang panjang, mengakses snapshot dapat menyebabkan sedikit perhitungan pada server untuk mencari tahu blok mana yang perlu dilayani untuk akses.

Ketika Anda membuang snapshot, LVM hanya menjatuhkan snapshot pool dan memperbarui pohon snapshot sesuai kebutuhan. Jika snapshot yang dijatuhkan adalah bagian dari pohon snapshot, beberapa blok akan disalin ke snapshot level yang lebih rendah. Jika itu adalah snapshot terendah (atau satu-satunya), pool hanya akan terjatuh dan operasinya sangat cepat.


Beberapa sistem file memang menawarkan snapshot dalam sistem file, ZFS dan BTRFS hanyalah dua dari yang lebih dikenal. Mereka bekerja dengan cara yang sama, meskipun sistem file itu sendiri mengelola pemetaan yang diubah / tidak berubah. Ini bisa dibilang cara yang lebih baik untuk melakukannya karena Anda dapat fsck seluruh keluarga snapshot untuk konsistensi, yang merupakan sesuatu yang tidak dapat Anda lakukan dengan LVM lurus.

sysadmin1138
sumber
Terima kasih atas penjelasan terperinci ini. Maaf saya bingung tentang "Sejauh menyangkut sistem file pada volume itu, tidak ada snapshot." Bisakah Anda menjelaskan lebih lanjut tentang apa artinya itu? Sangat menghargai atas respons apa pun ~
Carr
2
@Carr Ini berarti snapshot ditangani di luar sistem file sepenuhnya. Sistem file lain yang memiliki kemampuan snapshot bawaan, seperti BTRFS dan XFS, memiliki konsep snapshot dan Anda tidak boleh menggunakan snapshot LVM dengan sistem-sistem itu.
sysadmin1138
@ sysadmin1138 Saya ingin tahu tentang snapshot bawaan dengan XFS yang Anda sebutkan, untuk tujuan pemeriksaan konsistensi / perbaikan FS. Saya memiliki XFS FS multi-TB yang turun dengan cara yang kotor dan saya ingin memeriksa / memperbaikinya, tanpa membuatnya offline (ratusan pengguna, tidak bisa offline selama berjam-jam). Saya berpikir untuk membuat snapshot XFS dan kemudian menjalankan fsck di atasnya untuk menemukan / memperbaiki kesalahan ketika filesystem live disimpan online, dan kemudian jika perbaikan dilakukan, bertukar dengan filesystem live. Apakah snapshot XFS lebih baik untuk tujuan ini daripada snapshot LVM?
Ján Lalinský
2

Anda tidak menentukan apakah Anda menggunakan Linux atau HP-UX. Di HP-UX, Anda membuat volume logis dan memasangnya sebagai snapshot dari volume logis lain. Di Linux, Anda membuat volume logis sebagai volume snapshot.

Menghapus snapshot dalam HP-UX dilakukan dengan umounting volume; di Linux itu dilakukan dengan menggunakan lvremove untuk menghapus volume logis.

Bagaimanapun, perubahan adalah satu-satunya hal yang disimpan pada foto Anda. Semakin lama snapshot tetap tersedia, semakin banyak perubahan yang disimpannya - dan ada kemungkinan ia bisa terisi jika tidak diukur atau dirilis dengan benar.

Kecepatan akses disk pada volume snapshot lebih lambat daripada volume normal; Anda harus memperhitungkannya.

Mei
sumber
1

Snapshots LVM tidak efisien, semakin banyak snapshots semakin lambat sistem berjalan.

Saya hanya mendukung xfs seperti yang kami gunakan dan xfs_freeze dapat digunakan untuk menghentikan akses baru ke sistem file dan membuat image yang stabil pada disk.

Copy on Write digunakan sehingga ruang disk digunakan secara efisien.

Anda telah membuat sistem file dalam volume logis yang memiliki ruang kosong di dalamnya untuk snapshot.

Ini adalah contoh dari FAQ

James
sumber