收缩失败后如何挽救加密的 LUKS 分区

收缩失败后如何挽救加密的 LUKS 分区

我在 Samsung T7 1TB USB 驱动器上有一个加密的 ext4 分区。它是LUKS(我相信这可能被称为LUKS容器?)分区是850GB。它大约有 130GB 正在使用。我还有一个未加密的 100GB NTFS 分区和极少量的未分配空间。

我尝试使用 KDE 分区管理器将加密分区缩小到 550GB,这样我就可以将 100GB NTFS 分区扩展 300GB。我设置了这两个操作,然后单击“应用”。操作开始并进行了几分钟(但百分比没有进展)。然后它报告操作因错误而失败。愚蠢的是,我没有保存错误日志,原因是据我所知,没有提供错误的详细信息或原因,并且我假设没有进行任何更改。但是,我现在无法再挂载这个加密的 850GB ext4 分区,尽管它在 Dolphin 和 KDE 分区管理器中可见。插入驱动器时,它会正确识别它并给出密码提示,该提示已预先填写了我要求它记住的密码,因此系统可以识别该驱动器(我已尝试重新输入此密码,在如果那里有问题)。 NTFS分区似乎根本不可见。

在我没有从 KDE 分区管理器保存的日志中,我相信它也显示了操作发生时的进度,并且我相信第一个操作是它最初将 ext4 分区缩小了一小部分 - 0.04 GB,如果我没记错。假设最初的大小为 830.08 GB;我相信第一个操作是将其缩小到 830.04 GB,我相信它成功做到了。请不要将这些尺寸或 0.04 尺寸视为事实 - 这只是我似乎记得的。

Dolphin 中的错误消息是:

访问“830.0 GiB 加密驱动器”时发生错误,系统响应:请求的操作失败:在 /media/wesley/WG-T7-E 安装 /dev/dm-1 时出错:fs 类型错误,选项错误,错误/dev/mapper/luks-5c9cfaa5-0576-4b47-8e65-05f7d8b52d39 上的超级块、缺少代码页或帮助程序或其他错误。

在 KDE 分区管理器中,我可以看到两个分区和未分配的空间,正确报告了大小和已用空间(或者足够接近,根据我所知道的情况。即,它们没有使用我选择的新大小列出)。

KDE 分区管理器中加密分区 (/dev/sdb1) 的属性显示:

Label: WG-T7-E (which is correct)
Mount point: (none found)
Partition type: primary
Status: idle
UUID: 9ffc3bef-5df8-4dd5-b4de-d2ff45aa6322
Partition Label: (none)
Partition UUID: 75E6E7E1-FA4F-0F40-BAB4-85F5F4A5BD30
Size: 830.04 GiB
Available: 84% - 699.21 GiB
Used: 16% - 130.83 GiB
First sector: 2,048
Last sector: 1,740,728,319
Number of sectors: 1,740,726,272
Flags: bios-grub and boot checkboxes shown, but neither checked.

KDE 分区管理器中未分配空间的属性显示:

Label:
Mount point: (none found)
Partition type: unallocated
Status: idle
Partition Label: (none)
Partition UUID: (none)
Size: 36.00MiB
First sector: 1,740,728,320
Last sector: 1,740,802,047
Number of sectors: 73,728

KDE 分区管理器中未加密分区 (/dev/sdb2) 的属性显示:

File system: ntfs
Label: WG-T7-U (which is correct)
Mount point: /media/wesley/WG-T7-U
Partition type: primary
Status: idle
UUID: 05DBF9124869C198
Partition Label: (none)
Partition UUID: 8CC612F8-30FA-6449-8FA2-754C82E8B0C3
Size: 101.43 GiB
Available: 99% - 101.37 GiB
Used: 1% - 67.61 MiB
First sector: 1,740,802,048
Last sector: 1,953,523,711
Number of sectors: 212,721,664
Flags: bios-grub and boot checkboxes shown, but neither checked.

插入 USB 驱动器并输入密码后 dmesg:

[ 6049.158336] usb 2-4: new SuperSpeed USB device number 8 using xhci_hcd
[ 6049.171380] usb 2-4: New USB device found, idVendor=04e8, idProduct=61fb, bcdDevice= 1.00
[ 6049.171394] usb 2-4: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[ 6049.171400] usb 2-4: Product: PSSD T7 Shield
[ 6049.171405] usb 2-4: Manufacturer: Samsung
[ 6049.171409] usb 2-4: SerialNumber: S6YJNS0TA00012H
[ 6049.180592] scsi host2: uas
[ 6049.181476] scsi 2:0:0:0: Direct-Access     Samsung  PSSD T7 Shield   0    PQ: 0 ANSI: 6
[ 6049.182964] sd 2:0:0:0: Attached scsi generic sg2 type 0
[ 6049.183565] sd 2:0:0:0: [sdb] 1953525168 512-byte logical blocks: (1.00 TB/932 GiB)
[ 6049.183710] sd 2:0:0:0: [sdb] Write Protect is off
[ 6049.183717] sd 2:0:0:0: [sdb] Mode Sense: 43 00 00 00
[ 6049.183951] sd 2:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 6049.184282] sd 2:0:0:0: [sdb] Optimal transfer size 33553920 bytes
[ 6049.207124]  sdb: sdb1 sdb2
[ 6049.208449] sd 2:0:0:0: [sdb] Attached SCSI disk
[ 6049.430150] audit: type=1107 audit(1708641903.652:169): pid=1274 uid=102 auid=4294967295 ses=4294967295 subj=unconfined msg='apparmor="DENIED" operation="dbus_signal"  bus="system" path="/org/freedesktop/login1" interface="org.freedesktop.DBus.Properties" member="PropertiesChanged" name=":1.2" mask="receive" pid=2912 label="snap.firefox.firefox" peer_pid=1318 peer_label="unconfined"
                exe="/usr/bin/dbus-daemon" sauid=102 hostname=? addr=? terminal=?'
[ 6049.430683] ntfs3: Unknown parameter 'windows_names'
[ 6049.494120] audit: type=1107 audit(1708641903.716:170): pid=1274 uid=102 auid=4294967295 ses=4294967295 subj=unconfined msg='apparmor="DENIED" operation="dbus_signal"  bus="system" path="/org/freedesktop/login1" interface="org.freedesktop.DBus.Properties" member="PropertiesChanged" name=":1.2" mask="receive" pid=2912 label="snap.firefox.firefox" peer_pid=1318 peer_label="unconfined"
                exe="/usr/bin/dbus-daemon" sauid=102 hostname=? addr=? terminal=?'
[ 6052.079215] audit: type=1107 audit(1708641906.301:171): pid=1274 uid=102 auid=4294967295 ses=4294967295 subj=unconfined msg='apparmor="DENIED" operation="dbus_signal"  bus="system" path="/org/freedesktop/login1" interface="org.freedesktop.DBus.Properties" member="PropertiesChanged" name=":1.2" mask="receive" pid=2912 label="snap.firefox.firefox" peer_pid=1318 peer_label="unconfined"
                exe="/usr/bin/dbus-daemon" sauid=102 hostname=? addr=? terminal=?'
[ 6054.523583] audit: type=1107 audit(1708641908.745:172): pid=1274 uid=102 auid=4294967295 ses=4294967295 subj=unconfined msg='apparmor="DENIED" operation="dbus_signal"  bus="system" path="/org/freedesktop/login1" interface="org.freedesktop.DBus.Properties" member="PropertiesChanged" name=":1.2" mask="receive" pid=2912 label="snap.firefox.firefox" peer_pid=1318 peer_label="unconfined"
                exe="/usr/bin/dbus-daemon" sauid=102 hostname=? addr=? terminal=?'
[ 6054.598701] audit: type=1107 audit(1708641908.820:173): pid=1274 uid=102 auid=4294967295 ses=4294967295 subj=unconfined msg='apparmor="DENIED" operation="dbus_signal"  bus="system" path="/org/freedesktop/login1" interface="org.freedesktop.DBus.Properties" member="PropertiesChanged" name=":1.2" mask="receive" pid=2912 label="snap.firefox.firefox" peer_pid=1318 peer_label="unconfined"
                exe="/usr/bin/dbus-daemon" sauid=102 hostname=? addr=? terminal=?'
[ 6054.599943] EXT4-fs (dm-1): bad geometry: block count 217599488 exceeds size of device (217590272 blocks)
[ 6054.600795] audit: type=1107 audit(1708641908.822:174): pid=1274 uid=102 auid=4294967295 ses=4294967295 subj=unconfined msg='apparmor="DENIED" operation="dbus_signal"  bus="system" path="/org/freedesktop/login1" interface="org.freedesktop.DBus.Properties" member="PropertiesChanged" name=":1.2" mask="receive" pid=2912 label="snap.firefox.firefox" peer_pid=1318 peer_label="unconfined"
                exe="/usr/bin/dbus-daemon" sauid=102 hostname=? addr=? terminal=?'
[ 6054.798116] audit: type=1107 audit(1708641909.020:175): pid=1274 uid=102 auid=4294967295 ses=4294967295 subj=unconfined msg='apparmor="DENIED" operation="dbus_signal"  bus="system" path="/org/freedesktop/login1" interface="org.freedesktop.DBus.Properties" member="PropertiesChanged" name=":1.2" mask="receive" pid=2912 label="snap.firefox.firefox" peer_pid=1318 peer_label="unconfined"
                exe="/usr/bin/dbus-daemon" sauid=102 hostname=? addr=? terminal=?'
[ 6054.804803] EXT4-fs (dm-1): bad geometry: block count 217599488 exceeds size of device (217590272 blocks)
[ 6054.809500] audit: type=1107 audit(1708641909.031:176): pid=1274 uid=102 auid=4294967295 ses=4294967295 subj=unconfined msg='apparmor="DENIED" operation="dbus_signal"  bus="system" path="/org/freedesktop/login1" interface="org.freedesktop.DBus.Properties" member="PropertiesChanged" name=":1.2" mask="receive" pid=2912 label="snap.firefox.firefox" peer_pid=1318 peer_label="unconfined"
                exe="/usr/bin/dbus-daemon" sauid=102 hostname=? addr=? terminal=?'

向能够帮助我成功恢复此损失的人提供经济奖励,或在人与人之间分配经济奖励。谢谢。

答案1

回顾一下,调整分区大小后,您收到以下安装错误:

文件系统类型错误、选项错误、/dev/mapper/luks-5c9cfaa5-0576-4b47-8e65-05f7d8b52d39 上的超级块错误、缺少代码页或帮助程序或其他错误。

到目前为止已经意味着 LUKS 标头本身没有问题。

根据dmesg,真正的错误消息是:

EXT4-fs (dm-1):几何结构错误:块计数 217599488 超出设备大小(217590272 块)

这似乎是收缩分区而不首先收缩文件系统的标准情况,差异只是几千个数据块(9216 4K 块 = 73728 512 字节扇区)。

看来您的分区表中确实有必要的未分配空间。

根据您的分区管理器输出,它parted应该大致如下所示。

# parted /dev/sdb unit s print free
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start        End          Size         File system  Name  Flags
        34s          2047s        2014s        Free Space
 1      2048s        1740728319s  1740726272s               luks
        1740728320s  1740802047s  73728s       Free Space
 2      1740802048s  1953523711s  212721664s                ntfs

分区编号、名称、标志可能不同 - 开始结束大小应匹配。如果所有假设均正确,则修复方法是回收分区 1 后面的可用空间。

确保首先关闭 LUKS 容器,卸载驱动器或重新读取分区表可能会失败(或者重新启动)。

# cryptsetup close luks-5c9cfaa5-0576-4b47-8e65-05f7d8b52d39
# umount /dev/sdb*

由于分区表中有未分配的空间,您可以使用parted的resizepart命令回收它。

# parted /dev/sdb resizepart 1 1740802047s

这只会更改分区表,而不会更改任何数据。

运气好的话,文件系统之后就会正常工作。

相关内容