Partition

調整 LUKS 加密分區的大小 - 成功但現在不能使用未分配的空間?

  • November 1, 2020

按照網上的各種指南,我試圖減少我的 LUKS 加密硬碟分區(特別是根 / 數據)。我已經到了 GParted 辨識新的未分配空間的地步,但它“卡在”原始分區中。在下面的螢幕截圖中,您可以看到未分配的空間只有 1 MB(沒有),但突出顯示的數據分區內部有一半未分配:

GParted 概述

如果你問數據分區怎麼了,它說它有我想要的未分配空間:

GParted 警告

所以我排隊調整大小,將其縮小到最小大小(~250 GB),它向我展示了我想要的這個漂亮的預覽(給我~198 GB 未分配作為單獨的分區):

目標

但是當我執行調整大小時,它會失敗,如下所示:

失敗

它認為它已經縮小了尺寸?但是,它並沒有給我那個“未分配的空間”作為分區!上面漂亮的預覽恢復到這篇文章中的第一個螢幕截圖。

我也嘗試過 KDE 分區工具,它的行為方式基本相同。此外,**我嘗試從單獨的活動磁碟執行調整大小,以便我正在調整大小的分區沒有被掛載,並且同樣的行為相同。**另一個有趣的點是 Disks 實用程序的想法:

磁碟工具

我絕對沒有磁碟管理經驗,所以我當然已經備份了我的數據,並且正在考慮從一開始就擦除機器並縮小分區,但我覺得我在這裡很接近?是否缺少一個簡單的步驟,或者這遠未完成?

問題是,當您調整分區內的文件系統大小時,分區本身並沒有調整大小。把它想像成把你的腳放在一雙完美合腳的鞋子裡。你已經讓你的腳(文件系統)變小了,但是鞋(分區)的大小是一樣的,因此鞋裡有未使用的空間。你需要買一隻小一點的鞋子。

分區只是儲存在 GPT(GUID 分區表)中的一個概念。它儲存分區的開始位置和結束位置。您需要計算分區的新結束分區並更新 GPT。

公式為NEW_PARTITION_SECTOR_END = PARTITION_SECTOR_START + (LUKS_SIZE_SECTORS + LUKS_OFFSET_SECTORS) - 1。這是我從https://wiki.archlinux.org/index.php/Resizing_LVM-on-LUKS#Resize_the_partition得到的

在您的情況下,您想要執行“sudo parted /dev/nvme0n1”,然後使用“resizepart”命令。您可以使用 print 命令從 parted 中獲取 PARTITION_SECTOR_START 的值。LUKS_OFFSET_SECTORS 和 LUKS_SIZE_SECTORS 可以從“cryptsetup status cryptdata”中獲得。將它們加在一起,這將為您提供新的最終價值。

重要提示:請注意,當您使用 parted 時,請務必先鍵入“unit”命令以將單位更改為代表扇區的“s”。

引用自:https://unix.stackexchange.com/questions/617485