Linux线上服务器掉电后无法启动故障的分析与修复实践——及其隐患解决(标准分区扩容、逻辑分区缩容与扩容)

一、RockyLinux9****掉电后无法启动

这里是RockyLinux9的线上服务器掉电后重新启动无法正常进入系统的故障,会显示很多类似"FAILED Failed to start D-Bus System Message Bus.

See 'systemctl' status dbus-broker.service for details.

Starting D-Bus System Message Bus...

FAILED Failed to start GNOME Display Manager.

See 'systemctl status gdm.service' for details. "的错误信息,如下图所示:

二、思路分析

2.1、系统无法正常启动的常规思路

一般来说,系统无法正常启动,我们都可以使用该系统的iso镜像文件通过系统启动U盘或PXE引导进入【系统救援模式】中来分析查看具体的错误详情。进入系统救援模式的步骤:

《1》主机上电后不停按下F2键选择系统启动U盘或PXE启动进入引导菜单后选择【Troubleshooting】后按下Enter键-->【Rescue a Rocky Linux system】后按下Enter键-->输入【1】后按下Enter键以读写模式进入系统救援模式,可以看到错误信息"dasbus.error.DBusError: Errno 28 No space left on device: '/proc/self/mounts'->'/mnt/sysimage/etc/mtab'"(即:设备没有空间,内容没法写入和操作,因为没有存储空间导致系统不能正常启动进入的,只有一种情况就是根分区的空间满了,其他分区的空间满了对于系统启动没有什么影响;既然现在以读写模式进入系统救援模式后无法操作,那我们就以只读模式进入系统救援模式在操作看看)。

《2》重启主机后一样的操作不停按下F2键选择系统启动U盘或PXE启动进入引导菜单后选择【Troubleshooting】后按下Enter键-->【Rescue a Rocky Linux system】后按下Enter键-->在系统界面输入【2】后以只读模式进入系统救援模式(模式是两套系统【救援模式的系统类似windows pe】【本主机的原有系统被挂载到 /mnt/sysroot 目录下】;若想要将原系统如正常启动的系统一样的挂载使用则运行 chroot /mnt/sysroot 命令即可);执行【df -hT】可以查看系统当前的所有内容挂载情况(可以看到该主机的原系统根分区使用是100%)。

2.2、系统故障分析确认

在系统救援模式下,使用【chroot /mnt/sysroot】命令切换到该主机系统上后,可以运行【df -hT】先查看所有分区的挂载与使用情况,可以看到当前系统的根分区使用率已经到达100%,与我们最开始预测的根分区满了的推测一致;接下来的操作就是排查根分区中哪个内容是占用空间较大且可以删除的即可解决问题:

2.3、修复故障

排查根分区中哪个内容是占用空间较大且可以删除的:

《1》先查看根分区中占用空间的情况命令是【du -sh ./*】;

《2》进入这个占用空间较大的目录(如/mnt)中继续执行查看占用空间情况命令【du -sh ./*】(排查到时swapfile1文件占用空间最大到达15G,且这个文件是用作物理内存不够交换使用的,分的太大了,可以直接删除,但目前是只读文件系统,无法删除文件);

《3》既然当前有问题的根分区是以只读模式挂载的,那么修改为读写模式挂载【mount -o remount,rw /】后再执行文件删除操作即可,然后再次查看系统的所有挂载分区使用情况【df -hT】可以看到根分区已经空闲出15G空间出来使用正常了。

《4》退出当前模式【exit】并重启系统【reboot -f】查看系统是否可以启动后正常进入系统使用。

到这里恭喜你,故障修复完成,可以成功进入系统中了。

三、隐患解决

3.1、系统隐患问题

虽然目前已经将根分区满的问题暂时解决了,但目前系统的根分区是不合理的(并没有将【/var】【/log】独立出来,都是糅合在根分区上)且目前根分区只有20GB,空间容量也不大,在后续的使用过程中还是会存在根分区空间又满的情况。

3.2、逻辑卷LVM分区的缩容与扩容

Linux的磁盘存储管理实操------(下一)------标准分区扩容https://coffeemilk.blog.csdn.net/article/details/149533061Linux的磁盘存储管理实操------(下二)------逻辑卷管理LVM的扩容、缩容https://coffeemilk.blog.csdn.net/article/details/149632228

查看该主机当前的分区情况(可以看到/home的空间容量较大,剩余空间很多),在没有新增硬盘的基础上实现对根分区的扩容。

《1》LVM且文件系统格式为xfs只能在线扩容,不能缩容;

《2》LVM且文件系统格式为ext4则可以在线缩容和扩容。

而这里的/home分区是xfs格式的,就只能先将该分区的数据备份,然后卸载,接着格式化后操作了。

Linux系统的常用操作命令------文件远程传输、文件编辑、软件安装的四种方式https://blog.csdn.net/xiaochenXIHUA/article/details/149136931

Linux中rsync数据镜像工具的解析与应用实战https://coffeemilk.blog.csdn.net/article/details/150115015Linux的压缩与解压缩https://coffeemilk.blog.csdn.net/article/details/149109326syncthing的配置使用https://blog.csdn.net/xiaochenXIHUA/article/details/155027993国产统信UOS专业版桌面、服务器系统的安装部署、备份与还原实践保姆级教程https://coffeemilk.blog.csdn.net/article/details/155530808

bash 复制代码
#对LVM(逻辑卷管理)的/home分区进行缩容操作;并对LVM管理的根分区扩容
df -hT
vgdisplay


#1-先对需要缩容的/home分区的数据备份(可使用scp、rsync、syncthing、再生龙等工具操作)


#2-卸载/home分区(若在卸载分区时提示"目标忙",则是因为被一些进程或用户占用,查询到这些进程后强制杀死后再次卸载)
umount /home
#2.1-查看占用该分区的所属用户、进程PID、权限和对应命令
fuser -mv /home
#2.2-查看所有打开该分区内文件的进程
lsof +D /home
#2.3-强制杀死获取到的占用PID
kill -9 2648
#2.4-【懒卸载】在分区不再繁忙时自动完成卸载,对数据的风险相对较低
umount -l /home
#2.5-【强卸载】强制中断所有占用连接完成卸载,适用于部分网络文件系统,风险较高,非必要不使用
umount -f /home


#3-扩容根分区(如:给逻辑卷根分区新增30G)后查看容量(容量扩容后需要刷新后才会显示【ext4使用resize2fs命令】【xfs使用xfs_growfs命令】)
vgdisplay
lvextend -L +30G /dev/mapper/rl-root
df -hT
xfs_growfs /dev/mapper/rl-root
df -hT


#4-将剩余的逻辑卷内容给home分区
vgdisplay
lvcreate -n home -l 10239 rl
lvdisplay
mkfs.ext4 /dev/rl-home
#4.1-挂载/home分区(若挂载时提示"文件系统类型错误、选项错误/dev/mapper/rl-home 上有坏超级块、缺少代码页或帮助程序或其他错误"则需要编辑【/etc/fstab】文件查看/home分区已经得内容文件类型是否正确,修改正确后重新挂载)
mount /home
df -hT


#5-若运行了一段时间发现根分区又不够使用了,此时需要将/home的容量给到根分区
#5.1-先卸载/home分区
umount /home
#5.2-对/home分区缩容
e2fsck -f /dev/mapper/rl-home
resize2fs /dev/mapper/rl-home 20G
#5.3-对于/home对应的逻辑卷是否缩容成功,可执行vgdisplay命令查看
vgdisplay
#5.3-让缩容的/home对应逻辑卷生效
lvreduce -L 20G /dev/mapper/rl-home
mount /home
df -hT
#5.4-给根分区扩容
lvextend -L +20G /dev/mapper/rl-root
xfs_growfs /dev/mapper/rl-root
df -hT

3.3、标准分区的扩容

标准分区扩容要求本块磁盘还有剩余空间,同时仅有最后一个磁盘分区能够使用本磁盘剩余的空间。

现有一块/dev/sdb磁盘共有30G的空间,目前已经分配给/dev/sdb1的空间是10G还剩余20G没有使用,现在需要将这些剩余的空间都分配给/dev/sdb1使用。

bash 复制代码
#现有的/dev/sdb磁盘共有30G;/dev/sdb1分配了10G,现在需要对/dev/sdb1分区扩容使用剩下的所有空间【且标准分区的扩容对被扩容的分区数据不会丢失】
#1-卸载需扩容的分区
umount /data

#2-对磁盘扩容
fdisk /dev/sdb
p
d
p
n
N
p
w

#3-让磁盘的扩容生效(ext4文件系统使用【resize2fs】命令;xfs文件系统使用【xfs_growfs】)
resize2fs /dev/sdb1

#4-挂载分区
mount /dev/sdb1 /data

3.4、Linux中标准分区、逻辑卷管理的缩容、扩容

3.4.1、标准分区扩容

**标准分区扩容必须条件:**本块磁盘还有剩余空间,同时仅有最后一个磁盘分区能够使用本磁盘剩余的空间【在标准分区扩容的整个过程中,磁盘原有数据不会丢失】。

bash 复制代码
#标准分区的扩容操作

#1-卸载分区
umount /dev/sdb

#2-磁盘扩容操作(先删除原有分区,然后在创建新分区【注意:提示是否移除标签时一定要选择否,才会保留被扩容分区的原始数据】)
fdisk /dev/sdb
p
d
n
N
w

#3-让的磁盘扩容生效
resize2fs /dev/sdb1

#4-挂载分区到指定分区
mount /dev/sdb1 /data

3.4.2、逻辑卷管理的缩容扩容

bash 复制代码
#创建物理卷并加入卷组,并创建逻辑卷
#1-创建物理卷并加入卷组
#1.1-创建物理卷
pvcreate /dev/sdb /dev/sdc
#1.2-将硬盘将入卷组【storage】
vgcreate storage /dev/sdb /dev/sdc
#1.3-查看卷组状态
vgdisplay


#2-创建逻辑卷
#2.1-创建一个名为 vo、大小为 37x4MB 的逻辑卷,用于存储数据
lvcreate -n vo -l 37 storage
#2.2-查看逻辑卷是否创建成功
lvdisplay
#2.3-格式化逻辑卷
mkfs.ext4 /dev/storage/vo
#2.4-创建挂载点,然后挂载
mkdir /vo
mount /dev/storage/vo /vo
bash 复制代码
#扩容逻辑卷
#1-ext4文件系统
umount /vo
lvextend -L 360M /dev/storage/vo
e2fsck -f /dev/storage/vo
resize2fs /dev/storage/vo
mount -a
df -hT


#2-xfs文件系统
lvextend -L 360M /dev/storage/vo
xfs_growfs /dev/mapper/storage-vol2
bash 复制代码
#缩容逻辑卷
#1-ext4文件系统
umount /vo
e2fsck -f /dev/storage/vo
resize2fs /dev/storage/vo 160M
lvreduce -L 160M /dev/storage/vo
mount -a
df --h


#2-Xfs文件系统
xfs文件系统创建后,其大小不能缩小。但是,仍然可以使用 xfs_growfs 命令放大
bash 复制代码
#逻辑卷管理的删除操作
#1-先卸载分区
umount /vo

#2-删除逻辑卷,需要输入y确认操作
lvremove /dev/storage/vo

#3-删除卷组,只需要写卷组名称即可,不需要设备的绝对路径
vgremove storage
vi /etc/fstab移除对应逻辑卷

#4-删除物理卷
pvremove /dev/sdb /dev/sdc
相关推荐
QWEDDRFTG25 分钟前
服务器电源线怎么选?接口、电流、线径、认证一次讲清
服务器
mN9B2uk175 小时前
大数据量高并发的数据库优化
服务器·数据库·oracle
土星云SaturnCloud5 小时前
边缘计算赋能智慧工地:从“看得见“到“管得住“的智能化升级
服务器·人工智能·ai·边缘计算
zhangfeng11336 小时前
ps aux讲解,结合国家超算中心 hpc apptainer
linux·服务器·网络
无限进步_7 小时前
从零实现一个迷你Shell——深入理解Linux命令行解释器
linux·运维·服务器·开发语言·c++·chrome
阿标在干嘛7 小时前
政策平台的推送系统:消息队列、定时任务、AB测试的工程实践
服务器·数据库·ab测试
happymaker06267 小时前
Linux常见命令总结
linux·运维·服务器
开源量化GO7 小时前
期货 K 线算信号 tick 级止损:天勤双序列 wait_update 触发规则
linux·运维·服务器·python
m0_738120727 小时前
HVV应急溯源基础——Linux 系统安全加固配置指南(一)
linux·运维·服务器·安全·网络安全·系统安全
github_czy8 小时前
更加优雅的类型检查与传参---mcp源码分析
java·服务器·开发语言