TL;DR:我搞砸了 LUKS 分区调整大小操作,需要帮助来恢复它。以下是我能想到的所有相关信息。如果您认为任何其他信息可能相关,或者有任何不清楚的地方,请告诉我。
问题
无法挂载我的 LUKS 加密分区,因为(至少)它的物理大小与它的文件系统大小不同,在尝试缩小分区失败后本指南
解决方案
我认为(至少部分)解决方案是确保文件系统和 LV 大小相等,并且 PV 大小大于两者。
假设没有数据丢失
如果我错了,请纠正我。由于 LVM 比文件系统小约 62.14GB,因此丢失了 0 到约 62.14GB 的数据。如果我很幸运,所有减少的块都不包含数据,如果我很不幸,那么所有块都包含数据。
问题和子问题
有人能帮我了解重新获得 LUKS 加密分区内容访问权限的正确且安全的方法吗?我想了解自己在做什么,并确信在做其他事情之前不会再把事情搞砸。
首先,我不确定我是否可以在目前的起点上使用指南中的步骤,因为它可能需要一个可运行的 LUKS 分区才能开始。这些是不同设备的大小。
PV Size 900.00 GiB / not usable 3.00 MiB # pvdisplay
LV Size 842.62 GiB # lvdisplay
Filesystem 904.75331584 GB # disks
Filesystem 241858560 blocks # e2fsck
Physical 220887040 blocks # e2fsck
这里它说文件系统和逻辑卷必须具有相同的大小,而常识告诉我物理卷必须大于或等于该大小。这里情况并非如此,所以我需要将文件系统减小到等于 LV(842.62GB)或将 LV 增加到 904.75331584 GB,并将 PV 增加到高于此大小的某个值。
- 磁盘仍然声称 LUKS 为 999GB。为什么?
- 是仅减少文件系统更好还是同时增加 PV 和 LV 更好?
- 如果是后者,那么顺序重要吗?
- 为什么 disks/pvdisplay 和 e2fsck 在 PV 和文件系统的大小上存在分歧?(241858560/220887040 != 904.75331584/900.00)
现状(各种命令的截图和输出)
命令输出
ubuntu@ubuntu:~$ sudo e2fsck -f /dev/mapper/ubuntu--vg-root
e2fsck 1.43.5 (04-Aug-2017)
The filesystem size (according to the superblock) is 241858560 blocks
The physical size of the device is 220887040 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort<y>? yes
ubuntu@ubuntu:~$ sudo mount /dev/ubuntu-vg/root /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/mapper/ubuntu--vg-root, missing codepage or helper program, or other error.
ubuntu@ubuntu:~$ sudo pvdisplay
--- Physical volume ---
PV Name /dev/mapper/crypt1
VG Name ubuntu-vg
PV Size 900.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 230399
Free PE 14561
Allocated PE 215838
PV UUID K3BIz8-FXNn-FYTU-jap6-Ri5X-Ilfq-ZLrwjk
ubuntu@ubuntu:~$ sudo lvdisplay
--- Logical volume ---
LV Path /dev/ubuntu-vg/root
LV Name root
VG Name ubuntu-vg
LV UUID HxqT5o-zJUq-RVBA-D8v2-YqpS-D685-FkvAbx
LV Write Access read/write
LV Creation host, time ubuntu, 2017-11-15 17:38:16 +0000
LV Status available
# open 0
LV Size 842.62 GiB
Current LE 215710
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
--- Logical volume ---
LV Path /dev/ubuntu-vg/swap_1
LV Name swap_1
VG Name ubuntu-vg
LV UUID ybnQLA-5CKp-W2JS-62At-94kE-i8iT-jkrqx1
LV Write Access read/write
LV Creation host, time ubuntu, 2017-12-29 20:44:49 +0000
LV Status available
# open 0
LV Size 512.00 MiB
Current LE 128
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
ubuntu@ubuntu:~$ sudo resize2fs -p /dev/mapper/ubuntu--vg-root
resize2fs 1.43.5 (04-Aug-2017)
Please run 'e2fsck -f /dev/mapper/ubuntu--vg-root' first.
截图
我做了什么/导致问题的原因
我按照指南操作,但没有保存 bash 日志。查看指南,这些可能是我运行的命令。
# install requirements
sudo apt-get update && sudo apt-get install lvm2 cryptsetup
# unlock encrypted partition
sudo modprobe dm-crypt
sudo cryptsetup luksOpen /dev/sda3 crypt1
sudo vgscan --mknodes
sudo vgchange -ay
# check that all is ok
sudo e2fsck -f /dev/mapper/ubuntu--vg-root # no problem
# no problem!
# resize file system
sudo resize2fs -p /dev/mapper/ubuntu--vg-root <900-ish>g
# check that everything is still ok
sudo e2fsck -f /dev/mapper/ubuntu--vg-root
# no problem!
# display LVMs
sudo lvdisplay
# 'Note how much you need to reduce your root (LVM) Logical Volume by'
# I stupidly didn't understand what I should take note of, and hoped it wouldn't matter
# shrink the LVM
# guide says 'ubuntu--vg' in the guide, but only 'ubuntu-vg' existed for me
sudo lvreduce -L -80G /dev/ubuntu-vg/root
# show size of physical volume
sudo pvdisplay
# delete the swap partition (may have run with sudo, not sure)
lvremove /dev/ubuntu-vg/swap_1
# change physical size
sudo pvresize --setphysicalvolumesize <900-ish>G /dev/mapper/crypt1
# set permissions of LVM
sudo pvchange -x y /dev/mapper/crypt1
# create new swap partition (either 'ubuntu--vg' or 'ubuntu-vg', not sure)
sudo lvcreate -L 512m -n swap_1 ubuntu--vg
sudo mkswap -L swap_1 /dev/ubuntu-vg/swap_1
# mount the LVM
sudo mount /dev/ubuntu-vg/root /mnt
# fail!