CloudStack集成KVM报NFS错误
问题描述:
Cloudstack4.0集成KVM,可以正常添加主机,并且可以正常操作到ZONE启用,但是到系统VM启动的时候就开始报错,报异常。
`/mnt/xx': Invalid argument
Cloudstack Management:
/var/log/cloud/management/management-server.log
1
2
3
4
5
6
7
|
2013-08-14 03:09:09,161 DEBUG [cloud.consoleproxy.ConsoleProxyManagerImpl] (consoleproxy-1:null) Skip capacity scan due to there is no Primary Storage UPintenance mode
1993 2013-08-14 03:09:09,721 DEBUG [network.router.VirtualNetworkApplianceManagerImpl] (RouterStatusMonitor-1:null) Found 0 routers.
1994 2013-08-14 03:09:25,572 DEBUG [cloud.server.StatsCollector] (StatsCollector-1:null) VmStatsCollector is running...
1995 2013-08-14 03:09:25,587 DEBUG [cloud.server.StatsCollector] (StatsCollector-3:null) StorageCollector is running...
1996 2013-08-14 03:09:25,589 DEBUG [cloud.server.StatsCollector] (StatsCollector-1:null) HostStatsCollector is running...
1997 2013-08-14 03:09:39,160 DEBUG [cloud.consoleproxy.ConsoleProxyManagerImpl] (consoleproxy-1:null) Skip capacity scan due to there is no Primary Storage UPintenance mode
1998 2013-08-14 03:09:39,721 DEBUG [network.router.VirtualNetworkApplianceManagerImpl] (RouterStatusMonitor-1:null) Found 0 routers
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
2013-08-13 15:28:01,634 WARN [cloud.consoleproxy.ConsoleProxyManagerImpl] (consoleproxy-1:null) Exception while trying to start console proxy
9023 com.cloud.exception.AgentUnavailableException: Resource [Host:1] is unreachable: Host 1: Unable to start instance due to Unable to get answer that is of class com.cloud.agent.api.Star tAnswer
9024 at com.cloud.vm.VirtualMachineManagerImpl.advanceStart(VirtualMachineManagerImpl.java:847)
9025 at com.cloud.vm.VirtualMachineManagerImpl.start(VirtualMachineManagerImpl.java:472)
9026 at com.cloud.vm.VirtualMachineManagerImpl.start(VirtualMachineManagerImpl.java:465)
9027 at com.cloud.consoleproxy.ConsoleProxyManagerImpl.startProxy(ConsoleProxyManagerImpl.java:627)
9028 at com.cloud.consoleproxy.ConsoleProxyManagerImpl.allocCapacity(ConsoleProxyManagerImpl.java:1164)
9029 at com.cloud.consoleproxy.ConsoleProxyManagerImpl.expandPool(ConsoleProxyManagerImpl.java:1981)
9030 at com.cloud.consoleproxy.ConsoleProxyManagerImpl.expandPool(ConsoleProxyManagerImpl.java:173)
9031 at com.cloud.vm.SystemVmLoadScanner.loadScan(SystemVmLoadScanner.java:113)
9032 at com.cloud.vm.SystemVmLoadScanner.access$100(SystemVmLoadScanner.java:34)
9033 at com.cloud.vm.SystemVmLoadScanner$1.reallyRun(SystemVmLoadScanner.java:83)
9034 at com.cloud.vm.SystemVmLoadScanner$1.run(SystemVmLoadScanner.java:73)
9035 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
9036 at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
9037 at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
9038 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:165)
9039 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
9040 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
9041 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
9042 at java.lang.Thread.run(Thread.java:679)
9043 Caused by: com.cloud.utils.exception.CloudRuntimeException: Unable to get answer that is of class com.cloud.agent.api.StartAnswer
9044 at com.cloud.agent.manager.Commands.getAnswer(Commands.java:80)
9045 at com.cloud.vm.VirtualMachineManagerImpl.advanceStart(VirtualMachineManagerImpl.java:783)
9046 ... 19 more
|
KVM Host(Cloudstack Aent):
/var/log/cloud/agent/agent.log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
com.cloud.utils.exception.CloudRuntimeException: org.libvirt.LibvirtException: cannot create path '/mnt/2c65613e-e5a3-3443-96c9-272fd60502ee/v-2-VM-patchdisk' : Invalid argument
at com.cloud.hypervisor.kvm.storage.LibvirtStorageAdaptor.createPhysicalDisk(LibvirtStorageAdaptor.java:556)
at com.cloud.hypervisor.kvm.storage.LibvirtStoragePool.createPhysicalDisk(LibvirtStoragePool.java:101)
at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.createPatchVbd(LibvirtComputingResource.java:2980)
at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.createVbd(LibvirtComputingResource.java:2943)
at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.execute(LibvirtComputingResource.java:2808)
at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.executeRequest(LibvirtComputingResource.java:1035)
at com.cloud.agent.Agent.processRequest(Agent.java:518)
at com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:831)
at com.cloud.utils.nio.Task.run(Task.java:83)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:679)
2013-08-13 17:41:17,886 WARN [cloud.agent.Agent] (agentRequest-Handler-2:null) Caught:
java.lang.NullPointerException
at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.cleanupVMNetworks(LibvirtComputingResource.java:3922)
at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.handleVmStartFailure(LibvirtComputingResource.java:2709)
at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.execute(LibvirtComputingResource.java:2834)
at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.executeRequest(LibvirtComputingResource.java:1035)
at com.cloud.agent.Agent.processRequest(Agent.java:518)
at com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:831)
|
问题分析:
这个问题的原因从CloudStack日志文件里面很难找出如何解决该问题的出口,这个问题从上面的日志分析,不管是从Cloudstack管理节点还是安装代理软件的KVM节点,问题大概出现在主存储上面,但是又并不是权限的问题。
查看存储节点NFS的配置文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@storage252 ~] # cat /etc/exports
/primary *(rw,async,no_root_squash)
/secondary *(rw,async,no_root_squash)
[root@storage252 ~] # ll /primary/ /secondary/ -d
drwxrwxrwx 3 root root 4096 Aug 14 09:09 /primary/
drwxrwxrwx 3 root root 4096 Aug 13 18:33 /secondary/
[root@storage252 ~] # service nfs status
rpc.svcgssd is stopped
rpc.mountd (pid 26157) is running...
nfsd (pid 26222 26221 26220 26219 26218 26217 26216 26215) is running...
rpc.rquotad (pid 26153) is running...
[root@storage252 ~] # exportfs
/primary <world>
/secondary <world>
|
可以看出NFS服务器的配置文件跟导出的目录均没有问题。
手动挂载NFS导出的目录到KVM 主机上
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@kvm01 ~] # showmount -e 192.168.150.252
Export list for 192.168.150.252:
/secondary *
/primary *
[root@kvm01 ~] # mkdir /mnt/1
[root@kvm01 ~] # mkdir /mnt/2
[root@kvm01 ~] # mount -t nfs 192.168.150.252:/primary /mnt/1
[root@kvm01 ~] # mount -t nfs 192.168.150.252:/secondary /mnt/2
[root@kvm01 ~] # ll /mnt/
total 8
drwxrwxrwx. 3 nobody nobody 4096 Aug 14 09:09 1
drwxrwxrwx. 3 nobody nobody 4096 Aug 13 18:33 2
|
创建目录查看权限是否没有限制
1
2
3
4
5
6
7
8
|
[root@kvm01 ~] # touch /mnt/1/test1
[root@kvm01 ~] # touch /mnt/2/test1
[root@kvm01 ~] # ll /mnt/1/
total 1
-rw-r--r--. 1 nobody nobody 0 Aug 14 09:35 test1
[root@kvm01 ~] # ll /mnt/2/
total 1
-rw-r--r--. 1 nobody nobody 0 Aug 14 09:35 test1
|
可以看出KVM主机对主存储跟二级存储目录均有可写权限。而且日志中也没有显示Operation xxx的报错。
但是可以发现挂载到KVM 主机上面的NFS目录的属主跟属组都是nobody,而我们在NFS服务器上面设置了no_root_squash参数,表明客户端使用root用户创建的文件的权限也应该是root.root,而非nobody.nobody。
从而去查看两个节点的系统日志文件,/var/log/message
Cloudstack Management:
1
2
3
4
5
6
7
|
Aug 13 16:50:25 storage252 rpc.idmapd[19778]: nss_getpwnam: name '0' does not map into domain 'clovem.com'
Aug 13 16:50:25 storage252 rpc.idmapd[19778]: nss_getpwnam: name 'root@sjcloud.cn' does not map into domain 'clovem.com'
Aug 13 16:55:54 storage252 rpc.idmapd[19778]: nss_getpwnam: name 'root@sjcloud.cn' does not map into domain 'clovem.com'
Aug 13 17:00:56 storage252 rpc.idmapd[19778]: nss_getpwnam: name 'root@sjcloud.cn' does not map into domain 'clovem.com'
Aug 13 17:06:24 storage252 rpc.idmapd[19778]: nss_getpwnam: name 'root@sjcloud.cn' does not map into domain 'clovem.com'
Aug 13 17:11:54 storage252 rpc.idmapd[19778]: nss_getpwnam: name 'root@sjcloud.cn' does not map into domain 'clovem.com'
Aug 13 17:17:24 storage252 rpc.idmapd[19778]: nss_getpwnam: name 'root@sjcloud.cn' does not map into domain 'clovem.com'
|
KVM Host(Cloudstack Aent):
1
2
3
4
5
6
|
Aug 13 15:23:35 kvm01 kernel: FS-Cache: Netfs 'nfs' registered for caching
2333 Aug 13 15:23:35 kvm01 nfsidmap[13080]: nss_getpwnam: name 'root@clovem.com' does not map into domain 'sjcloud.cn'
2334 Aug 13 15:26:48 kvm01 kernel: NFS: v4 server 192.168.150.252 does not accept raw uid /gids . Reenabling the idmapper.
2335 Aug 13 15:37:22 kvm01 kernel: lo: Disabled Privacy Extensions
2336 Aug 13 15:40:33 kvm01 gnome-session[17824]: WARNING: GSIdleMonitor: IDLETIME counter not found
2337 Aug 13 15:40:33 kvm01 gnome-session[17824]: WARNING: Unable to determine session: Unable to lookup session information for process '17824'
|
问题解决
从上面的分析可以看出,问题出在两个节点的域不一样,导致在进行NFS映射的时候出现了问题。
查看两个节点的主机名:
1
2
3
4
|
[root@storage252 ~] # hostname --fqdn
storage252.clovem.com
[root@kvm01 ~] # hostname --fqdn
kvm01.sjcloud.cn
|
将两个节点的域进行统一即可。
但是如果仅仅是玩NFS,跟Cloudstack无关的话,可以通过
[root@kvm01 ~]
# mount -t nfs -o vers=3 ip:/dir /localdir 即可
今天找到了最方面的解决方法:
在服务端/etc/exports文件下,指定导出目录的参数添加一个fsid=0参数即可
如:
/export_dir *(rw,fsid=1,async,no_root_squash)
/export_dir *(rw,fsid=2,async,no_root_squash)
CloudStack集成KVM报NFS错误相关推荐
- hue集成mysql报错_hue集成hive访问报database is locked
这个问题这应该是hue默认的SQLite数据库出现错误,你可以使用mysql postgresql等来替换 hue默认使用sqlite作为元数据库,不推荐在生产环境中使用.会经常出现database ...
- Springboot集成mabatis-plus报com.xly.entity.ClientNot Found TableInfoCache.
Springboot集成mabatis-plus报com.xly.entity.ClientNot Found TableInfoCache. 在用springboot集成mabatis-plus做项 ...
- SpringBoot集成Redis报non null key required(已解决)
SpringBoot集成Redis报non null key required(已解决) 注意是不是给的key值或传过来的值是不是空的,如果是空的就会报这个错 接下来将流程走下去: 1.创建Sprin ...
- php上传图片302错误,解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法...
最近用ThinkPHP开发一个项目,集成了批量上传文件插件Uploadify,在谷歌Chrome和IE下都能正常上传,只有火狐下提示这个错误,网上找了很多解决办法,基本都说flash在firefox下 ...
- vue中集成jsplumb报错`Cannot read property ‘parentNode‘ of null`,且无法渲染连线的问题
简介 我在项目中使用了typescript+vue+jsplumb作为流程图框架. 问题 我在容器中使用的是v-for指令渲染. 从配置文件中读取流程图的json并且存入this.items变量中 通 ...
- Node.js 报语法错误 SyntaxError: Unexpected identifier
原文链接:https://blog.csdn.net/sleepwalker_1992/article/details/81029380 刚开始学习node.js,安装完以后,写了一个简单的js代码, ...
- mysql 1455_关于Oracle 11g导出数据时 报 ORA-1455错误的处理
关于Oracle 11g导出数据时 报 ORA-1455错误的处理,由于导出的该用户的表可能存在空数据表,那么可能就会出现此其异常. 关于Oracle 11g导出数据时 报 ORA-1455错误的处理 ...
- 切记切记:Spring配置文件中,Component-scan无法扫描到的类中的自动装配对象无法被调用,报空指针错误。...
Spring单例注入,单例对象可设置成Spring元件. 只有Spring的元件中@Autowired才有用,在普通类中@Autowired虽然不会编译报错,但运行时会报空指针错误. 转载于:http ...
- Linux 部署ftp报530 错误解决方案
Linux 部署ftp报530 错误解决方案 参考文章: (1)Linux 部署ftp报530 错误解决方案 (2)https://www.cnblogs.com/austinspark-jessyl ...
最新文章
- JMeter性能测试,验证请求数据的准确性(wc命令)
- java Web 文件上传
- php mysql服务器配置_配置最新的PHP加MYSQL服务器
- 智能车大赛信标组_第十五届全国大学生智能汽车竞赛在南京信息工程大学圆满闭幕...
- 关于SQLContext过期,SparkSession登场
- 帆软报表(finereport)JS实现cpt中详细单元格刷新
- CF750E-New Year and Old Subsequence【动态dp】
- Hibernate基本概念 (4)
- 计算机二级网址打不开,大神为你解决win7系统打不开二级网页链接的操作教程...
- 38备忘录模式(Memento Pattern)
- 连微信红包都在催我们长大:90后首次成为红包主力军
- 聪明人:三不管,四不说,五不帮!
- 13. JavaScript 字符串(String)对象
- 404页圈小猫游戏源码
- ASP.NET4.0尚未在Web服务器上注册
- win10浏览器加载很慢_win10系统打开网页速度慢的排除原因及解决方法
- [iOS]ARC下循环引用的问题
- 验证码2020最新最实用的验证码
- 让人感到心灵平静,阳光温暖的图片
- Tomcat 何时解压war包