Anda dapat membuat snapshot disk yang konsisten dengan aplikasi 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 buffering 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 disk yang konsisten dengan aplikasi, gunakan proses berikut:
- Agar dapat menyiapkan lingkungan tamu untuk konsistensi aplikasi, buat skrip shell kustom yang akan dijalankan sebelum dan setelah snapshot diambil
- Konfigurasikan setelan snapshot pada instance virtual machine (VM).
- Buat snapshot dengan opsi
guest-flush
diaktifkan. Opsiguest-flush
memulai skrip sebelum dan sesudah snapshot Anda.
Sebelum memulai
- Buat VM Linux.
- Perbarui lingkungan tamu.
-
Jika Anda belum melakukannya, siapkan autentikasi.
Autentikasi adalah
proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
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 membuat snapshot disk zona:
-
compute.snapshots.create
-
compute.disks.createSnapshot
-
-
Untuk membuat snapshot disk regional menggunakan data di 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 melampirkan jadwal snapshot ke disk:
-
compute.disks.addResourcePolicies
-
compute.resourcePolicies.use
-
-
Untuk menghapus snapshot:
-
compute.snapshots.delete
-
compute.snapshots.list
-
- 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. - 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.
- Disk yang terpasang SCSI: daftar yang dipisahkan koma dari pasangan
<target/lun>
. - Disk yang terpasang NVME: daftar yang dipisahkan koma dari pasangan
<nvme:namespace>
. Buka atau buat file konfigurasi lingkungan tamu Anda.
edit /etc/default/instance_configs.cfg
Tambahkan 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
: Tetapkan ketrue
untuk mengaktifkan fitur snapshot yang konsisten pada 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
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.Pilih Archive snapshot untuk retensi data yang lebih hemat biaya.
- Opsional: Masukkan Deskripsi snapshot.
- Pada 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 Select location, pilih region atau multi-region spesifik yang ingin Anda gunakan. Untuk menggunakan region atau multi-region yang paling dekat dengan disk sumber, pilih Berdasarkan lokasi disk.
- Centang opsi Enable application consistent snapshot.
- Klik Create untuk membuat 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-location
untuk 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
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
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.
-
Untuk membuat snapshot di lokasi default bawaan 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, }
- 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
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. Buka halaman Logs Explorer di konsol Google Cloud:
Tempel kueri berikut di Panel kueri log:
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot" OR protoPayload.methodName="ScheduledSnapshots"
Jalankan kueri dan selidiki log:
Jika tidak ada skrip pra-snapshot atau pasca-snapshot yang ditemukan di instance untuk membekukan aktivitas/IOPS di sistem file, tidak ada snapshot yang 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-flush
diaktifkan. Untuk mempelajari cara membuat VM Linux dan memasang disk, lihat Membuat VM.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Untuk informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud.
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan guna mengelola snapshot standar, minta administrator untuk memberi Anda peran IAM berikut pada project:
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk mengelola snapshot standar. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk mengelola snapshot standar:
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Batasan
Membuat snapshot yang konsisten dengan aplikasi di Linux memiliki batasan berikut:
Membuat skrip snapshot sebelum dan sesudah
Sebelum melanjutkan, update lingkungan tamu agar Anda menjalankan software terbaru di VM Linux Anda.
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:
Contoh kode berikut menunjukkan skrip pra-snapshot. 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 snapshot sebelum dan sesudah Anda adalah daftar disk yang snapshot-nya Anda buat. 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 snapshot-nya sedang dibuat.
Argumen diformat sebagai berikut:
Misalnya, boot disk yang terpasang SCSI mungkin muncul sebagai
1/0
, sementara disk tambahan yang terpasang ke VM mungkin muncul sebagai2/0
.Mengedit file konfigurasi lingkungan tamu
Konfigurasikan setelan snapshot yang konsisten dengan aplikasi Anda dengan mengupdate file konfigurasi tertentu pada VM.
Membuat snapshot dengan
guest-flush
diaktifkanDengan menggunakan konsol Google Cloud, 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
gcloud
Anda dapat membuat snapshot dalam kebijakan lokasi penyimpanan yang ditentukan oleh setelan snapshot atau menggunakan lokasi penyimpanan alternatif pilihan Anda. Untuk informasi selengkapnya, lihat Memilih lokasi penyimpanan snapshot.
REST
Anda dapat membuat snapshot dalam kebijakan lokasi penyimpanan yang ditentukan oleh setelan snapshot atau menggunakan lokasi penyimpanan alternatif pilihan Anda. Untuk informasi selengkapnya, lihat Memilih lokasi penyimpanan snapshot.
Ganti kode berikut:
Buat jadwal snapshot dengan
guest-flush
diaktifkanGunakan snapshot terjadwal untuk mencadangkan Persistent Disk zona dan regional serta Google Cloud Hyperdisk Anda secara rutin dan otomatis. Jika Anda ingin menjadwalkan snapshot yang konsisten dengan aplikasi untuk cadangan Anda, gunakan opsi
--guest-flush
saat Anda membuat jadwal snapshot sehingga skrip sebelum dan sesudah snapshot dijalankan 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 dan proses pembuatan snapshot dengan meninjau log dan memeriksa konfigurasi.
Meninjau log
Memeriksa konfigurasi
Langkah selanjutnya
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2024-11-27 UTC.
-