如何縮小 LUKS 分區,cryptsetup resize
有什麼作用?
我正在調整包含單個 ext4 文件系統(沒有 LVM 或其他東西)的 LUKS 加密分區的大小。cryptsetup FAQ建議刪除舊分區並重新創建它,但這聽起來很浪費時間。因此,我想手動進行,仔細調整分區的大小。
到目前為止,我認為我需要這樣做:
- 創建文件系統的(加密)備份。重要的!在執行以下任務時,您不會是第一個失去數據的人。
- 解除安裝現有的 ext4 文件系統(例如通過啟動到 Live CD)。如果從 Live CD 啟動,請使用以下命令掛載加密分區
cryptsetup luksOpen /dev/sdXY ExistingExt4
- 調整現有 ext4 文件系統的大小。
cryptsetup resize /dev/mapper/ExistingExt4 -b $SECTORS
- 使用關閉/“解除安裝”LUKS分區
cryptsetup luksClose ExistingExt4
- 縮小分區大小。
以上步驟正確嗎?
在第 4 步中,我應該選擇
$SECTORS
什麼?這一步甚至是必要的嗎?cryptsetup
手冊頁並沒有真正描述該選項resize
:resize <name> resizes an active mapping <name>. If --size (in sectors) is not specified, the size of the underlying block device is used.
最後,如果我將 ext4 分區縮小 15 GiB,我可以安全地假設可以使用 15 GiB 從現有分區中刪除
parted
嗎?如果是,該怎麼做?我的磁碟是 GPT 分區的,如果這很重要的話。
備份(步驟 1)和解除安裝(2 到 3 之間)後,執行
fsck
以確保文件系統是健康的:e2fsck -f /dev/mapper/ExistingExt4
除此之外,步驟還可以。
cryptsetup resize
命令的目的我應該為 $SECTORS 選擇什麼?這一步甚至是必要的嗎?
這一步是必要的,否則分區仍然會出現在舊的一側。Nautilus 確認了這一點,即使使用 調整大小後**此步驟不是必需的。**它只影響文件瀏覽器中顯示的目前大小狀態。更改大小並再次關閉/打開分區後,數字將恢復。因此,當關閉 LUKS 分區時,如後所示將使其過時。resize2fs
,LUKS 分區仍顯示為舊大小。執行後cryptsetup resize
,顯示正確的數字。
$SECTORS
可以通過查看輸出來確定cryptsetup status ExistingExt4
:/dev/mapper/ExistingExt4 處於活動狀態。 類型:LUKS1 密碼:aes-cbc-essiv:sha256 密鑰大小:256 位 設備:/dev/sda2 扇區大小: **512** 偏移量:2056 個扇區 大小: **156049348 個**扇區 模式:讀/寫
(截至cryptsetup 2.0.0(2017 年 12 月),扇區大小可能大於 512 字節:請參閱
cryptsetup(8)
手冊頁和--sector-size
選項。)因此,要減去 15 GiB,請使用扇區大小
156049348 - 15 * 1024 * 1024 * 2 = 124592068
:cryptsetup resize ExistingExt4 -b 124592068
調整分區大小
parted
至於調整分區大小,
parted
適用於 GPT 分區。但是,該resize
命令不起作用,作為一種解決方法(或解決方案),刪除分區資訊並創建一個新分區,受http://ubuntuforums.org/showthread.php?p=8721017#post8721017的啟發:# **cryptsetup luksClose ExistingExt4** # **parted /dev/sda2** GNU Parted 2.3 使用 /dev/sda 歡迎來到 GNU Parted!鍵入“幫助”以查看命令列表。 (parted)**單位 s** (parted) **p** 型號:ATA INTEL SSDSA2CW08 (scsi) 磁碟 /dev/sda: 156301488s 扇區大小(邏輯/物理):**512B/512B** 分區表:gpt 編號 開始 結束 大小 文件系統 名稱 標誌 1 34s 2082s 2049s 啟動 bios_grub 3 2083s 250034s 247952s ext2 RootBoot **2 250035s 156301438s 156051404s 一切**
由於必須削減 15 GiB,因此新的端變為
156301438 - 15 * 1024 * 1024 * 2 = 124844158
. 由於我想更改分區 2,我首先必須將其刪除,然後使用標籤“Everything”重新創建它(如果您願意,可以更改)。注意:此磁碟具有 GPT 佈局。對於 MBR,您應該替換Everything
為primary
或extended
(未經測試,在 MBR 上調整分區大小尚未經過測試,因此不推薦,因為它未經測試)。警告:以下命令已破壞數據。不要在不了解發生了什麼的情況下複製它。必須更改扇區尺寸,否則您將破壞您的分區。我對你的愚蠢不負責任,在你的數據冒險之前備份你的數據到第二個儲存介質。
(分開) **rm 2** (分開) **mkpart Everything 250035s 124844158s** 警告:生成的分區未正確對齊以獲得最佳性能。 忽略/取消?**忽略** (分開)**p** 型號:ATA INTEL SSDSA2CW08 (scsi) 磁碟 /dev/sda: 156301488s 扇區大小(邏輯/物理):512B/512B 分區表:**gpt** 編號 開始 結束 大小 文件系統 名稱 標誌 1 34s 2082s 2049s 啟動 bios_grub 3 2083s 250034s 247952s ext2 RootBoot 2 250035s **124844158s 124594124s** 一切 (分開)**退出**
在上面的
parted
例子中,我的扇區沒有對齊,這是之前安裝的一個錯誤,不要太在意。這就對了!您可以使用
cryptsetup status
andfile -Ls /dev/...
驗證一切正常,然後重新啟動。