- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有2个运行KVM和本地文件存储的节点的OpenNebula实例。这意味着没有实时迁移,因为vm镜像被scp'到每个节点,因此也没有故障转移或实时迁移的选项。
我想实现NFS共享存储,并将VM从本地FS数据存储移动到NFS共享存储数据存储。 OpenNebula支持在数据存储区之间迁移VM,但仅将相同类型的数据存储区即从ssh迁移到ssh,而不将ssh迁移到shared。
我正在研究一种实现此目标的方法,并且希望收到一些有关为什么这是一个好主意或坏主意的反馈。
谢谢
最佳答案
OpenNebula当前不支持将VM从一种类型的数据存储迁移到另一种类型的数据存储。我一直在研究一种有效的方法,并希望在此处进行记录,以获取对该方法的一些反馈和意见。
数据存储类型主要由传输管理器驱动程序“TM_MAD”设置标识。不能通过Sunstone或cli更改此设置。因此,我们需要一种方法来做到这一点。这就是我所做的。我首先在一个VM中全新安装了OpenNebula 5.4.13,然后在VMware虚拟机中安装了两个都运行Debian 9的VM节点(不要忘记检查VM CPU选项的虚拟化)。
注意:这是一个实验过程,因此请确保先备份所有内容!
脚步
要迁移到其他商店,我们需要执行几个步骤。它们如下:
mkdir /share/one_datastore
,exportfs -rav
,showmount -e localhost
systemctl stop opennebula && systemctl stop opennebula-sunstone
。 showmount -e [nfs-server]
,mkdir /mnt/datastore
和mount [nfs-server]:/share/one_datastore /mnt/datastore
,mv /var/lib/one/datastores/* /mnt/datastore/
ls /mnt/datastore
应该列出文件夹0、1和2,mount [nfs-server]:/share/one_datastore /var/lib/one/datastores
,ls /var/lib/one/datastores
应该列出我们的3个文件夹0、1和2,/var/lib/one/one.db
中。我们可以通过编辑数据存储配置数据来更改驱动程序类型,该数据然后告诉OpenNebula使用哪个驱动程序以及如何处理数据存储数据。默认情况下,OpenNebula使用带MySql选项的sqlite数据库。我正在使用sqlite,但对于MySql同样适用。
sqlite3 /var/lib/one/one.db
,.tables
的表。 datastore_pool
是我们要修改的表select * from datastore_pool;
中的所有记录将导致屏幕上充满配置数据。每个记录都有一个标识符oid
与数据存储区ID匹配,如下所示(前0是默认SYSTEM数据库的数据存储区ID):0|system|<DATASTORE><ID>0</ID><UID>0</UID><GID>0</GID><UNAME>oneadmin</UNAME><GNAME>oneadmin</GNAME><NAME>system</NAME><PERMISSIONS><OWNER_U>1</OWNER_U><OWNER_M>1</OWNER_M><OWNER_A>0</OWNER_A><GROUP_U>1</GROUP_U><GROUP_M>0</GROUP_M><GROUP_A>0</GROUP_A><OTHER_U>0</OTHER_U><OTHER_M>0</OTHER_M><OTHER_A>0</OTHER_A></PERMISSIONS><DS_MAD><![CDATA[-]]></DS_MAD><TM_MAD><![CDATA[ssh]]></TM_MAD><BASE_PATH><![CDATA[/var/lib/one//datastores/0]]></BASE_PATH><TYPE>1</TYPE><DISK_TYPE>0</DISK_TYPE><STATE>0</STATE><CLUSTERS><ID>0</ID></CLUSTERS><TOTAL_MB>0</TOTAL_MB><FREE_MB>0</FREE_MB><USED_MB>0</USED_MB><IMAGES></IMAGES><TEMPLATE><ALLOW_ORPHANS><![CDATA[NO]]></ALLOW_ORPHANS><DISK_TYPE><![CDATA[FILE]]></DISK_TYPE><DS_MIGRATE><![CDATA[YES]]></DS_MIGRATE><RESTRICTED_DIRS><![CDATA[/]]></RESTRICTED_DIRS><SAFE_DIRS><![CDATA[/var/tmp]]></SAFE_DIRS><SHARED><![CDATA[NO]]></SHARED><TM_MAD><![CDATA[ssh]]></TM_MAD><TYPE><![CDATA[SYSTEM_DS]]></TYPE></TEMPLATE></DATASTORE>|0|0|1|1|0
body
中获取数据select body from datastore_pool where oid=0;
)并复制到您喜欢的文本编辑器(该块以
<TM_MAD><![CDATA[ssh]]></TM_MAD>
替换为:
<TM_MAD><![CDATA[shared]]></TM_MAD>
<SHARED><![CDATA[NO]]></SHARED>
替换为:
<SHARED><![CDATA[YES]]></SHARED>
update datastore_pool set body='[datastore-config]' where oid=0
,shared
或qcow2
驱动程序。我使用了qcow2。所以:select body from datastore_pool where oid=1;
:<TM_MAD><![CDATA[ssh]]></TM_MAD>
替换:
<TM_MAD><![CDATA[qcow2]]></TM_MAD>
update datastore_pool set body='[datastore-config]' where oid=1;
,<TM_MAD><![CDATA[ssh]]></TM_MAD>
替换为<TM_MAD><![CDATA[shared]]></TM_MAD>
来更新FILES数据存储区(oid = 3),并使用上述方法进行更新。 systemctl start opennebula && systemctl start opennebula-sunstone
/var/lib/one/datastores
的内容。如果要将每个基于数据存储ID的文件夹装入其自己的NFS共享,则可以执行此操作,而不是整个数据存储文件夹。清空任何包含0、1和2文件夹的文件夹。否则,从数据存储文件夹apt-get install nfs-common
,showmount -e [nfs-server]
,mount [nfs-server]:/share/one_datastore /var/lib/one/datastores
,df
,/etc/fstab
,添加挂载,以便在下次引导时挂载它。 ping [vm-ip] -t
),然后在Sunstone中打开VM并“实时迁移”到另一个节点。观察ping并检查日志以确保成功。我发现我必须刷新显示,然后转到主机TAB以检查VM是否已迁移。之后,它显示正确,但我认为它是浏览器中的缓存问题。实时迁移后,您仍然应该可以看到ping正常运行,结果可能是一次ping失败。
关于ssh - 将OpenNebula数据存储区从本地FS迁移到NFS的提案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51452408/
今天下午我尝试解决Codility的demo测试。在思考了如何提高性能(并进行了一些搜索)之后,我创建了以下代码: function solution(A) { let array = [..
阅读提案 n4228 我读到以下代码: void f() { std::string s = "but I have heard it works even if you don't believe
现在,如果我在一个 css 文件中并开始输入内容并按 ctrl + space,我会得到自动完成建议,但是是否可以通过输入而不是实际按 来获得它ctrl + 空格键 ? 最佳答案 您可以通过转到 Se
正如async所说,pormise对象或简单数据(如数字或字符串)可以跟在await后面,当它是简单数据时,它就像sync一样,我写了以下第一个程序: let fs = require('fs');
大家好,我是煎鱼。 现在是 2021 年 8 月份了,根据 Go 语言发布周期的 2,8 原则。Go 1.17 即将发布,在写这篇文章时,现在已经进行到了 rc2: 这意味着
有人提议引入C#风格的async-await。我知道 Babel.js 将 ES6 转译为 ES5,但是有什么方法可以让它将 async-await 转译为 ES5? 最佳答案 Babel v6 从
提案 N3554 (A Parallel Algorithms Library)对于 C++14,建议(除其他事项外)似乎是当前 std::partial_sum 的并行版本,例如: template
我尝试在 Facelets 页面中激活 EL 提案,但是当我按 Ctrl+Space 时,它不起作用。由于其他问题,我成功激活了 JSF 标签提案,但 EL 提案不起作用。 如何在 Eclipse
我是一名优秀的程序员,十分优秀!