If you tried installing or upgrading Ubuntu recently, you probably noticed that all the storage devices are now using UUID – Universally Unique IDentifiers. I'm not claiming to know everything there is to know about UUIDs, but have become quite comfortable managing them lately, so hopefully this post will help you achieve the same.
What is a UUID exactly?
UUID is a Universally Unique IDentifier. It's a identification code given to each storage device you have on your system, aimed to help you uniquely identify each device no matter what.
UUIDs can be used to identify DVD drives, removable media (USB flashsticks) and each partition on any of your hard drives.
This is how a typical UUID looks:
Why use UUID?
Reason 1: Truly unique identification
UUID is the only way to guarantee you recognize the same drive or partition no matter what. For example, if you introduce to your system another hard drive, this might upset quite a few things, starting with the way your system boots up (or stops booting up upon the new drive introduction). Using UUID helps remedy most of such things.
Reason 2: Device names are not always persistent
Automatically assigned device names in your system are not consistent, they are according to the order of loading the kernel modules up during (most usually) the startup time, and thus the names will look different if you boot with one of your USB flashsticks attached and then reboot after you plug it out.
Generally, I've also found UUIDs really useful for mounting my removable media – I have a USB reader, one of the 24-in-1 kinds – it supports various types of cards and I use UUID to always mount the same card at the same location.
Reason 3: Most critical functionality of your Ubuntu system already depends on UUIDs
GRUB – your boot loader – relies on UUIDs as well. If you look into /boot/grub/menu.lst file, you'll find something similar to this:
title Ubuntu hardy (development branch), kernel 2.6.24-16-generic
kernel /boot/vmlinuz-2.6.24-16-generic root=UUID=c73a37c8-ef7f-40e4-b9de-8b2f81038441 ro quiet splash
List UUIDs for all your devices
If you are using one of the recent releases of Ubuntu (UUIDs have been there since Edgy), you can use the blkid command to get a list of all the drives and partitions along with their UUIDs:
ubuntu# blkid /dev/sda1: UUID="2220CF8220CF5B83" TYPE="ntfs" /dev/sda2: UUID="48E81F29E81F14B2" LABEL="DRIVE-D" TYPE="ntfs" /dev/sdb1: UUID="c73a37c8-ef7f-40e4-b9de-8b2f81038441" SEC_TYPE="ext2" TYPE="ext3" /dev/sdb5: TYPE="swap" UUID="abe7529e-dcd5-4afc-b714-05569dbcd30b" /dev/sdb6: UUID="f34c8c7c-a020-4a14-8c97-257180240250" SEC_TYPE="ext2" TYPE="ext3" /dev/sdb7: UUID="8fa274ca-5b22-411f-b5da-7469c1f276da" SEC_TYPE="ext2" TYPE="ext3" /dev/sdc1: UUID="1e36f323-c4e5-4f55-ba0a-838643550bf9" TYPE="ext3" SEC_TYPE="ext2" /dev/sdc2: UUID="83aa92e4-4df4-4aab-80f3-9bbb447e0459" TYPE="ext3" SEC_TYPE="ext2"
As you can see, I've still got a few NTFS partitions as I'm slowly migrating my data from Windows after my switch to Ubuntu desktop a couple months ago.
Get UUID for a particular device
If you know a device name and just want to confirm the UUID for it to later use it in /etc/fstab, here's how you can do it using vol_id command:
ubuntu# vol_id -u /dev/sdb1 c73a37c8-ef7f-40e4-b9de-8b2f81038441
That's all I can think of so far. I know a few more things about UUID which I'll share in a separate post, but it's a start.
Have you got any more great ideas and tips for UUID? Let me know and I'll be sure to share them with others in the future posts.
If you want to learn more, here's a great book:
- How to mount an ISO image
- Find large files and directories in Unix
- Using UUIDs – Ubuntu Help wiki
- How to find the default block size in Unix