bash 中的双引号和单引号

a=3
echo "b=$a+2"     # 显示 b=3+2
echo 'b=$a+2'     # 显示 b=$a+2

在 bash 中,

单引号 可以保证引用区域内的文字不被转换,起到保护作用,一般可以用在显示 code 之类;
双引号 可以包含文字或者函数段。其中,反引号中的函数,$ 开头的变量和 \ 开头反转换的字符外,其他都是直接输出。

之所以用双引号,是因为在bash中的变量替换发生在双引号内,如果不用引号,bash会把它们解释为命令。

将 VirtualBox 硬盘镜像 vdi 转换为 KVM 的 qcow2

KVM (Kernel-based Virtual Machine)目前发展的如火如荼,Kernel 也加入了支持还有硬件虚拟,蛮有前途的家伙。其实我们可以使用很简单的几个步骤,就能将原来 VirtualBox 的虚拟机转换到 KVM 平台下边。主要也就是将原始硬盘镜像 (VirtualBox 使用 “vdi”)转换为 KVM 所兼容的格式(qcow2)。然后你就可以使用命令行或者 virt-manager 来启动 qcow2 的镜像的 KVM 虚拟机了。

虽然说步骤很简单,但是转换中需要占用大量硬盘空间,真的很大(需要先将 VirtualBox 的 .vdi 转换为原始硬盘镜像 raw)。

vdi 和 qcow2 都是经过压缩的,所以一个 10 GB 的 .vdi 或者 .qcow2 会使用比较少的空间。
不过,经过第一步转换,原始硬盘镜像 raw 将占用 10 GB(容量等同与你的虚拟机硬盘大小),
所以请准备同等大小的空间。

转换步骤(假设你有一个 VirtualBox 镜像,”ubuntu.vdi”):

Step 1. 将 VirtualBox 的 vdi 转换为 raw 原始硬盘镜像

VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img

Step 2. 转换 raw 原始硬盘镜像为 qcow2 镜像

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

好了一切完成了,简单吧。现在你就可以用 ubuntu.qcow2 来启动你的 KVM 虚拟机了。

测试下新的硬盘镜像(ubuntu.qcow2):

kvm -m 512 -usbdevice tablet -hda ubuntu.qcow

测试成功的话,你可以删除 raw 原始硬盘镜像了。至于 ubuntu.vdi 可以删了,也可以作为存档。

欢迎来到 KVM 的世界:)

 

Additional:

转换 vdi 到 vmdk 的方法:

VBoxManage.exe clonehd ubuntu.vdi ubuntu.vmdk  --format vmdk --variant standard