Replacing/Upgrading a Data Disk
In the unlucky event that one of your data disks starts to show S.M.A.R.T. errors warning of its decline, or you are just running out of storage space, this article describes how to provision a new disk and migrate the data to replace the old one.
Supported Releases
Should work in all Ubuntu releases. Tested from 10.04 (Lucid Lynx) to 13.10 (Saucy Salamander) on Ubuntu 32/64-bit.
Required Packages
None, as the required tools should already be present.
Configuration
Firstly, shut the machine down and attach your new disk to the SATA/SAS/SCSI bus and give it some power. Once connected, restart the machine, log on and become root:
sudo -s
Create a list of the disks connected to the machine:
sudo lshw -C disk
The output will be similar to below:
*-disk description: ATA Disk product: IC25N040ATCS04-0 vendor: Hitachi physical id: 0 bus info: ide@0.0 logical name: /dev/sdb version: CA4OA71A serial: CSH405DCLSHK6B size: 37GB capacity: 37GB
Locate your new disk (by make/model) and make a note of its logical name.
Now create a partition on the new disk using:
parted /dev/sdx
If your new disk is 2TB or below, complete the command as follows:
mklabel msdos mkpart pri 1 -1 quit
If your new disk is larger than 2TB, complete the command as follows:
mklabel gpt mkpart pri 1 -1 quit
Now format the new partition using:
mkfs -t ext4 /dev/sdx1
Mount the newly formatted parition at /mnt
so that we can copy the data to it:
mount /dev/sdx1 /mnt
Copy the data from the old disk to the new one using (omit the v
from the options if you don't wish to see detailed output as the copy proceeds):
rsync -aAXv /srv/ /mnt 2> sync_errors.txt
Review the sync_errors.txt
file (if any) created during the copy to check for any files that may not have copied completely. This is easiest with:
less sync_errors.txt
Now we must update /etc/fstab
to mount the new disk to /srv
during boot. Ubuntu now uses UUIDs to mount disks during boot. To locate these, run:
blkid
Locate the /dev/sdx1
line in the output, similar to the following:
/dev/sdx1: UUID="24e13b29-9c40-4cab-96aa-31777017b031" TYPE="ext4"
Make a note (or better still, copy to the clipboard) the UUID of the new disk and then edit the fstab:
nano /etc/fstab
Locate the line that contains /srv
and update the UUID entry in it, so that it looks similar to the following:
UUID=24e13b29-9c40-4cab-96aa-31777017b031 /srv ext4 defaults 0 2
Save the file and exit.
You are now ready to shut the machine down, remove the failing/old disk and ensure the new one is securely mounted in its permanent position. When you restart the machine the new disk should automatically mount as /srv
and contain all the data from the old one.