Anda dapat membuat snapshot yang konsisten dengan aplikasi dari volume Persistent Disk yang terpasang ke instance virtual machine (VM) Linux. Secara umum, kualitas snapshot disk Anda bergantung pada seberapa baik aplikasi Anda dapat pulih dari snapshot yang Anda buat selama beban kerja penulisan yang berat. Snapshot konsisten aplikasi merekam status data aplikasi pada saat pencadangan dengan semua transaksi aplikasi yang selesai dan semua penulisan tertunda yang dikosongkan ke disk.
Untuk membuat snapshot yang konsisten dengan aplikasi, jeda aplikasi atau proses sistem operasi yang menulis data ke disk, kosongkan buffer disk, dan sinkronkan sistem file sebelum Anda membuat snapshot. Bergantung pada aplikasi Anda, langkah-langkah ini dan langkah-langkah lainnya mungkin diperlukan untuk memastikan semua transaksi aplikasi selesai dan direkam dalam cadangan.
Untuk membuat snapshot yang konsisten dengan aplikasi pada disk Anda, gunakan proses berikut:
- Agar dapat menyiapkan lingkungan tamu untuk konsistensi aplikasi, buat skrip shell kustom yang akan dijalankan sebelum dan setelah snapshot diambil
- Konfigurasi setelan snapshot pada instance VM Anda.
- Buat snapshot dengan opsi
guest-flushdiaktifkan. Opsiguest-flushmemulai skrip sebelum dan sesudah snapshot Anda.
Sebelum memulai
- Buat VM Linux.
- Perbarui lingkungan tamu.
-
Siapkan autentikasi jika Anda belum melakukannya.
Autentikasi memverifikasi identitas Anda untuk mengakses layanan Cloud de Confiance by S3NS dan API. Untuk menjalankan
kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke
Compute Engine dengan memilih salah satu opsi berikut:
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan konsol Cloud de Confiance untuk mengakses layanan Cloud de Confiance by S3NS dan API, Anda tidak perlu menyiapkan autentikasi.
gcloud
-
Instal Google Cloud CLI, lalu login ke gcloud CLI dengan identitas gabungan Anda. Setelah login, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud init
-
- Tetapkan region dan zona default.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI, lalu login ke gcloud CLI dengan identitas gabungan Anda.
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Cloud de Confiance .
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk membuat snapshot yang konsisten dengan aplikasi, minta administrator untuk memberi Anda peran IAM berikut di project:
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) -
Untuk terhubung ke VM yang dapat dijalankan sebagai akun layanan:
Service Account User (v1) (
roles/iam.serviceAccountUser)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk membuat snapshot yang konsisten dengan aplikasi. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat snapshot yang konsisten aplikasi:
-
compute.snapshots.createdi project -
compute.disks.createSnapshotpada disk -
Untuk membuat snapshot boot disk instance yang memiliki akun layanan terlampir:
iam.serviceAccounts.actAsdi akun layanan instance
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Jenis disk yang didukung
Anda dapat membuat snapshot yang konsisten dengan aplikasi untuk volume Persistent Disk yang terpasang ke instance Linux.
Volume Hyperdisk tidak mendukung
guest-flush. Untuk membuat snapshot yang konsisten dengan aplikasi untuk volume Hyperdisk yang terpasang ke instance Linux, Anda harus menjeda aplikasi secara manual sebelum membuat snapshot. Untuk mengetahui informasi selengkapnya, lihat Membuat snapshot konsisten aplikasi secara manual.
Batasan
Membuat snapshot yang konsisten dengan aplikasi di Linux memiliki batasan berikut:
- Konsistensi aplikasi bergantung pada perilaku skrip sebelum dan sesudah snapshot kustom Anda, bukan oleh operasi snapshot itu sendiri.
- Saat menggunakan opsi
guest-flushdalam permintaan pembuatan snapshot, snapshot tidak dibuat jika skrip menampilkan error atau mencapai batas waktu tunggu.
Membuat skrip sebelum dan sesudah snapshot
Sebelum melanjutkan, update lingkungan tamu agar Anda menjalankan software terbaru di VM Linux Anda.
Untuk memfasilitasi konsistensi aplikasi, buat skrip shell sebelum dan sesudah snapshot untuk dijalankan sebelum dan setelah snapshot diambil. Gunakan skrip sebelum dan sesudah untuk operasi seperti:
- Jeda aplikasi atau proses sistem operasi yang berjalan di VM yang menulis data ke disk.
- Kosongkan buffering disk. Misalnya, MySQL memiliki pernyataan
FLUSH. Gunakan alat apa pun yang tersedia untuk aplikasi Anda. - Sinkronkan sistem file Anda.
Contoh kode berikut menunjukkan skrip snapshot sebelum. Perhatikan karakter
#! di awal.
#!/bin/bash sudo fsfreeze -f [example-disk-location]
Contoh kode berikut menunjukkan skrip snapshot sesudah. Perhatikan
karakter #! di awal.
#!/bin/bash sudo fsfreeze -u [example-disk-location]
Anda harus menyimpan skrip Anda pada VM di direktori
/etc/google/snapshots/. Jalur lengkap skrip sebelum Anda harus berupa
/etc/google/snapshots/pre.sh dan jalur lengkap skrip sesudah Anda harus berupa
/etc/google/snapshots/post.sh.
Merujuk disk tertentu dalam skrip Anda
Argumen pertama yang diteruskan ke skrip sebelum dan sesudah snapshot Anda adalah daftar disk yang akan Anda buat snapshot-nya. Anda dapat menggunakan argumen ini dalam skrip untuk berbagai pemeriksaan. Misalnya, jika VM Anda memiliki beberapa disk yang terpasang, tetapi Anda hanya menentukan satu disk dalam permintaan snapshot, Anda dapat memeriksa disk yang sedang dibuat snapshot-nya.
Argumen diformat sebagai berikut:
- Disk yang terpasang SCSI: daftar yang dipisahkan koma dari pasangan
<target/lun>. - Disk yang terpasang NVME: daftar yang dipisahkan koma dari pasangan
<nvme:namespace>.
Misalnya, boot disk yang terhubung ke SCSI Anda mungkin muncul sebagai 1/0, sementara disk tambahan yang terpasang ke VM mungkin muncul sebagai 2/0.
Mengedit file konfigurasi lingkungan tamu
Konfigurasikan setelan snapshot yang konsisten dengan aplikasi Anda dengan mengupdate file konfigurasi tertentu pada VM.
Buka atau buat file konfigurasi lingkungan tamu Anda.
edit /etc/default/instance_configs.cfgTambahkan bagian berikut ke file konfigurasi, lalu simpan perubahan Anda dan keluar dari editor.
[Snapshots] enabled = ENABLED timeout_in_seconds = TIMEOUT_SECONDS
Ganti kode berikut:
ENABLED: Setel ketrueuntuk mengaktifkan fitur snapshot yang konsisten untuk aplikasi. Nilai defaultnya adalahfalse.TIMEOUT_SECONDS: Jumlah detik yang dapat dibutuhkan skrip sebelum atau sesudah snapshot untuk selesai berjalan sebelum waktu tunggu habis. Nilai bilangan bulat harus antara 0 dan 300. Nilai defaultnya adalah60.
Mulai ulang Agen Tamu untuk menggunakan setelan konfigurasi baru.
$ sudo systemctl restart google-guest-agent.service
Membuat snapshot dengan guest-flush diaktifkan
Dengan menggunakan konsol Cloud de Confiance , Google Cloud CLI, atau REST,
buat snapshot dengan opsi guest-flush diaktifkan. Tindakan ini akan mulai menjalankan
skrip sebelum dan sesudah snapshot sebelum dan sesudah snapshot diambil.
Konsol
Buka halaman Create a Snapshot di konsol Cloud de Confiance .
Buka halaman Create a Snapshot- Masukkan Name snapshot.
-
Pilih Snapshot type. Defaultnya adalah snapshot
STANDARD, yang merupakan opsi terbaik untuk pencadangan jangka panjang dan pemulihan dari bencana.Pilih Archive snapshot untuk retensi data yang lebih hemat biaya.
- Opsional: Masukkan Deskripsi snapshot.
- Di bagian Source disk, pilih disk yang sudah ada yang ingin Anda buat snapshot-nya.
Di bagian Location, pilih lokasi penyimpanan snapshot Anda.
Lokasi default bawaan atau yang telah disesuaikan dalam setelan snapshot Anda akan otomatis dipilih. Secara opsional, Anda dapat mengganti setelan snapshot dan menyimpan snapshot Anda di lokasi penyimpanan kustom dengan melakukan hal berikut:
Pilih jenis lokasi penyimpanan yang diinginkan untuk snapshot Anda.
- Pilih Multi-regional untuk ketersediaan yang lebih tinggi dengan biaya lebih tinggi.
- Pilih Snapshot regional untuk mendapatkan kontrol lebih besar atas lokasi fisik data Anda dengan biaya yang lebih rendah.
- Di kolom Pilih lokasi, pilih region atau multi-region spesifik yang ingin Anda gunakan. Untuk menggunakan region atau multi-region yang terdekat dengan disk sumber, pilih Berdasarkan lokasi disk.
- Centang opsi Enable application consistent snapshot.
- Klik Create untuk membuat snapshot.
gcloud
Anda dapat membuat snapshot di kebijakan lokasi penyimpanan yang ditentukan oleh setelan snapshot atau menggunakan lokasi penyimpanan alternatif pilihan Anda. Untuk informasi selengkapnya, lihat Memilih lokasi penyimpanan snapshot.
Untuk membuat snapshot di lokasi default bawaan atau disesuaikan yang dikonfigurasi di setelan snapshot Anda, gunakan perintah
gcloud compute snapshots create.gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --guest-flush-
Atau, untuk mengganti setelan snapshot dan membuat snapshot di lokasi penyimpanan kustom, sertakan tanda
--storage-locationuntuk menunjukkan tempat penyimpanan snapshot Anda.gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --storage-location=STORAGE_LOCATION \ --guest-flush -
(Pratinjau) Untuk membuat snapshot cakupan regional di region yang diizinkan, sertakan tanda
--regionuntuk menunjukkan tempat membuat snapshot Anda.gcloud beta compute snapshots create SNAPSHOT_NAME \ --region=SNAPSHOT_SCOPE_REGION --source-disk=SOURCE_DISK_NAME \ --source-disk-zone=SOURCE_ZONE \ --snapshot-type=SNAPSHOT_TYPE
Ganti kode berikut:
- SNAPSHOT_NAME: Nama untuk snapshot.
- SOURCE_ZONE: Zona disk sumber.
- SOURCE_DISK_NAME: Nama volume disk tempat Anda ingin membuat snapshot.
- SNAPSHOT_TYPE: Jenis snapshot, baik STANDARD atau ARCHIVE.
Jika jenis snapshot tidak ditentukan, snapshot
STANDARDakan dibuat. -
STORAGE_LOCATION: Opsional: Untuk snapshot cakupan global, multi-region Cloud Storage atau region Cloud Storage tempat Anda ingin menyimpan snapshot. Anda hanya dapat menentukan satu lokasi penyimpanan.
Gunakan parameter
--storage-locationhanya jika Anda ingin mengganti lokasi penyimpanan default bawaan atau yang telah disesuaikan yang dikonfigurasi di setelan snapshot Anda. -
SNAPSHOT_SCOPE_REGION: Opsional: Untuk snapshot cakupan regional, region yang menjadi cakupan snapshot. Jika menyertakan parameter ini, Anda tidak dapat menggunakan parameter
--storage-location. STORAGE_LOCATION otomatis disetel ke SNAPSHOT_SCOPE_REGION.
REST
Anda dapat membuat snapshot di kebijakan lokasi penyimpanan yang ditentukan oleh setelan snapshot atau menggunakan lokasi penyimpanan alternatif pilihan Anda. Untuk informasi selengkapnya, lihat Memilih lokasi penyimpanan snapshot.
-
Untuk membuat snapshot di lokasi default bawaan atau disesuaikan yang dikonfigurasi di setelan snapshot Anda, buat permintaan
POSTke metodesnapshots.insert:POST https://compute.s3nsapis.fr/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE", "guestFlush": true, } -
Atau, untuk mengganti setelan snapshot dan membuat snapshot di lokasi penyimpanan kustom, buat permintaan
POSTke metodesnapshots.insertdan sertakan propertistorageLocationsdalam permintaan Anda:POST https://compute.s3nsapis.fr/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE", "storageLocations": [ "STORAGE_LOCATION" ], "guestFlush": true, } -
(Pratinjau) Untuk membuat snapshot cakupan regional di region yang diizinkan, buat permintaan
POSTke metodesnapshots.insertdan tentukan region pembuatan:POST https://compute.s3nsapis.fr/compute/beta/projects/DESTINATION_PROJECT_ID/regions/SNAPSHOT_SCOPE_REGION/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE" }
Ganti kode berikut:
- DESTINATION_PROJECT_ID: ID project tempat Anda ingin membuat snapshot.
- SNAPSHOT_NAME: Nama untuk snapshot.
- SOURCE_PROJECT_ID: ID project disk sumber.
- SOURCE_ZONE: Zona disk sumber.
- SOURCE_DISK_NAME: Nama disk tempat Anda ingin membuat snapshot.
- SNAPSHOT_TYPE: Jenis snapshot, baik STANDARD atau ARCHIVE.
Jika jenis snapshot tidak ditentukan, snapshot
STANDARDakan dibuat. -
STORAGE_LOCATION: Opsional: Untuk snapshot cakupan global, multi-region Cloud Storage atau region Cloud Storage tempat Anda ingin menyimpan snapshot. Anda hanya dapat menentukan satu lokasi penyimpanan.
Gunakan parameter
storageLocationshanya jika Anda ingin mengganti lokasi penyimpanan default bawaan atau yang telah disesuaikan yang dikonfigurasi di setelan snapshot Anda. SNAPSHOT_SCOPE_REGION: Opsional: Untuk snapshot cakupan regional, region yang menjadi cakupan snapshot. Jika menyertakan parameter ini, Anda tidak dapat menggunakan parameter
storageLocations. STORAGE_LOCATION otomatis disetel ke SNAPSHOT_SCOPE_REGION.
Buat jadwal snapshot dengan guest-flush diaktifkan
Anda dapat mengaktifkan pencadangan yang konsisten dengan aplikasi secara rutin dan otomatis untuk volume Persistent Disk zonal dan regional dengan jadwal snapshot. Untuk mengaktifkan snapshot yang konsisten dengan aplikasi untuk snapshot terjadwal, gunakan opsi --guest-flush saat Anda membuat jadwal snapshot sehingga skrip sebelum dan sesudah snapshot dieksekusi sebelum dan sesudah setiap snapshot terjadwal.
Misalnya, setelah mengonfigurasi file konfigurasi lingkungan tamu dan membuat skrip kustom, perintah berikut akan membuat snapshot yang konsisten dengan aplikasi setiap jam:
gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \ --description "MY HOURLY SNAPSHOT SCHEDULE" \ --start-time 22:00 \ --hourly-schedule 4 \ --guest-flush \ --max-retention-days SNAPSHOT_RETENTION_AGE
Untuk mempelajari lebih lanjut, lihat Tentang jadwal snapshot untuk disk.
Pemecahan masalah
Pecahkan masalah jadwal snapshot dan proses pembuatan dengan meninjau log dan memeriksa konfigurasi.
Meninjau log
Buka halaman Logs Explorer di konsolCloud de Confiance :
Tempel kueri berikut di Log query pane:
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot" OR protoPayload.methodName="ScheduledSnapshots"Jalankan kueri dan selidiki log:
Periksa konfigurasi
Jika tidak ada skrip snapshot pra atau pasca yang ditemukan di instance untuk membekukan aktivitas/IOPS pada sistem file, snapshot tidak akan dibuat. Pastikan Anda telah mengikuti langkah-langkah di Membuat skrip sebelum dan sesudah snapshot.
Jika terjadi error skrip atau waktu tunggu, tidak ada snapshot yang dibuat. Tinjau Mempersiapkan snapshot yang konsisten. Perhatikan bahwa periode waktu tunggu maksimum yang dapat Anda konfigurasi di setelan adalah 300 detik. Coba ulangi seluruh proses menggunakan skrip contoh.
Disk harus terpasang ke VM untuk mengambil snapshot disk dengan
guest-flushdiaktifkan. Untuk mempelajari cara membuat VM Linux dan memasang disk, lihat Membuat VM.