虚拟机镜像相关操作

创建一个qcow2格式的镜像ubuntu.qcow2,大小为20G

qemu-img create -f qcow2 ubuntu.qcow2 20G

创建虚拟机:

qemu-kvm -smp 2 -m 1024 -hda ubuntu.qcow2 -cdrom ubuntu.iso

将镜像文件从qcow2格式转换为raw格式,因为fdisk不能直接查看qcow2格式的文件,所以需要将其转换成raw。mount同样也不能挂载qcow2格式镜像:

qemu-img convert -O raw ubuntu.qcow2 ubuntu.raw

查看镜像文件的分区:

losetup -f  ubuntu.raw

losetup -a

/dev/loop2: [0811]:13897300 (~/kvm/image/ubuntu1204.qcow2)

fdisk -l /dev/loop2

Disk /dev/loop2: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders, total 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 identifier: 0x00074114

Device Boot      Start         End      Blocks   Id  System

/dev/loop2p1   *        2048    18874367     9436160   83  Linux

/dev/loop2p2        18876414    20969471     1046529    5  Extended

/dev/loop2p5        18876416    20969471     1046528   82  Linux swap / Solaris

挂载ubuntu.raw镜像的一个分区

方法一:

mount -o loop ubuntu.raw /mnt  #直接挂载会不行

mount: you must specify the filesystem type

mount -o loop,offset=1048576 ubuntu1204.raw /mnt  #使用第一分区的偏移量2048*512=1048576挂载,成功

方法二:

kpartx -av ubuntu.raw

add map loop4p1 (252:0): 0 18872320 linear /dev/loop4 2048

add map loop4p2 (252:1): 0 2 linear /dev/loop4 18876414

add map loop4p5 : 0 2093056 linear /dev/loop4 18876416

mount /dev/mapper/loop4p1 /mnt #挂载第一分区

输出第一分区到镜像文件

dd if=/dev/mapper/loop4p1 of=ubuntusda1.raw

此时的分区镜像文件可以直接挂载:

mount ubuntusda1.raw /mnt

注意这种操作只有对raw格式的镜像文件可行,qcow2格式不可通过mount挂载。

使用guestfs对虚拟机镜像进行操作

guestfish --ro - i -a ubuntu.qcow2

进入guestfish的交互界面,可以执行:

ls / :查看/目录下面的文件

download file: 下载虚拟机镜像中的文件到本地磁盘中

inspect-os:指令获取该镜像中包含的操作系统版本

inspect-get-arch /dev/sda:获取虚拟机系统支持的CPU架构,如X86_64

guestfish支持的指令很丰富,功能齐全,可通过man guestfish查看。

Troubleshooting

1

guestfish --ro - i -a ubuntu.qcow2

libguestfs: error: /usr/bin/supermin-helper exited with error status 1.

解决方法:

update-guestfs-appliance

时间: 2024-11-17 07:08:10

虚拟机镜像相关操作的相关文章

Docker-1.相关知识+安装+镜像相关操作

Docker 相关知识它是一个轻量级的虚拟化技术,相比传统的虚拟化,具有启动速度快.资源需求少.性能高,并且单机可以支持上千个容器. 镜像(Image)    类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统.它是创建容器的基础 容器(Container)    类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用.    容器是从镜像创建的应用实例,可以将其启动.开始.停止.删除,而这些容器都是相互隔离.不可见的.它自身是只读的.容器从镜像启动的时候,

docker实战之centos6.5上安装、镜像、容器相关操作

学习docker前,理解以下几个概念有助于更好的使用docker.镜像,容器,仓库.镜像,就是一个操作系统环境,里面只有你需要的几个应用程序,如apache,mysql,php之类,只读模板.容器,从镜像创建的运行实例.可视为一个简易环境中和其中运行的应用.仓库,存放镜像的地方.学过git的同学可能更容易理解. 一.安装docker时,增加第三方源epel如果是centos7,下载并安装这个软件包#wget http://mirror.hust.edu.cn/epel/beta/7/x86_64

修改虚拟机镜像的root密码

有时从网上下载的虚拟机镜像,没有root密码,必须通过秘钥登录,然后秘钥又需要麻烦的注入到里面去.想用,却无法登录,很头痛.本文提供一种通过修改虚拟机镜像里面的/etc/shadow文件,来设置镜像的root密码,当然也可以修改其它用户的密码. 本文使用python-guestfs类库来操作虚拟机镜像,所以请安装python-guestfs及相关包.ubuntu系统执行: sudo apt-get install python-guestfs centos系统请执行: sudo yum inst

Azure Stack技术深入浅出系列4: Azure Stack自定义虚拟机镜像和Gallery Item

Azure Stack环境中服务的提供者或运营者从微软变成了Azure Stack集成环境的运营者,通过Azure Stack的MarketPlace,我们可以根据用户的特定需求,提供一些定制化的应用,获得与公有云不一样的用户体验.本文将主要介绍如何在Azure Stack的MarketPlace中如何添加一个自定义的虚拟机进行并定制满足需求的Gallery Item,同时通过自服务的模式提供给业务的消费者. 这一篇,我们将探讨以下几个问题: 如何制作自定义镜像 从自定义镜像创建虚拟机的几种方式

python文件相关操作

Python文件相关操作 打开文件 打开文件,采用open方法,会将文件的句柄返回,如下: f = open('test_file.txt','r',encoding='utf-8') 在上面的代码中,open()方法进行打开文件等相关操作,open()方法其中第一个参数是要打开的文件的文件路径,第二个参数是对要打开文件要执行的权限,第三个参数是文件采用字符编码. 而open()方法返回的内容叫做文件句柄.我们可以打印返回的文件句柄来看下: f = open('test_file.txt','r

CS数据库的相关操作

备注:我们对于CS数据库的操作多数情况下只是查询操作,尽量不要在数据库中直接修改记录的值 第一.首先备份数据库 1.进入mysql数据库 [[email protected] ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 188 Server version: 5.1.61-log Source d

分分钟教你制作完美的虚拟机镜像

[TechTarget中国原创] 对于创建新的虚拟机来说,以镜像为基础的虚拟化环境能够大幅度提升系统连贯性.按照下面的方法可以帮助管理员尽可能制作出完美的虚拟机镜像. 虚拟机的部署规模正以一种前所未有的速度不断扩展,因此对于企业来说,以镜像为基础来创建虚拟机就成为一种常见需求.使用这种方式能够快速.高效地创建虚拟机,而且更重要的是,能够保证所有虚拟机的前后一致性.尽管使用镜像来创建虚拟机已经成为企业必须采用的方式,但是能够理解虚拟机镜像的底层工作原理也是十分重要的.毕竟,任何通过镜像创建的虚拟机

【Azure】通过Powershell,创建虚拟机镜像

由于公司更换云服务尝试,有机会使用微软公有云服务,简单了使用了一下,整理了一些文章,希望可以帮助同样使用微软公有云的用户. 优点: · 用户界面非常漂亮,而且流程升级比较清楚: · 服务非常多,无论充值多少钱,都可以使用里面所有的服务: · 每个服务中的功能非常多,可配置的地方丰富,对于爱学习的人来说,可以扩展自己的知识面: 不足: · 文档相对比较少,而且很多都是从国外直接翻译过来的,理解起来有些困难: · 部分基本功能需要使用Powershell来实现,相对比较麻烦. 今天主要测试了创建虚拟

关于制作openstack虚拟机镜像的心得

ubuntu镜像相关1.系统安装好,根据实际情况设定自己的配置之后那么继续往下做 2.清除/tmp 目录 3.清除日志 4.清除history 命令历史记录history -c && shutdown -h now 5.清除网络相关硬件生成信息操作系统会在/etc/sysconfig/network-scripts/ifcfg-eth0 和 /etc/udev/rules.d/70-persistent-net.rules 这类文件记录下网卡MAC地址.但是,虚拟机的网卡MAC地址在每次虚