UUIDs and Linux: Everything you ever need to know
Selasa, 19 Maret 2013
0
komentar
http://liquidat.wordpress.com/2013/03/13/uuids-and-linux-everything-you-ever-need-to-know
What is so special about UUIDs in Linux? I don’t know! But a single, simple short tip about looking up UUIDs in Linux from 2007 is one of the most successful posts I ever wrote! And is still looked up by hundreds each day! So I decided: Feed the masses.
Here is everything you ever need to know about UUIDs on Linux. The list is feature complete. Of course. *cough*
 
 
UUIDs are probably best known in Linux as identifier for block  devices. The Windows world knows UUIDs in the form of Microsoft’s  globally unique identifiers, GUID, which are used in Microsoft’s  Component Object Model.
The UUIDs are generated in various variants: originally most of them were derived from the Computer’s MAC, later hash sums of names were used. And about the question, how many UUIDs there are and how big the chance is that you will generate a a number you already own, here are some numbers from Wikipedia’s UUID article:
 
 
For the block device itself, the uuid is stored in the superblock. 
 
 
There is also the library libuuid which is used by 
 
So, first the
 
The second call uses the tool 
 
And there are even more ways! Let’s install 
 
As you see 
Or how about udevadm? It is the udev provided tool for querying data from the udev database. This database contains all the information udev has about the system, so the UUID info is just one among many, many other data. If you are writing a “modern” script which integrates with Linux standard tools nicely, I guess I would go with udev. But for pure, quick and dirty command line utilization, it produces a bit too many information, just like
 
In this context the tool 
 

 
 
What is so special about UUIDs in Linux? I don’t know! But a single, simple short tip about looking up UUIDs in Linux from 2007 is one of the most successful posts I ever wrote! And is still looked up by hundreds each day! So I decided: Feed the masses.
Here is everything you ever need to know about UUIDs on Linux. The list is feature complete. Of course. *cough*
Background
UUIDs are 128 bit long numbers represented by 32 hexadecimal digits and which are used in software development to uniquely identify information with no further context. They are described in RFC 4122, an example UUID is:| 1 | 13152fae-d25a-4d78-b318-74397eb08184 | 
The UUIDs are generated in various variants: originally most of them were derived from the Computer’s MAC, later hash sums of names were used. And about the question, how many UUIDs there are and how big the chance is that you will generate a a number you already own, here are some numbers from Wikipedia’s UUID article:
After generating 1 billion UUIDs every second for the next 100 years, the probability of creating just one duplicate would be about 50%. The probability of one duplicate would be about 50% if every person on earth owns 600 million UUIDs.
Usage in fstab
As mentioned UUIDs are most often used in Linux to identify block devices. Imagine, you have a couple of hard disks attached via USBs, than there is no persistent, reliable naming of the devices: sometimes the first USB hard disk is named “sda”, sometimes it is named “sdb”. So to uniquely address the right disk for example in your/etc/fstab, you have to add an entry like:| 1 | UUID=9043278a-1817-4ff5-8145-c79d8e24ea79 /boot ext3 defaults 0 2 | 
Linux implementation and generation
In Linux UUIDs are generated in/drivers/char/random.c?id=refs/tags/v3.8, and you can generate new ones via proc:| 1 2 | $ cat /proc/sys/kernel/random/uuideaf3a162-d770-4ec9-a819-ec96d429ea9f | 
uuidgen and especially by the ext2/3/4 tools E2fsprogs to generate UUIDs:| 1 2 | $ uuidgen f81cc383-aa75-4714-aa8a-3ce39e8ad33c | 
How to get them, bash style
The most interesting part in UUIDs is most likely how to get the current UUIDs of the hard disks. As already mentioned years ago, there are two major ways to retrieve them: a simplels call in a special directory, and the tool blkid.So, first the
ls call which has to be made in the directory /dev/disk/by-uuid.  The directory contains links named after the UUIDs and pointing to the  “real” block device files. Pretty handy if you are on a system where  hardly anything is installed.| 1 2 | $ ls -l /dev/disk/by-uuidlrwxrwxrwx 1 root root 10 11. Okt 18:02 53cdad3b-4b01-4a6c-a099-be1cdf1acf6d -> ../../sda2 | 
blkid which is part of the util-linux package. It provides a real interface to actually query for certain devices and also supports searching for labels.| 1 2 | $ blkid /dev/sda1/dev/sda1: LABEL="/" UUID="ee7cf0a0-1922-401b-a1ae-6ec9261484c0" SEC_TYPE="ext2" TYPE="ext3" | 
hwinfo:| 1 2 3 4 5 6 | $ hwinfo --block[...]  UDI: /org/freedesktop/Hal/devices/volume_uuid_3e953ee0_79f2_4d94_98b3_5f49ad652b7c[...]  Device Files: [...] /dev/disk/by-uuid/3e953ee0-79f2-4d94-98b3-5f49ad652b7c[...] | 
hwinfo lists huge amounts of data about your  hardware – among them are the UUIDs of the devices. Use it when you are  grabbing for more data about the block devices anyway.Or how about udevadm? It is the udev provided tool for querying data from the udev database. This database contains all the information udev has about the system, so the UUID info is just one among many, many other data. If you are writing a “modern” script which integrates with Linux standard tools nicely, I guess I would go with udev. But for pure, quick and dirty command line utilization, it produces a bit too many information, just like
hwinfo.| 1 2 3 4 5 | $ udevadm info -q all -n /dev/sda1|grep uuidS: disk/by-uuid/9043278a-1817-4ff5-8145-c79d8e24ea79E: [...] /dev/disk/by-uuid/9043278a-1817-4ff5-8145-c79d8e24ea79E: ID_FS_UUID=9043278a-1817-4ff5-8145-c79d8e24ea79E: ID_FS_UUID_ENC=9043278a-1817-4ff5-8145-c79d8e24ea79 | 
udevinfo is also mentioned  sometimes. However, that is deprecated, most distributions don’t ship it  anymore. Also, another often mentioned way to retrieve the UUIDs is the  program /lib/vol/vol_id. But as described in bug redhat#476379 vol_id is only a private udev function. It should not be used by outside  programs (or people) since the application interface is not stable.  Also, the entire program might be removed in the future and in fact is  already removed on some distributions.How to get them, GUI style
If you are afraid of shells, there is of course a KDE-GUI tool available as well to look up the UUID:/usr/bin/kcmshell4 devinfoSetting a UUID
As mentioned in the comment section, it can be also interesting to set a UUID. Since the UUID is part of the superblock the way to set it depends on the used file system. For ext file systems you can usetune2fs:| 1 | # tune2fs -U new_uuid /dev/sdaX | 
Anything else
If you have any other, further information, please post them in the comments! I will happily add them here. After all, my years old short tip already got me 250 k visits, I wonder how many a comprehensive list will bring me…TERIMA KASIH ATAS KUNJUNGAN SAUDARA
Judul: UUIDs and Linux: Everything you ever need to know
Ditulis oleh Unknown
Rating Blog 5 dari 5
Semoga artikel ini bermanfaat bagi saudara. Jika ingin mengutip, baik itu sebagian atau keseluruhan dari isi artikel ini harap menyertakan link dofollow ke https://androidblackberries.blogspot.com/2013/03/uuids-and-linux-everything-you-ever.html. Terima kasih sudah singgah membaca artikel ini.Ditulis oleh Unknown
Rating Blog 5 dari 5
 
0 komentar:
Posting Komentar