Tôi đang vật lộn với việc thiết lập một NAS được mã hóa trong một số ngày nay. Kế hoạch cơ bản là có btrfs trên lvm trên luks trên raid1 với lvmcache ở chế độ writBack được ném vào phân vùng gốc để giảm quyền truy cập đĩa.
TL; DR:
Sau khi thiết lập phân vùng và hệ thống tập tin GRUB
không cài đặt được với:
grub-install: warning: Attempting to install GRUB to a disk with multiple partition labels. This is not supported yet..
grub-install: error: embedding is not possible, but this is required for RAID and LVM install.
Phân vùng
Theo Arch Wiki tôi bắt đầu bằng cách thiết lập các phân vùng:
gdisk
đầu ra cho / dev / sda và / dev / sdb:
Disk /dev/sda: 976773168 sectors, 465.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 9EFA6587-E34F-4AC1-8B56-5262480A6C6A
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 4095 1024.0 KiB EF02 BIOS boot partition
2 4096 976773134 465.8 GiB 8300 Linux filesystem
Lưu ý phân vùng khởi động BIOS rõ ràng là bắt buộc GRUB
khi cài đặt ở BIOS/GPT
chế độ.
MDADM
Khi tôi có hai đĩa, tôi muốn chúng trong một RAID1
mảng:
mdadm --create --level=1 --raid-devices=2 /dev/md0 /dev/sda2 /dev/sdb2
root@archiso ~ # mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 name=archiso:0 UUID=bdfc3fea:f4a0ee6d:6ac08012:59ea384b
root@archiso ~ # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb2[1] sda2[0]
488253440 blocks super 1.2 [2/2] [UU]
[>....................] resync = 2.0% (9832384/488253440) finish=96.6min speed=82460K/sec
bitmap: 4/4 pages [16KB], 65536KB chunk
unused devices: <none>
LUKS
Tiếp theo tôi thiết lập một LUKS
âm lượng trên đầu trang RAID
:
root@archiso ~ # cryptsetup luksFormat /dev/md0
WARNING!
========
This will overwrite data on /dev/md0 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
root@archiso ~ # cryptsetup luksOpen /dev/md0 md0-crypt
Enter passphrase for /dev/md0:
LVM
Btrfs
ảnh chụp nhanh có thể được sử dụng thay vì LVM
, nhưng khi viết điều này, không có cách nào để thêm một thiết bị lưu trữ SSD vào Btrfs
. Vì vậy, tôi đã chọn sử dụng LVM
và thêm SSD qua lvmcache
sau:
(Tạo nhóm âm lượng trong một bước :)
root@archiso ~ # vgcreate vg0 /dev/mapper/md0-crypt
Physical volume "/dev/mapper/md0-crypt" successfully created
Volume group "vg0" successfully created
root@archiso ~ # lvcreate -L 100M -C y vg0 -n boot
Logical volume "boot" created.
root@archiso ~ # lvcreate -L 20G vg0 -n root
Logical volume "root" created.
root@archiso ~ # lvcreate -L 10G vg0 -n var
Logical volume "var" created.
root@archiso ~ # lvcreate -L 6G -C y vg0 -n swap
Logical volume "swap" created.
root@archiso ~ # lvcreate -l +100%FREE vg0 -n home
Logical volume "home" created
Kết quả trong cách bố trí sau:
root@archiso ~ # lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
boot vg0 -wc-a----- 100.00m
home vg0 -wi-a----- 429.53g
root vg0 -wi-a----- 20.00g
swap vg0 -wc-a----- 6.00g
var vg0 -wi-a----- 10.00g
Btrfs / Hệ thống tập tin
Tạo các hệ thống tập tin:
root@archiso ~ # mkfs.ext4 /dev/vg0/boot
root@archiso ~ # mkfs.btrfs /dev/vg0/home
root@archiso ~ # mkfs.btrfs /dev/vg0/root
root@archiso ~ # mkfs.btrfs /dev/vg0/var
( ext4
được chọn để khởi động vì btrfs
phàn nàn về kích thước phân vùng nhỏ.)
Gắn kết các hệ thống tập tin:
root@archiso ~ # swapon /dev/vg0/swap
root@archiso ~ # mount /dev/vg0/root /mnt/arch -o compress=lzo
root@archiso ~ # mount /dev/vg0/home /mnt/arch/home -o compress=lzo
root@archiso ~ # mount /dev/vg0/var /mnt/arch/var -o compress=lzo
root@archiso ~ # mount /dev/vg0/boot /mnt/arch/boot
Cài đặt Arch
Trên thực tế tôi chỉ sao chép hệ thống từ bản sao lưu trước:
root@archiso ~ # rsync -Pa /mnt/bkp/sda/* /mnt/arch
( nghỉ giải lao )
Thiết lập mdadm.conf và fstab
root@archiso ~ # genfstab -U /mnt/arch > /mnt/arch/etc/fstab
root@archiso ~ # cat /mnt/arch/etc/fstab
# /dev/mapper/vg0-root
UUID=62ebf0c9-bb37-4b4e-87dd-eb8a4ace6a69 / btrfs rw,relatime,compress=lzo,space_cache 0 0
# /dev/mapper/vg0-home
UUID=53113e11-b663-452f-b4da-1443e470b065 /home btrfs rw,relatime,compress=lzo,space_cache 0 0
# /dev/mapper/vg0-var
UUID=869ffe10-7a1c-4254-9612-25633c7ae619 /var btrfs rw,relatime,compress=lzo,space_cache 0 0
# /dev/mapper/vg0-boot
UUID=d121a9df-8c03-4ad9-a6e0-b68739b1a358 /boot ext4 rw,relatime,data=ordered 0 2
# /dev/mapper/vg0-swap
UUID=29035eeb-540d-4437-861b-c30597bb7c16 none swap defaults 0 0
root@archiso ~ # mdadm --detail --scan >> /mnt/arch/etc/mdadm.conf
root@archiso ~ # cat /mnt/arch/etc/mdadm.conf
[...]
ARRAY /dev/md0 metadata=1.2 name=archiso:0 UUID=bdfc3fea:f4a0ee6d:6ac08012:59ea384b
Chroot vào hệ thống
root@archiso ~ # arch-chroot /mnt/arch /bin/bash
[root@archiso /]#
mkinitcpio.conf
Những cái móc này đã được thêm vào: mdadm_udev encrypt lvm2 btrfs
[root@archiso /]# mkinitcpio -p linux
Cấu hình GRUB
Bây giờ là phần thú vị (và thất bại), tôi đã chọn GRUB
làm bộ tải khởi động của mình vì nó sẽ hỗ trợ tất cả các mâu thuẫn mà tôi sử dụng.
Người giới thiệu:
- https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#LVM_on_LUKS
- http://www.pavelkogan.com/2014/05/23/luks-full-disk-encoding/
Phần thay đổi trong /etc/default/grub
:
GRUB_CMDLINE_LINUX="cryptdevice=/dev/md0:vg0"
GRUB_ENABLE_CRYPTODISK=y
Cài đặt grub:
[root@archiso /]# grub-install --target=i386-pc --recheck /dev/sda
Installing for i386-pc platform.
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
grub-install: warning: Attempting to install GRUB to a disk with multiple partition labels. This is not supported yet..
grub-install: error: embedding is not possible, but this is required for RAID and LVM install.
( --debug
đầu ra có sẵn ở đây )
Thành thật mà nói ... tôi không biết vấn đề ở đây là gì. Trong chế độ BIOS / GPT GRUB có nên nhúng core.img vào ef02/BIOS boot
phân vùng không?
Biên tập
https://bbs.archlinux.org/viewtopic.php?id=144254 không áp dụng tại đây:
[root@archiso /]# btrfs fi show --all-devices
Label: none uuid: 62ebf0c9-bb37-4b4e-87dd-eb8a4ace6a69
Total devices 1 FS bytes used 965.77MiB
devid 1 size 20.00GiB used 3.04GiB path /dev/mapper/vg0-root
Label: none uuid: 869ffe10-7a1c-4254-9612-25633c7ae619
Total devices 1 FS bytes used 339.15MiB
devid 1 size 10.00GiB used 3.04GiB path /dev/mapper/vg0-var
Label: none uuid: 53113e11-b663-452f-b4da-1443e470b065
Total devices 1 FS bytes used 384.00KiB
devid 1 size 429.53GiB used 2.04GiB path /dev/mapper/vg0-home
Btrfs v3.17.3
grub
gói không grub-legacy
).
grub
hoàn toàn. Và bạn cũng có thể làm mà không cần lvm
- bcache
là một phương tiện đơn giản hơn nhiều để xử lý một thiết bị lưu trữ ssd. Nhân tiện - bạn không cần riêng biệt /boot
- đã có sẵn trong phân vùng hệ thống EFI của bạn. Đặt initramfs và kernel hệ thống của bạn vào đặc biệt trong một thư mục nào đó, gắn kết thư mục đó /boot
vào /etc/fstab
và sau đó chỉ cần tải trực tiếp kernel từ firmware mà không cần bộ tải khởi động trung gian. Dù sao họ cũng chỉ đau đầu thôi. Nếu bạn muốn các menu khởi động - ala grub
- có được một cái gì đó dễ dàng hơn - rEFInd
là tốt đẹp.