2月 072018
 

每个kvm虚拟机进程,如果挂载N个rbd设备,则会有N个 fn-radosclient 线程,每个fn-radosclient 线程针对特定的osd只有一个connection; 如此,一个rbd设备上的某块儿数据如果落在了相同的osd上,(猜测rados协议不会再同一个连接上同时做多个事务),则意味着不可能并行写入,于是乎,特别是对于随机读写,网络延迟对存储效率有着直接的影响,即使虚拟机内部多线程也无济于事,因为kvm进程中的fn-radosclient 只有一个

 

 

 Posted by at 下午 5:42
10月 252017
 

设置:

读写最大10MB/s,iops最大50/s

  • 设置flavor, 在flavor上添加属性

  • 通过virsh dumpxml验证:

  • 验证

关于对卷的限速: http://ceph.com/planet/openstack-ceph-rbd-and-qos/

The disk I/O options are:

  • disk_read_bytes_sec
  • disk_read_iops_sec
  • disk_write_bytes_sec
  • disk_write_iops_sec
  • disk_total_bytes_sec
  • disk_total_iops_sec

参考: https://docs.openstack.org/nova/pike/admin/flavors.html

对于单独创建的卷来讲,可以在创建卷时指定卷类型,而卷类型可以预先关联已定义好的qos规格的,如:

 

注意:

  1.  对于创建虚拟机时使用新建卷的情况,该限速没有被应用,应该是bug吧
  2. 官方文档的一点儿要问题
  3. openstack的dashboard上也有一些误导的地方:

    这里的提示仅仅可以当做是示例,真正需要什么就写什么就行了,如,关于磁盘限速的相关键为:

    • read_bytes_sec
    • read_iops_sec
    • write_bytes_sec
    • write_iops_sec
    • total_bytes_sec
    • total_iops_sec
      注意: 这里不需要上面所谓的 disk_ 前缀

 

 Posted by at 下午 5:50
10月 162017
 

 

kvm上安装windows虚拟机时,如果起初配置的磁盘就是virtio驱动的,则安装时会发现不到磁盘,需要使用virt-win.iso 来安装驱动; 如果起初使用的是IDE,则可以顺利安装windows,如果安装后才发现IDE其实没有virtio 高效,于是直接修改为virtio,则windows就会启动不了;解决办法:

先不要讲IDE修改为virtio,而是先挂一个virtio的磁盘,然后会在windows的设备管理器中发现缺少驱动,使用virtio-win.iso 安装驱动即可;然后删掉多余的virtio磁盘,并且将系统盘修改为virtio即可

参考: http://blog.chinaunix.net/uid-20776139-id-3481065.html

 

 Posted by at 下午 3:35
10月 162017
 

对于kvm虚拟机,由于宿主机和guest之间的独立性很大,当guest把很多内存用于系统cache的话,宿主机也没有办法识别这部分内存,也没有办法建议guest让出一部分内存。

kvm有个内存气球的概念,原以为可以在不改变guest已定义的内存大小的情况下可以让guest让出一部分非关键性的内存占用,而实际上balloon却是在修改(变大和变小)guest的总内存大小,而且在减小guest内存大小的时候,也是武断地减少内存大小,一点儿不考虑guest的感受,不惜杀死进程来满足宿主机的请求,下面是逐步balloon的过程:

  1. 先让出free部分
  2. free不够再让出cache部分(并非所有的buff/cache都是完全让出的)
  3. 实在还不够,杀进程

参考资料:

https://www.linux-kvm.org/page/Projects/auto-ballooning  这里有提到选项automatic=true

http://www.openstack.cn/?p=4540

 Posted by at 上午 11:26
9月 292017
 

软件包: libguestfs-tools

这里的 guestfish 挺不错的

  1. 查看镜像分区及其使用情况:
  2. 查看镜像中的文件信息
  3. copy 文件到镜像
  4. 查看镜像中的文件
  5. 查看镜像中的文件系统分区信息: virt-filesystems –long –parts –blkdevs -h -a CentOS-7-x86_64-GenericCloud-1708.raw

virt-resize:  –shrink  并不能让镜像文件变的更小(反而变大了)

virt-sparsify  可以使得一个镜像文件变成一个稀疏文件,对于发布、存储镜像很有必要

 Posted by at 下午 2:35
9月 262017
 

参考:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/sect-lvm_based_storage_pools#sect-LVM_based_storage_pools-Creating_an_LVM_based_storage_pool_with_virsh

 

示例:

将一个img 磁盘文件导入kvm-pool (结果总是失败)

  1. 创建一个volume:
  2. 导入img文件:

    总是提示: 无法关闭卷ceph-3; 然后将无法从ceph-3启动虚拟机
  3. 使用新的volume启动虚拟机

成功的做法

  1. 定义一个ceph-3.xml

     
  2. 将centos7.3.img 放到 /var/lib/libvirt/images 下面,然后:
 Posted by at 下午 6:48
9月 182017
 
  1. 删除卷如同删除文件,如果卷正在被(qemu-kvm)进程占用,则文件不会被立即删除,直到卷不再被占用时自动释放
  2. 每个kvm虚拟机对应一个qemu-kvm进程,虚拟机reboot不会产生新的qemu-kvm进程
 Posted by at 下午 12:06