立即注册 登录
About云-梭伦科技 返回首页

阿飞的个人空间 https://www.aboutyun.com/?3890 [收藏] [复制] [分享] [RSS]

日志

OpenStack 本地存储 Resize 的一些问题

已有 1169 次阅读2014-7-28 12:24

Resize 分为 本机 Resize 和跨机器迁移 Resize 两种,而跨机器迁移 Resize 又涉及到本地磁盘存储和共享存储两种方式。这里只说利用本地存储进行跨机器 Resize.

Resize 依赖:
本机 Resize 时候,需要在 nova.conf 中加入 allow_resize_to_same_host = True, my_ip 指向自己。
跨机器 Resize 时候,需要在 nova.conf 中加入 allow_resize_to_same_host = False,my_ip = 自己的 ip 以及 nova 用户免密码登录。

当执行一个 nova resize 命令后,会判断 nova.conf 中 allow_resize_to_same_host 的值:
如果为 True 的话,获取 nova.conf 中 my_ip 的值给 dest,下面 2899行 中 self.get_host_ip_addr() 调用了 1211 的静态方法,也就是获取 nova.conf 中的 my_ip 项,故 2899 行 same_host = True, 交给 2904 行处理,判断后会在本地进行 mv 操作。

如果为 False 的话,调度器会选择一个 compute 节点,把地址赋值给 dest,后面判断时候才会执行 ssh 命令,以及 rsync。

@staticmethod
     def get_host_ip_addr():
         return FLAGS.my_ip

         same_host = (dest == self.get_host_ip_addr())
         inst_base = "%s/%s" % (FLAGS.instances_path, instance['name'])
         inst_base_resize = inst_base + "_resize"
         try:
             utils.execute('mv', inst_base, inst_base_resize)
             if same_host:
                 dest = None
                 utils.execute('mkdir', '-p', inst_base)
             else:
                utils.execute('ssh', dest, 'mkdir', '-p', inst_base)

Resize 后的问题:
在 Resize 的过程过,从目标主机的 Log 中能看到:目标主机根据原主机传来的 Json 数据来设置 VM 的 xml 配置文件、Iptables 规则等,发现其中 xml 中 DHCPSERVER 和 Iptables 策略中的 BOOTP server 端口地址都是原主机的 br100 IP,同时 nova-br100.conf 中也没有更新 VM 的 DHCP 记录。而在 resize-confirm 后,VM 原来的节点会清除相关的 Iptables 规则、Dhcp 记录,并把 VM 状态更改为 ACTIVE,所以会出现 Resize 后 VM 网络不通的情况。需要修改源代码。

Resize 过程:
原主机:
VM 关机
env LC_ALL=C LANG=C qemu-img info /var/lib/nova/instances/instance-00000011/disk
mv /var/lib/nova/instances/instance-00000011 /var/lib/nova/instances/instance-00000011_resize
ssh 172.16.0.101 mkdir -p /var/lib/nova/instances/instance-00000011
qemu-img convert -f qcow2 -O qcow2 /var/lib/nova/instances/instance-00000011_resize/disk /var/lib/nova/instances/instance-00000011_resize/disk_rbase
rsync --sparse --compress --dry-run /var/lib/nova/instances/instance-00000011_resize/disk_rbase 172.16.0.101:/var/lib/nova/instances/instance-00000011/disk
rsync --sparse --compress /var/lib/nova/instances/instance-00000011_resize/disk_rbase 172.16.0.101:/var/lib/nova/instances/instance-00000011/disk
rm -f /var/lib/nova/instances/instance-00000011_resize/disk_rbase
qemu-img info 剩下 VM 的 disk 文件
更新剩余有效的资源量
目标主机:

qemu-img info /var/lib/nova/instances/instance-00000011/disk
sudo nova-rootwrap /etc/nova/rootwrap.conf qemu-nbd -c /dev/nbd15 /var/lib/nova/instances/instance-00000011/disk
sudo nova-rootwrap /etc/nova/rootwrap.conf mount /dev/nbd15 /tmp/openstack-disk-mount-tmpSBQhh2
sudo nova-rootwrap /etc/nova/rootwrap.conf qemu-nbd -d /dev/nbd15
sudo nova-rootwrap /etc/nova/rootwrap.conf guestmount --rw -a /var/lib/nova/instances/instance-00000011/disk -m /dev/sda /tmp/openstack-disk-mount-tmpSBQhh2
sudo nova-rootwrap /etc/nova/rootwrap.conf fusermount -u /tmp/openstack-disk-mount-tmpSBQhh2
qemu-img resize /var/lib/nova/instances/instance-00000011/disk 10737418240
e2fsck -fp /var/lib/nova/instances/instance-00000011/disk
e2fsck -fp /var/lib/nova/instances/instance-00000011/disk
生成 xml 文件
添加安全组、设置 iptables、启动 VM
更新剩余有效资源量





路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条