Linux

如何在 Solus OS (Linux) 下將 btrfs raid 1 添加到加密的 lvm2 卷組?

  • April 1, 2018

是)我有的:

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 還是其他聽起來相似的東西。

到目前為止我所理解的:

  1. 創建 btrfs RAID
  2. 將 /home 中的所有內容複製到臨時掛載的 /home-btrfs
  3. 做一些魔術來獲得:ssd 上的 /home 消失了,解除安裝 /home-btrfs 將 btrfs-raid 添加到卷組並將 btrfs-raid 安裝為 /home - 一切都再次加密,但空間更大

有誰能給我解釋一下嗎?我不確定我是否理解它足以開始。我不怕終端或任何 cli。我剛剛決定退出 Windows 10 的供應商鎖定並轉而使用 Linux。而且我知道我會通過該配置獲得一些性能命中,但這對我來說沒問題。

我的計劃目前是這樣做的:

  1. gparted 將創建一個分區表 (gpt) 並使用 btrfs 格式化 /dev/sdb1
  2. 打開終端/外殼
  3. sudo mount /dev/sdb1 /home-btrfs
  4. 使用 cp -var /home /home-btrfs 將所有內容從 /home 複製到 /home-btrfs
  5. gparted 將在 /dev/sdc -> /dev/sdc1 上創建一個分區表 (gpt)
  6. btrfs 設備添加 /dev/sdc1 /home-btrfs
  7. btrfs fi balance start -mconvert=raid1,soft -dconvert=raid1,soft /home-btrfs
  8. 打開第二個 shell 來觀察 raid 轉換進度
  9. btrfs 文件系統平衡狀態 /home-btrfs
  10. btrfs balance start -dusage=0 -musage=0 /mnt/btrfs(擺脫空塊)
  11. 我被困住了,因為現在我無法將 lvextend、pvcreate、vgextend 和 lvm2 中的其他東西納入我的計劃。

我為我糟糕的語法道歉。是的,我在這里和Google的搜尋功能上花了很多時間,但找不到我需要的答案。

Solus OS 使用 systemd,因此/etc/crypttab用於配置需要解鎖的 LUKS 設備,以便可以使用/etc/fstab. 這是程序。

使用 LUKS 和 BTRFS 鏡像 (raid1) /home

  1. 使用軟體中心,安裝btrfs-progs.
  2. 創建一個 LUKS 密鑰文件,該文件將儲存在您的加密文件中/並用於解鎖新的 LUKS 容器/homesudo dd bs=512 count=4 if=/dev/urandom of=/root/home.key.
  3. 使用密鑰文件在兩台設備上創建 LUKS 容器:sudo cryptsetup luksFormat /dev/sdb /root/home.key && sudo cryptsetup luksFormat /dev/sdc /root/home.key
  4. 解鎖兩個 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
  5. 創建 BTRFS 文件系統:sudo mkfs.btrfs -d raid1 -m raid1 /dev/mapper/home0 /dev/mapper/home1
  6. 在某處掛載 BTRFS 文件系統(您只需要指定其中一個設備):mount /dev/mapper/home0 /mnt
  7. 創建一個/home子卷,為您提供 BTRFS 更大的靈活性:sudo btrfs subvol create /mnt/home
  8. 將您的主目錄複製到子卷:cp -var /home /mnt
  9. 創建/修改/etc/crypttab以解鎖新的 LUKS 容器:sudo echo "home0 /dev/sdb /root/home.key" >> /etc/crypttab && sudo echo "home1 /dev/sdc /root/home.key"
  10. 修改/etc/fstab以安裝您的新家:sudo echo "/dev/mapper/home0 /home btrfs defaults,subvol=/home" >> /etc/fstab
  11. 重啟。

當您重新啟動時,您的新 raid1 BTRFS 文件系統將安裝在 /home 中。剩下的項目是刪除舊的 /home。要做到這一點:

刪除舊的 /home

  1. 重新啟動,但當 systemd-boot 菜單出現時按e鍵。
  2. 現在您將能夠編輯核心命令行。添加"systemd.unit=rescue"
  3. 按 ENTER 以使用添加的核心命令行啟動,以便您啟動到單使用者模式。這將允許您解除安裝/home.
  4. 解除安裝/homeumount /home
  5. 刪除舊的/home. 小心,我建議進行備份:cd /home && rm -fR .
  6. 重啟。

請注意,既不需要分區也不需要 LVM,因為您僅將整個設備用於 BTRFS。您也不需要重新平衡 BTRFS,因為它從一開始就使用兩個設備和 RAID1 配置創建。

此外,LUKS 容器使用密鑰文件解鎖,因此不會提示您輸入密碼 3 次。但是您可能希望將您的密碼片語添加到另一個 LUKS 插槽中,以防密鑰文件發生問題。

提示

最後,我強烈建議備份所有三個 LUKS 標頭。如果任何標頭損壞並且您沒有備份,那麼您不妨將磁碟送到垃圾填埋場。

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