调整大小操作失败后,如何恢复我的 LUKS 分区?

调整大小操作失败后,如何恢复我的 LUKS 分区?

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.

截图

解锁加密前的硬盘

解锁加密后的硬盘

解锁后 root 分区哭了

解锁加密后交换分区

我做了什么/导致问题的原因

我按照指南操作,但没有保存 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!

相关内容