如何在 Solus OS (Linux) 下將 btrfs raid 1 添加到加密的 lvm2 卷組?
是)我有的:
Solus OS 在 56G SSD 上使用加密的 LVM2 安裝,不帶交換 - 效果很好。我有 32G 記憶體,所以交換現在不是問題——它是我未來的主要裝備,主要用作辦公室、網路、daw 和 rust 程式的桌面(不是同時進行所有操作)。
我想做的事:
在 raid 1 配置中添加兩個用 btrfs 格式化的 1T hds 到實際的 lvm2 卷組,它們應該包含 /home(所有已經存在的東西)並在引導期間被掛載為 /home,這樣我就有 1T 空間用於帶有軟體鏡像的 /home。RAID 級別 1 必須用於數據和元數據。
/home 應使用已使用的關鍵字保持加密狀態。另外,我想使用 -o 壓縮力來安裝 btrfs,這必須在 fstab 和 fscrypt 中完成。我目前不確定是 fscrypt 還是其他聽起來相似的東西。
到目前為止我所理解的:
- 創建 btrfs RAID
- 將 /home 中的所有內容複製到臨時掛載的 /home-btrfs
- 做一些魔術來獲得:ssd 上的 /home 消失了,解除安裝 /home-btrfs 將 btrfs-raid 添加到卷組並將 btrfs-raid 安裝為 /home - 一切都再次加密,但空間更大
有誰能給我解釋一下嗎?我不確定我是否理解它足以開始。我不怕終端或任何 cli。我剛剛決定退出 Windows 10 的供應商鎖定並轉而使用 Linux。而且我知道我會通過該配置獲得一些性能命中,但這對我來說沒問題。
我的計劃目前是這樣做的:
- gparted 將創建一個分區表 (gpt) 並使用 btrfs 格式化 /dev/sdb1
- 打開終端/外殼
- sudo mount /dev/sdb1 /home-btrfs
- 使用 cp -var /home /home-btrfs 將所有內容從 /home 複製到 /home-btrfs
- gparted 將在 /dev/sdc -> /dev/sdc1 上創建一個分區表 (gpt)
- btrfs 設備添加 /dev/sdc1 /home-btrfs
- btrfs fi balance start -mconvert=raid1,soft -dconvert=raid1,soft /home-btrfs
- 打開第二個 shell 來觀察 raid 轉換進度
- btrfs 文件系統平衡狀態 /home-btrfs
- btrfs balance start -dusage=0 -musage=0 /mnt/btrfs(擺脫空塊)
- 我被困住了,因為現在我無法將 lvextend、pvcreate、vgextend 和 lvm2 中的其他東西納入我的計劃。
我為我糟糕的語法道歉。是的,我在這里和Google的搜尋功能上花了很多時間,但找不到我需要的答案。
Solus OS 使用 systemd,因此
/etc/crypttab
用於配置需要解鎖的 LUKS 設備,以便可以使用/etc/fstab
. 這是程序。使用 LUKS 和 BTRFS 鏡像 (raid1) /home
- 使用軟體中心,安裝
btrfs-progs
.- 創建一個 LUKS 密鑰文件,該文件將儲存在您的加密文件中
/
並用於解鎖新的 LUKS 容器/home
:sudo dd bs=512 count=4 if=/dev/urandom of=/root/home.key
.- 使用密鑰文件在兩台設備上創建 LUKS 容器:
sudo cryptsetup luksFormat /dev/sdb /root/home.key && sudo cryptsetup luksFormat /dev/sdc /root/home.key
- 解鎖兩個 LUKS 容器:
sudo cryptsetup open --type luks /dev/sdb home0 --key-file /root/home.key && sudo cryptsetup open --type luks /dev/sdc home1 --key-file /root/home.key
- 創建 BTRFS 文件系統:
sudo mkfs.btrfs -d raid1 -m raid1 /dev/mapper/home0 /dev/mapper/home1
- 在某處掛載 BTRFS 文件系統(您只需要指定其中一個設備):
mount /dev/mapper/home0 /mnt
- 創建一個
/home
子卷,為您提供 BTRFS 更大的靈活性:sudo btrfs subvol create /mnt/home
- 將您的主目錄複製到子卷:
cp -var /home /mnt
- 創建/修改
/etc/crypttab
以解鎖新的 LUKS 容器:sudo echo "home0 /dev/sdb /root/home.key" >> /etc/crypttab && sudo echo "home1 /dev/sdc /root/home.key"
- 修改
/etc/fstab
以安裝您的新家:sudo echo "/dev/mapper/home0 /home btrfs defaults,subvol=/home" >> /etc/fstab
- 重啟。
當您重新啟動時,您的新 raid1 BTRFS 文件系統將安裝在 /home 中。剩下的項目是刪除舊的 /home。要做到這一點:
刪除舊的 /home
- 重新啟動,但當 systemd-boot 菜單出現時按e鍵。
- 現在您將能夠編輯核心命令行。添加
"systemd.unit=rescue"
- 按 ENTER 以使用添加的核心命令行啟動,以便您啟動到單使用者模式。這將允許您解除安裝
/home
.- 解除安裝
/home
:umount /home
。- 刪除舊的
/home
. 小心,我建議進行備份:cd /home && rm -fR .
- 重啟。
請注意,既不需要分區也不需要 LVM,因為您僅將整個設備用於 BTRFS。您也不需要重新平衡 BTRFS,因為它從一開始就使用兩個設備和 RAID1 配置創建。
此外,LUKS 容器使用密鑰文件解鎖,因此不會提示您輸入密碼 3 次。但是您可能希望將您的密碼片語添加到另一個 LUKS 插槽中,以防密鑰文件發生問題。
提示
最後,我強烈建議備份所有三個 LUKS 標頭。如果任何標頭損壞並且您沒有備份,那麼您不妨將磁碟送到垃圾填埋場。