최근까지 잘 작동했지만 일부 구성을 변경한 후 재부팅이 필요한 가상 머신이 있습니다. 그러나 재부팅 후 가상 머신이 복구되지 않고 루트 장치(/dev/mapper 아래의 LVM 볼륨)를 찾을 수 없다고 말했습니다.
복구 모드로 부팅하면 /dev/mapper 및 /dev/dm-* 아래의 파일 시스템이 존재하지 않는 것을 확인합니다.
파일 시스템은 다음과 같이 배치되어야 합니다.
/dev/sda1
부팅 파티션으로/dev/sda2
확장 파티션에는 다음이 포함됩니다./dev/sda5
및/dev/sda6
LVM 파티션/dev/sda{5,6}
두 PV가 하나의 VG에 있습니다.- 루트 FS 및 스왑을 위한 2개의 LV가 있습니다.
하나를 만들면 lvm pvshow
다음과 같은 이점이 있습니다.
Couldn't find device with uuid '8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi'.
Couldn't find device with uuid '8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi'.
Couldn't find device with uuid '8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi'.
--- Physical volume ---
PV Name unknown device
VG Name of1-server-lucid
PV Size 19.76 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 5058
Free PE 0
Allocated PE 5058
PV UUID 8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi
--- Physical volume ---
PV Name /dev/sda6
VG Name of1-server-lucid
PV Size 100.00 GiB / not usable 2.66 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 25599
Free PE 0
Allocated PE 25599
PV UUID cuhP6R-QbiO-U7ye-WvXN-ZNq5-cqUs-VVZpux
/dev/sda5
따라서 PV로 나열되지 않고 오류가 발생하는 것 같습니다 .
fdisk -l
:
Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00044a6c
Device Boot Start End Blocks Id System
/dev/sda1 * 1 32 248832 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 32 15665 125579256+ 5 Extended
/dev/sda5 32 2611 20722970 8e Linux LVM
/dev/sda6 2612 15665 104856223+ 8e Linux LVM
/dev/sda5
따라서 장치가 존재하는 것을 볼 수 있지만 blkid
아무 것도 보고되지 않습니다.
~ # blkid
/dev/sda1: UUID="d997d281-2909-41d3-a835-dba400e7ceec" TYPE="ext2"
/dev/sda6: UUID="cuhP6R-QbiO-U7ye-WvXN-ZNq5-cqUs-VVZpux" TYPE="LVM2_member"
디스크 스냅샷을 찍은 후 보관된 구성에서 PV를 복원하려고 합니다.
~ # pvremove -ff /dev/sda5
Labels on physical volume "/dev/sda5" successfully wiped
~ # pvcreate --uuid=8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi /dev/sda5 --restorefile=/etc/lvm/archive/of1-dev-server_00000.vg
Couldn't find device with uuid '8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi'.
Physical volume "/dev/sda5" successfully created
~ # vgchange -a y
2 logical volume(s) in volume group "of1-dev-server" now active"
따라서 적어도 이제 장치에는 다음이 하나 있습니다 blkid
.
/dev/sda1: UUID="d997d281-2909-41d3-a835-dba400e7ceec" TYPE="ext2"
/dev/sda6: UUID="cuhP6R-QbiO-U7ye-WvXN-ZNq5-cqUs-VVZpux" TYPE="LVM2_member"
/dev/sda5: UUID="8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi" TYPE="LVM2_member"
지금 실행하면 pvdisplay
올바른 장치도 표시됩니다.
--- Physical volume ---
PV Name /dev/sda5
VG Name of1-dev-danr-lucid
PV Size 19.76 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 5058
Free PE 0
Allocated PE 5058
PV UUID 8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi
--- Physical volume ---
PV Name /dev/sda6
VG Name of1-dev-danr-lucid
PV Size 100.00 GiB / not usable 2.66 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 25599
Free PE 0
Allocated PE 25599
PV UUID cuhP6R-QbiO-U7ye-WvXN-ZNq5-cqUs-VVZpux
매퍼 장치가 존재합니다.
crw-rw---- 1 root root 10, 59 Jul 10 10:47 control
brw-rw---- 1 root root 252, 0 Jul 10 11:21 of1--dev--server-root
brw-rw---- 1 root root 252, 1 Jul 10 11:21 of1--dev--server-swap_1
LVM도 올바르게 나열되는 것 같습니다.
~ # lvdisplay
--- Logical volume ---
LV Name /dev/of1-dev-danr-lucid/root
VG Name of1-dev-danr-lucid
LV UUID pioKjE-iJEp-Uf9S-0MxQ-UR0H-cG9m-5mLJm7
LV Write Access read/write
LV Status available
# open 0
LV Size 118.89 GiB
Current LE 30435
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume ---
LV Name /dev/of1-dev-danr-lucid/swap_1
VG Name of1-dev-danr-lucid
LV UUID mIq22L-RHi4-tudV-G6nP-T1e6-UQcS-B9hYUF
LV Write Access read/write
LV Status available
# open 0
LV Size 888.00 MiB
Current LE 222
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1
하지만 루트 장치를 마운트하려고 하면 오류가 발생합니다.
~ # mount /dev/mapper/of1--dev--server-root /mnt2
mount: mounting /dev/mapper/of1--dev--server-root on /mnt2 failed: Invalid argument
그래서 디스크 일관성 검사를 시도했습니다.
~ # fsck.ext4 -f /dev/mapper/of1--dev--server-root
e2fsck: Superblock invalid, trying backup blocks...
e2fsck: Bad magic number in super-block while trying to open /dev/mapper/of1--dev--server-root
[...]
그래서 나는 또 다른 슈퍼블록을 시도했습니다.
~ # mke2fs -n /dev/mapper/of1--dev--server-root
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
7798784 inodes, 31165440 blocks
1558272 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
952 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
~ # fsck.ext4 -y -b 23887872 /dev/mapper/of1--dev--server-root
엄청나게 많은 오류가 발생하는데, 내가 본 주요 오류는 다음과 같습니다.
- 슈퍼블록의 로그가 유효하지 않습니다.
- 하나 이상의 블록 그룹 설명자 체크섬이 잘못되었습니다.
- 고아 inode() 자르기
- 고아 inode에서 발견된 지워진 블록 #0()
- /dev/mapper/of1--dev--server-root에 잘못된 파일 시스템이 포함되어 있습니다. 강제 확인
- inode 크기를 조정해도 효과가 없습니다. 재건
- 루트 inode는 디렉토리가 아닙니다.
- 예약된 inode 3()에 잘못된 모드가 있습니다.
- HTREE 디렉터리 inode의 루트 노드가 잘못되었습니다.
- inode, i_blocks는 0이어야 합니다.
- 연결되지 않은 디렉토리 inode
많은 메시지를 보낸 후 완료되었다고 말했습니다. 위와 같이 디렉토리를 마운트하면 잘 작동하지만 디렉토리는 비어 있고 디렉토리는 lost+found
파일로 채워져 있습니다. 대부분은 숫자일 뿐이고 일부는 한때 존재했던 파일과 모호하게 관련된 파일 이름을 가집니다.
그렇다면 가상 머신을 복원하는 방법은 무엇입니까?
디스크 오류를 볼 때마다 상황이 더 악화되지 않도록 스냅샷을 생성하는 것이 가장 먼저 본능이므로 오류를 처음 봤을 때 재부팅한 후 스냅샷을 만들었습니다.
재부팅할 때까지 VM이 문제 없이 작동했기 때문에 데이터가 어딘가에 있다는 것을 알고 있습니다. 사용자는 최근에 파일 시스템에서 아무것도 변경한 것을 기억하지 못하지만, 다시 시작했을 때 거의 1년 동안 실행 중이었으므로 그 이후로 다양한 일이 일어났을 수 있습니다.
안타깝게도 이 노드에서는 Puppet이 비활성화되어 있으므로 백업도 없습니다.
원래 운영 체제는 VMWare에서 실행되는 Ubuntu Lucid였습니다.
답변1
lost+found
내가 올바르게 이해했다면 디렉터리에 중요한 파일이 포함될 수도 있고 포함되지 않을 수도 있지만 볼륨을 복구한 것입니다 .
VM이 시작되지 못하게 하는 현재 무슨 일이 일어나고 있나요? 아직도 부팅 장치를 찾을 수 없나요?
귀하의 fdisk -l
출력이 나에게 약간 벗어난 것 같습니다. 파티션 테이블만 손상되었을 가능성을 고려해 보셨나요? 이 경우 스냅샷이 도움이 될 수 있으며 가장 좋은 경우에는 (다른) fsck도 필요하지 않습니다. 하지만 파티션 오프셋을 찾으려면 뭔가가 필요합니다.테스트 디스크성공은 두 번 이상 발생합니다.
최악의 경우 볼륨에서 무엇이든 삭제해야 하는 경우 다음과 같은 포렌식 도구를 사용하세요.사진 기록또는부검/탐정 키트유용할 수도 있습니다.
이들 중 아무것도 작동하지 않으면 가능한 경우 lsblk -o NAME,RM,SIZE,RO,TYPE,MAJ:MIN -fat
관련 출력과 함께 하나(이 플래그는 가능한 한 많은 정보를 표시하기 위한 것임)도 제공 하십시오.dmesg