Raspberry-Pi

如何在不備份/恢復現有數據的情況下加密外部磁碟?

  • July 6, 2020

我有一個未加密 ext4 的外部 USB 磁碟:

/dev/sda1       3.6T  2.9T  613G  83% /data

我希望加密這個磁碟而不失去數據。我將此磁碟從 Raspberry3 遷移到 Raspberry4,因為我現在希望加密更好的性能。

我閱讀了有關Filesystem 堆棧級加密Block device-level encryption 的資訊,但似乎 LUKS 是最安全的和 Debian 標準。

我閱讀了本指南:

*警告!*以下命令將刪除您正在加密的分區上的所有數據。您將失去所有資訊!因此,請確保在鍵入以下任何命令之前將數據備份到外部源,例如 NAS 或硬碟。

# cryptsetup -y -v luksFormat /dev/xvdc

我無法將 4 TB 數據複製到另一個磁碟,因為我沒有這麼大容量的磁碟。

如何在不備份/恢復現有數據的情況下加密此磁碟?是否可以?

這是可能的,但對於所有就地轉換,都存在一定的數據失去風險。

要為 LUKS 標頭騰出空間,除非您打算使用外部標頭,否則您必須首先縮小文件系統(resize2fs如果它是 ext4)。對於 LUKS1,您應該將其縮小 2MiB。對於 LUKS2,您可以將其縮小 4M、16M 或最多 64M。如果您打算使用高級功能(dm-integrity),您可能需要進一步縮小它。

除了縮小之外,如果磁碟分區佈局允許,您也可以使分區更大。

使用離線實用程序加密現有數據cryptsetup-reencrypt:(並非所有發行版都安裝,可能在單獨的包中,否則從原始碼獲取)

# cryptsetup-reencrypt --new --type luks1 --reduce-device-size 2M /dev/sdXn
Enter new passphrase: 
Verify passphrase: 
[A wild progress bar appears.]

使用cryptsetup reencryptLUKS2 線上:

# cryptsetup reencrypt --new --reduce-device-size 16M /dev/sdXn

WARNING!
========
This will overwrite data on LUKS2-temp-2c9761be-a765-4349-aa0a-553203e534f1.new irrevocably.

Are you sure? (Type uppercase yes): 

Enter passphrase for LUKS2-temp-2c9761be-a765-4349-aa0a-553203e534f1.new: 
Verify passphrase: 
[A wild progress bar appears.]

因此,只要在整個過程中沒有發生電源或電纜故障,這就行得通。

正如cryptsetup-reencrypt手冊頁所說:

在使用此工具之前,請始終確保您有可靠的備份。

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