一.接着上文(更改cloudstack二级存储),从cloud数据库里查出的所有模板名称以及模板位置语句
SELECT tpl.`name`,img.id, img.`url`,tplref.`install_path` FROM vm_template tpl JOIN template_store_ref tplref ON tpl.`id` = tplref.`template_id` JOIN image_store img ON img.id = tplref.`store_id` WHERE tpl.`removed` IS NULL AND tplref.`install_path` IS NOT NULL AND tpl.`type` = 'USER' AND img.`id` = 1 ORDER BY img.id ASC
二.需求是,上面语句查到每一个模板的所在路径后,需要判断哪些模板是增量。
1.首先我将查询到的路径内容一键复制到一个文本内。文本内容是类似下面这样的,每行。
template/tmpl/2/211/002c10aa-8fae-3600-ba4b-9f153bc85548.qcow2
template/tmpl/2/213/094f409c-6d2d-3e8b-941a-d0c43b52ea99.qcow2
template/tmpl/2/214/61c8f1e2-930c-3453-a762-0ad15f2d5c30.qcow2
template/tmpl/2/215/182c8801-22fd-3c17-bd50-badec418b241.qcow2
template/tmpl/2/216/e94fac61-5a33-398f-938b-4a6802334418.qcow2
template/tmpl/2/217/0cd01d32-bff2-36ef-9744-1588d74cdf62.qcow2
template/tmpl/2/218/cee86725-8419-3e7d-91eb-d1fa1f2d8540.qcow2
2.检验时可以使用qemu-img info 路径去检验,当返回有backing file 字段信息时,说明它是一个增量。
3.我准备将上面的文本文件修改成一个shell脚本,修改成类似下面这样
qemu-img info template/tmpl/2/211/002c10aa-8fae-3600-ba4b-9f153bc85548.qcow2
qemu-img info template/tmpl/2/213/094f409c-6d2d-3e8b-941a-d0c43b52ea99.qcow2
4.问题又来了,如何在这个文件每一行都追加相同的字符呢,如果一个个追加,那累死了,因为有好几百行,不过搜到了vim里的一个命令
:%s/^/word/g
这个命令就是可以在文件每行的行首添加相同的字符,如果有空格或者其它字符的话,记得使用 符号进行转义。根据上面的要求,现在在文本里使用下面的命令即可
:%s/^/qemu-img info /g
5.现在文件已经修改好了,改个后缀.sh。然后运行。运行时,需要系统里有qemu-img命令,并且可以连接二级存储,然后记得过滤一下。
6.过滤关键字(backing file),然后显示前第五行,在过滤下image字段,最后输出到文本文件中,如下
bash nfs1.sh | grep -B5 backing | grep image > nfs1.txt
现在就达到一开始的要求,得到那些模板是增量的。