银河麒麟系统安装设备类型选择lvm简单模式之后,数据写入导致失败导致系统重启无法正常加载
银河麒麟系统安装设备类型选择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_64Build:
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 ~]# vgsVG #PV #LV #SN Attr VSize VFree klas 2 3 0 wz--n- 297.99g <219.60g
[root@localhost ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertpool00 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)。
相关文章:
银河麒麟系统安装设备类型选择lvm简单模式之后,数据写入导致失败导致系统重启无法正常加载
银河麒麟系统安装设备类型选择lvm简单模式之后,数据写入导致失败导致系统重启无法正常加载 一 系统环境1.1 系统版本信息1.2 通过镜像安装的过程中选择设备类型选择的是lvm简单模式 二 问题描述三 问题修复过程3.1 挂载ISO镜像,引导到字符终端界面3.2 修…...
Mybatis-核心配置文件 / Mybatis增删改查
1. 核心配置文件 1.1. 概述 核心配置文件是MyBatis框架中用于集中定义全局配置信息的XML文件,其内部包含了一系列预设标签,用于设置数据库连接、对象映射、类型处理等关键参数。这些标签遵循特定的排列顺序,尽管并非所有标签都是强制性的&a…...
Nginx(面试)
NGINX 速记问答 Q 什么是Nginx?它的主要特点是什么? A Nginx是一个高性能的开源Web服务器和反向代理服务器。它以高并发、低内存消耗和高稳定性著称。 Q Nginx与Apache Web服务器有什么区别? A Nginx与Apache相比,更适用于处…...
net::ERR_SSL_PROTOCOL_ERROR
小程序 发起网络请求 解决: 如果还没有申请SSL证书,那就直接把https请求改为http 测试可以用 上线不推荐...
BaseDao封装增删改查(超详解)
Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍对数据库中表中的数据进行增改删查询,封装一个工具类(BaseDao)的详细使用以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 &…...
【Python操作基础】——元组
🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享 擅长Python、Matlab、R等主流编程软件 累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…...
光伏投融资该如何计算?
光伏投融资是光伏产业发展过程中的重要环节,其计算涉及到多个方面,包括项目规模、预期收益、成本分析、风险评估等。合理的投融资计算能够为光伏项目的实施提供资金保障,同时也能够降低投资风险,提高项目的经济效益。 首先&#x…...
【更新中】Leetcode中遇到的最短路径算法
dijsktra算法模板: def dijkstra(x):#x表示出发点dis[inf]*n #dis记录从x出发到各个点的最短距离,初始化为infdis[x]0 #源点到自己的距离为0vis[False]*n #检查各个点是否访问过for _ in range(n-1): #检查除了源点的其他n-1个点,更新dis…...
Git学习笔记之基础
本笔记是阅读《git pro》所写,仅供参考。 《git pro》网址https://git-scm.com/book/en/v2 git官网 https://git-scm.com/ 一、git起步 1.1、检查配置信息 git config --list查看所有的配置以及它们所在的文件 git config --list --show-origin可能有重复的变量名…...
STCubeIDE 编译bootloader
头文件重复引用解决办法。 参考:STM32CubeIDE IAP原理讲解,及UART双APP交替升级IAP实现-CSDN博客 移植到Air32时,RAM的大小(无论boot程序还是app 程序) 尽量不动,如果动了会影响最终的 APP 跳转 flash 大小可以随意修改…...
Python学习:函数
函数定义 在Python中,函数(Function)是一组用于完成特定任务或计算的语句块。定义函数可以让我们将一段代码重用多次,提高代码的可读性和可维护性。以下是定义函数的基本语法和结构: def function_name(parameters):&…...
docker run 使用 -p 命令一直显示端口被占用
解决办法 将 -p 换成 --net host 例如: docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /root/oneapi/data:/data justsong/one-api # 换成 docker run --name one-api -d --restart always --net...
Rust 实战练习 - 1. 输入,输出,环境变量,字符,字符串
目标: 获取程序命令行参数标准输入输出获取环境变量字符串,字符初步学习 cargo传递参数,需要加上-- use std::{env, ffi::OsString, io, io::Write};fn main() {println!("OS Env: {:?} > {:?}", env::current_dir().unwra…...
RuoYi-Vue-Plus(登录流程)
一、前端登录请求 登录按钮: src\views\login.vue 页面中登录片段,调用了handleLogin 方法,如下: @click.native.prevent="handleLogin" <el-button:loading="loading"size="medium"type="primary"style="width:100%;&qu…...
【数学】 【分数】 【字符串】972. 相等的有理数
本文涉及知识点 数学 分数 字符串 LeetCode972. 相等的有理数 给定两个字符串 s 和 t ,每个字符串代表一个非负有理数,只有当它们表示相同的数字时才返回 true 。字符串中可以使用括号来表示有理数的重复部分。 有理数 最多可以用三个部分来表示&…...
【4】DongshanPI-Seven 应用开发_文件IO
目录 1.文件IO1.1 文件IO分类1.2 查看系统调用IO用法 2. open 函数3. write 函数4. read 函数5 dup函数 1.文件IO 1.1 文件IO分类 在Linux系统中,一切都是“文件”:普通文件、驱动程序、网络通信等。所有的操作都是通过文件IO来操作的。 在Linux操作文…...
SEO 的未来:GPT 和 AI 如何改变关键词研究
谷歌Gemini与百度文心一言:AI训练数据的较量 介绍 想象一下,有一个工具不仅可以理解错综复杂的关键字网络,还可以预测搜索引擎查询的变化趋势。 这就是生成式预训练 Transformer (GPT) 和其他人工智能技术发挥作用的地方,以我们从…...
面试八股文之JAVA基础
JAVA基础 DNS、CDN?如何实现对象克隆?父子类静态代码块, 非静态代码块, 构造方法执行顺序?String s new String("abc") 创建了几个对象, 分别放到哪里?OSI网络模型七层?应用层协议?http协议和https协议区别?传输层协…...
网络连接中——长连接和短连接详解
一、TCP功能 TCP在真正开始进行数据传输之前,Server 和 Client 之间必须建立一个连接。当数据传输完成后,双方不再需要这个连接时,就可以释放这个连接。 TCP连接的建立是通过三次握手,而连接的释放是通过四次挥手。所以说,每个TCP连接的建立和释放都是需要消耗资源和时间…...
PEReDi 完全隐私的央行数字货币方案
第一个对完全隐私保护建模的方案,基于账户模型,要求交易双方都在线。 角色分类 中央银行 B B B:负责发行数字货币和货币政策,但不控制用户账户的状态,没有能力对交易的发送者或接收者进行去匿名化或披露与特定交易相…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...
