Difference between revisions of "How to fix corrupted ploop"

From vpsget wiki
Jump to: navigation, search
 
(17 intermediate revisions by the same user not shown)
Line 4: Line 4:
  
 
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.  
 
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.
 
Refer to the link provided at the end of this article for alternate method of adding kernel support into your Linux build.
Line 17: Line 19:
 
  #note the dev=/dev/ploop2890
 
  #note the dev=/dev/ploop2890
  
As from previous output we can see how it's mounted dev=/dev/ploop2890
+
Most likely you 'll get error:
Try e2fsck
+
  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:
 +
ploop mount root.hdd/DiskDescriptor.xml 
 +
 
 +
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: FB****43-98F2-424B-BA78-9********91
 +
 +
#        Start          End    Size  Type            Name
 +
  1        2048    83884031    40G  Microsoft basic primary
  
  e2fsck  /dev/ploop28980 
+
Gr8 if you able to see partition!
 +
You may also able to view the exact partition names but not see the disk identifier. Anyway the both cases are good:
 +
  fdisk -l /dev/ploop40539
 +
  WARNING: GPT (GUID Partition Table) detected on '/dev/ploop40539'! The util fdisk doesn't support GPT. Use GNU Parted.
 +
  Disk /dev/ploop40539: 64.4 GB, 64424509440 bytes
 +
  255 heads, 63 sectors/track, 7832 cylinders
 +
  Units = cylinders of 16065 * 512 = 8225280 bytes
 +
  Sector size (logical/physical): 512 bytes / 512 bytes
 +
  I/O size (minimum/optimal): 1048576 bytes / 4194304 bytes
 +
  Disk identifier: 0x00000000
 +
  #
 +
              Device Boot      Start        End      Blocks  Id System
 +
  /dev/ploop40539p1              1        7833    62914559+  ee  GPT
 +
  #
 +
 
 +
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 -y /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:
 
If fail try with another superblock:
  mke2fs /dev/ploop28980   # note the block here and use one of them
+
  mke2fs /dev/ploop28980p1   # note the block here and use one of them
 
  e2fsck -b 32768  /dev/ploop28980
 
  e2fsck -b 32768  /dev/ploop28980
 
Maybe mount/remount and give a check w/o specifying superblock
 
Maybe mount/remount and give a check w/o specifying superblock
  e2fsck  /dev/ploop28980
+
  e2fsck  /dev/ploop28980p1
  
  
Line 36: Line 95:
 
  ploop umount -d /dev/ploop1234
 
  ploop umount -d /dev/ploop1234
 
  ploop mount root.hdd/DiskDescriptor.xml   
 
  ploop mount root.hdd/DiskDescriptor.xml   
 +
  
 
Now use "mount" to Mount into some dir
 
Now use "mount" to Mount into some dir
 
  mkdir /mnt/ploop-restore1
 
  mkdir /mnt/ploop-restore1
  mount -r -o noload /dev/ploop30196 /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/ploop33512p1
  
  
Line 49: Line 112:
  
 
https://github.com/FastVPSEestiOu/ploop_userspace/
 
https://github.com/FastVPSEestiOu/ploop_userspace/
 +
 +
"[[Category:Admin area]]"

Latest revision as of 05:38, 7 December 2020

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:

ploop mount root.hdd/DiskDescriptor.xml  
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: FB****43-98F2-424B-BA78-9********91

#         Start          End    Size  Type            Name
 1         2048     83884031     40G  Microsoft basic primary

Gr8 if you able to see partition! You may also able to view the exact partition names but not see the disk identifier. Anyway the both cases are good:

  fdisk -l /dev/ploop40539 
  WARNING: GPT (GUID Partition Table) detected on '/dev/ploop40539'! The util fdisk doesn't support GPT. Use GNU Parted. 
  Disk /dev/ploop40539: 64.4 GB, 64424509440 bytes
  255 heads, 63 sectors/track, 7832 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  Sector size (logical/physical): 512 bytes / 512 bytes
  I/O size (minimum/optimal): 1048576 bytes / 4194304 bytes
  Disk identifier: 0x00000000
  #
             Device Boot      Start         End      Blocks   Id  System
  /dev/ploop40539p1               1        7833    62914559+  ee  GPT
  #

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 -y  /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/ploop28980p1    # 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/ploop28980p1


___________________ 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/ploop33512p1


  • 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/

""