我试着按照这个https://wiki.archlinux.org/index.php/Resizing_LVM-on LUKS调整我的LUKS地窖的大小,然后用分离和严重的事情来调整分区的大小。我把870作为新的尺寸输入,忘了把G放在末尾。它将我的分区缩小到870M,我立即将其调整为870G,但到那时损坏已经完成。幸运的是,我仍然可以解密LUKS密码,但我无法获得我的逻辑卷,甚至在系统上有一个设备文件。LVM将卷识别为已存在的卷,并显示它附加到的设备文件,但该文件不存在,并显示它没有文件系统。我做了vgscan --mknodes,它成功地生成了设备文件,但是testdisk仍然没有显示它。我重新创建了卷,并在其上放置了一个新的ext4文件系统,现在testdisk将显示驱动器,但扫描没有任何结果。我得到了大量的ext4条目,但它们要么说无法打开文件系统,要么没有找到文件。我是否可以恢复磁盘上的文件系统?我不想写任何数据到它,直到我得到它上的东西,除非这是不可能的。
编辑:在深入了解了我需要帮助的真实情况后,我需要从以前的ext4文件系统中恢复文件。我的驱动器上有一个ext4系统,它已经被一个新的系统覆盖了,但是来自旧系统的所有数据仍然存在,如sudo dd if=/dev/Storage/Storage bs=1M | strings -fn 16所示。在我搞砸了之后,我做的唯一一件事就是安装了一个新的ext4 FS,而没有其他任何东西,所以我的大部分数据可能仍然完好无损。我要找回那些数据。
pvdisplay显示了以下内容
--- Physical volume ---
PV Name /dev/mapper/Storage
VG Name Storage
PV Size 931.51 GiB / not usable 3.68 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 238466
Free PE 0
Allocated PE 238466
PV UUID CAueGx-Glzx-zCd0-H00m-R8d5-KTRc-9Ff7ay
--- Physical volume ---
PV Name /dev/mapper/sda3_crypt
VG Name mint-vg
PV Size 118.50 GiB / not usable 0
Allocatable yes
PE Size 4.00 MiB
Total PE 30336
Free PE 10
Allocated PE 30326
PV UUID UJJfu8-S2Ac-pEZl-PlPa-uUzJ-axEs-ckbDWG我的备份显示
# Generated by LVM2 version 2.02.98(2) (2012-10-15): Thu Aug 13 20:45:52 2015
contents = "Text Format Volume Group"
version = 1
description = "Created *before* executing '/sbin/lvreduce --config log{command_names=0} -f -l 217600 /dev/Storage/Storage'"
creation_host = "desktop" # Linux desktop 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64
creation_time = 1439523952 # Thu Aug 13 20:45:52 2015
Storage {
id = "lM3S9T-inH1-mKsq-5doN-H8hT-zO3F-LF9jDx"
seqno = 2
format = "lvm2" # informational
status = ["RESIZEABLE", "READ", "WRITE"]
flags = []
extent_size = 8192 # 4 Megabytes
max_lv = 256
max_pv = 256
metadata_copies = 0
physical_volumes {
pv0 {
id = "nH1Axo-5nBo-WcyA-Xc4E-KwRt-K0Ib-ScK8Ch"
device = "/dev/mapper/Storage" # Hint only
status = ["ALLOCATABLE"]
flags = []
dev_size = 1953520999 # 931.511 Gigabytes
pe_start = 2048
pe_count = 238466 # 931.508 Gigabytes
}
}
logical_volumes {
Storage {
id = "Qb01kz-y1RG-PVQp-cGjB-sj77-xgnJ-w9kn3n"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
creation_host = "desktop"
creation_time = 1436247513 # 2015-07-06 22:38:33 -0700
segment_count = 1
segment1 {
start_extent = 0
extent_count = 238466 # 931.508 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 0
]
}
}
}
}发布于 2015-08-14 09:31:36
您不能通过将大小增加到原来的大小来修正LVM,除非您非常幸运,而且LV没有任何碎片,因为以前的大小。新LV有可能拥有原始文件系统的第一个20G,但是剩下的780G (或其他什么)是炒鸡蛋(错误的数据、错误的偏移量、错误的顺序)。
这是假设你在使用HDD媒体。如果是SSD,issue_discards=1在您的lvm.conf中,数据就会消失,这就是为什么我从不使用这个选项的原因。
您必须检查/etc/lvm/{archive,backup}/中元数据的旧版本。其中的每个文件都说明何时创建,例如:
description = "Created *before* executing 'lvremove HDD/mdtest1'"你要找的是那个说Created before lvresize 850和G不见的人。然后使用该备份的vgcfgrestore LVM元数据,希望它能够恢复正常运行。
如果您在/etc/lvm中没有这样的文件,或者是因为您是从丢失此数据的Live中这样做的,或者您的根LV上发生了损坏,那么事情就会变得更加复杂,因为您必须希望磁盘上的LVM元数据能够在其循环缓冲区中包含这一点历史。
粗略的方法,看看里面可能有什么:
dd if=/dev/pvdevice bs=1M count=1 | strings -w -n 16发布于 2015-08-15 05:07:26
如果您没有使用旧的ext4,那么fsck可能会有一些希望来进行一些修复,并找到一些完整的目录结构。
实际上,通过使用磁盘部分中的备用超级块,您可能仍有希望解决mkfs问题。或者,如果旧的FS具有与当前空FS不同数量的备份超级块,则可能有一些未被覆盖。
e2fsck -b some-offset只有当您的LV映射到与旧的字节相同的字节( Frostschultz在他的回答中提到过)时,这才适用。
您可以从二进制流中恢复几种类型的文件。(因为没有元数据将文件名映射到字节范围。)有些文件有一个可识别的头,并且有可能知道文件的结尾在哪里.只要您的文件是碎片,就有一些希望恢复一些无名的文件。
最重要是实现这一目的的工具。它声称找到jpg,gif,png,bmp,avi,exe,mpg,wav,riff,wmv,mov,pdf,ole,doc,zip,rar,htm和cpp文件。
https://unix.stackexchange.com/questions/223177
复制相似问题