银河麒麟系统安装设备类型选择lvm简单模式之后,数据写入导致失败导致系统重启无法正常加载
- 一 系统环境
- 1.1 系统版本信息
- 1.2 通过镜像安装的过程中选择设备类型选择的是lvm简单模式
- 二 问题描述
- 三 问题修复过程
- 3.1 挂载ISO镜像,引导到字符终端界面
- 3.2 修复逻辑卷并挂载测试
- (1)激活系统盘中的逻辑卷
- (2)查看激活的逻辑卷
- (3)修复root逻辑卷
- (4)创建临时挂载点
- (5)挂载测试
- (6)查看挂载情况
- (7)修改硬盘为第一引导项,重启正常进入系统
- 四 问题排查
- 4.1 使用vgs lvs查看逻辑卷状态
- 4.2 使用df查看分区使用
- 4.3 使用lsblk查看分区情况
- 4.4 根据查询情况总结
- 五 具体结论
- 六 LVM精简池和精简卷的概念
- 6.1 LVM精简配置介绍
- 6.2 精简池概念
- 6.3 精简池作用
- 6.4 精简卷概念
- 七 后续建议
一 系统环境
1.1 系统版本信息
[root@localhost ~]# nkvers
############## Kylin Linux Version #################
Release:
Kylin Linux Advanced Server release V10 (Lance)
Kernel:
4.19.90-52.22.v2207.ky10.x86_64
Build:
Kylin Linux Advanced Server
release V10 (SP3) /(Lance)-x86_64-Build23/20230324
#################################################
1.2 通过镜像安装的过程中选择设备类型选择的是lvm简单模式
二 问题描述
(1)业务组在上传数据(18G)之后,进行系统重启,无法正常进入系统,系统的根分区开机无法自动挂载,到Control-D界面(由于是根分区挂载不上,所以在此界面输入root密码也无法正常验证)
(2)在修复完成之后,正常进入系统。业务组再次上传数据(18G)之后,重启系统发现又出现开始的问题。
#机器在之前做过/分区扩容的操作,使用lvextend扩容的klas-root这个卷,扩容了200G
三 问题修复过程
3.1 挂载ISO镜像,引导到字符终端界面
挂载系统的iso镜像文件,将虚拟机第一引导模式更改为cdrom,从光盘进行引导。引导,选择“Install Kylin Linux Advanced Server V10”(如下图1所示)。到语言选择界面(如下图2所示),按ctrl+alt+f2组合键到字符界面(如下图3所示)。
3.2 修复逻辑卷并挂载测试
(1)激活系统盘中的逻辑卷
vgchange -ay
(2)查看激活的逻辑卷
lvs
(3)修复root逻辑卷
xfs_repair -L /dev/klas/root
(4)创建临时挂载点
mkdir a/
(5)挂载测试
mount /dev/klas/root a/
(6)查看挂载情况
df -h
(7)修改硬盘为第一引导项,重启正常进入系统
四 问题排查
在修复完成之后,进入系统。业务组再次上传数据(18G)之后,重启系统发现又出现开始的问题
4.1 使用vgs lvs查看逻辑卷状态
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
klas 2 3 0 wz--n- 297.99g <219.60g
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
pool00 klas twi-aotz-- <62.32g 100.00 97.11
root klas Vwi-aotz-- 281.92g pool00 22.11
swap klas -wi-ao---- 16.00g
4.2 使用df查看分区使用
[root@localhost log]# df -h
Filesystem size Used Avail Use% Mounted on
devtmpfs 7.2G 0 7.2G 0% /dev
tmpfs 7.3G 20K 7.3G 1% /dev/shm
tmpfs 7.3G 9.3M 7.2G 1% /run
tmpfs 7.3G 0 7.3G 0% /sys/fs/cgroup
/dev/mapper/klas-root 282G 64G 219G 23% /
tmpfs 7.3G 340K 7.3G 18 /tmp
/dev/sda1 2.0G 187M 1.9G 10% /boot
tmpfs 1.5G 52K 1.5G 18% /run/user/0
/dev/sr0 4.1G 4.1G 0 100% /run/media/root/Kylin-Server-10
4.3 使用lsblk查看分区情况
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:2 0 2G 0 part /boot
└─sda2 8:3 0 98G 0 part
├─klas-pool00_tmeta 253:0 0 36M 0 lvm
│ └─klas-pool00-tpool 253:2 0 62.3G 0 lvm
│ ├─klas-root 253:3 0 281.9G 0 lvm /
│ └─klas-pool00 253:5 0 62.3G 1 lvm
└─klas-pool00_tdata 253:1 0 62.3G 0 lvm
│ └─klas-pool00-tpool 253:2 0 62.3G 0 lvm
│ ├─klas-root 253:3 0 281.9G 0 lvm /
│ └─klas-pool00 253:5 0 62.3G 1 lvm
├─klas-swap 253:4 0 16G 0 lvm [SWAP]
sr0 11:0 1 4.3G 0 rom /run/media/root/Kylin-Server-10
4.4 根据查询情况总结
(1)vgs,lvs发现在vg卷组中创建了一个精简池,在精简池中创建了一个精简卷。并非采用在vg卷组中创建lv逻辑卷的方式去管理。
(2)lvs显示pool00这个精简池的Data%数值为100.00%,Meta%数值为97.11%
(2)df -h查看/分区实际200多GB,可用空间还有70%多。
(3)在排查过程中使用dmesg命令发现dm-3设备一直有磁盘I/O error相关的报错。
五 具体结论
1、系统在安装的时候,设备类型选择了lvm简单配置,导致系统在安装过程中创建了精简池和精简卷(实际使用者不知道创建了精简卷)。
2、按照传统的扩容方式去对跟分区进行扩容,也就是使用lvextend命令对klas-root这个精简卷去操作,df -h查看确实是扩容成功了。
3、导致出现的情况是:精简池的大小为 63GB左右,精简池下边精简卷(klas-root)的精简卷大小为 281GB。由于精简卷是由精简池管理,所以给klas-root卷扩容的200多GB空间虽然扩容成功了,但是无法使用。
4、系统跟分区63GB,已经使用了55GB,在传输18GB数据的过程中,把根分区写满了,导致根分区出现异常。重启无法过程中无法正常挂载。
5、正常来说的话应该是要扩容精简池(pool00),而不是卷(klas-root)。
六 LVM精简池和精简卷的概念
6.1 LVM精简配置介绍
精简配置(Thin Provisioning)指分配的资源量超过实际的物理资源量,类似于现实社会中的“超售”概念。
LVM的精简配置中有两个要素,分别是精简池和精简卷。
6.2 精简池概念
精简池是一个特殊的普通LV,在它建立时会立即从VG中分配空间,与正常的LV没有什么不同;但是这个LV不能被创建文件系统直接使用,而是处于一种特殊的格式,包含数据和元数据两个部分。
6.3 精简池作用
是为精简卷提供空间,而精简卷本身不能从VG中直接获取空间
6.4 精简卷概念
精简卷和普通卷的根本差异,在于其创建时,并不从VG中真的分配空间,而是虚拟的分配空间,当进行写入时,则会写入到对应的精简池中。
需要注意的是,虽然精简池可以实现自动扩展,但是VG并不能自动扩展,因为PV提供的空间是有限的。在使用精简配置时,需要注意VG的剩余量,对于大型的生产环境,必须使用服务器监控工具进行监视,来避免资源耗尽无法写入的情况。
七 后续建议
(1)创建新的虚拟机模板,删除旧的。并且在安装的时候设备类型选择lvm模式而不是lvm简单模式。
(2)现有的虚拟机不要将扩容的200GB进行缩容,可能会出现未知问题导致根分区无法修复。
(3)如果现有机器还需要使用的话,添加磁盘,扩容精简池(pool00)的空间,而不是卷(klas-root)。