Mirroring OS after installation

Introduction

This procedure was originally used on cercis, which had two disks but now only has one. It’s presented in a very rough format. Should I use it again, then I’ll tidy it up.

Procedure

#   see http://linuxadministration.us/?p=154
dd if=/dev/sda of=/dev/sdb bs=10240 count=1 
pvcreate /dev/sdb
#  create smallest possible fs on second disk for copy of OS
lvcreate --size=2g --name=roottmp /dev/vg0 /dev/sdb2
mkfs -t ext4 /dev/vg0/roottmp
mount /dev/vg0/roottmp /mnt
rsync -ax / /mnt/
#  change device for / from /dev/vg0/root to /dev/vg0/roottmp
vi /mnt/fstab                                  
#  device map is out of date
grub-mkdevicemap                               
#  write grub info to /dev/sda and /dev/sdb
LANG=C dpkg-reconfigure grub-pc                
#  change vg0-root to vg0-roottmp on boot disk
vi /boot/grub/grub.cfg                         
reboot
#  verify that roottmp is open and that root is not open
lvs                                            
#  not needed now and space is needed  for *mirrored* root 
#  vol, which we're about to create
lvremove /dev/vg0/root                         
#  determine how big a volume you can create for root
pvs                                            
lvcreate --name=root --size=13g --mirrors 1 \
	--mirrorlog mirrored /dev/vg0 /dev/sda2 /dev/sdb2
#  wait for mirroring to complete
watch lvs -a -o +devices                       
mkfs -t ext4 /dev/vg0/root
mount /dev/vg0/root /mnt
rsync -ax / /mnt/
#  change device for / from /dev/vg0/roottmp to /dev/vg0/root
vi /etc/fstab                                  
#  change vg0-roottmp to vg0-root (this is not needed; 
#  rsync/vi order above means not needed)
vi /boot/grub/grub.cfg                         
reboot
#  verify that root is open and that roottmp is not open
lvs                                            
#  no longer needed
lvremove /dev/vg0/roottmp                      
#  not needed now and space is needed for *mirrored* swap vol, 
#  which we're about to create
swapoff /dev/vg0/swap                          
lvremove /dev/vg0/swap
lvcreate --name=swap --size=476m --mirrors=1 \
	--mirrorlog=mirrored /dev/vg0 /dev/sda2 /dev/sdb2
#  wait for mirroring to complete
watch lvs -a -o +devices                       
mkswap /dev/vg0/swap
swapon -s
#  device map is out of date (rsync/vi order above means 
#  previous updated device map lost)
grub-mkdevicemap                               
#  write grub info to /dev/sda and /dev/sdb
LANG=C dpkg-reconfigure grub-pc            

See also