当前位置: 首页 > article >正文

ubuntu16 重启之后lvm信息丢失故障恢复

一、背景

1、问题背景

业务有一台物理开发服务器,文件系统有损坏;由于重启时没有检查,导致重启卡住。后面通过断电重新启动之后,无法进入系统;进入救援模式,注释数据盘挂载。重启之后进入系统,发现数据盘做的lvm信息丢失;通过pvs、vgs、lvs均无法看该lvm信息;lsblk 命令查询,也只能看到只有盘符/dev/sdb和分区信息/dev/sdb1

2、主机信息

  • 操作系统: ubuntu16.04
  • 逻辑卷名称:/dev/vg_data/lv_data

二、lvm恢复步骤

1、确认lvm备份信息是否存在

备份目录一般在:/etc/lvm/arcive或者/etc/lvm/backup下

root@Ubuntu-8-70:/etc/lvm# ll
total 108
drwxr-xr-x   4 root root  4096 Nov 23 11:21 ./
drwxr-xr-x 116 root root 12288 Nov 26 09:29 ../
drwx------   2 root root  4096 Nov 26 09:26 archive/
drwx------   2 root root  4096 Nov 26 09:26 backup/

root@Ubuntu-8-70:/etc/lvm/archive# ll 
total 24
drwx------ 2 root root 4096 Nov 26 09:26 ./
drwxr-xr-x 4 root root 4096 Nov 23 11:21 ../
-rw------- 1 root root 1338 Aug 13  2020 vg_data_00000-1854432265.vg   ##lvm备份存在


root@Ubuntu-8-70:~# cat  /etc/lvm/archive/vg_data_00000-1854432265.vg
# Generated by LVM2 version 2.02.133(2) (2015-10-30): Thu Aug 13 23:57:38 2020

contents = "Text Format Volume Group"
version = 1

description = "Created *before* executing 'pvscan --cache --activate ay --major 8 --minor 17'"

creation_host = "Ubuntu"        # Linux Ubuntu 4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017 x86_64
creation_time = 1597334258      # Thu Aug 13 23:57:38 2020

vg_data {
        id = "qPdnvh-uHhd-pSdO-1yz3-KgOz-Q3eD-tguAyz"
        seqno = 2
        format = "lvm2"                 # informational
        status = ["RESIZEABLE", "READ", "WRITE"]
        flags = []
        extent_size = 8192              # 4 Megabytes
        max_lv = 0
        max_pv = 0
        metadata_copies = 0

        physical_volumes {

                pv0 {
                        id = "e4lnF9-ccfB-6ezE-Dh4Z-WwQj-IvOC-RaYjyP"
                        device = "/dev/sdb1"    # Hint only

                        status = ["ALLOCATABLE"]
                        flags = []
                        dev_size = 21090529280  # 9.82104 Terabytes
                        pe_start = 2048
                        pe_count = 2574527      # 9.82104 Terabytes
                }
        }

        logical_volumes {

                lv_data {
                        id = "wV3cRh-u0YD-nT0C-2Wcf-vAoq-OCwL-QfwxCA"
                        status = ["READ", "WRITE", "VISIBLE"]
                        flags = []
                        creation_host = "Ubuntu"
                        creation_time = 1597333822      # 2020-08-13 23:50:22 +0800
                        segment_count = 1

                        segment1 {
                                start_extent = 0
                                extent_count = 2574527  # 9.82104 Terabytes

                                type = "striped"
                                stripe_count = 1        # linear

                                stripes = [
                                        "pv0", 0
                                ]
                        }
                }
        }
}

2、数据备份,操作前一定要先备份数据

由于数据盘文件系统已经损坏,无法从文件系统侧备份,故使用dd,备份整个/dev/sdb1;数据盘总空间:9.8T,已经使用空间6.6T,需要先准备一个可以容纳整个9.8T磁盘的存储空间。

dd if=/dev/sdb1  of=/backup/sdb_backup.img  bs=64k    conv=noerror,sync status=progress 

##参数解析:
if:输入文件,表示需要读取的文件或设备;
of:输出文件,表示需要读取的文件或设备;
bs: 块大小,指定数据读写块的大小,可以适当调整更大的值,值越大相对系统调用就少,整体传输速度会更快些
status=progress   可获取实时的进度信息

3、进行lvm恢复

(1)、恢复物理卷上的元数据

  • 查看备份文件中的物理卷id
root@Ubuntu-8-70:~# cat  /etc/lvm/archive/vg_data_00000-1854432265.vg        
............
       physical_volumes {

                pv0 {
                        id = "e4lnF9-ccfB-6ezE-Dh4Z-WwQj-IvOC-RaYjyP"
                        device = "/dev/sdb1"    # Hint only

                        status = ["ALLOCATABLE"]
                        flags = []
                        dev_size = 21090529280  # 9.82104 Terabytes
                        pe_start = 2048
                        pe_count = 2574527      # 9.82104 Terabytes
                }
        }
............

root@Ubuntu-8-70:~# pvcreate --uuid e4lnF9-ccfB-6ezE-Dh4Z-WwQj-IvOC-RaYjyP  --restorefile  /etc/lvm/archive/vg_data_00000-1854432265.vg   /dev/sdb1
 Physical volume "/dev/sdb1" successfully created

(2)、恢复卷组的元数据

vgcfgrestore vg_data

(3)、查看卷组上的逻辑卷并激活

root@Ubuntu-8-70:~# lvs --all --options +devices vg_data   ##列出卷组的逻辑卷,恢复的逻辑卷处于未激活状态

root@Ubuntu-8-70:~#  lvchange --activate y vg_data/lv_data  ##激活逻辑卷

root@Ubuntu-8-70:~# mount /dev/vg_data/lv_data   /work    ##尝试挂载

备注:取消/etc/fstab中/work开机挂载注释,重启服务器验证是否能正常开机和正常挂载

三、修复文件系统(额外工作,如果文件系统没有这个问题,则无需处理)

1、问题表现

root@Ubuntu-8-70:/work# cd /work/

root@Ubuntu-8-70:/work# ll -t    ##出现报错提示
ls: cannot access 'nohup.out': Structure needs cleaning
total 1065472
..........
-??????????   ? ?        ?                 ?            ? nohup.out

2、修复处理

root@Ubuntu-8-70:~# umount -l /work   ## 卸载有问题的分区

root@Ubuntu-8-70:~# fsck.ext4 -y  /dev/vg_data/lv_data  ##-y:参数自动确认yes选项,避免交互式操作,一定要记得加上;fsck.ext4用于检查和修复 ext4 文件系统的工具

root@Ubuntu-8-70:~# mount -a    ##重新挂载数据盘

root@Ubuntu-8-70:/work# ll   ##验证修复结果
total 1065584
drwxr-xr-x.  18 root      root            4096 Nov 26 09:30 ./
drwxr-xr-x.  29 root      root            4096 Nov 25 10:00 ../
.......
p--S------    1 402656438 543168512          0 Oct 24  1994 nohup.out|
.......

root@Ubuntu-8-70:/work# rm -rf nohup.out

http://www.kler.cn/a/466843.html

相关文章:

  • Eureka 介绍与原理详解
  • 记录:导出功能:接收文件流数据进行导出(vue3)
  • Jdk动态代理源码缓存优化比较(JDK17比JDK8)
  • 推荐一些关于C#中LINQ的学习资料
  • Qt窗口获取Tftpd32_svc服务下载信息
  • [redux] ts声明useSelector和useDispatch
  • 嵌入式 Linux LED 驱动开发实验
  • 运维工具汇总
  • 【数据分析实战】24年T4某二手车交易平台数据分析
  • 【机器学习】【朴素贝叶斯分类器】从理论到实践:朴素贝叶斯分类器在垃圾短信过滤中的应用
  • 【数据库】简答题汇总
  • 力扣28找出字符串中第一个匹配项的下标
  • PyTorch中的__init__.pyi文件:作用与C++实现关系解析
  • 《探秘开源大模型:AI 世界的“超级引擎”》
  • Github 2024-12-30 开源项目周报 Top15
  • Chrome浏览器实例的TypeScript自动化脚本
  • Uniapp跨域请求
  • ​​​​​​​CDP集群安全指南系列文章导读
  • 无人机解码物流配送技术详解
  • ReactiveStreams、Reactor、SpringWebFlux