创建一个磁盘镜像:
qemu-img create -f qcow2 qemu_ppc64le.img 50G
查看
qemu-img info qemu_ppc64le.img
说明一下几种格式的区别:
qemu-img可以有raw,
给虚拟机多加一个硬盘:
/home/chenglin/qemu/qemu_debug_run/qemu-2.4.0/ppc64-softmmu/qemu-system-ppc64 --enable-kvm -m 50G -hda /home/chenglin/qemu/qemu_debug_kernel/qemu-dir/ubuntu-ppc64le.img -hdb /home/chenglin/qemu/qemu_debug_kernel/qemu-dir/qemu_ppc64le.img -kernel /home/chenglin/source/linux-4.2.3/arch/powerpc/boot/zImage -append root=/dev/sda2 -nographic -smp cpus=32,cores=4,threads=8,sockets=1 -net nic -net tap,ifname=tap0 -full-screen
参数解释:
--enable-kvm:用kvm加速运行
-hda:第一个硬盘
-hdb:第二个硬盘
还可以有-hdc -hdd
-kernel使用特定的kernel
-append给虚拟机kernel传的参数
-smp设置cpu数量
-net使用tap,后面会做成nat,见上一篇文章
硬盘加好后,需要分区,自动挂在,fdisk不支持gpt table
在linux下给容量大于2TB的硬盘分区,只能使用parted工具了。在使用parted工具的时候,可能会遇到一些问题,在fdisk下都是熟练地全默认设置,在parted下却不能这么做了。
如果我们新插入了一块硬盘,在系统中识别为/dev/sdb,则可以使用以下的命令开始分区:
parted /dev/sdb
此时进入parted后,执行命令可能会出现如下的错误:
Error: /dev/sdb: unrecognised disk label
这是由于我们还未对这个磁盘设定分区表模式,如果是容量大于2TB的磁盘,我们可以分区表模式设定为GPT,如果是小于2TB的盘,使用传统的msdos模式就可以了:
mklabel gpt (空的磁盘是没有分区表的)
在parted中分区,可以使用makepart命令,使用如下的命令就可以默认地将整块盘都划分为一个分区:
mkpart primary 0 100%
这几个参数的意义分别是: 主分区、起始扇区、分区占用空间的比例。
看起来没啥问题,但是如果一路默认设定,可能最后会出现如下的提示:
Warning: The resulting partition is not properly aligned for best performance.
只是个警告,但是事关性能的问题,还是仔细看一下吧。从网上查到的信息是,由于在分区时起始扇区设置不合理,导致了出现这样的警告。
如何设定这个起始扇区的位置呢,可以看以下几个文件的值:
# cat /sys/block/sdb/queue/optimal_io_size 1048576 # cat /sys/block/sdb/queue/minimum_io_size 262144 # cat /sys/block/sdb/alignment_offset 0 # cat /sys/block/sdb/queue/physical_block_size 512
如果optimal_io_size不为0,则可以用optimal_io_size的值加上alignment_offset的值,然后除以physical_block_size的值,就是起始扇区的位置了,如上面的例子中,可以用这个公式算出来起始扇区的设定值:
(1048576 + 0) / 512 = 2048
如果optimal_io_size为0,那么我们最好直接使用起始扇区的默认值2048。
最后在分区的时候使用以下的命令就可以了:
mkpart primary 2048s 100%
(不要忘记2048后的s单位)
此时分区后就不会出现The resulting partition is not properly aligned for best performance的警告了。
参考: http://rainbow.chard.org/2013/01/30/how-to-align-partitions-for-best-performance-using-parted/