在前邊的博客中,我們大致了解了virsh這個(gè)工具對(duì)kvm虛擬機(jī)的一些操作,回顧請(qǐng)參考https://www.cnblogs.com/qiuhom-1874/tag/virsh/;今天我們來(lái)了解下kvm的磁盤管理工具qemu-img常用命令的用法; 1、qemu-img的幫助信息 [root@node1 ~]# qemu-img -h qemu-img version 1.5.3, Copyright (c) 2004-2008 Fabrice Bellard usage: qemu-img command [command options] QEMU disk image utility Command syntax: check [-q] [-f fmt] [--output=ofmt] [-r [leaks | all]] [-T src_cache] filename create [-q] [-f fmt] [-o options] filename [size] commit [-q] [-f fmt] [-t cache] filename compare [-f fmt] [-F fmt] [-T src_cache] [-p] [-q] [-s] filename1 filename2 convert [-c] [-p] [-q] [-n] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt] [-o options] [-s snapshot_name] [-S sparse_size] filename [filename2 [...]] output_filename info [-f fmt] [--output=ofmt] [--backing-chain] filename map [-f fmt] [--output=ofmt] filename snapshot [-q] [-l | -a snapshot | -c snapshot | -d snapshot] filename rebase [-q] [-f fmt] [-t cache] [-T src_cache] [-p] [-u] -b backing_file [-F backing_fmt] filename resize [-q] filename [+ | -]size amend [-q] [-f fmt] [-t cache] -o options filename Command parameters: 'filename' is a disk image filename 'fmt' is the disk image format. It is guessed automatically in most cases 'cache' is the cache mode used to write the output disk image, the valid options are: 'none', 'writeback' (default, except for convert), 'writethrough', 'directsync' and 'unsafe' (default for convert) 'src_cache' is the cache mode used to read input disk images, the valid options are the same as for the 'cache' option 'size' is the disk image size in bytes. Optional suffixes 'k' or 'K' (kilobyte, 1024), 'M' (megabyte, 1024k), 'G' (gigabyte, 1024M), 'T' (terabyte, 1024G), 'P' (petabyte, 1024T) and 'E' (exabyte, 1024P) are supported. 'b' is ignored. 'output_filename' is the destination disk image filename 'output_fmt' is the destination format 'options' is a comma separated list of format specific options in a name=value format. Use -o ? for an overview of the options supported by the used format '-c' indicates that target image must be compressed (qcow format only) '-u' enables unsafe rebasing. It is assumed that old and new backing file match exactly. The image doesn't need a working backing file before rebasing in this case (useful for renaming the backing file) '-h' with or without a command shows this help and lists the supported formats '-p' show progress of command (only certain commands) '-q' use Quiet mode - do not print any output (except errors) '-S' indicates the consecutive number of bytes (defaults to 4k) that must contain only zeros for qemu-img to create a sparse image during conversion. If the number of bytes is 0, the source will not be scanned for unallocated or zero sectors, and the destination image will always be fully allocated '--output' takes the format in which the output must be done (human or json) '-n' skips the target volume creation (useful if the volume is created prior to running qemu-img) Parameters to check subcommand: '-r' tries to repair any inconsistencies that are found during the check. '-r leaks' repairs only cluster leaks, whereas '-r all' fixes all kinds of errors, with a higher risk of choosing the wrong fix or hiding corruption that has already occurred. Parameters to snapshot subcommand: 'snapshot' is the name of the snapshot to create, apply or delete '-a' applies a snapshot (revert disk to saved state) '-c' creates a snapshot '-d' deletes a snapshot '-l' lists all snapshots in the given image Parameters to compare subcommand: '-f' first image format '-F' second image format '-s' run in Strict mode - fail on different image size or sector allocation Supported formats: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebug [root@node1 ~]# 提示:從上面的幫助信息可以看到qemu-img這個(gè)命令分了check、create、commit、compare、convert、info、map、snapshot、rebase、resize、amend這些子命令,每個(gè)子命令都有特有的功能和語(yǔ)法以及選項(xiàng); qemu-img create:用于創(chuàng)建磁盤文件使用的命令,語(yǔ)法格式:qemu-img create [-q] [-f fmt] [-o options] filename [size];其中-f用于指定磁盤的格式,常用的格式有,raw,qcow,qcow2;如果要查看create子命令還有那些選項(xiàng)可用,可以是使用-o ?來(lái)指定,如下示例; 示例:查看create子命令的選項(xiàng)說(shuō)明,可以使用qemu-img create -f qcow2 -o ? /kvm/images/test.img [root@node1 ~]# qemu-img create -f qcow2 -o ? /kvm/images/test.img Supported options: size Virtual disk size compat Compatibility level (0.10 or 1.1) backing_file File name of a base image backing_fmt Image format of the base image encryption Encrypt the image cluster_size qcow2 cluster size preallocation Preallocation mode (allowed values: off, metadata, falloc, full) lazy_refcounts Postpone refcount updates [root@node1 ~]# 提示:以上示例表示要?jiǎng)?chuàng)建/kvm/images/test.img磁盤文件格式為qcow2它有哪些選項(xiàng);這里需要說(shuō)明一點(diǎn)在linux系統(tǒng)上文件的后綴只是起給人看的作用,方便人區(qū)分它,系統(tǒng)它不以后綴來(lái)確定它的格式;從上面的幫助信息可以看到create子命令的選項(xiàng)有size,該選項(xiàng)用于指定創(chuàng)建磁盤文件的大小;compat選項(xiàng)用于指定兼容性;backing_file用于指定備份文件名稱;backing_fmt用于指定備份文件的格式;encryption用于指定是否加密,true表示加密false表示不加密,默認(rèn)不指定是false;cluster_size指定磁盤的簇大??;preallocation用于指定磁盤預(yù)分配策略,其中off表示不預(yù)分配,metadata表示只預(yù)分配元數(shù)據(jù)大小,falloc表示隨文件的增加而分配,full表示立即分配所有磁盤空間;默認(rèn)是指不預(yù)分配磁盤空間大??; 示例:創(chuàng)建一個(gè)2G的磁盤,分別用不同的預(yù)分配策略機(jī)制 [root@node1 ~]# qemu-img create -f qcow2 -o preallocation=off,size=2G /kvm/images/a1.img Formatting '/kvm/images/a1.img', fmt=qcow2 size=2147483648 encryption=off cluster_size=65536 preallocation='off' lazy_refcounts=off [root@node1 ~]# ll -h /kvm/images/a1.img -rw-r--r-- 1 root root 193K 8月 18 22:17 /kvm/images/a1.img [root@node1 ~]# qemu-img info /kvm/images/a1.img image: /kvm/images/a1.img file format: qcow2 virtual size: 2.0G (2147483648 bytes) disk size: 196K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false [root@node1 ~]# qemu-img create -f qcow2 -o preallocation=metadata,size=2G /kvm/images/a2.img Formatting '/kvm/images/a2.img', fmt=qcow2 size=2147483648 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off [root@node1 ~]# ll -h /kvm/images/a2.img -rw-r--r-- 1 root root 2.1G 8月 18 22:18 /kvm/images/a2.img [root@node1 ~]# qemu-img info /kvm/images/a2.img image: /kvm/images/a2.img file format: qcow2 virtual size: 2.0G (2147483648 bytes) disk size: 708K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false [root@node1 ~]# qemu-img create -f qcow2 -o preallocation=falloc,size=2G /kvm/images/a3.img Formatting '/kvm/images/a3.img', fmt=qcow2 size=2147483648 encryption=off cluster_size=65536 preallocation='falloc' lazy_refcounts=off [root@node1 ~]# ll -h /kvm/images/a3.img -rw-r--r-- 1 root root 2.1G 8月 18 22:19 /kvm/images/a3.img [root@node1 ~]# qemu-img info /kvm/images/a3.img image: /kvm/images/a3.img file format: qcow2 virtual size: 2.0G (2147483648 bytes) disk size: 2.0G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false [root@node1 ~]# qemu-img create -f qcow2 -o preallocation=full,size=2G /kvm/images/a4.img Formatting '/kvm/images/a4.img', fmt=qcow2 size=2147483648 encryption=off cluster_size=65536 preallocation='full' lazy_refcounts=off [root@node1 ~]# ll -h /kvm/images/a4.img -rw-r--r-- 1 root root 2.1G 8月 18 22:21 /kvm/images/a4.img [root@node1 ~]# qemu-img info /kvm/images/a4.img image: /kvm/images/a4.img file format: qcow2 virtual size: 2.0G (2147483648 bytes) disk size: 2.0G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false [root@node1 ~]# 提示:從上面的示例可以看到除了off指定創(chuàng)建的磁盤,我們看到的大小是一個(gè)很小的大小,其他模式在文件系統(tǒng)上表現(xiàn)形式都是我們指定大小的空間;從qemu-img info 命令來(lái)看,off和metadata disk size是很小的空間,虛擬空間是我們指定的大?。缓笳遞alloc和full disk大小和virtual size大小都是我們指定的大??;在文件系統(tǒng)上看到的磁盤文件之所以要大于我們指定的空間,是因?yàn)樵谖募到y(tǒng)上它作為一個(gè)文件形式存在,它也有元素?cái)?shù)據(jù)信息的; qemu-img info :用于查看指定磁盤文件的詳細(xì)信息;用法格式:qemu-img info [-f fmt] [--output=ofmt] [--backing-chain] filename [root@node1 ~]# qemu-img info /kvm/images/centos7.qcow2 image: /kvm/images/centos7.qcow2 file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 196K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false [root@node1 ~]# qemu-img info /kvm/images/win7.qcow2 image: /kvm/images/win7.qcow2 file format: qcow2 virtual size: 50G (53687091200 bytes) disk size: 8.5G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false [root@node1 ~]# qemu-img check:對(duì)指定磁盤文件做檢查;用法格式:qemu-img check [-q] [-f fmt] [--output=ofmt] [-r [leaks | all]] [-T src_cache] filename [root@node1 ~]# qemu-img check /kvm/images/win7.qcow2 No errors were found on the image. 138808/819200 = 16.94% allocated, 27.22% fragmented, 0.00% compressed clusters Image end offset: 9098887168 [root@node1 ~]# qemu-img check /kvm/images/centos7.qcow2 No errors were found on the image. Image end offset: 262144 [root@node1 ~]# qemu-img snapshot:對(duì)指定磁盤文件做快照相關(guān)操作;語(yǔ)法格式:qemu-img snapshot [-q] [-l | -a snapshot | -c snapshot | -d snapshot] filename -c:表示創(chuàng)建快照 [root@node1 ~]# qemu-img snapshot -c snapshot_centos7_1 /kvm/images/centos7.qcow2 -l:查看指定磁盤文件的快照列表 [root@node1 ~]# qemu-img snapshot -l /kvm/images/centos7.qcow2 Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 snapshot_centos7_1 0 2017-03-29 01:16:08 00:00:00.000 [root@node1 ~]# -a:應(yīng)用快照,將磁盤恢復(fù)到做快照那一刻; [root@node1 ~]# qemu-img snapshot -a snapshot_centos7_1 /kvm/images/centos7.qcow2 [root@node1 ~]# -d:刪除快照 [root@node1 ~]# qemu-img snapshot -l /kvm/images/centos7.qcow2 Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 snapshot_centos7_1 0 2017-03-29 01:16:08 00:00:00.000 [root@node1 ~]# qemu-img snapshot -d snapshot_centos7_1 /kvm/images/centos7.qcow2 [root@node1 ~]# qemu-img snapshot -l /kvm/images/centos7.qcow2 [root@node1 ~]# qemu-img convert:鏡像格式轉(zhuǎn)換,語(yǔ)法格式:qemu-img convert [-c] [-p] [-q] [-n] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt] [-o options] [-s snapshot_name] [-S sparse_size] filename [filename2 [...]] output_filename;-c表示壓縮輸出文件,但只有qcow2和qcow格式的鏡像文件才支持壓縮,而且這種壓縮是只讀的,如果壓縮的扇區(qū)被重寫,則會(huì)被重寫為未壓縮的數(shù)據(jù)。-p用于顯示轉(zhuǎn)換進(jìn)度;-o用于指定輸出文件的選項(xiàng),比如是否加密呀,大小,等等。。 示例1:不加輸出格式直接轉(zhuǎn)換qcow2格式的磁盤文件 [root@node1 ~]# qemu-img create -f qcow2 /kvm/images/test1.img 1G Formatting '/kvm/images/test1.img', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off [root@node1 ~]# qemu-img info /kvm/images/test1.img image: /kvm/images/test1.img file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 196K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false [root@node1 ~]# qemu-img convert /kvm/images/test1.img test1-1.img [root@node1 ~]# qemu-img info test1-1.img image: test1-1.img file format: raw virtual size: 1.0G (1073741824 bytes) disk size: 0 [root@node1 ~]# 提示:qemu-img convert輸入的文件格式它會(huì)自動(dòng)識(shí)別,輸出格式如果不指定它默認(rèn)轉(zhuǎn)換為raw格式; 示例2:就vmdk格式的文件轉(zhuǎn)換成qcow2格式的磁盤文件 [root@node1 ~]# cd /kvm/images/ [root@node1 images]# ls centos7.qcow2 test1.img [root@node1 images]# rz rz waiting to receive. zmodem trl+C ? 100% 512 KB 512 KB/s 00:00:01 0 Errors01-s001.vmdk... [root@node1 images]# ls CentOS-6.9-x86_64-000001-s001.vmdk centos7.qcow2 test1.img [root@node1 images]# qemu-img info CentOS-6.9-x86_64-000001-s001.vmdk image: CentOS-6.9-x86_64-000001-s001.vmdk file format: vmdk virtual size: 4.0G (4261412864 bytes) disk size: 512K cluster_size: 65536 Format specific information: cid: 4294967295 parent cid: 4294967295 create type: monolithicSparse extents: [0]: virtual size: 4261412864 filename: CentOS-6.9-x86_64-000001-s001.vmdk cluster size: 65536 format: [root@node1 images]# qemu-img convert ./CentOS-6.9-x86_64-000001-s001.vmdk -O qcow2 ./centos6.qcow2 [root@node1 images]# ll 總用量 1244560 -rw-r--r-- 1 root root 524288 4月 19 2020 CentOS-6.9-x86_64-000001-s001.vmdk -rw-r--r-- 1 root root 197120 3月 29 01:33 centos6.qcow2 -rw-r--r-- 1 qemu qemu 1273561600 3月 29 01:32 centos7.qcow2 -rw-r--r-- 1 root root 197120 3月 29 01:24 test1.img [root@node1 images]# qemu-img info ./centos6.qcow2 image: ./centos6.qcow2 file format: qcow2 virtual size: 4.0G (4261412864 bytes) disk size: 196K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false [root@node1 images]# 提示:我們可以根據(jù)把不同格式的磁盤文件相互轉(zhuǎn)換,從而實(shí)現(xiàn)把虛擬機(jī)從一個(gè)平臺(tái)遷移到另一個(gè)平臺(tái); qemu-img resize:動(dòng)態(tài)增刪磁盤的大?。徽Z(yǔ)法格式:qemu-img resize [-q] filename [+ | -]size; [root@node1 images]# ll -h 總用量 1.2G -rw-r--r-- 1 root root 512K 4月 19 2020 CentOS-6.9-x86_64-000001-s001.vmdk -rw-r--r-- 1 root root 193K 3月 29 01:33 centos6.qcow2 -rw-r--r-- 1 qemu qemu 1.2G 3月 29 02:03 centos7.qcow2 -rw-r--r-- 1 root root 193K 3月 29 01:24 test1.img [root@node1 images]# qemu-img info test1.img image: test1.img file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 196K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false [root@node1 images]# qemu-img resize test1.img +1G Image resized. [root@node1 images]# qemu-img info test1.img image: test1.img file format: qcow2 virtual size: 2.0G (2147483648 bytes) disk size: 260K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false [root@node1 images]# ll -h 總用量 1.2G -rw-r--r-- 1 root root 512K 4月 19 2020 CentOS-6.9-x86_64-000001-s001.vmdk -rw-r--r-- 1 root root 193K 3月 29 01:33 centos6.qcow2 -rw-r--r-- 1 qemu qemu 1.2G 3月 29 02:04 centos7.qcow2 -rw-r--r-- 1 root root 257K 3月 29 02:04 test1.img [root@node1 images]# 提示:動(dòng)態(tài)縮減空間必須保證磁盤空間大于里面存儲(chǔ)的數(shù)據(jù)空間,在做刪減操作有必要先備份一免磁盤損壞導(dǎo)致數(shù)據(jù)丟失; [root@node1 images]# qemu-img info test1.img image: test1.img file format: qcow2 virtual size: 2.0G (2147483648 bytes) disk size: 200K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false [root@node1 images]# qemu-img resize test1.img -1G qemu-img: qcow2 doesn't support shrinking images yet qemu-img: This image does not support resize [root@node1 images]# 提示:這里還需要注意一點(diǎn),qcow2的格式磁盤不支持刪減操作; 2、示例:動(dòng)態(tài)將創(chuàng)建好的磁盤插入現(xiàn)運(yùn)行的虛擬機(jī)上; 新建磁盤 [root@node1 ~]# qemu-img create -f qcow2 -o preallocation=metadata,size=2G /kvm/images/c1.img Formatting '/kvm/images/c1.img', fmt=qcow2 size=2147483648 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off [root@node1 ~]# qemu-img info /kvm/images/c1.img image: /kvm/images/c1.img file format: qcow2 virtual size: 2.0G (2147483648 bytes) disk size: 708K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false [root@node1 ~]# ll -h /kvm/images/c1.img -rw-r--r-- 1 root root 2.1G 3月 29 02:18 /kvm/images/c1.img [root@node1 ~]# 把磁盤附加到現(xiàn)運(yùn)行的虛擬機(jī)上 [root@node1 ~]# virsh list --all Id 名稱 狀態(tài) ---------------------------------------------------- 2 centos7 running [root@node1 ~]# virsh domblklist centos7 目標(biāo) 源 ------------------------------------------------ vda /kvm/images/centos7.qcow2 hda - [root@node1 ~]# virsh help attach-disk NAME attach-disk - 附加磁盤設(shè)備 SYNOPSIS attach-disk <domain> <source> <target> [--targetbus <string>] [--driver <string>] [--subdriver <string>] [--iothread <string>] [--cache <string>] [--io <string>] [--type <string>] [--mode <string>] [--sourcetype <string>] [--serial <string>] [--wwn <string>] [--rawio] [--address <string>] [--multifunction] [--print-xml] [--persistent] [--config] [--live] [--current] DESCRIPTION 附加新磁盤設(shè)備. OPTIONS [--domain] <string> domain name, id or uuid [--source] <string> 磁盤設(shè)備源 [--target] <string> 磁盤設(shè)備目標(biāo) --targetbus <string> target bus of disk device --driver <string> 磁盤設(shè)備驅(qū)動(dòng) --subdriver <string> 磁盤設(shè)備副驅(qū)動(dòng) --iothread <string> IOThread to be used by supported device --cache <string> 磁盤設(shè)備的緩存模式 --io <string> io policy of disk device --type <string> 目標(biāo)設(shè)備類型 --mode <string> 設(shè)備讀寫模式 --sourcetype <string> 源類型 (block|file) --serial <string> 磁盤設(shè)備序列號(hào) --wwn <string> 磁盤設(shè)備的 wwn --rawio 需要 rawio 容量 --address <string> 磁盤設(shè)備地址 --multifunction 在指定地址中使用多功能 pci --print-xml 輸出 XML 文檔而不是附加該磁盤 --persistent 讓實(shí)時(shí)更改持久 --config 影響下一次引導(dǎo) --live 影響運(yùn)行的域 --current 影響當(dāng)前域 [root@node1 ~]# virsh attach-disk centos7 /kvm/images/c1.img hda 錯(cuò)誤:附加磁盤失敗 錯(cuò)誤:XML 錯(cuò)誤:磁盤源 'hda' 和 '<null>' 有重復(fù)的目標(biāo) '/kvm/images/c1.img' [root@node1 ~]# virsh attach-disk centos7 /kvm/images/c1.img hdb 錯(cuò)誤:附加磁盤失敗 錯(cuò)誤:不支持的操作:無(wú)法熱插拔磁盤總線 'ide'。 [root@node1 ~]# virsh attach-disk centos7 /kvm/images/c1.img vdb 成功附加磁盤 [root@node1 ~]# virsh domblklist centos7 目標(biāo) 源 ------------------------------------------------ vda /kvm/images/centos7.qcow2 vdb /kvm/images/c1.img hda - [root@node1 ~]# 提示:hd類型的磁盤上ide接口,ide接口類型的磁盤上不支持熱插拔的,所以我們要給它識(shí)別成支持熱插拔的磁盤類型,比如vd類型(virtual disk虛擬磁盤) 驗(yàn)證:連接至centos7控制臺(tái),用fdisk -l命令查看 是否有新的磁盤加入到虛擬機(jī)? [root@node1 ~]# virsh console centos7 連接到域 centos7 換碼符為 ^] CentOS Linux 7 (Core) Kernel 3.10.0-693.el7.x86_64 on an x86_64 localhost login: root Password: Last login: Wed Aug 19 09:30:56 on tty1 [root@localhost ~]# fdisk -l Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000a5c54 Device Boot Start End Blocks Id System /dev/vda1 * 2048 1050623 524288 83 Linux /dev/vda2 1050624 20971519 9960448 8e Linux LVM Disk /dev/mapper/centos-root: 10.2 GB, 10192158720 bytes, 19906560 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos-swap: 4 MB, 4194304 bytes, 8192 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/vdb: 2148 MB, 2148073472 bytes, 4195456 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes [root@localhost ~]# 提示:可以看到有一個(gè)vdb的磁盤已經(jīng)被虛擬機(jī)識(shí)別; 在虛擬機(jī)內(nèi)部對(duì)/dev/vdb進(jìn)行分區(qū),并格式化 [root@localhost ~]# fdisk /dev/vdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0xe6bebed1. Command (m for help): p Disk /dev/vdb: 2148 MB, 2148073472 bytes, 4195456 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xe6bebed1 Device Boot Start End Blocks Id System Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): First sector (2048-4195455, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-4195455, default 4195455): Using default value 4195455 Partition 1 of type Linux and of size 2 GiB is set Command (m for help): p Disk /dev/vdb: 2148 MB, 2148073472 bytes, 4195456 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xe6bebed1 Device Boot Start End Blocks Id System /dev/vdb1 2048 4195455 2096704 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@localhost ~]# mkfs.xfs /dev/vdb1 meta-data=/dev/vdb1 isize=512 agcount=4, agsize=131044 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=524176, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@localhost ~]# 提示:到此我們新加的硬盤就可以實(shí)現(xiàn)掛載使用了; 掛載/dev/vdb1到/mnt [root@localhost ~]# df -TH Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 11G 940M 9.3G 10% / devtmpfs devtmpfs 509M 0 509M 0% /dev tmpfs tmpfs 521M 0 521M 0% /dev/shm tmpfs tmpfs 521M 14M 507M 3% /run tmpfs tmpfs 521M 0 521M 0% /sys/fs/cgroup /dev/vda1 xfs 534M 124M 410M 24% /boot tmpfs tmpfs 105M 0 105M 0% /run/user/0 [root@localhost ~]# mount /dev/vdb1 /mnt [root@localhost ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 9.5G 897M 8.7G 10% / devtmpfs devtmpfs 486M 0 486M 0% /dev tmpfs tmpfs 497M 0 497M 0% /dev/shm tmpfs tmpfs 497M 13M 484M 3% /run tmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/vda1 xfs 509M 119M 391M 24% /boot tmpfs tmpfs 100M 0 100M 0% /run/user/0 /dev/vdb1 xfs 2.0G 33M 2.0G 2% /mnt [root@localhost ~]# 3、示例:動(dòng)態(tài)將插入到虛擬機(jī)上的磁盤拆卸下來(lái); [root@node1 ~]# virsh domblklist centos7 目標(biāo) 源 ------------------------------------------------ vda /kvm/images/centos7.qcow2 vdb /kvm/images/c1.img hda - [root@node1 ~]# virsh help detach-disk NAME detach-disk - 分離磁盤設(shè)備 SYNOPSIS detach-disk <domain> <target> [--persistent] [--config] [--live] [--current] [--print-xml] DESCRIPTION 分離磁盤設(shè)備。 OPTIONS [--domain] <string> domain name, id or uuid [--target] <string> 磁盤設(shè)備目標(biāo) --persistent 讓實(shí)時(shí)更改持久 --config 影響下一次引導(dǎo) --live 影響運(yùn)行的域 --current 影響當(dāng)前域 --print-xml print XML document rather than detach the disk [root@node1 ~]# virsh detach-disk centos7 vdb 成功分離磁盤 [root@node1 ~]# virsh domblklist centos7 目標(biāo) 源 ------------------------------------------------ vda /kvm/images/centos7.qcow2 hda - [root@node1 ~]# 提示:拆除硬盤可以直接使用virsh detach-disk 直接拆卸即可; 驗(yàn)證:鏈接到虛擬機(jī)內(nèi)部查看磁盤是否被拆卸了? [root@node1 ~]# virsh console centos7 連接到域 centos7 換碼符為 ^] [root@localhost ~]# fdisk -l Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000a5c54 Device Boot Start End Blocks Id System /dev/vda1 * 2048 1050623 524288 83 Linux /dev/vda2 1050624 20971519 9960448 8e Linux LVM Disk /dev/mapper/centos-root: 10.2 GB, 10192158720 bytes, 19906560 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos-swap: 4 MB, 4194304 bytes, 8192 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes [root@localhost ~]# 提示:可以看到在虛擬機(jī)內(nèi)部就只有vda沒有vdb了,說(shuō)明我們把磁盤成功拆除了; 查看拆除下來(lái)的磁盤信息 [root@node1 ~]# qemu-img info /kvm/images/c1.img image: /kvm/images/c1.img file format: raw virtual size: 2.0G (2148073472 bytes) disk size: 11M [root@node1 ~]# 提示:這里需要說(shuō)明一下,我們?cè)诟郊哟疟P到虛擬內(nèi)部以后,如果對(duì)磁盤進(jìn)行了分區(qū)格式化,它的格式默認(rèn)會(huì)變成raw格式; 4、示例:給虛擬機(jī)做快照; [root@node1 ~]# virsh help snapshot-create-as NAME snapshot-create-as - 使用一組參數(shù)生成快照 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 使用一組參數(shù)生成快照(磁盤和 RAM) OPTIONS [--domain] <string> domain name, id or uuid --name <string> 快照名稱 --description <string> 快照描述 --print-xml 輸出 XML 文檔而不是生成 XML --no-metadata 提取快照但不生成元數(shù)據(jù) --halt 生成快照后停止域 --disk-only 捕獲磁盤狀態(tài)而不是 vm 狀態(tài) --reuse-external 重新使用任意現(xiàn)有外部文件 --quiesce 靜默虛擬機(jī)的文件系統(tǒng) --atomic 需要自動(dòng)操作 --live 提取實(shí)時(shí)快照 --memspec <string> 內(nèi)存屬性:[file=]name[,snapshot=type] [--diskspec] <string> 磁盤屬性: disk[,snapshot=type][,driver=type][,file=name] [root@node1 ~]# virsh snapshot-create-as centos7 --name centos7-snap1 --description "touch test file before" 已生成域快照 centos7-snap1 [root@node1 ~]# virsh snapshot-list centos7 名稱 生成時(shí)間 狀態(tài) ------------------------------------------------------------ centos7-snap1 2017-03-29 02:44:58 +0800 running [root@node1 ~]# 提示:以上命令是使用命令行參數(shù)來(lái)創(chuàng)建虛擬機(jī)快照,它默認(rèn)會(huì)把快照的配置文件存儲(chǔ)到/var/lib/libvirt/qemu/snapshot/虛擬機(jī)名稱/快照名稱.xml; 查看快照文件 [root@node1 ~]# ll /var/lib/libvirt/qemu/snapshot/ 總用量 0 drwxr-xr-x 2 root root 31 3月 29 02:45 centos7 [root@node1 ~]# tree /var/lib/libvirt/qemu/snapshot/ /var/lib/libvirt/qemu/snapshot/ └── centos7 └── centos7-snap1.xml 1 directory, 1 file [root@node1 ~]# cat /var/lib/libvirt/qemu/snapshot/centos7/centos7-snap1.xml <!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh snapshot-edit or other application using the libvirt API. --> <domainsnapshot> <name>centos7-snap1</name> <description>touch test file before</description> <state>running</state> <creationTime>1490726698</creationTime> <memory snapshot='internal'/> <disks> <disk name='vda' snapshot='internal'/> <disk name='hda' snapshot='no'/> </disks> <domain type='kvm'> <name>centos7</name> <uuid>a15b793e-055b-4c91-89a5-ceba0c7ec98d</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>2</vcpu> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> </features> <cpu mode='custom' match='exact' check='partial'> <model fallback='forbid'>Broadwell</model> </cpu> <clock offset='utc'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <pm> <suspend-to-mem enabled='no'/> <suspend-to-disk enabled='no'/> </pm> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/kvm/images/centos7.qcow2'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='hda' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <controller type='usb' index='0' model='ich9-ehci1'> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> <master startport='0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/> </controller> <controller type='usb' index='0' model='ich9-uhci2'> <master startport='2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/> </controller> <controller type='usb' index='0' model='ich9-uhci3'> <master startport='4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/> </controller> <controller type='ide' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='virtio-serial' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </controller> <controller type='pci' index='0' model='pci-root'/> <interface type='network'> <mac address='52:54:00:ff:51:f1'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'> <target type='isa-serial' port='0'> <model name='isa-serial'/> </target> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <channel type='unix'> <target type='virtio' name='org.qemu.guest_agent.0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <input type='tablet' bus='usb'> <address type='usb' bus='0' port='1'/> </input> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'> <listen type='address' address='0.0.0.0'/> </graphics> <video> <model type='cirrus' vram='16384' heads='1' primary='yes'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </memballoon> <rng model='virtio'> <backend model='random'>/dev/urandom</backend> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </rng> </devices> </domain> <cookie> <cpu mode='custom' match='exact' check='full'> <model fallback='forbid'>Broadwell</model> <feature policy='require' name='hypervisor'/> <feature policy='disable' name='erms'/> <feature policy='require' name='xsaveopt'/> </cpu> </cookie> <active>1</active> </domainsnapshot> [root@node1 ~]# 5、示例:還原虛擬機(jī)到做快照時(shí)的狀態(tài); 首先連接至虛擬機(jī)內(nèi)不在root目錄下新建一個(gè)測(cè)試文件,然后將虛擬機(jī)關(guān)機(jī),然后在還原到創(chuàng)建測(cè)試文件前端快照狀態(tài),然后開機(jī),看看虛擬機(jī)是否回到測(cè)試文件創(chuàng)建前的狀態(tài)了? [root@node1 ~]# virsh console centos7 連接到域 centos7 換碼符為 ^] [root@localhost ~]# ls anaconda-ks.cfg [root@localhost ~]# echo "this is test file" >test.xml [root@localhost ~]# cat test.xml this is test file [root@localhost ~]# [root@node1 ~]# virsh destroy centos7 域 centos7 被刪除 [root@node1 ~]# virsh list --all Id 名稱 狀態(tài) ---------------------------------------------------- - centos7 關(guān)閉 [root@node1 ~]# virsh domstate centos7 關(guān)閉 [root@node1 ~]# 將虛擬機(jī)歡迎到剛才創(chuàng)建的快照狀態(tài) [root@node1 ~]# virsh snapshot-list centos7 名稱 生成時(shí)間 狀態(tài) ------------------------------------------------------------ centos7-snap1 2017-03-29 02:44:58 +0800 running [root@node1 ~]# virsh snapshot-revert centos7 centos7-snap1 [root@node1 ~]# virsh list --all Id 名稱 狀態(tài) ---------------------------------------------------- 3 centos7 running [root@node1 ~]# virsh snapshot-current centos7 <domainsnapshot> <name>centos7-snap1</name> <description>touch test file before</description> <state>running</state> <creationTime>1490726698</creationTime> <memory snapshot='internal'/> <disks> <disk name='vda' snapshot='internal'/> <disk name='hda' snapshot='no'/> </disks> <domain type='kvm'> <name>centos7</name> <uuid>a15b793e-055b-4c91-89a5-ceba0c7ec98d</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>2</vcpu> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> </features> <cpu mode='custom' match='exact' check='partial'> <model fallback='forbid'>Broadwell</model> </cpu> <clock offset='utc'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <pm> <suspend-to-mem enabled='no'/> <suspend-to-disk enabled='no'/> </pm> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/kvm/images/centos7.qcow2'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='hda' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <controller type='usb' index='0' model='ich9-ehci1'> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> <master startport='0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/> </controller> <controller type='usb' index='0' model='ich9-uhci2'> <master startport='2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/> </controller> <controller type='usb' index='0' model='ich9-uhci3'> <master startport='4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/> </controller> <controller type='ide' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='virtio-serial' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </controller> <controller type='pci' index='0' model='pci-root'/> <interface type='network'> <mac address='52:54:00:ff:51:f1'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'> <target type='isa-serial' port='0'> <model name='isa-serial'/> </target> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <channel type='unix'> <target type='virtio' name='org.qemu.guest_agent.0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <input type='tablet' bus='usb'> <address type='usb' bus='0' port='1'/> </input> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'> <listen type='address' address='0.0.0.0'/> </graphics> <video> <model type='cirrus' vram='16384' heads='1' primary='yes'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </memballoon> <rng model='virtio'> <backend model='random'>/dev/urandom</backend> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </rng> </devices> </domain> <cookie> <cpu mode='custom' match='exact' check='full'> <model fallback='forbid'>Broadwell</model> <feature policy='require' name='hypervisor'/> <feature policy='disable' name='erms'/> <feature policy='require' name='xsaveopt'/> </cpu> </cookie> </domainsnapshot> [root@node1 ~]# 提示:從上面的信息可以看到,我們還原虛擬機(jī)到我們做的快照狀態(tài)后,虛擬機(jī)處于運(yùn)行狀態(tài),并且當(dāng)前虛擬機(jī)快照是centos7_snap1這個(gè)快照是我們?cè)谛陆y(cè)試文件前創(chuàng)建的快照; 驗(yàn)證:連接虛擬控制臺(tái),查看測(cè)試文件是否還存在? [root@node1 ~]# virsh console centos7 連接到域 centos7 換碼符為 ^] [root@localhost ~]# ls anaconda-ks.cfg [root@localhost ~]# pwd /root [root@localhost ~]# 提示:可以看到測(cè)試文件沒有了; 查看當(dāng)前虛擬機(jī)磁盤文件信息 [root@node1 ~]# virsh domblklist centos7 目標(biāo) 源 ------------------------------------------------ vda /kvm/images/centos7.qcow2 hda - [root@node1 ~]# qemu-img info /kvm/images/centos7.qcow2 image: /kvm/images/centos7.qcow2 file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 1.5G cluster_size: 65536 Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 centos7-snap1 294M 2017-03-29 02:44:58 01:33:32.709 Format specific information: compat: 1.1 lazy refcounts: false [root@node1 ~]# 提示:可以看到磁盤信息上有我們給虛擬機(jī)做到快照信息; 有關(guān)虛擬機(jī)快照的命令有 [root@node1 ~]# virsh help snapshot Snapshot (help keyword 'snapshot'): snapshot-create 使用 XML 生成快照 snapshot-create-as 使用一組參數(shù)生成快照 snapshot-current 獲取或者設(shè)定當(dāng)前快照 snapshot-delete 刪除域快照 snapshot-dumpxml 為域快照轉(zhuǎn)儲(chǔ) XML snapshot-edit 編輯快照 XML snapshot-info 快照信息 snapshot-list 為域列出快照 snapshot-parent 獲取快照的上級(jí)快照名稱 snapshot-revert 將域轉(zhuǎn)換為快照 [root@node1 ~]# 提示:以上命令和virsh 其他命令都比較類似,我這里就不過(guò)多闡述,不清楚命令語(yǔ)法可以查看每個(gè)命令的幫助信息來(lái)使用; |
|