2020年12月1日火曜日

孤立したスナップショットの確認と削除の方法

 NutanixとAHVの構成において、仮想マシンのスナップショットは、ストレージブロックベースのスナップショット取得となります。

一方Prism画面からは、仮想マシンを削除する際に、取得したスナップショットを削除しないまま仮想マシンを削除することができてしまいます。


▲Delete all snapshots of this VM?のチェックを入れずに仮想マシンを消すと、その仮想マシンで取得していた、スナップショットは孤立したスナップショットになります。

こうなると、スナップショットは元の仮想マシンが存在しない孤立したスナップショットとなってしまいます。

この形で孤立したスナップショットはPrism上からは確認することが出来ず、そのままゴミとしてのこり続けます。今日はこのゴミとなったスナップショットを復元する方法と削除する方法をお伝えします。


孤立したスナップショットの確認

孤立したスナップショットは、NCCを利用することで確認できます。

ncc health_checks hypervisor_checks orphan_vm_snapshot_check

実行すると以下のようなUUIDで孤立したスナップショットの結果が表示されます。

Detailed information for orphan_vm_snapshot_check:
Node 192.168.XXX.YYY:
INFO: Found 9 orphan VM snapshot(s): ['660380b2-a2c1-4e4a-807b-0e230e0b5512', '4186337a-7218-4c6e-b88a-ccfade14fa2c', '588ca5a0-6416-4ffa-9a01-eea78a062f6f', '7638e79a-64be-4890-b87d-ed83aca4398c', '9199e109-6a40-4c32-8135-5a806282dc7b', '070dd5b0-4361-4d1f-aef2-5284640a5319', '5fa8aa7c-ed73-412d-978d-5f624b5a872c', '148a3176-943d-45bd-89f4-6c3d1362aced', '2a898e7f-1a45-4ed7-a89e-8aa77ef71f7a'].
Refer to KB 3752 (http://portal.nutanix.com/kb/3752) for details on orphan_vm_snapshot_check or Recheck with: ncc health_checks hypervisor_checks orphan_vm_snapshot_check

この環境では、9つの孤立しなスナップショットがあることが分ります。



孤立したスナップショットが何の仮想マシンかを確認する

孤立したスナップショットのUUIDは分りましたが、このスナップショットが何の仮想マシンで利用されていたのか、また、どのような名称を付けていたスナップショットかを確認します。

以下のコマンドを利用して、スナップショットの情報を取得します。

acli snapshot.get <SNAPSHOT-UUDI>

ここでは試しに、「5fa8aa7c-ed73-412d-978d-5f624b5a872c」で試してみます。

結果以下のようなスナップショット情報が表示されます。

gui installed {
  create_time_usecs: 1534811599505881 ★
  group_uuid: "d74ea526-e722-4603-81c2-c18d6f6e8677"
  logical_timestamp: 1
  name: "gui installed" ★
  uuid: "5fa8aa7c-ed73-412d-978d-5f624b5a872c"
  vm_spec {
    agent_vm: False
    disk_list {
      addr {
        bus: "ide"
        index: 0
      }
      cdrom: True
      empty: True
    }
    disk_list {
      addr {
        bus: "scsi"
        index: 0
      }
      clone {
        container_id: 1062
        snapshot_group_uuid: "d74ea526-e722-4603-81c2-c18d6f6e8677"
        vmdisk_uuid: "eb9a302f-b274-489a-a44b-63ab6af2ac64"
      }
    }
    hwclock_timezone: "Asia/Tokyo"
    machine_type: "pc"
    memory_mb: 6144
    name: "Ubuntu 16.4" ★
    nic_list {
      mac_addr: "50:6b:8d:12:2f:c8"
      network_uuid: "094444f7-5f75-47b8-859c-fa349866f205"
      pci_slot: 3
      type: "kNormalNic"
      vlan_mode: "kAccess"
    }
    num_cores_per_vcpu: 2
    num_vcpus: 2
    vga_console: True
    vm_type: "kGuestVM"
  }
  vm_uuid: "be6d4b5d-21a3-45f5-8c23-331feea6aee3"
}

この仮想マシンは、「Ubuntu 16.4」という仮想マシン名称で、「gui installed」という名前のスナップショットであることが分ります。

ではいつ作成したスナップショットかというと、create_time_usecsに値が書かれていますが、これはUnix表記のためそのままでは読み取ることが出来ません。
この場合、CVMで以下のコマンドを入力し変換します。

date --date "@UNIX時間"

今回は、「1534811599505881」を変換してみたいと思います。
コマンドでは、create_time_usecsにある後ろの6桁を除いて入力を行います。
この場合では、「1534811599505881」となり、505881が入力しないエリアとなります。

$ date --date "@1534811599"
Tue Aug 21 09:33:19 JST 2018

結果このスナップショットは、2018年8月21日のスナップショットであることが分りました。



スナップショットから仮想マシンを作成する

仮にこのスナップショットが必要な物で、このスナップショットから仮想マシンを復元したい場合は、以下のコマンドを利用します。

acli vm.clone <新規仮想マシン名> clone_from_snapshot=<スナップショット名>

今回は、仮想マシンを「NewUbuntu」とし、スナップショット名は「gui installed」と入力をします。

acli vm.clone NewUbuntu clone_from_snapshot="gui installed"
NewUbuntu: pending
NewUbuntu: complete

仮想マシンの作成が完了し、当時のスナップショットの仮想マシンが起動しました




孤立したスナップショットの削除方法

現実的には、スナップショットからの復元よりも、孤立してゴミとなったスナップショットを削除したいという方が多いと思います。
削除は以下のコマンドを使って行います。

acli snapshot.delete <スナップショット名 or スナップショットUUID>

ここでは、スナップショット名「gui installed」を削除してみます。

acli snapshot.delete "gui installed"
Delete 1 snapshots? (yes/no) yes
gui installed: complete

これで削除完了です。


なお、スナップショットの一覧は、以下のコマンドから確認することも可能です。

acli snapshot.list

これを入力すると、孤立の有無に関係なく全てのスナップショットが表示されます。ただし、DataProtectionで取得したスナップショットはこちらの表示の対象外となります。


検証環境などでは、ゴミなスナップショットが放置されたままとなり、利用している容量の割りにストレージが消費しているケースがあります。この場合は、孤立したスナップショットが存在していないかを是非確認することをお勧めします。






0 件のコメント:

コメントを投稿