一.事情经过
Proxmox 4采用LXC作为OpenVZ的替代品,不过我用的系统模板还是OpenVZ的,毕竟比较好找,之前也一直没问题,今天重启了一下一个容器,然后就坏事了……且让我细细道来
二.人间惨剧
我用Proxmox开小鸡来搭建Hadoop集群,采用LXC而不是KVM的主要原因还是前者性能损耗更小,一直以来都挺正常的,今天跑了几个脚本之后就顺手重启了下,结果发现重启后连不上了!!!!!这特么要出事啊,数据全在上面,怎么办?
先找好应急处理办法,直接mount后导出数据,但是我不服啊,然后我就开始找问题
①SSH无法登陆,卡在连接那儿,说明已经连上机器了,但无法进行后续步骤,先在母鸡上连接测试,也是这个情况,说明不是网络问题
②关闭容器后用命令行方式启动,发现没有报错,那么容器状况也是正常的
③使用ssh的-vv参数,发现有server refused to allocate pty的错误提示,无法分配PTY?
没错了,连接建立后因为无法分配PTY所以无法完成后续步骤,那么到底是因为什么导致的这个原因呢?
三.罪恶根源
我继续研究,输入lxc使用tab补全,我发现了lxc-attach命令,嘿嘿,就是它了,lxc-attach --name ID可以让我们直接进入容器中,然后我们tail -f /var/log/secure,果然有问题
sshd[23608]: error: openpty: No such file or directory sshd[23608]: error: session_pty_req: session 0 alloc failed
这两行错误映入眼帘,就是你了,那么怎么解决?一波谷歌,发现了不少解决方案,基本是如下
rm -rf /dev/ptmx mknod /dev/ptmx c 5 2 chmod 666 /dev/ptmx unmount /dev/pts rm -rf /dev/pts mkdir /dev/pts 然后在/etc/fstab中加入如下内容 none /dev/pts devpts gid=5,mode=620 0 0 最后mount /dev/pts
但是!!!这对于LXC容器并没有卵用,会提示/dev/pts是只读的,这就很尴尬啊,怎么办????
还好天无绝人之路,我继续搜索后发现了一篇文章
《lxc server refused to allocate pty (on proxmox)》—> 传送门
就是它了,lxc+proxmox+server refused to allocate pty 这说的就是我啊,快速浏览一遍,和我的简直一模一样
解决方案简直容易到没朋友
将/etc/rc.sysinit 的155行左右的/sbin/start_udev 注释掉 然后保存重启
世界恢复了和平~~~
文章评论