Description
/ on bcache (LVM)
Now we have a stable system with /home on LVM on bcache, we can go forward and have / on bcache. Consider thought that bcache is EXPERIMENTAL!
Setup
To get / on bcache:
- create a Logical Volume:
lvcreate -L 2G -n ROOTFS BCACHE
- create a filesystem:
mkfs -t ext4 -L ROOTFS /dev/BCACHE/ROOTFS
- mount it:
mount /dev/BCACHE/ROOTFS /mnt
- copy your current root filesystem to /mnt:
cp -ax / /mnt
- edit /mnt/fstab so your root fs is mounted like:
LABEL=ROOTFS / ext4 defaults 1 1
- Open terminal
- Switch to root user:
su -
- if needed make a bachup of /home on your root filesystem.
- comment /home out in your /etc/fstab
- unmount /home:
umount /home
- if needed restore your bachup to the /home directory
Now your /home is in your root filesystem. Next:
- create a new filesystem on /dev/bcache0:
mkfs -t ext4 -L ROOTFS /dev/bcache0
- mount it:
mount /dev/bcache0 /mnt
- copy your current root filesystem to /mnt:
cp -ax / /mnt
- edit /mnt/fstab so your root fs is mounted like:
LABEL=ROOTFS / ext4 defaults 1 1
Now we have a duplicate root filesystem on /dev/bcache0. To use it we need to build a new initramfs:
- rename your current initramfs:
mv /boot/initramfs...img /boot/initramfs...img.sav
- build a new initramfs with
dracut -N
Now reboot your system.
- while in grub replace the root=UUID=... parameter in the "linux" line by: root=LABEL=ROOTFS
- boot your system.
If all goes well, your system now boots fine and it's running on bcache!
- Edit your /etc/grub2.cfg file..
- .. duplicate the first "menuentry ... { ...}" (about 15 lines).
- Now change the first one and replace the root=UUID=... parameter in the "linux" line by root=LABEL=ROOTFS
- reboot again
How to test
- reboot your system to see if it boots OK.
- do some other testing if you like.
Expected Results
- All steps complete without errors
Now we have a stable system with /home on LVM on bcache, we can go forward and have / on bcache. Consider thought that bcache is EXPERIMENTAL!
To get / on bcache:
- create a Logical Volume: lvcreate -L 2G -n ROOTFS BCACHE
- create a filesystem: mkfs -t ext4 -L ROOTFS /dev/BCACHE/ROOTFS
- mount it: mount /dev/BCACHE/ROOTFS /mnt
- copy your current root filesystem to /mnt: cp -ax / /mnt
- edit /mnt/fstab so your root fs is mounted like: LABEL=ROOTFS / ext4 defaults 1 1
Now we have a duplicate root filesystem on /dev/BCACHE/ROOTFS. To use it we need to build a new initramfs:
- rename your current initramfs: mv /boot/initramfs...img /boot/initramfs...img.sav
- create a new initramfs: dracut -N
Now reboot your system. Edit your default grub entry:
- replace the root=UUID=... parameter in the "linux" line by: root=LABEL=ROOTFS
- remove any rd.lvm=0 occurrence
- boot it.
If all goes well, your system now boots fine and it's running on bcache!
- Edit your /etc/grub2.cfg file..
- .. duplicate the first "menuentry ... { ...}" (about 15 lines).
- Now change the first one and replace the root=UUID=... parameter in the "linux" line by root=LABEL=ROOTFS
- reboot again
Now your system should boot fine.