Glance - 通过libguestfs挂载虚拟机image

libguestfs简介

libguestfs is a set of tools for accessing and modifying virtual machine (VM) disk images.

libguestfs官网介绍:http://libguestfs.org/

libguestfs使用

一、命令行工具

yum install -y libguestfs libguestfs-tools  # 安装命令行工具包,命令是guestfish,raw和qcow2格式的镜像guestfish都可以编辑
[[email protected] Downloads]guestfish -a centos6.5.img -i  # -a:是attach  -i:会自动mount镜像里的分区
[[email protected] Downloads]# guestfish -a centos6.5.img   # 不使用-i,要手动挂载分区
Welcome to guestfish, the libguestfs filesystem interactive shell for
editing virtual machine filesystems.
Type: ‘help‘ for help on commands
      ‘man‘ to read the manual
      ‘quit‘ to quit the shell
><fs> run 
><fs> mount /dev/sda2 /
# 你可以使用这样的shell script来编辑某个文件
[[email protected] Downloads]# guestfish -a centos6.5-test-2.img -i << eof
rm /etc/udev/rules.d/70-persistent-net.rules 
eof
guestfish下没有类似sed的工具,不过提供了类似augtool的命令

二、python调用

yum install -y libguestfs python-libguestfs  # 安装python库
# 这里举个例子:往虚拟机镜像里上传一个文件
[[email protected] Downloads]# vim test.py 
#!/usr/bin/env python
import guestfs               # python加载guestfs库
g = guestfs.GuestFS(python_return_dict=True)         # 创建一个GuestFS实例
g.add_drive_opts("centos6.5-test-2.img",format="qcow2",readonly=0)  # 挂载img到libguestfs
g.launch()        # 后台运行libguestfs
partitions = g.list_partitions()             #  获取所有分区
g.mount(partitions[1],‘/‘)                    # 第二个分区挂载到根目录
g.upload("/etc/resolv.conf", "/etc/resolv.conf")     # g.upload("src文件", "dst文件"),看不懂,英文没学好
g.close()        # 虽然会自动close,还是再手工close最保险

参考链接

http://libguestfs.org/guestfs-python.3.html

时间: 2024-10-28 22:17:47

Glance - 通过libguestfs挂载虚拟机image的相关文章

Openstack针对nova,cinder,glance使用ceph的虚拟机创建机制优化

 今天在开源中国社区看到有如下一个问题: 已经成功把ceph作为cinder和 glance的后端,但是如果作为nova的后端,虚拟机启动速度非常慢,网上查了一下是因为openstack创建虚拟机的时候通过ceph取镜像创建虚拟机再把虚拟机存回ceph的步骤浪费了很多时间,是否有办法不把镜像取到本地,而是直接在ceph的存储池里完成虚拟机的创建呢? 实际上,我当前也是把ceph作为nova,cinder,glance三者的后端,创建虚拟机速度非常慢.查了一下相关和资料,是有新的处理方式,当前

glance总结

Openstack将glance独立出来的一个原因是尽可能将镜像存储至多种存储上,由glance提供一个完整的适配框架.现在支持亚马逊对象存储S3.openstack自有的swift对象存储,以及常用的文件系统存储. 流程图如下: glance api :对外提供镜像接口服务. registry server : 注册服务,存储镜像元数据信息与数据库交互实现镜像基础信息存储. store adaptor : 存储镜像文件,提供多种存储适配. 在实际部署上,glance api与glance re

在Ceph中创建虚拟机流程改进之分析

作为个人学习笔记分享,有任何问题欢迎交流! 最近在Gerrit中看到一个change:https://review.openstack.org/#/c/94295/ , 它主要是对当前在Ceph中创建虚拟机的流程的改进.如果glance的backend是ceph, 则nova创建虚拟机到RBD的流程是这样的: 通过glance从ceph中下载image --> 本地 --> 复制image到rbd 这个change的目的就是:不需要下载到本地,直接在rbd中复制image,以提高虚拟机创建的速

KVM虚拟化笔记(十二)------kvm虚拟机磁盘文件的读取

kvm挂载磁盘的方法和工具很多,具体如下: (1)raw格式的磁盘可以直接挂载,也可以将qcow2格式的磁盘转换成raw格式的并挂载.eg:转换的命令为: [[email protected] ~]# qemu-img convert -f raw -O qcow2 yz3_add.qcow2 yz3_add.img 具体的可以参考上节内容. (2)通过编译安装qemu-nbd工具挂载qcow2格式的磁盘. qemu-nbd工具默认没有安装,需要编译进行安装. (3)通过创建kvm环境创建kvm

Linux虚拟机磁盘分区

如何增加一块硬盘 虚拟机插硬盘 分区 格式化 挂载 一.楼上暴力狂命令查看设备挂载情况,有sda已分区,和sdb未分区2磁盘 Lsblk –f 查看设备挂载 虚拟机增加硬盘步骤 在[虚拟机]菜单中,选择[设置],然后设备列表里添加硬盘,然后一路[下一步],中间只有选择磁盘大小的地方需要修改,至到完成.然后重启系统 2.分区命令fdisk /dev/sdb 打m看帮助文档 晕 不小心瞎按退出来了 重新进入 分区, 开始分区后输入n,新增分区,然后选择p ,分区类型为主分区.两次回车默认剩余全部空间

KVM之实现批量创建KVM虚拟机

KVM之通过virsh制作image 实现批量创建KVM虚拟机 *******通过KVM虚拟机xml模板文件创建虚拟机(制作一个raw格式的image,并安装ubuntu操作系统)******************一.准备工作1.准备一个KVM虚拟机配置文件模板KVM虚拟机配置文件模板文件已上传至附件:kvm_vm_raw_template.xml复制一份虚拟机配置文件模板:kvm_vm_raw_template.xml2.确定image的存储路径3.创建raw格式的image文件4.准备ub

配置glance使用NFS后端

首先先使用“glance image-delete”命令删除所有镜像,释放磁盘空间. 停止glance服务:service openstack-glance-api stopservice openstack-glance-registry stop 停止swift服务:service openstack-swift-proxy stopservice openstack-swift-account stopservice openstack-swift-account-auditor stop

windows平台vhd磁盘文件挂载

在windows平台下挂载vhd磁盘文件类似于挂载iso等文件; 使用VHDMount工具挂载VHD文件 启动Hyper-V里的外部VHD文件有点困难.如果在备份驱动上有个VHD文件,并需要从其虚拟机访问文件,Hyper-V要求导入这台虚拟机.如果你需要快速获取一些文件,那么这个过程非常耗时,也很烦人. 另一种方法是通过在桌面上直接挂载VHD访问硬盘.就像挂载DVD的ISO镜像,或者操作系统镜像的Windows Imaging Format文件,通过命令行可能挂载虚拟机的VHD文件.结果就是虚拟

宿主机mount虚拟机镜像文件

转载 mount挂载虚拟机镜像文件 使用mount挂载ubuntu虚拟机所在的img文件的时候,执行: "sudo mount -o loop xxx.img /mnt/xxx", 系统提示: "mount: you must specify the filesystem type" 加上"-t ext3″后仍然报错: 首先,要说明一下的是,这情况是由于img文件的开头包含了mbr,以致于系统无法识别--img文件相当于一个包含操作系统的硬盘,而我们之需要