How to fix corrupted ploop
Stop the container/ check container status where ploop problem exists
[if you are working in your own environment with "backup files" that looking like like "root.hdd" - ploop file and "DiskDescriptor.xml" you should not stop any containers]
NOTE: your kernel may not support ploop - in this case you may refer to the man pages: is it possible to add or compile kernel module for your *nix build //or google it /whatever.
FIRST make a copy of ploop and work with a copy keeping original as it. so you will be always to get back to orig ploop and start other methodologies to recover.
Refer to the link provided at the end of this article for alternate method of adding kernel support into your Linux build.
Mount the container’s ploop image. Check fdisk:
cd /vz/private/CTID fdisk -l root.hdd/root.hdd
Mount:
ploop mount root.hdd/DiskDescriptor.xml Opening delta /vz/private/16311/root.hdd/root.hdd Adding delta dev=/dev/ploop28980 img=/vz/private/16311/root.hdd/root.hdd (rw) #note the dev=/dev/ploop2890
Most likely you 'll get error:
Error in ploop_check (check.c:549): Fatal errors were found, image /vz/private/111/root.hdd/root.hdd is not repaired Error in check_deltas (check.c:638): /vz/private/1111/root.hdd/root.hdd : irrecoverable errors (rw)
Then try to use ploop check:
ploop check -dFc root.hdd/root.hdd # Reopen rw root.hdd/root.hdd Data cluster 20063 beyond EOF, vsec=980... Fixed Error in ploop_check (check.c:574): Dirty flag is set
You may see more options just type ploop check --help.
Now try fdisk -l and see if you can see partitions:
fdisk -l /dev/ploop28980 WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. Disk /dev/ploop17795: 42.9 GB, 42949672960 bytes, 83886080 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: gpt Disk identifier: F******-***0-4***3-9AE0-D*******B # Start End Size Type Name 1 2048 83884031 40G Microsoft basic primary
Gr8 if you able to see partition! now just try to mount it with usual mount and add p1 to the ploop dev name
mkdir /mnt/ploop-restore1 mount -r -o noload /dev/ploop28980p1 /mnt/ploop-restore1/
Go to the mounted dir and copy your data!
ALTERNATE WAY if you got more trouble :
===================
As from previous mount ploop output we can see how it's mounted: "dev=/dev/ploop2890"
Try e2fsck [if you can see partitions with fdisk -l try with adding p1]
e2fsck /dev/ploop28980p1
You may try without p1 if you can't see the partitions but most likely with no luck.
If fail try with another superblock:
mke2fs /dev/ploop28980 # note the block here and use one of them e2fsck -b 32768 /dev/ploop28980
Maybe mount/remount and give a check w/o specifying superblock
e2fsck /dev/ploop28980
___________________
if still issues you may try to mount ploop into folder and copy data
Optional. Better remount ploop for any case.
ploop umount -d /dev/ploop1234 ploop mount root.hdd/DiskDescriptor.xml
Now use "mount" to Mount into some dir
mkdir /mnt/ploop-restore1 mount -r -o noload /dev/ploop30196p1 /mnt/ploop-restore1
In case of errors try to repeat e2fsck with additional optons like check for bad blocks:
e2fsck -c -f /dev/ploop33512
- Tool for mounting OpenVZ ploop images without support from kernel side:*
This link may be helpfull if you do not have ploop kernel support (we did not tested it!):
https://github.com/FastVPSEestiOu/ploop_userspace/
""