一、前绪
我们在给服务器安装系统的时候,经常会出现系统安装结束后重启,然后起不来了。我这里总结了一些常见的问题和原因,如果后续再发现会慢慢加上。
这里我说的系统指的是linux系统,准确的说是centos系统。因为目前在中国互联网公司里,使用centos系统的占大多数。
二、常见的问题
1. BIOS无法读取大硬盘的问题
问题背景:
- 服务器比较旧,一般采购与2015年之前。
- 安装的系统为centos6或默认使用grub1的系统。
- 系统安装到的硬盘,空间大于2T。
- grub1安装到的分区,空间大于2T。
问题原因:
- 在系统安装的过程中,使用光盘或是U盘或是网络(PXE)进行安装。这些安装方式有一个共同点,就是没有经历从bios直接到硬盘的引导过程,所以安装没有问题。
- 而问题恰恰出在了这个bios到硬盘的引导过程中,因为服务器bios版本比较低,只能识别到小于2T的硬盘,而我们在系统安装的时候,很可能把启动程序(grub)安装到了2T以后的位置(2T外的柱面的第一个扇区),这个安装位置是随机的(但都是在第一个扇区)。
- 这时候我们通过bios引导硬盘启动的时候,找不到大于2T的bootSector(启动扇区),所以无法启动。
解决办法:
- 升级服务器bios版本,是bios能够支持识别2T以上的硬盘。这个操作一般需要厂家支持。
- 重新多安装几次,这个是个概率问题,多试几次没准就安装到2T以内的扇区中了。
- 新建boot分区,并将/boot分区放到硬盘的最前面。这个方法解决起来还是比较靠谱的。
- 使用grub2进行引导。
2. BIOS磁盘对应的问题
问题背景:
- 服务器使用的是HBA卡,并且卡上有多块硬盘。
- 系统安装在了不是第一块盘的位置,例如安装到了sdm而不是sda
问题原因:
- grub对磁盘设备的代号(例如sda、sdb)使用的是检测到的顺序,也就是说先识别到了哪块硬盘,哪块盘就是sda。
- 而我们安装的grub配置文件很可能对应到了错误的盘号上(有点漂盘的意思),这个配置文件在 /boot/grub/device.map。
- 这就造成了服务器启动的时候从错误的硬盘启动,而错误的硬盘里没有安装系统,所以无法启动。
解决办法:
- 进入HBA卡中,修改硬盘的识别顺序,例如在系统盘加入boot参数(alt + b)。这样使系统盘保持是sda。
- 修改/boot/grub/device.map,使之对应到正确的盘符。也可以安装grub的时候加入 –recheck参数,会自动处理对应关系。