刚接手新公司的业务,一天技术总监过来反映说,公司应用反应缓慢,通过检查发现,确有反应缓慢还时不时的关闭应用,查看日志文件发现是内存不足和内存溢出,步骤如下:
1、调整tomcat应用内存
vim bin/catalina.sh
JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=1024m -Djava.awt.headless=true "
或
JAVA_OPTS="-Xms1024m -Xmx1024m"
无明显效果;
2、用TOP和free 查询,发现服务器内存剩余不是很多,JAVA进程占用很大内存空间,在暂时不能增加内存的情况下,考虑用重启服务器来释放内存,使服务有更多的内存空间;
3、重启服务器就启动不起来了
上图中fsck.ext4:Unable to resolve 'UUID=',
原本是/dev/sda1:Unable to resolve 'UUID=5lk456668886'等一长串UUID序列号
一直这个画面无法进入系统正常登陆页面
4、以防万一,备份服务器数据,并转移应用到另外服务器,大费一番周折(拿了一块移动硬盘去,不认,提示格式不对,移动硬盘是NTFS格式,因服务器挂了上不了网络,后用FAT32的U盘拷贝NTFS-3g软件到服务器,安装出错,没有安装成功,只有用现有U盘一点点备份数据,我也是醉了。。。。)
5、接下来的一个星期就花在了导数据,恢复,部署,查错等事情上了;
6、数据是导出到了备用服务器上了,应用基本恢复,总算轻松了一些,但还是心有不甘,想办法恢复宕机的服务器,查了很多资料,还是一头雾水,
single进入单用户模式fsck -y /dev/sda1
fsck.ext4 -y /dev/sda1
重启提示就是fsck.ext4:Unable to resolve 'UUID='
还是无法正常启动
找来光盘进入安全模式fsck.ext4 -y /dev/sda1
情况依然,无法恢复
网上查询到大量修复的是grub,但感觉使用在这个故障不合适
: 进入Linux rescue模式后有几种方法引导系统:
chroot /mnt/sysimage 默认是挂载到/mnt/sysimage
方法1:
1. 在系统提示符#后输入:fdisk -l
//显示硬盘的分区,以便确定安装Linux的分区。
//本例是第一个硬盘的第三个主分区hda3
2. # grub-install /dev/hda
//重新安装GRUB引导程序在第一个硬盘上。
3. # exit;reboot
//退出并重启系统。
方法2:
1. # grub
//进入GRUB命令行模式,出现提示符:grub>
2. grub> root (hd0,3)
//定位安装Linux的根分区,root与参数(hd0,3)间有一个空格。
3. grub> setup (hd0)
//在重新安装GRUB引导程序在第一个硬盘上,setup与参数(hd0)间有一个空格。
4. grub> exit;reboot
//退出并重启系统。
方法3:
1. # grub
//进入GRUB命令行模式,出现提示符:grub>
2. grub> root (hd0,3)
3. grub> kernel (hd0,3)/boot/vmlinuz ro root=LABEL=/
//输入内核参数,注意内核的位置与名字。
4. grub> initrd (hd0,3)/boot/initrd-2.4.20-8.img
//传输映像文件,注意其所在的位置与名字。
5. grub> boot
//引导Linux系统启动。
有查询了UUID 大概明白是fstabs文件中/devsda1:UUID出了问题
7、进入single模式
mount -o remount rw,/ 现在宕机系统默认为只读,此为重新挂载
vim /etc/fstabs
我先将/dev/sda1 : UUID=“XXXXXXXXX”/boot更改为其他序列号,错误依然
其次将/dev/sda1 : UUID=“XXXXXXXXX”/boot注释掉,提示信息如下
这是因为注释掉上边一行,也就是没有了/boot,所以一直没有动作
再次将/dev/sda1 : UUID=“XXXXXXXXX”/boot中序列号XXXXXXXXX删除,保留/boot
重启成功,进入久违的登陆界面,进入系统
# tune2fs -l /dev/sda1 |grep 'UUID' 查询系统UUID
将查询到的UUID序列号手动写入/etc/fstabs
/dev/sda1 : UUID=“XXXXXXXXX”/boot
重启成功,大功告成
8、总结
这个故障是突然的断电或重启使系统UUID不一致引起的无法启动,因为UUID是每个系统唯一的标志
步骤;
1 single模式
2 mount -o remount rw,/
3 vim /etc/fstabs
删除或更改挂载目录/boot的UUID
4 重启,使系统重新加载
5 查询UUID tune2fs -l /dev/sda1 |grep 'UUID'
并更改到/etc/fstabs中/boot的UUID
6 保存重启