需要先修复本地机器。手上没恢复盘,没法看日志。只好先在手机上搜索了一下,有各种原因,无法确定问题,好在快下班了。第二天用启动U盘进Rescue模式,把电脑上的root分区mount到/mnt/root/,然后chroot到/mnt/root/;分区信息可以用"fdisk -l"命令查看,不过GPT格式的分区看不了,只好猜一猜再mount一下试试;没有处理/dev;命令大概是下面这样的:
> mkdir /mnt/root/
> mount /dev/sda3 /mnt/root/
看看/mnt/root/的内容对不对,不对的话umount,再试试别的,比如/dev/sda4
> chroot /mnt/root/
接下来可以看看/var/log/messages,找到昨天的登陆失败信息,其中有一段是这样的:2013-10-10T16:08:54.498053+08:00 localhost systemd-logind[517]: New session 3 of user root. 2013-10-10T16:08:54.501943+08:00 localhost systemd-logind[517]: Linked /tmp/.X11-unix/X0 to /run/user/0/X11-display. 2013-10-10T16:08:54.503617+08:00 localhost kdm: :0[986]: pam_open_session() for root failed: Permission denied 2013-10-10T16:08:54.504258+08:00 localhost kdm: :0[986]: Client start failed 2013-10-10T16:08:54.504469+08:00 localhost kdm: :0[986]: pam_unix(xdm:session): session closed for user root 2013-10-10T16:08:54.505110+08:00 localhost kdm: :0[986]: pam_close_session() failed: Permission denied 2013-10-10T16:08:54.515568+08:00 localhost systemd-logind[517]: Removed session 3. 2013-10-10T16:08:55.257939+08:00 localhost kdm_greet[1014]: Cannot load /usr/share/kde4/apps/kdm/faces/.default.face: No such file or directory 2013-10-10T16:08:58.810400+08:00 localhost kdm: :0[1013]: pam_unix(xdm:auth): authentication failure; logname= uid=0 euid=0 tty=:0 ruser= rhost= user=root 2013-10-10T16:09:06.063314+08:00 localhost kdm: :0[1013]: pam_limits(xdm:session): Could not set limit for 'nofile': Operation not permitted 2013-10-10T16:09:06.063336+08:00 localhost kdm: :0[1013]: pam_unix(xdm:session): session opened for user root by (uid=0)看到"Could not set limit for 'nofile'",想到/etc/security/limits.conf里的设置,我在文件末尾加了
* - nofile 2000000
把2000000改为之前设置的值。
exit , reboot,登陆成功。
看到linux下文件句柄参数的调整 - Author: 加菲猫 - theit.blog.163.com讲到这个问题,是因为nofile的值超过了/proc/sys/fs/nr_open定义的值。
但是我无法改变/proc/sys/fs/nr_open,重启就失效了。后来在Re: Increase FD limitation then SSH not working? - Author: Reck Hou - serverfault.com看见一个设置:fs.nr_open,这个选项在"/usr/sbin/sysctl -a"里面有,而且数值跟/proc/sys/fs/nr_open文件内容一样(其实/proc/sys/fs/nr_open是个空文件,就不应该去改),在/etc/sysctl.conf添加"fs.nr_open=4000000","sudo /sbin/sysctl -p"生效。然后就可以在/etc/security/limits.conf设置很大的nofile了,重新登陆系统生效。
服务器是让技术支持帮忙修复的。
No comments:
Post a Comment