error: Operation not supported: internal snapshots of a VM with pflash based firmware are not supported error: 不支持操作:不支持基于pflash固件的虚拟机的内部快照
[root@localhost kvms]# virsh snapshot-create rabbitmq2
error: Operation not supported: \
internal snapshots of a VM with pflash based firmware are not supported
#物理机型号: 长城飞腾服务器擎天EF860 /物理CPU型号: S2500 #KVM宿主机系统版本[root@localhost kvms]# cat /etc/.productinfo
Kylin Linux Advanced Server
release V10 (SP2) /(Sword)-aarch64-Build09/20210524
[root@localhost kvms]# cat /etc/system-release
Kylin Linux Advanced Server release V10 (Sword)
---
# name of domain, snapshot, and target disk device# 虚拟机、快照、目标磁盘设备的名字thedomain="rabbitmq2"snapshotname="snapshot1"targetdisk="vda"# 查看''类型,应该只是'file'类型virsh dumpxml $thedomain|grep' -A5
# show block level devices and qcow2 paths (hda,hdb,..etc)# 显示块级设备和qcow2路径(hda,hdb,..等)virsh domblklist $thedomain# create snapshot in default pool location# file name is $thedomain.$snapshotnamevirsh snapshot-create-as $thedomain --name $snapshotname --disk-only
# 列出虚拟机快照virsh snapshot-list $thedomain#查看默认poolvirsh pool-list
# 请注意,vda的路径现在已更改为快照文件virsh domblklist $thedomain# has changed to snapshot filevirsh dumpxml $thedomain|grep' -A5
# pull default pool path from xml pooldir=$(virsh pool-dumpxml default |grep -Po "(?<=path\>)[^<]+")echo"default pool dir: $pooldir"# should see two files starting with $thedomain# the one named $thedomain.$snapshotname is the snapshotcd$pooldirls -latr $thedomain*
# snapshot points to backing file, which is original disksudo qemu-img info $thedomain.$snapshotname -U --backing-chain
# capture original backing file name so we can revertbackingfile=$(qemu-img info $thedomain.$snapshotname -U |grep -Po 'backing file:\s\K(.*)')echo"backing file: $backingfile"
为了进行还原,我们需要将域 xml 修改回原始 qCow2文件,删除快照元数据,最后删除快照文件。(如果不再需要恢复快照,可以删除快照元数据文件和快照文件。)
# stop VMvirsh destroy $thedomain# edit hda path back to original qcow2 disk
virt-xml $thedomain --edit target=$targetdisk --disk path=$backingfile --update
# validate that we are now pointing back at original qcow2 diskvirsh domblklist $thedomain# delete snapshot metadatavirsh snapshot-delete --metadata $thedomain$snapshotname# delete snapshot qcow2 filesudorm$pooldir/$thedomain.$snapshotname# start guest domainvirsh start $thedomain
3.1: 恢复外部快照过程
# 请注意,vda的路径现在已更改为快照文件[root@localhost kvms]# virsh domblklist $thedomain
Target Source
------------------------------------------
vda /data/kvms/rabbitmq2.snapshot1
sda -
#< source > 已更改为快照文件[root@localhost kvms]# virsh dumpxml $thedomain | grep '<disk type='file'device='disk'><driver name='qemu'type='qcow2'/><source file='/data/kvms/rabbitmq2.snapshot1'/><backingStore type='file'index='1'><format type='qcow2'/><source file='/data/kvms/rabbitmq2.qcow2'/>
--
<disk type='file'device='cdrom'><driver name='qemu'/><target dev='sda'bus='scsi'/><readonly/><alias name='scsi0-0-0-0'/><address type='drive'controller='0'bus='0'target='0'unit='0'/>#从 xml 中提取默认池路径[root@localhost kvms]# pooldir=$(virsh pool-dumpxml default | grep -Po "(?<=path\>)[^<]+")
error: failed to get pool 'default'
error: Storage pool not found: no storage pool with matching name 'default'# 列出pool池[root@localhost kvms]# virsh pool-list
Name State Autostart
----------------------------
kvms active yes#修改pool池后,重新提取[root@localhost kvms]# pooldir=$(virsh pool-dumpxml kvms | grep -Po "(?<=path\>)[^<]+")[root@localhost kvms]# echo "default pool dir: $pooldir"
default pool dir: /data/kvms
#应该看到两个以$thedomain开头的文件#一个名为$thedomain的。$snapshotname是快照[root@localhost kvms]# cd $pooldir[root@localhost kvms]# pwd
/data/kvms
[root@localhost kvms]# ls -latr $thedomain*
-rw------- 1 qemu qemu 85912715264 Mar 28 09:36 rabbitmq2.qcow2
-rw------- 1 qemu qemu 951058432 Mar 28 09:42 rabbitmq2.snapshot1
#快照指向备份文件,即原磁盘以上翻译结果来自有道神经网络翻译(YNMT)· 通用场景[root@localhost kvms]# sudo qemu-img info $thedomain.$snapshotname -U --backing-chain
image: rabbitmq2.snapshot1
file format: qcow2
virtual size: 80 GiB (85899345920 bytes)
disk size: 1.22 GiB
cluster_size: 65536
backing file: /data/kvms/rabbitmq2.qcow2
backing file format: qcow2
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
image: /data/kvms/rabbitmq2.qcow2
file format: qcow2
virtual size: 80 GiB (85899345920 bytes)
disk size: 3.72 GiB
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
refcount bits: 16
corrupt: false#捕获原始备份文件名,以便恢复[root@localhost kvms]# backingfile=$(qemu-img info $thedomain.$snapshotname -U | grep -Po 'backing file:\s\K(.*)')[root@localhost kvms]# echo "backing file: $backingfile"
backing file: /data/kvms/rabbitmq2.qcow2
-------------------------------------------------------------
#为了进行还原,我们需要将域 xml 修改回原始 qCow2文件,删除快照元数据,最后删除快照文件
-------------------------------------------------------------
[root@localhost kvms]# virsh destroy $thedomain
Domain rabbitmq2 destroyed
#编辑 hda 路径返回原始 qCow2磁盘[root@localhost kvms]# virt-xml $thedomain --edit target=$targetdisk --disk path=$backingfile --update
WARNING The VM is not running, --update is inapplicable.
Domain 'rabbitmq2' defined successfully.
WARNING XML did not change after domain define. You may have changed a value that libvirt is setting by default.
#验证我们现在指向的是原始的 qCow2磁盘[root@localhost kvms]# virsh domblklist $thedomain
Target Source
--------------------------------------
vda /data/kvms/rabbitmq2.qcow2
sda -
#如果不需要快照元数据文件则可以删除,否则直接启动[root@localhost kvms]# virsh snapshot-delete --metadata $thedomain $snapshotname
Domain snapshot snapshot1 deleted
#如果不需要快照文件则删除[root@localhost kvms]# sudo rm $pooldir/$thedomain.$snapshotname#启动恢复好快照的虚拟机[root@localhost kvms]# virsh start $thedomain
Domain rabbitmq2 started
[root@localhost kvms]# virsh domblklist $thedomain
Target Source
--------------------------------------
vda /data/kvms/rabbitmq2.qcow2
sda
#恢复快照结束 -
---
[root@localhost kvms]# ls -latr $thedomain*
-rw------- 1 qemu qemu 85912715264 Mar 28 09:44 rabbitmq2.qcow2
[root@localhost kvms]# ls
Kylin-Server-10-SP2-Release-Build09-20210524-arm64.iso rabbitmq2.qcow2 rabbitmq.qcow2 rdjc-db.qcow2
[root@localhost kvms]# virsh snapshot-list $thedomain
Name Creation Time State
-------------------------------
[root@localhost kvms]# virsh dumpxml $thedomain | grep '<disk type='file'device='disk'><driver name='qemu'type='qcow2'/><source file='/data/kvms/rabbitmq2.qcow2'/><backingStore/><target dev='vda'bus='virtio'/><alias name='virtio-disk0'/>
--
<disk type='file'device='cdrom'><driver name='qemu'/><target dev='sda'bus='scsi'/><readonly/><alias name='scsi0-0-0-0'/><address type='drive'controller='0'bus='0'target='0'unit='0'/>
Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 Adapter:将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 Bridge:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 Builder:将一个复杂对象的构建与它的表示分离,使得同
import java.util.LinkedList;
public class CaseInsensitiveTrie {
/**
字典树的Java实现。实现了插入、查询以及深度优先遍历。
Trie tree's java implementation.(Insert,Search,DFS)
Problem Description
Igna
/*
2013年3月11日20:37:32
地点:北京潘家园
功能:完成用户格式化输入多个值
目的:学习scanf函数的使用
*/
# include <stdio.h>
int main(void)
{
int i, j, k;
printf("please input three number:\n"); //提示用
数据表中有记录的time字段(属性为timestamp)其值为:“0000-00-00 00:00:00”
程序使用select 语句从中取数据时出现以下异常:
java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date
java.sql.SQLException: Valu