Proxmox 4 LXC无法启动——Server refused to allocate pty问题

一.事情经过

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,果然有问题

这两行错误映入眼帘,就是你了,那么怎么解决?一波谷歌,发现了不少解决方案,基本是如下 阅读全文→

使Proxmox VE创建的LXC容器支持TUN/TAP

一.为什么

Proxmox VE 4将3代的OpenVZ支持去除换成了LXC,算是跟随趋势吧,但是LXC和OpenVZ还是有挺多不同的,在权限上更是如此,而网上最多的还是OVZ相关的教程,LXC的是真的少,不过一直以来没需求,所以没怎么折腾,最近在搞内网,所以为了用Tunnel还是得把TUN/TAP支持打开。

二.怎么办

首先当然是谷歌咯,关键词选得好马上出结果,proxmox官方论坛讨论贴 https://forum.proxmox.com/threads/tun-devices-in-ve-4-lxc.23473

总结一下

①.如果需要对所有(之后创建的)LXC容器全部开启tun/tap

那么需要修改/etc/lxc/default.conf,添加lxc.cgroup.devices.allow = c 10:200 rwm

当然,也可以创建/usr/share/lxc/config/common.conf.d/02-tuntap.conf 这样的配置文件来取得同样的效果

②.而如果只要对指定容器有效,则需要修改/etc/pve/lxc/[ID].conf , [ID]为你的容器编号

还没完,这样只是给了权限,实际上还没好,需要在容器的/etc/rc.local 自启动文件中添加如下

这样你执行需要tun/tap的程序时就不会出问题了 阅读全文→