Anda dapat membuat snapshot konsisten aplikasi dari disk yang terpasang pada 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 tulis yang berat. Snapshot Konsisten aplikasi merekam status data aplikasi pada saat pencadangan dengan semua transaksi aplikasi selesai dan semua penulisan yang tertunda di-flush ke disk.
Untuk membuat snapshot yang konsisten dengan aplikasi, jeda aplikasi atau proses sistem operasi yang menulis data ke disk, hapus 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 dari 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 virtual machine (VM) Anda.
- Buat snapshot dengan opsi
guest-flush
diaktifkan. Opsiguest-flush
memulai skrip sebelum dan sesudah snapshot Anda.
Sebelum memulai
- Buat VM Linux.
- Perbarui lingkungan tamu.
-
Siapkan autentikasi, jika Anda belum melakukannya.
Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.
gcloud
-
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
- Menetapkan 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 initialize dengan menjalankan perintah berikut:
gcloud init
-
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk mengelola snapshot standar, minta administrator Anda untuk memberi Anda peran IAM berikut pada project:
-
Admin Instance Compute (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.
Peran bawaan ini berisi izin yang diperlukan untuk mengelola snapshot standar. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk mengelola snapshot standar:
-
Untuk membuat snapshot disk zona:
-
compute.snapshots.create
-
compute.disks.createSnapshot
-
-
Untuk membuat snapshot disk regional menggunakan data pada disk:
-
compute.snapshots.create
-
compute.instances.useReadOnly
-
compute.disks.createSnapshot
-
-
Untuk membuat snapshot disk regional dari checkpoint pemulihan replika:
-
compute.snapshots.create
-
compute.disks.createSnapshot
-
-
Untuk membuat jadwal snapshot:
compute.resourcePolicies.create
-
Untuk memasang jadwal snapshot ke disk:
-
compute.disks.addResourcePolicies
-
compute.resourcePolicies.use
-
-
Untuk menghapus snapshot:
-
compute.snapshots.delete
-
compute.snapshots.list
-
Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.
Batasan
Membuat snapshot yang konsisten dari aplikasi di Linux memiliki batasan berikut:
- Konsistensi aplikasi hanya dijamin oleh perilaku skrip sebelum dan sesudah snapshot kustom Anda, bukan oleh operasi snapshot itu sendiri.
- Saat menggunakan opsi
guest-flush
dalam permintaan pembuatan snapshot, snapshot tidak akan dibuat jika skrip menampilkan error atau mencapai batas waktu tunggu.
Membuat skrip snapshot sebelum dan sesudah
Sebelum melanjutkan, update lingkungan tamu agar Anda menjalankan software terbaru di VM Linux.
Untuk memfasilitasi konsistensi aplikasi, buat skrip shell snapshot sebelum dan sesudah 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 pra-snapshot. Perhatikan karakter
#!
di awal.
#!/bin/bash sudo fsfreeze -f [example-disk-location]
Contoh kode berikut menampilkan skrip snapshot postingan. 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 snapshot pra dan pasca Anda adalah daftar disk tempat Anda membuat snapshot. 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 mana yang dibuat untuk snapshot tersebut.
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 terpasang di SCSI mungkin muncul sebagai 1/0
, sedangkan
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.
edit /etc/default/instance_configs.cfg
Tambahkan bagian berikut ke file konfigurasi, lalu simpan perubahan dan keluar dari editor.
[Snapshots] enabled = ENABLED timeout_in_seconds = TIMEOUT_SECONDS
Ganti kode berikut:
ENABLED
: Tetapkan ketrue
untuk mengaktifkan fitur snapshot konsisten aplikasi. Nilai defaultnya adalahfalse
.TIMEOUT_SECONDS
: Jumlah detik yang dapat diperlukan oleh skrip snapshot sebelum atau sesudah untuk menyelesaikan operasi sebelum waktu 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
Menggunakan Google Cloud Console, Google Cloud CLI, atau REST, buat snapshot dengan opsi guest-flush
yang diaktifkan. Tindakan ini akan mulai menjalankan
skrip sebelum dan sesudah snapshot sebelum dan sesudah snapshot diambil.
Konsol
Buka halaman Create a Snapshot di Konsol Google Cloud.
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 (disaster recovery).Pilih Archive snapshot untuk retensi data yang lebih hemat biaya.
- Opsional: Masukkan Deskripsi snapshot.
- Di bagian Source disk, pilih disk yang ada, yang ingin Anda buatkan snapshot-nya.
Di bagian Location, pilih lokasi penyimpanan snapshot Anda.
Lokasi default yang telah ditentukan sebelumnya atau disesuaikan yang ditentukan di 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 lebih tinggi dengan biaya lebih tinggi.
- Pilih Snapshot regional untuk mendapatkan kontrol lebih besar atas lokasi fisik data dengan biaya yang lebih rendah.
- Di kolom Select location, pilih region atau multi-region tertentu yang ingin Anda gunakan. Untuk menggunakan region atau multi-region yang terdekat dengan disk sumber, pilih Based on disk's location.
- Centang opsi Aktifkan snapshot konsisten aplikasi.
- Klik Create untuk membuat snapshot.
gcloud
Anda dapat membuat snapshot dalam kebijakan lokasi penyimpanan yang ditentukan oleh setelan snapshot Anda atau menggunakan lokasi penyimpanan alternatif pilihan Anda. Untuk informasi selengkapnya, lihat Memilih lokasi penyimpanan snapshot.
Untuk membuat snapshot di lokasi default yang telah ditentukan sebelumnya 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 flag
--storage-location
untuk menunjukkan tempat untuk menyimpan 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
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, STANDARD atau Arsip.
Jika jenis snapshot tidak ditentukan, snapshot
STANDARD
akan dibuat. -
STORAGE_LOCATION: Opsional: Multi-region Cloud Storage atau region Cloud Storage tempat Anda ingin menyimpan snapshot. Anda hanya dapat menentukan satu lokasi penyimpanan.
Gunakan parameter
--storage-location
hanya jika Anda ingin mengganti lokasi penyimpanan default yang telah ditentukan sebelumnya atau disesuaikan yang dikonfigurasi di setelan snapshot Anda.
REST
Anda dapat membuat snapshot dalam kebijakan lokasi penyimpanan yang ditentukan oleh setelan snapshot Anda atau menggunakan lokasi penyimpanan alternatif pilihan Anda. Untuk informasi selengkapnya, lihat Memilih lokasi penyimpanan snapshot.
-
Untuk membuat snapshot di lokasi default yang telah ditentukan sebelumnya atau disesuaikan yang dikonfigurasi di setelan snapshot Anda, buat permintaan
POST
ke metodesnapshots.insert
:POST https://compute.googleapis.com/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
POST
ke metodesnapshots.insert
dan sertakan propertistorageLocations
dalam permintaan Anda:POST https://compute.googleapis.com/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, }
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 volume disk tempat Anda ingin membuat snapshot.
- SNAPSHOT_TYPE: Jenis snapshot, STANDARD atau Arsip.
Jika jenis snapshot tidak ditentukan, snapshot
STANDARD
akan dibuat. -
STORAGE_LOCATION: Opsional: Multi-region Cloud Storage atau region Cloud Storage tempat Anda ingin menyimpan snapshot. Anda hanya dapat menentukan satu lokasi penyimpanan.
Gunakan parameter
storageLocations
hanya jika Anda ingin mengganti lokasi penyimpanan default yang telah ditentukan sebelumnya atau disesuaikan yang dikonfigurasi di setelan snapshot Anda.
Buat jadwal snapshot dengan guest-flush
diaktifkan
Gunakan snapshot terjadwal untuk secara rutin dan otomatis mencadangkan Persistent Disk zona dan regional Anda serta Hyperdisk Google Cloud. Jika Anda ingin menjadwalkan
snapshot konsisten aplikasi untuk cadangan Anda, gunakan opsi --guest-flush
saat membuat jadwal snapshot sehingga skrip snapshot sebelum dan sesudah
dieksekusi sebelum dan sesudah setiap snapshot terjadwal.
Misalnya, setelah mengonfigurasi file konfigurasi lingkungan tamu dan membuat skrip kustom, perintah berikut akan membuat snapshot konsisten aplikasi per jam:
gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \ --description "MY HOURLY SNAPSHOT SCHEDULE" \ --start-time 22:00 \ --hourly-schedule 4 \ --guest-flush
Untuk mempelajari lebih lanjut, lihat Tentang jadwal snapshot untuk disk.
Pemecahan masalah
Gunakan langkah-langkah berikut untuk memecahkan masalah proses pembuatan snapshot.
Tinjau log dari peristiwa pembuatan snapshot Anda:
- Di konsol Google Cloud, buka halaman Google Cloud Observability Logging >
Logs:
Buka Logs Explorer - Buka Logs Explorer di navigasi sebelah kiri.
- Di daftar Filter by label or text search, pilih Convert to advanced filter.
Ganti kolom filter dengan teks berikut:
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot"
- Di konsol Google Cloud, buka halaman Google Cloud Observability Logging >
Logs:
Jika skrip tidak ditemukan, 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 Menyiapkan 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-flush
diaktifkan. Untuk mempelajari cara membuat VM Linux dan memasang disk, lihat Membuat VM.