LVM 和超级块故障;如何恢复?

Dan*_*Dan 7 linux hard-drive filesystems partitioning lvm

如何修复 LVM 卷的超级块?或者,如何恢复无法挂载的lvm逻辑卷上的数据?

\n\n

我最近添加了第二个硬盘,扩展了卷组,并将现有 LV 镜像vg00/FASTlvconvert -m1 /dev/vg00/FAST新磁盘上的物理空间。vg00/SLOW我还在新硬盘的剩余空间上创建了第二个LV 。两者都是 ext4 文件系统。我的理解是LVM当前的实现默认使用mdadm raid 1进行镜像。我正在lvm2 2.02.168-1Arch 中运行。/etc/lvm/archive我还在和中保存了 LVM 卷的多个备份/etc/lvm/backup

\n\n

从物理角度来看,/dev/sda4是一个 1.79T GPT LVM 分区,包含vg00/FAST/dev/sdc1是一个 2.73T GPT LVM 分区,包含vg00/FASTvg00/SLOW

\n\n

在 Linux 启动期间,我收到以下超级块错误:

\n\n
15.111767 device-mapper: raid: Failed to read superblock of device at position 1\nFailed to start lvm2 PV scan on device 8:4\nSee systemctl status \'lvm20pvscan@8:4.service\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

vg00/FAST挂载(从/dev/sda4镜像)并且文件系统/数据完好无损,但未vg00/SLOW挂载。看来 LVM 不会从 读取任何 LV /dev/sdb1

\n\n

对于普通的 ext4 分区,我会fsck继续,但vg/SLOW不在,/dev所以我不能fsck /dev/vg00/SLOW。如果我fsck /dev/sdb1fsck 理解底层 LVM 结构,还是会将 sdb1 视为损坏的 ext4 分区,并生成错误流?

\n\n

日志:

\n\n
    $  journalctl -xb\n    .....\n    Dec 08 23:21:52 hostname lvm[304]:   WARNING: Device for PV g1WAG2-Dc9i-Gods-w3n7-SZD7-5Kvc-qzepno not found or rejected\n    Dec 08 23:21:52 hostname lvm[304]:   Refusing refresh of partial LV vg00/FAST_rimage_1. Use \'--activationmode partial\' t\n    Dec 08 23:21:52 hostname lvm[304]:   Refusing refresh of partial LV vg00/SLOW. Use \'--activationmode partial\' to overrid\n    Dec 08 23:21:52 hostname lvm[304]:   Refusing refresh of partial LV vg00/FAST_rimage_1. Use \'--activationmode partial\' t\n    Dec 08 23:21:52 hostname lvm[304]:   Refusing refresh of partial LV vg00/SLOW. Use \'--activationmode partial\' to overrid\n    Dec 08 23:21:52 hostname lvm[304]:   Refusing refresh of partial LV vg00/FAST_rimage_1. Use \'--activationmode partial\' t\n    Dec 08 23:21:52 hostname lvm[304]:   Refusing refresh of partial LV vg00/SLOW. Use \'--activationmode partial\' to overrid\n    Dec 08 23:21:52 hostname lvm[304]:   Refusing refresh of partial LV vg00/FAST_rimage_1. Use \'--activationmode partial\' t\n    Dec 08 23:21:52 hostname lvm[304]:   Refusing refresh of partial LV vg00/SLOW. Use \'--activationmode partial\' to overrid\n    Dec 08 23:21:52 hostname lvm[304]:   Refusing refresh of partial LV vg00/FAST_rimage_1. Use \'--activationmode partial\' t\n    Dec 08 23:21:52 hostname lvm[304]:   Refusing refresh of partial LV vg00/SLOW. Use \'--activationmode partial\' to overrid\n    .....\n    Dec 08 23:21:57 hostname kernel: device-mapper: raid: Failed to read superblock of device at position 1\n    Dec 08 23:21:58 hostname kernel: md: raid1 personality registered for level 1\n    Dec 08 23:21:58 hostname kernel: md/raid1:mdX: active with 1 out of 2 mirrors\n    Dec 08 23:21:58 hostname kernel: created bitmap (917 pages) for device mdX\n    Dec 08 23:21:58 hostname kernel: mdX: bitmap initialized from disk: read 58 pages, set 921 of 1876944 bits\n    Dec 08 23:21:58 hostname kernel: EXT4-fs (dm-6): mounted filesystem with ordered data mode. Opts: data=ordered\n    Dec 08 23:21:52 hostname systemd[1]: Starting Flush Journal to Persistent Storage...\n    -- Subject: Unit systemd-journal-flush.service has begun start-up\n    -- Defined-By: systemd\n    --\n    -- Unit systemd-journal-flush.service has begun starting up.\n    Dec 08 23:21:55 hostname dmeventd[403]: dmeventd ready for processing.\n    Dec 08 23:21:58 hostname lvm[304]:   vg00: refresh before autoactivation failed.\n    Dec 08 23:21:58 hostname lvm[304]:   Refusing activation of partial LV vg00/SLOW.  Use \'--activationmode partial\' to ove\n    Dec 08 23:21:58 hostname lvm[304]:   1 logical volume(s) in volume group "vg00" now active\n    Dec 08 23:21:58 hostname lvm[304]:   vg00: autoactivation failed.\n    Dec 08 23:21:55 hostname systemd[1]: Started Device-mapper event daemon.\n    -- Subject: Unit dm-event.service has finished start-up\n    -- Defined-By: systemd\n    --\n    -- Unit dm-event.service has finished starting up.\n    --\n    -- The start-up result is done.\n    Dec 08 23:21:55 hostname lvm[403]: Monitoring RAID device vg00-FAST for events.\n    Dec 08 23:21:55 hostname systemd[1]: Found device /dev/vg00/FAST.\n    -- Subject: Unit dev-vg00-FAST.device has finished start-up\n    -- Defined-By: systemd\n    --\n    -- Unit dev-vg00-FAST.device has finished starting up.\n    --\n    -- The start-up result is done.\n    Dec 08 23:21:55 hostname systemd[1]: lvm2-pvscan@8:4.service: Main process exited, code=exited, status=5/NOTINSTALLED\n    Dec 08 23:21:55 hostname systemd[1]: Failed to start LVM2 PV scan on device 8:4.\n    -- Subject: Unit lvm2-pvscan@8:4.service has failed\n    -- Defined-By: systemd\n    --\n    -- Unit lvm2-pvscan@8:4.service has failed.\n    --\n    -- The result is failed.\n    Dec 08 23:21:55 hostname systemd[1]: lvm2-pvscan@8:4.service: Unit entered failed state.\n    Dec 08 23:21:58 hostname systemd-fsck[409]: /dev/mapper/vg00-FAST: clean, 5273/120127488 files, 389615339/480497664 bloc\n    Dec 08 23:21:55 hostname systemd[1]: lvm2-pvscan@8:4.service: Failed with result \'exit-code\'.\n    Dec 08 23:21:55 hostname systemd[1]: Starting File System Check on /dev/vg00/FAST...\n    -- Subject: Unit systemd-fsck@dev-vg00-FAST.service has begun start-up\n    -- Defined-By: systemd\n    --\n    -- Unit systemd-fsck@dev-vg00-FAST.service has begun starting up.\n    Dec 08 23:21:56 hostname systemd[1]: Started File System Check on /dev/vg00/FAST.\n    -- Subject: Unit systemd-fsck@dev-vg00-FAST.service has finished start-up\n    -- Defined-By: systemd\n    --\n    -- Unit systemd-fsck@dev-vg00-FAST.service has finished starting up.\n
Run Code Online (Sandbox Code Playgroud)\n\n

lv显示:

\n\n
$ lvdisplay -v\n\n  WARNING: Device for PV g1WAG2-Dc9i-Gods-w3n7-SZD7-5Kvc-qzepno not found or rejected by a filter.\n    There are 1 physical volumes missing.\n    There are 1 physical volumes missing.\n  --- Logical volume ---\n  LV Path                /dev/vg00/FAST\n  LV Name                FAST\n  VG Name                vg00\n  LV UUID                g7lYit-lsR3-WvoE-Idfj-C8kE-kcz4-VXpS1D\n  LV Write Access        read/write\n  LV Creation host, time host, 2015-12-02 21:06:11 -0500\n  LV Status              available\n  # open                 1\n  LV Size                1.79 TiB\n  Current LE             469236\n  Mirrored volumes       2\n  Segments               1\n  Allocation             contiguous\n  Read ahead sectors     auto\n  - currently set to     256\n  Block device           254:6\n\n  --- Logical volume ---\n  LV Path                /dev/vg00/SLOW\n  LV Name                SLOW\n  VG Name                vg00\n  LV UUID                u2ExhF-DFCH-U1Yc-M1WM-aIUl-bODu-FILusX\n  LV Write Access        read/write\n  LV Creation host, time host, 2016-12-07 09:16:22 -0500\n  LV Status              NOT available\n  LV Size                961.56 GiB\n  Current LE             246159\n  Segments               1\n  Allocation             contiguous\n  Read ahead sectors     auto\n
Run Code Online (Sandbox Code Playgroud)\n\n

左扫描:

\n\n
$ lvscan -v\n\n  WARNING: Device for PV g1WAG2-Dc9i-Gods-w3n7-SZD7-5Kvc-qzepno not found or rejected by a filter.\n    There are 1 physical volumes missing.\n    There are 1 physical volumes missing.\n  ACTIVE            \'/dev/vg00/FAST\' [1.79 TiB] contiguous\n  inactive          \'/dev/vg00/SLOW\' [961.56 GiB] contiguous\n
Run Code Online (Sandbox Code Playgroud)\n\n

lvmdisk扫描:

\n\n
$ lvmdiskscan\n  /dev/sda2                          [      20.00 GiB]\n  /dev/sda3                          [       8.00 GiB]\n  /dev/sda4                          [       1.79 TiB] LVM physical volume\n  /dev/vg00/FAST                     [       1.79 TiB]\n  /dev/sdb1                          [       2.73 TiB]\n  2 disks\n  5 partitions\n  0 LVM physical volume whole disks\n  1 LVM physical volume\n
Run Code Online (Sandbox Code Playgroud)\n\n

gdisk 分区结构看起来不错:

\n\n
$ gdisk -l /dev/sdb\n\nGPT fdisk (gdisk) version 1.0.1\n\nPartition table scan:\n  MBR: protective\n  BSD: not present\n  APM: not present\n  GPT: present\n\nFound valid GPT with protective MBR; using GPT.\nDisk /dev/sdb: 5860533168 sectors, 2.7 TiB\nLogical sector size: 512 bytes\nDisk identifier (GUID): 9B452B16-4F7C-4F3E-B54F-0B46C7B978E1\nPartition table holds up to 128 entries\nFirst usable sector is 34, last usable sector is 5860533134\nPartitions will be aligned on 2048-sector boundaries\nTotal free space is 2014 sectors (1007.0 KiB)\n\nNumber  Start (sector)    End (sector)  Size       Code  Name\n   1            2048      5860533134   2.7 TiB     8E00  Linux LVM\n
Run Code Online (Sandbox Code Playgroud)\n\n

Testdisk,似乎也可以:

\n\n
TestDisk 7.0, Data Recovery Utility, April 2015\nChristophe GRENIER <grenier@cgsecurity.org>\nhttp://www.cgsecurity.org\n\nDisk /dev/sdb - 3000 GB / 2794 GiB - CHS 364801 255 63\nCurrent partition structure:\n     Partition                  Start        End    Size in sectors\n\nNo LVM or LVM2 structure\n 1 P Linux LVM                   2048 5860533134 5860531087 [Linux LVM]\n 1 P Linux LVM                   2048 5860533134 5860531087 [Linux LVM]\n
Run Code Online (Sandbox Code Playgroud)\n\n

尝试直接挂载分区会产生:

\n\n
$ mount /dev/sdb1 /mnt/TMP/\nmount: mount /dev/sdb1 on /mnt/TMP failed: Structure needs cleaning\n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑添加:

\n\n

从 LVM 的角度来看,问题似乎是“在 /dev/sdb1 上找不到 LVM 标签”。我可以重新创建 LVM 标签吗/dev/sdb1?\npvscan:

\n\n
$ pvscan -v\n    Wiping internal VG cache\n    Wiping cache of LVM-capable devices\n  WARNING: Device for PV g1WAG2-Dc9i-Gods-w3n7-SZD7-5Kvc-qzepno not found or rejected by a filter.\n    There are 1 physical volumes missing.\n    There are 1 physical volumes missing.\n  PV /dev/sda4   VG vg00            lvm2 [1.79 TiB / 4.00 MiB free]\n  PV [unknown]   VG vg00            lvm2 [2.73 TiB / 0    free]\n  Total: 2 [4.52 TiB] / in use: 2 [4.52 TiB] / in no VG: 0 [0   ]\n
Run Code Online (Sandbox Code Playgroud)\n\n

新的非工作分区上的 pvck:

\n\n
$ pvck -v /dev/sdb1\n    Scanning /dev/sdb1\n  Could not find LVM label on /dev/sdb1\n
Run Code Online (Sandbox Code Playgroud)\n\n

原始(工作)lvm 分区上的 pvck:

\n\n
$ pvck -v /dev/sda4\n    Scanning /dev/sda4\n  Found label on /dev/sda4, sector 1, type=LVM2 001\n  Found text metadata area: offset=4096, size=1044480\n    Found LVM2 metadata record at offset=52224, size=3072, offset2=0 size2=0\n    Found LVM2 metadata record at offset=49152, size=3072, offset2=0 size2=0\n    Found LVM2 metadata record at offset=46080, size=3072, offset2=0 size2=0\n    Found LVM2 metadata record at offset=43520, size=2560, offset2=0 size2=0\n    Found LVM2 metadata record at offset=40960, size=2560, offset2=0 size2=0\n    Found LVM2 metadata record at offset=38400, size=2560, offset2=0 size2=0\n    Found LVM2 metadata record at offset=35840, size=2560, offset2=0 size2=0\n    Found LVM2 metadata record at offset=33280, size=2560, offset2=0 size2=0\n    Found LVM2 metadata record at offset=30720, size=2560, offset2=0 size2=0\n    Found LVM2 metadata record at offset=28160, size=2560, offset2=0 size2=0\n    Found LVM2 metadata record at offset=25600, size=2560, offset2=0 size2=0\n    Found LVM2 metadata record at offset=23040, size=2560, offset2=0 size2=0\n    Found LVM2 metadata record at offset=21504, size=1536, offset2=0 size2=0\n    Found LVM2 metadata record at offset=19968, size=1536, offset2=0 size2=0\n    Found LVM2 metadata record at offset=18432, size=1536, offset2=0 size2=0\n    Found LVM2 metadata record at offset=16896, size=1536, offset2=0 size2=0\n    Found LVM2 metadata record at offset=15360, size=1536, offset2=0 size2=0\n    Found LVM2 metadata record at offset=13824, size=1536, offset2=0 size2=0\n    Found LVM2 metadata record at offset=12288, size=1536, offset2=0 size2=0\n    Found LVM2 metadata record at offset=10752, size=1536, offset2=0 size2=0\n    Found LVM2 metadata record at offset=9216, size=1536, offset2=0 size2=0\n    Found LVM2 metadata record at offset=7680, size=1536, offset2=0 size2=0\n    Found LVM2 metadata record at offset=6144, size=1536, offset2=0 size2=0\n
Run Code Online (Sandbox Code Playgroud)\n\n

lsblk:

\n\n
$ lsblk -o name,mountpoint,label,size,uuid\nNAME                           MOUNTPOINT LABEL                    SIZE UUID\nsdb                                                                2.7T\n\xe2\x94\x94\xe2\x94\x80sdb1                                    BACKUP                   2.7T a1b354f4-dea8-4b39-9520-aebcf6c9c72f\nvg00-FAST_rimage_1-missing_0_0                                     1.8T\n\xe2\x94\x94\xe2\x94\x80vg00-FAST_rimage_1                                               1.8T\nsr0                                       Parted Magic 2016_01_06  494M 2016-01-13-12-09-50-00\nvg00-FAST_rmeta_1-missing_0_0                                        4M\n\xe2\x94\x94\xe2\x94\x80vg00-FAST_rmeta_1                                                  4M\nloop0                                                               30G d5ce3be0-00fc-4f73-8ee4-989440310d23\n\xe2\x94\x94\xe2\x94\x80docker-8:2-410226-pool                                            30G\nsda                                                                1.8T\n\xe2\x94\x9c\xe2\x94\x80sda4                                                             1.8T UDq1dm-JH3Z-aCIX-3oQy-1ZDG-kNoi-BdNtkK\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80vg00-FAST_rimage_0                                             1.8T\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80vg00-FAST                /mnt/FAST                           1.8T b78849e7-3399-444f-b98f-cba61d073961\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80vg00-FAST_rmeta_0                                                4M\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80vg00-FAST                /mnt/FAST                           1.8T b78849e7-3399-444f-b98f-cba61d073961\n\xe2\x94\x9c\xe2\x94\x80sda2                         /          rootfs                    20G ae45e705-67f4-4269-88e3-06d8e77a9e36\n\xe2\x94\x9c\xe2\x94\x80sda3                         [SWAP]                                8G 22a40da7-d0f9-4371-a585-8d49dc585708\n\xe2\x94\x94\xe2\x94\x80sda1                                                            1007K\n
Run Code Online (Sandbox Code Playgroud)\n