Saturday, September 28, 2024

[KVM] Tạo snapshot trong KVM

-

Trước khi cài đặt, config hoặc nâng cấp máy ảo, mình muốn snapshot để nếu khi có sự cố xảy ra trong quá trình triển khai chúng ta có thể trả trạng thái của máy ảo về thời điểm chưa gặp lỗi khi triển khai. KVM (Kernel Virtual Machine) hỗ trợ cả live snapshot và shutdown máy ảo. Snapshot phải chạy trên định dạng đĩa qcow2.

Cú pháp tạo snapshot trong Linux cho KVM.

Lệnh virsh có thể tạo ảnh chụp nhanh từ file XML bằng cách sử dụng virsh snapshot-create hoặc trực tiếp từ một tập hợp các tùy chọn bằng cách sử dụng virsh snapshot-create-as.

virsh snapshot-create-as --domain {VM-NAME} --name "{SNAPSHOT-NAME}"

Where,

  • –domain {VM-NAME}: Tên của máy ảo
  • –name “{SNAPSHOT-NAME}”:Tên của snapshot

Ví dụ

Hãy list danh sách máy ảo hiện có và mình chọn máy ảo có tên kvm-test1 làm ví dụ.

$ virsh list --all
 Id   Name        State
---------------------------
 1    kvm-test1   running
 2    kvm-test2   running
 3    kvm-test3   running
 4    kvm-test4   running
 5    kvm-test5   running

Để xem các snapshot hiện có (nếu có) cho máy ảo có tên kvm-test1, hãy nhập:

$ virsh snapshot-list --domain kvm-test1

Hiện tại mình chưa tạo snapshot cho kvm-test1 nên danh sách snapshot của máy ảo này trống rỗng.

 Name   Creation Time   State
-------------------------------

Bây giờ mình sẽ tiến hành quy trình snapshot cho máy ảo kvm-test1. Trước tiên, hãy đảm bảo máy ảp kvm-test1 sử dụng disk qcow2.

virsh dumpxml kvm-test1 | grep -i qemu

Kết quả sẽ có nội dụng như dưới, máy ảo kvm-test1 đang chạy disk với type là qcow2.

<driver name='qemu' type='raw'/>
<driver name='qemu' type='qcow2'/>

Đầu tiên hãy shutdown máy ảo.

virsh shutdown kvm-test1

Sử dụng lệnh dưới để tạo snapshot đầu tiên.

virsh snapshot-create-as --domain kvm-test1 \
--name "14Dec2022_S1" \
--description "My First Snapshpot"

Sau khi snapshot xong, bạn có thể start lại máy ảo để tiếp tục sử dụng.

virsh start kvm-test1

Để xem các bản snapshot đã được chụp thành công, sử dụng lệnh dưới.

$ virsh snapshot-list --domain kvm-test1
 Name           Creation Time               State
-----------------------------------------------------
 14Dec2022_S1   2022-12-14 13:57:11 +0000   running

Hoặc để xem thông tin 1 bản snapshot, bạn hãy sử dụng lệnh dưới.

$ virsh snapshot-info --domain kvm-test1 --snapshotname 14Dec2022_S1
Name:           14Dec2022_S1
Domain:         kvm-test1
Current:        yes
State:          running
Location:       internal
Parent:         -
Children:       0
Descendants:    0
Metadata:       yes

Cú pháp restore snapshot cho KVM.

Đầu tiên hãy shutdown máy ảo cần restorage.

virsh shutdown --domain kvm-test1

Sử dụng lệnh dưới để tiến hành restore bản snapshot 14Dec2022_S1 cho máy ảo kvm-test1.

virsh snapshot-revert --domain kvm-test1 --snapshotname 14Dec2022_S1 --running

Cú pháp xoá snapshot cho KVM.

Để xoá snapshot, bạn sử dụng lệnh dưới.

virsh snapshot-delete --domain kvm-test1 --snapshotname 14Dec2022_S1

Cách snapshot trạng thái disk, không phải trạng thái máy ảo cho KVM.

virsh snapshot-create-as --name "snap01" \
--description "RHEL 7.6 snapshot" \
--disk-only \
--domain kvm-test1

Để xoá bản snapshot disk sử dụng command sau.

virsh snapshot-delete --domain kvm-test1 --metadata 14Dec2022

Xử lý 1 số lỗi trong quá trình tạo snapshot.

Trong quá trình tạo snapshot, bạn có thể gặp lỗi như sau:

error: Operation not supported: live snapshot creation is supported only during full system snapshots

Trong trường hợp như vậy, trước tiên hãy liệt kê tất cả các máy ảo.

virsh list

Kiểm tra các disk.

virsh dumpxml kvm-test1 | grep disk
virsh domblklist kvm-test1

Và sau đó chúng ta có thể tạo snapshot nhanh như sau.

$ virsh snapshot-create-as kvm-test1 --name 14Dec2022 --disk-only
Domain snapshot 14Dec2022 created

Để nhận các hướng dẫn tóm tắt về các lệnh snapshot-create-as, hãy sử dụng lệnh dưới.

$ virsh help snapshot-create-as
  NAME
    snapshot-create-as - Create a snapshot from a set of args

  SYNOPSIS
    snapshot-create-as <domain> [--name <string>] [--description <string>] [--print-xml] [--no-metadata] [--halt] [--disk-only] [--reuse-external] [--quiesce] [--atomic] [--live] [--memspec <string>] [[--diskspec] <string>]...

  DESCRIPTION
    Create a snapshot (disk and RAM) from arguments

  OPTIONS
    [--domain] <string>  domain name, id or uuid
    --name <string>  name of snapshot
    --description <string>  description of snapshot
    --print-xml      print XML document rather than create
    --no-metadata    take snapshot but create no metadata
    --halt           halt domain after snapshot is created
    --disk-only      capture disk state but not vm state
    --reuse-external  reuse any existing external files
    --quiesce        quiesce guest's file systems
    --atomic         require atomic operation
    --live           take a live snapshot
    --memspec <string>  memory attributes: [file=]name[,snapshot=type]
    [--diskspec] <string>  disk attributes: disk[,snapshot=type][,driver=type][,stype=type][,file=name]

Như vậy bài viết này đã cho biết cách tạo snapshot bằng lệnh virsh cli. Xem tài liệu tham khảo lệnh virsh tại đây để biết thêm thông tin.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories