Let’s use /dev/sdc as the example drive to be replaced. Note Webmin can be used for this whole process too if it is installed – we’ll cover Webmin installation in a later post. You’ll also need sufficient free space in the logical volume already to hold all your data while your one drive is removed.
umount /dev/fileserver/shared
Check the filesystem:
e2fsck -f /dev/fileserver/shared
Shrink filesystem in logical volume to lower that the total of all remaining disks:
resize2fs /dev/fileserver/shared 3000G
Reduce size of lv to size of filesystem:
lvreduce -L 3000G /dev/fileserver/shared
Move everything off sdc1:
pvmove /dev/sdc1
Take sdc1 out of the volume group (assuming ‘fileserver’ is your volume group name):
vgreduce fileserver /dev/sdc1
Display new volume group info:
vgdisplay
Remove partition from physical volume:
pvremove /dev/sdc1
Display new PV info:
pvdisplay
You can now remove /dev/sdc from system and replace with bigger disk. This will also be called likely be called /dev/sdc when you next boot so we’ll use than name below. But you can check it first with: fdisk -l (have a look here for some extra disk ID options: http://www.binarytides.com/linux-command-check-disk-partitions/ )
If just replacing like for like (i.e. same size disks) then the vgcfgrestore command can be run – see subsequent part of this series where I describe replacing a failed disk.
Partition new disk*:
fdisk /dev/sdc -> n, -> press {Enter} four times -> t -> 8e -> w
Create physical volume:
pvcreate /dev/sdc1
Extend volume group:
vgextend fileserver /dev/sdc1
Display VG details:
vgdisplay fileserver
Extend logical volume – note use the details in the vgdisplay output to get the TOTAL physical extents number to add, you can use no argument to automatically use ALL free physical extents (PEs):
lvextend –l 12345 /dev/fileserver/shared
Resize the filesystem to use whole logical volume:
resize2fs /dev/fileserver/shared
* Note that fdisk only allows partitions created up to 2Tb. If new drive is >2Tb then need to add whole device as a pv, not just an fdisk LVM partition (see extra info: http://askubuntu.com/questions/274382/how-to-create-a-lvm-partition-physical-volume-2tb). So after you insert the new drive do this instead of the fdisk, pvcreate, and vgextend command above:
partprobe pvcreate /dev/sda vgextend fileserver /dev/sda
Useful sources
http://www.lshift.net/blog/2010/01/15/upgrading-your-disk-with-lvm
http://www.frozenindustries.com/2009/03/21/replace-an-lvm-drive-with-a-larger-one/