大家好,我是杰哥。前段时间遇到一个服务器问题:设备非法重启后,服务器进入rescue模式,数据盘没有显示是否挂载成功。说到这里,我觉得有点奇怪。今天给大家分享一下整个过程以及我是如何处理的。以免大家在以后的学习或者工作中遇到和我一样的问题。一、问题背景有一天,一位研发小伙伴告诉我,某服务器无法连接,卡在如下页面。该页面是Xshell连接某台服务器时建立的连接,按Ctrl+Alt+]切换到本地Shell终端。看到卡在这个页面,就毫不犹豫的试了试,就是连接不上。前一天连接正常,第二天就出问题了?好在服务器配置了远程管理地址,可以通过远程控制管理页面启动iKVMHTML5和远程管理服务器,这样就可以登录故障设备查看服务器界面是什么状态了。登录这个故障服务器,直接重启服务器,然后Xshell再次尝试连接,就可以远程连接了。这就是传说中包治百病的重启,这么简单粗暴?进入系统后,执行简单命令会提示输入/输出错误。过了一会,并没有直接建立连接,就彻底挂掉了。..然后通过远程控制管理页面查看服务器当前状态,看到已经进入救援模式。进入该模式后输入journalctl-xb命令查看系统日志输入systemctlreboot命令重启系统输入systemctldefault或^D命令再次尝试进入默认模式并输入root用户密码,然后就可以进入系统了,根据日志报错提示:hang挂载文件系统解决问题。2、解决方案在Linux操作系统下执行df-h命令显示文件系统的磁盘使用情况。使用-h选项,以KB以上为单位显示,可读性强。第一列:Filesystem文件系统的名称第二列:Size文件系统的容量第三列:已经使用了多少磁盘空间第四列:有多少磁盘空间可供Avail使用第五列:Use%diskusage第六列:MountedOnmountpoint根据上图结果,/dev/sdb1文件系统没有挂载/bigdata目录磁盘。尝试卸载/dev/sdb1,重新挂载,反复报不同的错误。通过RAID卡管理界面查看状态也是Online。当您重启设备,看到如下界面,说明设备正在初始化中。巧合的是,这台故障服务器由多块硬盘组成,一个44T的目录存放了46%的数据。如果有数据,不格式化磁盘如何重新挂载?卸载umount/dev/sdb1并尝试修复它。如果不确定挂载点属于哪种文件类型,可以执行df-Th命令判断。如果挂载点是xfs文件类型,可以执行:xfs_repair-L+文件系统名路径命令进行修复。如果挂载点是fsck.ext2/3/4文件类型,可以执行:fsck.ext2/3/4文件类型+文件系统路径命令进行修复。因为这是xfs的文件类型,按xfs_repair命令修复损坏的xfs文件系统,执行以下命令修复/dev/sdb1。xfs_repair-L/dev/sdb1是根据磁盘中的数据使用率来决定修复时间的,所以时间会比较长。我在后台执行它。执行完成后,查看是否还有进程,如果有,说明修复还没有完成,如果没有,说明修复完成,然后重新mount。mount/dev/sdb1/bigdata挂载后,执行df-h命令判断是否挂载成功。至此,恢复挂载完成。以上案例是在磁盘有数据且未格式化时进行恢复挂载。那么有朋友要问了,不存储数据怎么挂载磁盘呢,我这里也给大家整理一下详细的操作步骤:Step1:ll/dev/disk/by-path#勾选是否需要挂载fdisk-l#查看磁盘信息lsblk#lsblk命令默认会以树的形式列出所有块设备,包括查看磁盘挂载信息步骤2:parted/dev/sdbmklabelgpt#创建/dev/sdb磁盘标签类型为GPTparted/dev/sdbmkpartprimary0100%#将/dev/sdb的整个空间分配给同一个分区ignore#忽略上面命令执行后的警告mkfs.xfs-f/dev/sdb#格式化分区注意:格式化分区可能是执行缓慢,请耐心等待。Step3:mkdir/bigdata#创建目录并自定义目录名mount/dev/sdb/bigdata#挂载sdb到/bigdata目录Step4:blkid#查看sdb的UUID并复制Step5:vi/etc/fstab#引用挂载的磁盘,将sdb的UUID与挂载的目录相关联,保存并重启设备注意:UUID一定要写对,否则重启后无法正常进入系统。Step6:df-h#查看是否挂载成功按照上面的步骤操作,一定要运行成功。如果你有更好的解决方案,欢迎留言分享。参考xfs_repair命令详解https://bbs.qunyingkeji.com/2052/
