2 x 3TB + GPT + Grub2 + RAID + LVM + ENCRYPTION
The idea is to have two harddrives in mirror mode with complete system encryption. For each harddrive we need a BIOS boot partition with grub core.img stuff in them. They have to be configured and installed (in grub) in such a way that each harddrive can boot from itself. I have decided to have the swap partitions not in any RAID configuration. Each harddrive will have a separated swap partition, each swap will be encrypted with a random key. The rest of the disk is the whole linux system (including /boot). This is going to be a RAID1 (copy) with a LVM on top (to allow future extension) and encryption on top.
In each harddrive do the following:
- Create GPT partition table with gdisk. (Check that the alignment is to 2048-sectors for 4Kb harddrives, if not set it like that)
- Create a BIOS boot partition of 1MB (necessary for grub2 on GPT disks)
- Create a Linux swap partition (2G)
- Create a Linux RAID partition (the rest of space)
Now in the first harddrive do:
- Create the Linux RAID1 device:
mdadm --create md0 --level=1 --raid-devices=2 -R /dev/sdf3 missing
- Replace “missing” for your second drive if its already connected.
- For some reason the drive is read only still:
md0 : active (auto-read-only) raid1 sdf3[0] ?????? blocks super 1.2 [2/1] [U_]
- Make it read/write
mdadm --readwrite /dev/md/md0 * Update /etc/mdadm/mdadm.conf
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
- Create an LVM2 logical block device on top of this RAID:
pvcreate /dev/md/md0 vgcreate test /dev/md/md0 lvcreate -l 100%VG -n root test
- Create a dm-crypt on top of the LVM:
modprobe sha512_generic modprobe aes_generic modprobe aes-x86_64 cryptsetup -y luksFormat /dev/test/root -c aes-xts-plain64 -s 512
- Activate dm-crypt:
cryptsetup luksOpen /dev/mapper/test-root test-root_crypt
- Create ext4 partition:
mkfs.ext4 /dev/mapper/test-root_crypt
In this moment the disk is ready for installing software on it. What I'm trying to do is to copy my old harddrive installation into this new system. I will probably copy this using rsync, but first I want to check if the ext4 filesystem can be seen by grub2. I plan to test this from the grub console on my currently running system.
Important commands
blkid - lists uuids of block devices, could be useful for configuring grub. grub-mkdevicemap - could be necessary if you add more harddrives and want to install grub in the new harddrives.