标签:ovirt vdsm cloud-init glusterfs
初探oVirt-使用小结FAQ
2015/9/28 time 18:52
【Q1】:执行virsh命令时,会提示需要用户验证(Please enter your authentication name),看错误提示似乎和配置vdsm服务后,使用了SASL有关系,怎么解决? A:使用工具“saslpasswd2 - set a user’s sasl password”来创建用户。 问题发生时是这样的: # virsh list Please enter your authentication name: Please enter your password: error: Failed to reconnect to the hypervisor error: no valid connection error: authentication failed: Failed to step SASL negotiation: -1 (SASL(-1): generic failure: All-whitespace username.) 我们来创建一个用户: # saslpasswd2 -a libvirt mYusernAme Password: mYpasswOrd Again (for verification): mYpasswOrd 其中,-a 参数跟着 appname,这里我们需要指定的是libvirt服务 原因是:vdsm在加入ovirt时会使用sasl再次加密libvirt 再次测试: # virsh list Please enter your authentication name: mYusernAme Please enter your password: Id Name State ---------------------------------------------------- 1 tvm-test-template running 2 tvm-test-clone running 3 tvm-test-clone-from-snapshot running 4 testpool001 running 5 testpool007 running 6 testpool006 running 符合预期。 【Q2】:执行ovirt界面上的针对vm的重启操作,ovirt的web界面有提示状态的变更,,但vm的console看并未重启,这是怎么回事? A:vm里面没有安装agent,在linux下面是:ovirt-guest-agent 安装 ovirt-guest-agent 在vm上先安装ovirt-release35.rpm这个yum源。 # yum -y install http://plain.resources.ovirt.org/pub/yum-repo/ovirt-release35.rpm # yum -y install ovirt-guest-agent 启动服务 # service ovirt-guest-agent start # chkconfig ovirt-guest-agent on 【Q3】:克隆VM时,磁盘等待很久还没准备就绪 A:状态:被克隆对象,附加了一个大容量磁盘(2T)。 检查所在host上运行的进程,找到qemu-img,检查是否卡死,手动结束。 【Q4】:cloud-init是怎么使用的? A:cloud-init用来设置vm启动后的主机名,时区,验证,网络和自定义脚本。 1)在vm上安装cloud-init # yum -y install cloud-init 检查开机启动 # chkconfig --list |grep cloud 2)测试 关闭vm,选择菜单“只运行一次”-“初始运行”-“使用 cloud-init”,设置hostname等信息。 单击“确定”,vm开始启动,引导过程中将使用cloud-init这个服务来自动设置vm的基础信息。 看日志(/var/log/cloud-init-output.log )显示: Cloud-init v. 0.7.5 running ‘init-local‘ 结合之前在网络中找的文章中提及: cloud-init on RHEV searches for a floppy drive containing a user-data.txt file 参考: http://people.redhat.com/mskinner/rhug/q3.2014/cloud-init.pdf 我的理解是: 1)通常我们创建vm时,会使用“只运行一次”,来启用引导选项,类似的,个人猜测也cloud-init功能也是在这个时候以类似软驱的形式注入到vm中(vm中的ovirt-guest-agent在启动时临时挂载的?),然后vm在启动过程中读取了user-data这类数据。 2)观察目录 /var/lib/cloud/instance 3)查看文件 datasource # cat datasource DataSourceConfigDrive: DataSourceConfigDrive [local,ver=2][source=/dev/sr1] # ll /dev/cd* lrwxrwxrwx. 1 root root 3 Sep 16 2015 /dev/cdrom -> sr0 lrwxrwxrwx. 1 root root 3 Sep 16 2015 /dev/cdrom1 -> sr1 由此可以判断,出现了一个新设备:cdrom1,我们挂载看一下里面的内容: # mount /dev/sr1 /mnt mount: block device /dev/sr1 is write-protected, mounting read-only # tree /mnt/ /mnt/ └── openstack ├── content │ └── 0000 └── latest ├── meta_data.json └── user_data 3 directories, 3 files # cat /mnt/openstack/latest/user_data #cloud-config ssh_pwauth: true timezone: Asia/Shanghai disable_root: 0 output: all: ‘>> /var/log/cloud-init-output.log‘ user: root password: yourpasswd chpasswd: expire: false runcmd: - ‘sed -i ‘‘/^datasource_list: /d‘‘ /etc/cloud/cloud.cfg; echo ‘‘datasource_list: ["NoCloud", "ConfigDrive"]‘‘ >> /etc/cloud/cloud.cfg‘ # cat /mnt/openstack/latest/meta_data.json { "launch_index" : "0", "availability_zone" : "nova", "network-interfaces" : "auto eth0\niface eth0 inet static\n address 10.0.200.101\n netmask 255.255.255.0\n gateway 10.0.200.254\n dns-nameservers 10.0.200.253\nauto eth1\niface eth1 inet static\n address 10.0.201.101\n netmask 255.255.255.0\n dns-nameservers 10.0.200.253\n", "name" : "cloud-init", "network_config" : { "content_path" : "/content/0000", "path" : "/etc/network/interfaces" }, "hostname" : "cloud-init", "uuid" : "72be0e3f-10a7-433e-b6b3-a9daded7948f", "meta" : { "essential" : "false", "role" : "server", "dsmode" : "local" } 上述2个文件中,实例名,主机名,网络等信息,都是我们在ovirt的web界面中配置的内容。 结合 cloud-init 的 doc来看【No cloud】这一段: http://cloudinit.readthedocs.org/en/latest/topics/datasources.html#no-cloud 简单翻译下: NoCloud 和 NoCloudNet 这类数据源,允许用户不需要运行网络服务(甚至不用激活网络)即可提供文件: user-data 和 meta-data 给 实例(instance) 你可以通过vfat or iso9660文件系统提供文件: meta-data 和 user-data 给一个本地 vm 在启动是使用。 【Q5】:使用glusterfs服务时,报错 “glusterfs: failed to get the ‘volume file‘ from server” A:先检查gluster版本,保持一致。host启用gluster服务后安装的版本,根据ovirt的源来分析,可能是官网最新的版本。 默认ovirt在安装时,使用的是:ovirt-3.5-dependencies.repo,,当前会下载glusterfs/3.7 客户端手动安装官网的新版本: # wget http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/CentOS/epel-6/x86_64/glusterfs-3.7.4-2.el6.x86_64.rpm # wget http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/CentOS/epel-6/x86_64/glusterfs-libs-3.7.4-2.el6.x86_64.rpm # wget http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/CentOS/epel-6/x86_64/glusterfs-client-xlators-3.7.4-2.el6.x86_64.rpm # wget http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/CentOS/epel-6/x86_64/glusterfs-fuse-3.7.4-2.el6.x86_64.rpm # rpm -ivh *.rpm 【Q6】:不使用ovirt管理glusterfs,自己配置glusterfs,怎么做?数据域如何挂载,做了哪些优化工作? A: 首先,ovirt的优化做了如下工作: --- 优化后,配置将做如下调整: Options Reconfigured: diagnostics.count-fop-hits: on diagnostics.latency-measurement: on storage.owner-gid: 36 storage.owner-uid: 36 cluster.server-quorum-type: server cluster.quorum-type: auto network.remote-dio: enable cluster.eager-lock: enable performance.stat-prefetch: off performance.io-cache: off performance.read-ahead: off performance.quick-read: off auth.allow: * user.cifs: enable nfs.disable: off performance.readdir-ahead: on --- 其次,集群内每个主机需要能正常解析gluster的节点名称->IP的映射(不仅是“新建域”时指定的那台主机需要配置hosts或者dns服务器的A记录) 再次,防火墙 示例为在ovirt中启用 gluster 服务后的防火墙配置: # rpc.statd -A INPUT -p tcp --dport 111 -j ACCEPT -A INPUT -p udp --dport 111 -j ACCEPT # glusterd -A INPUT -p tcp -m tcp --dport 24007 -j ACCEPT # gluster swift -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT # portmapper -A INPUT -p tcp -m tcp --dport 38465 -j ACCEPT -A INPUT -p tcp -m tcp --dport 38466 -j ACCEPT # nfs -A INPUT -p tcp -m tcp --dport 38467 -j ACCEPT -A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT -A INPUT -p tcp -m tcp --dport 38469 -j ACCEPT # status -A INPUT -p tcp -m tcp --dport 39543 -j ACCEPT -A INPUT -p tcp -m tcp --dport 55863 -j ACCEPT # nlockmgr -A INPUT -p tcp -m tcp --dport 38468 -j ACCEPT -A INPUT -p udp -m udp --dport 963 -j ACCEPT -A INPUT -p tcp -m tcp --dport 965 -j ACCEPT # Ports for gluster volume bricks (default 100 ports) -A INPUT -p tcp -m tcp --dport 24009:24108 -j ACCEPT -A INPUT -p tcp -m tcp --dport 49152:49251 -j ACCEPT 【示例】配置存储域-glusterfs集群:node72,node73,node86(示例提供3副本作为数据域) 【数据盘分区】 如果分区所在设备已经挂载,要先卸载并删掉现有系统。 [root@node86 ~]# yum install lvm2 xfsprogs -y [root@node86 ~]# pvcreate /dev/sdb [root@node86 ~]# vgcreate vg0 /dev/sdb [root@node86 ~]# lvcreate -l 100%FREE -n lv01 vg0 [root@node86 ~]# mkfs.xfs -f -i size=512 /dev/vg0/lv01 [root@node86 ~]# blkid /dev/vg0/lv01 /dev/vg0/lv01: UUID="58a47793-3202-45ab-8297-1c867b6fdd68" TYPE="xfs" [root@node86 ~]# mkdir /data [root@node86 ~]# cat <<‘_EOF‘ >>/etc/fstab UUID=58a47793-3202-45ab-8297-1c867b6fdd68 /data xfs defaults 0 0 _EOF [root@node86 ~]# mount -a [root@node86 ~]# df -h |grep data /dev/mapper/vg0-lv01 16T 33M 16T 1% /data 【准备工作】 安装服务 [root@node86 ~]# yum install glusterfs-server [root@node86 ~]# service glusterd start [root@node86 ~]# chkconfig glusterd on 调整防火墙: -A INPUT -s 192.168.25.0/24 -j ACCEPT 配置集群: [root@node86 ~]# gluster peer probe 192.168.25.72 [root@node86 ~]# gluster peer probe 192.168.25.73 每台集群节点上建立目录 [root@node86 ~]# mkdir /data/gv1/brick1 -p 【提供data域】 创建卷gv0作为主数据域: [root@node86 ~]# gluster volume create gv1 replica 3 transport tcp 192.168.25.86:/data/gv1/brick1 192.168.25.72:/data/gv1/brick1 192.168.25.73:/data/gv1/brick1 【启动】 [root@node86 ~]# gluster volume start gv1 【查看现状】 [root@node86 ~]# gluster volume info Volume Name: gv1 Type: Replicate Volume ID: 32b1866c-1743-4dd9-9429-6ecfdfa168a2 Status: Started Number of Bricks: 1 x 3 = 3 Transport-type: tcp Bricks: Brick1: 192.168.25.86:/data/gv1/brick1 Brick2: 192.168.25.72:/data/gv1/brick1 Brick3: 192.168.25.73:/data/gv1/brick1 ---配置卷,以gv1为例: gluster volume set gv1 diagnostics.count-fop-hits on gluster volume set gv1 diagnostics.latency-measurement on gluster volume set gv1 storage.owner-gid 36 gluster volume set gv1 storage.owner-uid 36 gluster volume set gv1 cluster.server-quorum-type server gluster volume set gv1 cluster.quorum-type auto gluster volume set gv1 network.remote-dio enable gluster volume set gv1 cluster.eager-lock enable gluster volume set gv1 performance.stat-prefetch off gluster volume set gv1 performance.io-cache off gluster volume set gv1 performance.read-ahead off gluster volume set gv1 performance.quick-read off gluster volume set gv1 auth.allow \* gluster volume set gv1 user.cifs enable gluster volume set gv1 nfs.disable off ---配置卷 在1台节点上挂载卷gv1测试 [root@node93 ~]# mount.glusterfs 192.168.25.86:/gv1 /mnt [root@node93 ~]# df -h /mnt Filesystem Size Used Avail Use% Mounted on 192.168.25.72:/gv1 16T 39M 16T 1% /mnt 【Q7】:提示“执行动作 添加存储连接 时出错: 试图挂载目标时出现问题” A:注意:填写“路径”时,注意末尾不要出现空格,否则会失败,通过查看挂载节点上/var/log/vdsm.log,可以分析原因,例如,日志显示: Storage.StorageServer.MountConnection::(connect) Mount failed: (32, ‘;mount.nfs: access denied by server while mounting 192.168.20. 93:/data/ovirt/iso \n‘) 【错误】 路径:192.168.20.93:/data/ovirt/iso [iso后边跟着一个空格] 【正确】 路径:192.168.20.93:/data/ovirt/iso[iso后边没空格] 假设已经挂载完毕ISO,我们需要增加OS进来,这里有个小技巧: 查看iso所在的NFS服务器(192.168.20.93)的路径 # pwd /data/ovirt/iso/62a1b5e0-730f-47db-8057-3ed0fda7b83a/images/11111111-1111-1111-1111-111111111111 我们可以直接cd到这个目录下,将OS文件上传到这里,修改权限 # chown -R 36:36 . 回到web端,查看iso域的映像即可。
标签:ovirt vdsm cloud-init glusterfs
原文地址:http://nosmoking.blog.51cto.com/3263888/1698911