Ubuntu 12.04 Server安装配置OpenNebula 3.8

By , December 21, 2012 10:14 pm

这个帖子是为2011年11月所发布的《Ubuntu 11.04 Server安装配置OpenNebula 3.0》一文的升级版。本教程在Ubuntu 12.04 Server的32位版本和64位版本上都进行过测试。在设备匮乏的情况下,本教程也可以在一台笔记本电脑上完成(在这种情况下,业务内网和管理内网合并成一个网络)。文章中嵌入的图片可能看得不是很清楚,可以点击图片看到清晰大图。

[网络拓扑]

存储设备(可以是FC SAN,可以是磁盘阵列,可以是管理节点上的本地硬盘,也可以是基于MooseFS或者Ceph的分布式文件系统)通过直连管理节点,并挂载为管理节点上的一个目录/srv。

管理节点和计算节点各有两个网卡,其中一个网卡连接业务内网,另外一个网卡连接存储内网。在条件允许的情况下,建议业务内网和存储内网都使用万兆网。在不能全面使用万兆网的情况下,建议管理节点(尤其是管理节点上的存储网络)连接到交换机的万兆网口,计算节点连接到交换机的千兆网口。

业务内网的IP段为 192.168.1.*,存储内网的IP段为192.168.2.*。管理节点的IP地址为192.168.1.1和192.168.2.1。

[管理节点的配置]

全新安装的Ubuntu 12.04 Server操作系统,安装的时候同时安装OpenSSH Server和LAMP Server。将eth0的IP配置为192.168.1.1,将eth1的IP配置为192.168.1.2。

安装必要的软件包:

sudo apt-get install libsqlite3-dev libxmlrpc-c3-dev g++ ruby libopenssl-ruby libssl-dev ruby-dev libxml2-dev libmysqlclient-dev libmysql++-dev libsqlite3-ruby libexpat1-dev rake rubygems libxml-parser-ruby1.8 libxslt1-dev genisoimage scons mysql-server nfs-kernel-server rails thin curl

sudo gem install nokogiri rake xmlparser json thin sequel sinatra sinatra-sequel sqlite3 mysql

创建cloud组和oneadmin用户:

sudo mkdir -p /srv/cloud/
sudo groupadd -g 10000 cloud
sudo useradd -u 10000 -g cloud -m oneadmin -d /srv/cloud/one -s /bin/bash
sudo passwd oneadmin
sudo chown -R oneadmin:cloud /srv/cloud/

为oneadmin用户配置无密码登陆:

su -l oneadmin
ssh-keygen
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
echo “StrictHostKeyChecking no” > ~/.ssh/config
exit

配置NFS服务:

sudo pico /etc/exports

增加一行内容:

/srv/cloud  192.168.2.0/24(rw,fsid=0,nohide,sync,no_root_squash,no_subtree_check)

启动NFS服务:

sudo /etc/init.d/nfs-kernel-server start

需要注意的是,如果/srv本来就是由MooseFS或者Ceph等分布式文件系统挂载过来的,就不需要在这里再次export出去了。

创建MySQL数据库:

mysql -u root -p
CREATE USER ‘oneadmin’@’localhost’ IDENTIFIED BY ‘oneadmin’;
CREATE DATABASE opennebula;
GRANT ALL PRIVILEGES ON opennebula.* TO ‘oneadmin’ IDENTIFIED BY ‘oneadmin’;
quit;

从http://downloads.opennebula.org下载最新版本的OpenNebula软件(OpenNebula 3.8.1 tarball),放在oneadmin用户的~目录下:

su -l oneadmin
tar -zxvf opennebula-3.8.1.tar.gz
cd opennebula-3.8.1
scons sqlite=no mysql=yes
./install.sh -u oneadmin -g cloud -d /srv/cloud/one

编辑~/.bash_profile,设置一些环境变量

export ONE_LOCATION=/srv/cloud/one
export ONE_AUTH=$ONE_LOCATION/.one/one_auth
export ONE_XMLRPC=http://localhost:2633/RPC2
export PATH=$ONE_LOCATION/bin:/usr/local/bin:/var/lib/gems/1.8/bin/:$PATH

执行.bash_profile,使得这些环境变量生效:

source ~/.bash_profile

编辑~/.one/one_auth,设置OpenNebula的用户名和密码:

mkdir ~/.one
echo “oneadmin:YOUR_PASSWORD” > ~/.one/one_auth
chmod 640 ~/.one/one_auth

编辑~/etc/oned.conf,设置OpenNebula所使用的数据库参数:

# DB = [ backend = "sqlite" ]

# Sample configuration for MySQL
DB = [ backend = "mysql",
server = "localhost",
port = 0,
user = "oneadmin",
passwd = "oneadmin",
db_name = "opennebula" ]

启动OpenNebula服务:

one start

关闭OpenNebula服务:

one stop

编辑~/etc/sunstone-server.conf,配置管理界面SunStone的相关参数。如果您需要从管理节点以外的节点访问SunStone管理界面,建议将Server Configuration部分的host参数配置为192.168.1.1。保存该配置之后,使用如下命令启动SunStone服务:

sunstone-server start

这时您就可以通过http://192.168.1.1:9869/来访问SunStone管理界面了。您需要使用您在~/.one/one_auth文件中所设置的用户名和密码来登陆SunStone管理界面。如果您需要停止SunStone服务,可以使用如下命令:

sunstone-server stop

编辑~/etc/occi-server.conf,配置用户自助服务界面的相关参数。同样,如果您需要从管理界点以外的节点访问用户自助服务门户,建议将host参数配置为192.168.1.1。保存该配置之后,使用如下命令启动OCCI服务:

occi-server start

这时您就可以通过http://192.168.1.1:4567/ui来访问用户自助服务界面了。如果您需要停止OCCI服务,可以使用如下命令:

occi-server stop

SunStone管理界面和OCCI用户自助服务界面都提供了多语言支持。简体中文的语言包是我制作的,该语言包已经被提交给OpenNebula,并且会被包含在即将发布的OpenNebula 4.0版本中。使用OpenNebula 3.8版本的用户,如果需要简体中文界面的话,可以从我的博客下载这个语言包。

OpenNebula 3.8中文语言包

在下面的介绍中,我们假定您已经依照上面的链接下载并安装了简体中文界面。在~/etc/sunstone-server.conf和~/etc/occi-server.conf中,您需要将lang参数配置为zh_CN,并且重新启动sunstone-server和occi-server两个服务。这时您的SunStone管理界面和OCCI自助服务门户都会被自动切换到简体中文界面。

最后,您需要运行/srv/cloud/one/share目录下的install_novnc.sh脚本,使得SunStone管理界面和OCCI用户自助服务界面支持通过VNC连接到虚拟机控制台。

cd ~/share

./install_novnc.sh

这个部分的安装比较奇特。我的经验是先sudo ./install_novnc.sh,然后清除掉/tmp中的相关内容,然后用oneadmin用户再次./install_novnc.sh,就成功了。

[计算节点的配置]

全新安装的Ubuntu 11.04 Server操作系统,安装的时候同时安装OpenSSH Sever和Virtualization。将eth0的IP配置为192.168.1.2,将eth1的IP配置为192.168.2.2。

首先安装必要的软件包:

(重要说明,如果在计算节点上没有安装ubuntu-vm-builder和ruby这两个软件包,用onehost create命令可以添加该计算节点,但是其状态会显示为err。)

sudo apt-get install qemu-kvm libvirt-bin bridge-utils ubuntu-vm-builder ruby nfs-common vlan

编辑/etc/fstab,配置NFS客户端:(假定OpenNebula管理节点的IP是192.168.1.1)

192.168.2.1:/srv/cloud /srv/cloud nfs defaults 0 0

创建NFS目录并挂载NFS文件系统:

sudo mkdir -p /srv/cloud
sudo mount /srv/cloud

创建cloud组和oneadmin用户:

sudo groupadd -g 10000 cloud
sudo useradd -u 10000 -g cloud -m oneadmin -s /bin/bash
sudo usermod -d /srv/cloud/one oneadmin
sudo passwd oneadmin
sudo chown oneadmin:cloud /srv/cloud/

编辑/etc/libvirt/libvirtd.conf配置libvirt,将操作权限授予给cloud组:

unix_sock_group = “cloud”

编辑/etc/libvirt/qemu.conf配置libvirt,设置VNC:

vnc_listen = “0.0.0.0″
user = “root”
group = “root”
dynamic_ownership = 0

重启libvirt:

sudo service libvirt-bin restart
sudo chown :cloud /var/run/libvirt/libvirt-sock

编辑/etc/network/interface,根据实际的网络状况配置网桥。在这里我们使用eth0连接到业务内网,使用192.168.1.*的内网IP。

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0

重启一下网络:

sudo service networking restart

[计算节点的管理]

屏幕快照 2012-12-21 下午3.39.38

登录到SunStone管理界面,在“基础设施-》物理机”页面点击“+新增”按钮添加计算节点。在“名称”对话框中输入计算节点业务内网的IP 192.168.1.2,其他输入框中使用缺省值即可,然后点击“创建”按钮进行确认。如果计算节点已经按照前一节的描述正确配置好的话,新增加的计算节点会出现在物理机列表里。

我们可以通过命令行界面查看计算节点是否添加成功:

onehost list

这时候应该可以看到192.168.1.2出现在计算节点列表里面。如果计算节点配置正确的话,它的状态(STAT)应该显示为“on”。如果计算节点的状态显示为“err”,说明计算节点没有配置好。这时候可以做三个检查:(1)在管理节点上是否可以用无密码模式SSH登录到计算节点,(2)计算节点是否已经安装好ubuntu-vm-builder和ruby,和(3)在计算节点上oneadmin用户是否有权限控制KVM。

[管理磁盘镜像]

屏幕快照 2012-12-21 下午9.59.19

登录到SunStone管理界面,在“应用市场”页面选中“ttylinux-kvm”,并点击右上角的“导入本地基础设施”按钮(中文语言包翻译为“从本地基础设施导入”,属于翻译错误)。无需改动弹出对话框内的任何内容,直接点击“创建”按钮即可。OpenNebula会在后台自动地下载一个预先配置好的ttylinux操作系统映像文件,并注册到OpenNebula数据仓库中。您可以随时在SunStone管理界面的“虚拟资源-》映像”页面中查看现有的磁盘映像及其状态。

在OpenNebula中,磁盘映像有三种类型:OS、CD-ROM、Datablock。OS型磁盘映像等价于AWS中的AMI,也等价与Eucalyptus中的EMI;CD-ROM型磁盘映像可以理解为一个ISO文件;Datablock型磁盘映像等价于AWS和Eucalyptus中的弹性块存储EBS。

ttylinux是一个精简版的Linux,其磁盘映像比较小,应该可以在很短的时间内完成下载。此后您还可以从应用市场中导入CentOS、Ubuntu、Debian等等由官方发布的操作系统磁盘映像。

我们也可以自己制作操作系统磁盘映像。在这里我们推荐您使用VirtualBox这个工具来完成操作系统的安装,安装操作系统时选择磁盘映像格式为VDI。操作系统安装完毕后,可以用下面这个命令将VDI磁盘映像格式转换成RAW磁盘映像格式:

VBoxManage clonehd file_name.vdi file_name.img –format raw

将RAW格式的磁盘映像拷贝到一台安装有QEMU的Linux机器上,用下面这个命令将RAW磁盘映像格式转换成QCOW2磁盘映像格式:

qemu-img convert file_name.img -O qcow2 file_name.qcow2

将转换过的磁盘映像(RAW格式或者QCOW2格式)拷贝到管理节点的某个目录里,例如/srv/cloud/one/images。OpenNebula缺省地认为来自用户硬盘的磁盘映像是不安全的,从而拒绝将其导入到数据仓库中。为了让OpenNebula能够导入用户硬盘上的磁盘映像,我们首先需要修改数据仓库的属性。在管理节点上执行如下命令,可以修改default数据仓库的属性:

onedatastore update 1

在vi编辑窗口中添加一行配置,存盘退出。

SAFE_DIRS=”/srv/cloud/one/images”

登录到SunStone管理界面,在“虚拟资源-》映像”页面中点击“+新增”按钮,在弹出的创建磁盘映像对话框中设定要导入的磁盘映像名称、类型、持久性、驱动程序(raw或者企鹅cow)、磁盘映像文件在管理节点上的路径等等信息,然后点击“创建”按钮。OpenNebula就会在后台将指定的磁盘映像倒入到相应的数据仓库中。您可以随时在SunStone管理界面的“虚拟资源-》映像”页面中查看现有的磁盘映像及其状态。

如果一个磁盘映像是持久性的,那么在虚拟机运行期间所执行的任何磁盘操作,在虚拟机停机之后依然会保存在磁盘映像中。如果一个磁盘映像是临时性的,那么在虚拟机运行期间所执行的任何磁盘操作,在虚拟机停机之后不会保存在磁盘映像中。

[管理网络]

屏幕快照 2012-12-21 下午9.45.46

登录到SunStone管理界面,在“基础设施-》虚拟网络”页面点击“+新增”按钮,即可定义可以分配给虚拟机使用的网络。您需要输入该网络的名称(任意字符串)、虚拟网络模式(缺省值为基于普通网桥的网络,还可以选择802.1Q、ebtables、Open vSwitch、VMWare等等网络类型)、网桥、物理网卡、可用的IP地址范围等等信息,然后点击“创建”按钮即可生成又gi额网络。您可以俗世在SunStong管理界面的“基础设施-》虚拟网络”页面中查看现有的网络定义及其状态。

您也可以通过命令行的方式来定义一个网络。例如您可以使用文本编辑软件创建一个small_network.net文件,该文件的内容定义了一个网络:

NAME = “Small Network”
TYPE = FIXED

BRIDGE = br1
LEASES = [ IP="192.168.1.5"]
LEASES = [ IP="192.168.1.6"]
LEASES = [ IP="192.168.1.7"]
LEASES = [ IP="192.168.1.8"]
LEASES = [ IP="192.168.1.9"]
LEASES = [ IP="192.168.1.10"]
LEASES = [ IP="192.168.1.11"]
LEASES = [ IP="192.168.1.12"]
LEASES = [ IP="192.168.1.13"]
LEASES = [ IP="192.168.1.14"]
LEASES = [ IP="192.168.1.15"]

将如上所定义的网络添加到系统:

onevnet create small_network.net

列出系统上所有的网络(刚刚创建的Small Network 的ID可能是0):

onevnet list

[管理虚拟机模板]

屏幕快照 2012-12-21 下午9.29.06

在OpenNebula中,操作系统磁盘映像相当于安装有操作系统的可启动硬盘。在创建虚拟机之前,还需要对虚拟机的CPU、内存、网络、显示器、输入设备等等进行定义。在OpenNebula中,我们将这些配置描述称为虚拟机模板。

用户可以通过SunStone管理界面方便地定制虚拟机模板。在“虚拟资源-》模板”页面点击“+新增”按钮,在弹出的创建VM模板中设定模板名称、内存大小、CPU数量(VM在宿主机上实际占用的CPU,精确到0.1)、vCPU数量(VM内部显示的CPU数量,为正整数)、处理器构架(i686或者x86_64)、磁盘映像(从列表中选择一个磁盘映像)、驱动程序(RAW或者QCOW2)、选择网络(从列表中选择一个可用网络)、图形界面(VNC、SDN、SPICE)等等,然后点击“创建”按钮即可生成虚拟机模板。您可以随时在SunStone管理界面的“虚拟资源-》模板”页面中查看现有的虚拟机模板及其状态。

如果您在虚拟机模板中使用了持久性的磁盘映像,你只能够基于该模板创建一个正在运行的虚拟机。这是因为一个持久型的磁盘映像只能够同时被应用到一台正在运行的虚拟机上。如果您在虚拟机模板中使用的是临时性的磁盘映像,则可以同时基于该模板创建多个虚拟机。

您也可以通过命令行来定义一个模板,编辑ttylinux.one定义虚拟机参数。这里我们使用了一个ttylinux的磁盘映像,该磁盘映像可以从下面这个链接获得。

wget http://dev.opennebula.org/attachments/download/170/ttylinux.tar.gz
tar zxvf ttylinux.tar.gz

模板文件ttylinux.one的内容如下:

NAME   = ttylinux
CPU    = 0.1
MEMORY = 64

DISK   = [
source   = "/srv/cloud/one/one-templates/ttylinux.img",
target   = "hda",
readonly = "no" ]

NIC    = [ NETWORK_ID = 0]

GRAPHICS = [ TYPE = "VNC"]

FEATURES=[ acpi="no" ]

在系统中创建该虚拟机:

onevm create ttylinux.one

列出系统上所有的虚拟机(刚刚创建的虚拟机的ID可能是0):

onevm list

如上命令列出了系统上所有虚拟机的状态,包括运行这些虚拟机的计算节点。如果需要了解某个虚拟机的详细状况,可以使用onevm show VM_ID命令,例如:

onevm show 0

这个命令会列出ID为0的虚拟机的所有相关信息,包括运行该虚拟机的计算节点,VNC端口号等等。找到这个端口号(假定为5900),就可以通过VNC客户端连接到该虚拟机的控制台,例如:

vncviewer 192.168.1.2:5900

管理虚拟机

当虚拟机模板创建完毕后,您可以在SunStone管理界面的“虚拟资源-》模板”页面中选中一个虚拟机模板,并点击页面上方的“创建实例”按钮创建一个基于该模板的虚拟机。您也可以在“虚拟资源-》虚拟机”页面点击页面上方的“+新增”按钮,并在弹出的对话框中选择一个用于创建虚拟机的模板。

屏幕快照 2012-12-21 下午10.01.53

您可以在“虚拟资源-》虚拟机”页面随时查看您可管理的虚拟机列表及其状态,并通过页面上方的各种按钮进行虚拟机生命周期管理操作(例如暂停运行、继续运行、关机、重启、删除等等)。如果您在安装OpenNebula时设定了VNC支持,并且您所创建的虚拟机指定VNC作为控制台显示设备的话,在虚拟机列表中与该虚拟机相对应的VNC图标会被点亮,您可以点击该图标,直接在浏览器中通过VNC连接到该虚拟机的控制台。

屏幕快照 2012-12-21 下午10.10.33

[其他说明]

虚拟机的在线迁移,需要配置好所有计算节点的/etc/hosts和/etc/hostname,确保在所有在计算节点上都能够根据主机名来寻找到其他计算节点,不然的话在线迁移会失败。此外,所有节点(包括控制节点和计算节点)之间需要配置无密码SSH登录。

数据库的用户名和密码尽可能不要包含:和@字符,否则会出现数据库连接错误。

我会在后续的教程中陆续介绍OpenNebula的更多配置和使用方法。

22 Responses to “Ubuntu 12.04 Server安装配置OpenNebula 3.8”

  1. caihexin says:

    1、我测试你的安装过程,前面都很正常
    但在生成虚拟主机时有问题,生成的虚拟主机启不来,报:Wed Dec 26 09:49:18 2012 [DiM][I]: New VM state is ACTIVE.
    Wed Dec 26 09:49:18 2012 [LCM][I]: New VM state is PROLOG.
    Wed Dec 26 09:49:18 2012 [VM][I]: Virtual Machine has no context
    Wed Dec 26 10:10:37 2012 [TM][I]: clone: Cloning /srv/cloud/one/var/datastores/1/394978f3ef534ba6612713f5e753a98b in 192.168.0.97:/srv/cloud/one/var//datastores/0/1/disk.0
    Wed Dec 26 10:10:37 2012 [TM][I]: ExitCode: 0
    Wed Dec 26 10:10:37 2012 [LCM][I]: New VM state is BOOT
    Wed Dec 26 10:10:37 2012 [VMM][I]: Generating deployment file: /srv/cloud/one/var/1/deployment.0
    Wed Dec 26 10:10:37 2012 [VMM][I]: ExitCode: 0
    Wed Dec 26 10:10:37 2012 [VMM][I]: Successfully execute network driver operation: pre.
    Wed Dec 26 10:10:41 2012 [VMM][I]: Command execution fail: cat << EOT | /var/tmp/one/vmm/kvm/deploy /srv/cloud/one/var//datastores/0/1/deployment.0 192.168.0.97 1 192.168.0.97
    Wed Dec 26 10:10:41 2012 [VMM][I]: setlocale: No such file or directory
    Wed Dec 26 10:10:41 2012 [VMM][I]: error: Failed to create domain from /srv/cloud/one/var//datastores/0/1/deployment.0
    Wed Dec 26 10:10:41 2012 [VMM][I]: error: unable to open disk path /srv/cloud/one/var//datastores/0/1/disk.0: Permission denied
    Wed Dec 26 10:10:41 2012 [VMM][E]: Could not create domain from /srv/cloud/one/var//datastores/0/1/deployment.0
    Wed Dec 26 10:10:41 2012 [VMM][I]: ExitCode: 255
    Wed Dec 26 10:10:41 2012 [VMM][I]: Failed to execute virtualization driver operation: deploy.
    Wed Dec 26 10:10:41 2012 [VMM][E]: Error deploying virtual machine: Could not create domain from /srv/cloud/one/var//datastores/0/1/deployment.0
    Wed Dec 26 10:10:41 2012 [DiM][I]: New VM state is FAILED

    不知是什么原因?

    2、在部署过程中,我发现一个问题,此部署方式,计算节点磁盘空间没有利用上,虚拟主机文件都安装在了控制节点上,在生成虚机时控制节点会很慢,主要问题在磁盘写上面

  2. caihexin says:

    唯一问题猜测:在计算节点执行
    chown oneadmin:cloud /srv/cloud/ 时有异常:
    root@onode1:~# chown oneadmin:cloud /srv/cloud/
    chown: changing ownership of `/srv/cloud/’: Operation not permitted
    不让执行此操作

  3. qyjohn says:

    计算节点空间没有用上的问题,可以用TM_SSH来解决。回头我再写一个教程。

  4. qyjohn says:

    NFS的问题应该是权限没有配对。你在NFS服务端指定一下NFS客户端的IP应该就可以了。

  5. ioiioi says:

    大哥,你确定截图是正确的吗?我看到的是encalyptus的logo

  6. [...] Ubuntu 12.04 Server安装配置OpenNebula 3.8 OpenNebula 3.8中文语言包 使用VirtualBox创建KVM磁盘镜像文件 VM性能的快速测试方法 [...]

  7. qyjohn says:

    计算节点的存储空间没有利用上的问题,可以参考我刚刚发布的一个教程:

    http://www.qyjohn.net/?p=2764

  8. qyjohn says:

    eucalyptus的logo是我自己改的。截图没有问题。

  9. [...] Ubuntu 12.04 Server安装配置OpenNebula 3.8 OpenNebula 3.8中文语言包 使用VirtualBox创建KVM磁盘镜像文件 VM性能的快速测试方法 [...]

  10. [...] 3.8中文语言包 2012-12-06, 使用VirtualBox创建KVM磁盘镜像文件 2012-12-21, Ubuntu 12.04 Server安装配置OpenNebula 3.8 2012-12-24, VM性能的快速测试方法 2013-01-06, OpenNebula 3.8 — 本地存储 [...]

  11. moqiruyi says:

    请问是否可以建立一个NFS服务器做到管理与计算节点 都使用这个存储服务器?

  12. milton says:

    您好 我目前用的版本是12.04然後安裝ONE 3.0
    使用兩台PC 一台當管理節點一台計算節點
    目前已經可以使用MIGRATE的功能
    但是使用LIVE MIGRATE時,例如從PC.A到PC.B
    PC.B會有顯示傳過來的VM一下子然後就不見了
    想請問是哪邊出了問題
    謝謝您

  13. Danny says:

    您好,关于计算节点配置,我想你写的并不全,例如需要将将oneadmin添加到libvirt以及kvm群组,另外设置ssh无key应该也只是需要计算节点配置的吧
    http://opennebula.org/documentation:archives:rel3.6:kvmg#configuration

  14. leon says:

    您好,我是用在redhat上面的有一个问题不知道如何解决
    GRAPHICS=[
    LISTEN="0.0.0.0",
    PORT="5905",
    TYPE="vnc" ]
    vncviewer 10.11.3.11:5905
    vncviewer: unable to open display “”
    为什么无法直接连接?确实有监听这个端口。

  15. qyjohn says:

    几个相关的问题:

    (1)NFS权限的问题

    root@onode1:~# chown oneadmin:cloud /srv/cloud/
    chown: changing ownership of `/srv/cloud/’: Operation not permitted

    这是因为NFS服务设置了root_squash,修改为no_root_squash即可。

    (2)在线迁移的问题

    Mon Apr 8 00:12:57 2013 [VMM][E]: migrate: Command “virsh –connect qemu:///system migrate –live one-11 qemu+ssh://192.168.100.20/system” failed: error: internal error Attempt to migrate guest to the same host 00020003-0004-0005-0006-000700080009

    internal error Attempt to migrate guest to the same host 意味着你的两台主机拥有相同的UUID,这是因为你的硬件提供商实在是太不负责任了(不要惊讶,很多杂牌机都这么干的,还有如果你发现两个网卡的MAC地址是完全一样的时候也不要惊讶)。解决办法是让你的libvirtd以为这两台主机的UUID是不同的。修改/etc/libvirt/libvirtd.conf中的host_uuid参数,将两台主机的host_uuid设置成不一样的数值,然后用sudo service libvirt-bin restart重启一下libvirtd即可。

    需要注意的是,在libvirtd.conf中缺省提供的是一大串0,这个数值是不可以被接受的。正确的做法是在每台主机上单独运行uuidgen命令,然后把这个命令生成的UUID拷贝到libvirtd.conf中去。

  16. qyjohn says:

    另外一个可行的节点配置:

    sudo adduser oneadmin kvm
    sudo adduser oneadmin libvirtd
    sudo adduser oneadmin sudo
    sudo adduser oneadmin adm

    $ grep -vE ‘^($|#)’ /etc/libvirt/qemu.conf
    user = “oneadmin”
    group = “cloud”
    dynamic_ownership = 0

  17. [...] 首先需要在前端节点上安装OpenNebula,具体的方法可以参见《Ubuntu 12.04 Server安装配置OpenNebula 3.8》这篇文章。 [...]

  18. young says:

    执行./install.sh -u oneadmin -g cloud -d /srv/cloud/one 后提示:
    chown:changing ownership of ‘/srv/cloud/one/.gvfs’ :Function not implemented.
    这个问题怎么解决啊?是照着上面的内容一步一步做的。到这步安装的时候出问题了。

  19. young says:

    上面的问题终于解决了。是因为.gvfs文件的权限导致的,不过直接更改这个文件的权限改不了,我是先将该文件夹umount,然后删除该文件夹(经查看发现该文件夹是空的)
    #umount .gvfs
    #rm -rf .gvfs
    最后重新建立了一个同名文件夹,再执行install命令就可以安装成功了。
    非常感谢@ qyjohn的这篇指导文章。

  20. qyjohn says:

    很高兴我的文章对您有用。

  21. gywang says:

    qyjohn 您好:

    我的opennebula集群的存储是local filesystem + SSH的方式,在冷迁移的时候出了点问题

    虚拟机相关的文件:

    -rw-r–r– 1 oneadmin cloud 992 Jul 4 09:46 deployment.0
    -rw-r—– 1 libvirt-qemu kvm 2213150720 Jul 4 11:41 disk.0
    -rw-r—– 1 libvirt-qemu kvm 374784 Jul 4 09:46 disk.1
    lrwxrwxrwx 1 oneadmin cloud 24 Jul 4 09:46 disk.1.iso -> /datastores/0/558/disk.1

    冷迁移的时候disk.0和disk.1没迁移过去,如果手动把这两个文件的权限改成644就可以。

    请问该如何解决

  22. gywang says:

    找到原因了 :)

    /etc/libvirt/qemu.conf

    user = “root”
    group = “root”
    dynamic_ownership = 0

    不过我设置成root。root还是不行,改成

    user = “root”
    group = “cloud”
    dynamic_ownership = 0

Leave a Reply

Panorama Theme by Themocracy