LVM trên LUKS trên bcache
Ở đây, trò chơi búp bê Nga sâu hơn một chút với 3 ngăn xếp / lớp ...
Ý tưởng ban đầu của tôi về câu hỏi này là sử dụng cài đặt Ubuntu mặc định với LVM trên LUKS và chuyển đổi nó thành một thiết bị sao lưu bcache với các khối nhưng nó không hoạt động với tôi trong thử nghiệm với LVM.
Hơn nữa, trình cài đặt Ubuntu ( ubiquity ) quá hạn chế để cài đặt bên trong một thiết bị bcache được chuẩn bị trước (ít nhất là với LUKS trên LVM), vì vậy chúng tôi chuyển sang phương pháp thực hiện thủ công.
Khởi động vào CD / USB trực tiếp và chọn "Dùng thử Ubuntu" và mở một thiết bị đầu cuối
Cài đặt sẵn
sudo -i
# Define some variable to avoid confusion and error
luks_part=/dev/sda3
boot=/dev/sda2 # boot partition
caching_bcache=/dev/sdb # SSD or partition in SSD
# Do secure erase of encrypted backing and caching device (see Notes [1])
dd if=/dev/urandom of=$luks_part || dd if=/dev/urandom of=$caching_bcache
# Go and grab some coffe, this will take a while...
apt-get install bcache-tools
# Setup bcache caching and backing devices
make-bcache -C $caching_bcache -B $luks_part
# (Optional) Tweak bcache
echo writeback > /sys/block/bcache0/bcache/cache_mode
# Below we now create manually what ubiquity should have done for us
# Setup LUKS device on bcache device
cryptsetup --key-size 512 luksFormat /dev/bcache0
cryptsetup luksOpen /dev/bcache0 crypted
# Setup LVM on LUKS
# You can skip that part if you don't want to use a swap
# or don't want to use multiple partition. Use /dev/mapper/crypted
# as you root latter on
pvcreate /dev/mapper/crypted
vgcreate vg /dev/mapper/crypted
lvcreate -L 1G vg -n swap
lvcreate -l 100%FREE vg -n root
Cài đặt
Giữ thiết bị đầu cuối mở và bây giờ chạy cài đặt. Chọn "Cái gì khác" khi phân vùng và chỉ định
- phân vùng khởi động của bạn (
/dev/sda2
)
- phân vùng gốc của bạn (
/dev/mapper/vg-root
)
- trao đổi của bạn (
/dev/mapper/vg-swap
)
và chọn hộp kiểm để định dạng phân vùng của bạn
Khi kết thúc quá trình cài đặt, không khởi động lại mà chỉ cần nhấp vào "Tiếp tục dùng thử Ubuntu"
Cài đặt sau
Trong thiết bị đầu cuối mở của chúng tôi
# Install bcache-tools to add bcache module to initramfs
mount /dev/mapper/vg-root /mnt
mount $boot /mnt/boot
mount -o bind /sys /mnt/sys
mount -o bind /proc /mnt/proc
mount -o bind /dev /mnt/dev
chroot /mnt
# To get apt-get running in the chroot
echo 'nameserver 8.8.8.8' > /run/resolvconf/resolv.conf
apt-get install bcache-tools
# Create /etc/crypttab to add crypted bcached partition
echo "crypted UUID=`blkid -o value /dev/bcache0|head -1` none luks" > /etc/crypttab
exit
sync
umount /mnt/sys
umount /mnt/proc
umount /mnt/dev
umount /mnt/boot
umount /mnt
vgchange -an /dev/mapper/crypted
cryptsetup luksClose crypted
sync
# Reboot & enjoy
Có một lỗi khởi động lại Ubuntu 15.04 đã biết từ Live CD / USB, do đó bạn có thể phải buộc khởi động lại / tắt máy
Kiểm tra
Sau khi khởi động, bạn có thể kiểm tra /dev/bcache0
trên thực tế đó là phân vùng LUKS với
if sudo cryptsetup isLuks /dev/bcache0; then \
echo "crypted";\
else echo "unencrypted";\
fi
Điều này là do nó là bộ đệm của phân vùng LUKS của bạn và bây giờ bạn truy cập dữ liệu của mình qua thiết bị /dev/bcache0
và không bao giờ từ thiết bị sao lưu gốc ( /dev/sda3
tại đây)
Người giới thiệu
http://bcache.evilpiepirate.org/
https://wiki.archlinux.org/index.php/Bcache
https://wiki.archlinux.org/index.php/Dm-crypt
bcache-status chưa được chính thức sáp nhập vào bcache-tools. Bạn có thể có nó ở đây: https://gist.github.com/djwong/6343451
[1] Có thể có những cách tốt hơn để thực hiện việc lau này