- Как узнать UUID разделов в Linux
- Команда blkid
- Команда blkid без опций
- Команда blkid с опцией -c
- Опция -t
- Опция -s
- Опция -o
- Опция -l
- Опция -g
- Опция -w
- Опция -h
- Опция -v
- Команда vol_id
- Как прописываются дискам UUID
- Как узнать UUID в Linux
- Формат UUID
- Как узнать (найти) UUID
- Использование команды lsblk
- Использование команды ls
- Заключение
- How to Get the UUID of a Disk Partition in Linux
- Using the blkid utility to get UUID
- Using the lsblk utility to get UUID
- Wrapping Up
Как узнать UUID разделов в Linux
В новых дистрибутивах Linux вместо названий дисков из /dev каталога часто указывают UUID — Уникальные Идентификаторы. Выглядят они абсолютно нечитаемо для человека, например: UUID=»5a179614-0415-48c6-a9ad-3f6ad9596619″.
Когда возникает необходимость перенести содержимое с одного носителя на другой, потом встает большая проблема правильно внести изменения в файл /etc/fstab вручную. С UUID’ами же ядро, при помощи специальных программ, автоматически находит и размечает разделы по соответствующим носителям. Это экономит много сил и времени.
Возможно иногда целесообразнее «старая школа» — именование устройств в стиле /dev/sda.
При клонировании разделов командой dd возникают два раздела с одинаковыми UUID.
Команда blkid
Программа blkid, используя библиотеку libblkid, умеет читать содержимое файлов блочных устройств типа /dev/hda2. Эти специальные файлы, находящиеся в директории /dev иначе называются нодами устройств, имеют весьма специфичную структуру, и не могут быть прочитаны обычными средствами (скажем, командой cat).
Однако программа blkid по умолчанию не считывает информацию о разделах непосредственно из соответствующих нод устройств, а считывает ее из файла /etc/blkid.tab. Этот файл зачем-то называется в мане команды blkid кэш файлом, а всем известно, что слово cache имеет множесто значений, а потому совершенно бессмысленно. Должен вас сразу предупредить, что в файле /etc/blkid.tab со временем накапливается устаревшая информация о давно несуществующих разделах, поэтому не думайте читать сам файл в поисках UUID’ов, можете жестоко обмишулиться. Пользуйтесь командой blkid с соответсвующими опциями.
Команда blkid без опций
Команда blkid без опций, запущенная с правами суперпользоателя, выведет на экран дисплея информацию, содержащуюся в файле /etc/blkid.tab:
# blkid /dev/disk/by-id/scsi-SATA_Hitachi_HTS5416_SB344CHRJT80JD-part7: UUID="465e53f5-a682-4fde-8e0c-4c77a533aca7" TYPE="ext3" SEC_TYPE="ext2" LABEL="Common" /dev/sda2: UUID="02E4E3A0E4E39467" LABEL="Vista" TYPE="ntfs" /dev/sda5: UUID="5a179614-0415-48c6-a9ad-3f6ad9596619" TYPE="ext3" SEC_TYPE="ext2" /dev/sda6: TYPE="swap" /dev/sda7: UUID="465e53f5-a682-4fde-8e0c-4c77a533aca7" TYPE="ext3" LABEL="Common" /dev/disk/by-uuid/5a179614-0415-48c6-a9ad-3f6ad9596619: UUID="5a179614-0415-48c6-a9ad-3f6ad9596619" TYPE="ext3" SEC_TYPE="ext2" /dev/sda8: UUID="41825dd5-d866-45f6-bcfd-c4c9aa4de045" SEC_TYPE="ext2" TYPE="ext3" LABEL="lenny" /dev/sda9: UUID="e6758566-4e3b-4cf0-be5e-37949b52c64f" SEC_TYPE="ext2" TYPE="ext3" LABEL="deb2" /dev/sda1: UUID="5408E10E08E0F042" LABEL="WinRE" TYPE="ntfs"
Я предупреждал. Тут, конечно, можно разобраться при желании, но непонятно, откуда может взяться такое желание, когда можно поступить проще. А именно запустить команду blkid с опцией -c.
Команда blkid с опцией -c
Вообще-то опция -c заставляет blkid читать не из файла blkid.tab, а из любого указанного файла. Скажем, /dev/null. Не имея никакой информации из данного файла, команда вынуждена будет прочитать информацию из нод устройств, то есть выдать нам реальную картину на текущий момент:
# blkid -c /dev/null /dev/sda1: UUID="5408E10E08E0F042" LABEL="WinRE" TYPE="ntfs" /dev/sda2: UUID="02E4E3A0E4E39467" LABEL="Vista" TYPE="ntfs" /dev/sda5: UUID="5a179614-0415-48c6-a9ad-3f6ad9596619" TYPE="ext3" /dev/sda6: TYPE="swap" /dev/sda7: LABEL="Common" UUID="465e53f5-a682-4fde-8e0c-4c77a533aca7" TYPE="ext3" /dev/sda8: LABEL="lenny" UUID="41825dd5-d866-45f6-bcfd-c4c9aa4de045" SEC_TYPE="ext2" TYPE="ext3" /dev/sda9: LABEL="deb2" UUID="e6758566-4e3b-4cf0-be5e-37949b52c64f" SEC_TYPE="ext2" TYPE="ext3"
Советую сохранить старые файлы blkid.tab и blkid.tab.old под другими именами, тогда при следующей загрузке будет создан новенький чистенький файлик blkid.tab, где все будет как в выводе команды blkid -c /dev/null . Стоит после этого проверить /etc/fstab и /boot/grub/menu.lst.
Остальные опции команды крайне невыразительны и бесполезны. Чем трудиться запоминать их, проще запустить команду вовсе без опций или с опцией -c /dev/null. Тем не менее:
Опция
# blkid /dev/sda5 /dev/sda5: UUID="5a179614-0415-48c6-a9ad-3f6ad9596619" TYPE="ext3" SEC_TYPE="ext2"
Выдает сведения об указанном устройстве.
Опция -t
# blkid -t TYPE=ntfs /dev/sda2: UUID="02E4E3A0E4E39467" LABEL="Vista" TYPE="ntfs" /dev/sda1: UUID="5408E10E08E0F042" LABEL="WinRE" TYPE="ntfs"
Найдет все устройства, отвечающие заданному критерию, будь то TYPE, LABEL, или UUID. Можно сужать круг поиска, вводя в командную строку имена интересующих устройств:
# blkid -t TYPE=ntfs /dev/sda1 /dev/sda2 /dev/sda6 /dev/sda7 /dev/sda1: UUID="5408E10E08E0F042" LABEL="WinRE" TYPE="ntfs" /dev/sda2: UUID="02E4E3A0E4E39467" LABEL="Vista" TYPE="ntfs"
Опция -s
# blkid -s UUID /dev/sda7 /dev/sda7: UUID="465e53f5-a682-4fde-8e0c-4c77a533aca7"
Выдаст только указанный критерий нужного устройства.
Опция -o
Позволяет выбирать формат вывода из трех возможных: value (значение критерия), device (устройство), или full (полный). Например:
# blkid -o value 465e53f5-a682-4fde-8e0c-4c77a533aca7 ext3 ext2 Common 02E4E3A0E4E39467 Vista ntfs 5a179614-0415-48c6-a9ad-3f6ad9596619 ext3 ext2 swap 465e53f5-a682-4fde-8e0c-4c77a533aca7 ext3 Common 5a179614-0415-48c6-a9ad-3f6ad9596619 ext3 ext2 41825dd5-d866-45f6-bcfd-c4c9aa4de045 ext2 ext3 lenny e6758566-4e3b-4cf0-be5e-37949b52c64f ext2 ext3 deb2 5408E10E08E0F042 WinRE ntfs
Опция -l
Применяется вместе с опцией поиска -t. Но из всего найденного выдаст сведения только об одном устройстве. Обычно это первое прочитанное в файле /etc/blkid.tab устройство.
# blkid -lt TYPE=ntfs /dev/sda2: UUID="02E4E3A0E4E39467" LABEL="Vista" TYPE="ntfs"
Опция -g
В мане сказано, что убирает мусор в каком-то кэше blkid. Если имеется в виду файл /etc/blkid.tab, то не работает.
Опция -w
Записывает данные в указанный вами файл, вместо файла /etc/blkid.tab.
По моему, проще переадресовать в файл «file» вывод команды.
Опция -h
Опция -v
Вот все, что касается команды blkid. Однако существуют и другие возможности узнать UUID раздела.
Самая очевидная — заглянуть в директорию /dev:
# ls /dev/disk by-id by-label by-path by-uuid
Там четыре субдиректории, одна из которых by-uuid. Посмотрим:
total 0 drwxr-xr-x 2 root root 240 Фев 20 23:15 ./ drwxr-xr-x 6 root root 120 Фев 20 23:15 ../ lrwxrwxrwx 1 root root 10 Фев 20 23:15 1db39027-9af8-4843-ba3a-a0fee8919d5e -> ../../sdb5 lrwxrwxrwx 1 root root 10 Фев 20 23:15 39b6e6f9-fbfd-4e66-b247-64b6b72cb4d1 -> ../../sdb1 lrwxrwxrwx 1 root root 10 Фев 20 23:15 5c336568-49c8-44fe-a513-756dd0a971dc -> ../../sdb3 lrwxrwxrwx 1 root root 10 Фев 20 23:15 698556ea-37f1-4815-960f-1fdef5c4eef8 -> ../../sda4 lrwxrwxrwx 1 root root 10 Фев 20 23:15 703bc5e3-5343-4ee3-a265-50696740cffa -> ../../sda2 lrwxrwxrwx 1 root root 10 Фев 20 23:15 8a19a3c1-cd62-48b0-b03e-6cd935339ff9 -> ../../sda1 lrwxrwxrwx 1 root root 10 Фев 20 23:15 a12aab71-f95e-48f4-9a29-028f85dcb1f2 -> ../../sda5 lrwxrwxrwx 1 root root 10 Фев 20 23:15 c1dc689c-95b2-44be-8f24-9d73b4eaad91 -> ../../sda3 lrwxrwxrwx 1 root root 10 Фев 20 23:15 e1b2febf-3b76-4dca-b480-252749fc9c06 -> ../../sdb2 lrwxrwxrwx 1 root root 10 Фев 20 23:15 e55978e2-302c-4e27-8b58-c472c6f69cfc -> ../../sdb4
Команда vol_id
Существует еще команда vol_id. Она настолько простая, и ман к ней так понятно написан, что разобраться с ней не составит труда. Например:
# vol_id /dev/sda2 ID_FS_USAGE=filesystem ID_FS_TYPE=ntfs ID_FS_VERSION=3.1 ID_FS_UUID=02E4E3A0E4E39467 ID_FS_UUID_ENC=02E4E3A0E4E39467 ID_FS_LABEL=Vista ID_FS_LABEL_ENC=Vista ID_FS_LABEL_SAFE=Vista
# vol_id --uuid /dev/sda5 5a179614-0415-48c6-a9ad-3f6ad9596619
Хорошая и удобная команда, жаль, что не во всех дистрибутивах встречается.
Как прописываются дискам UUID
Кто же присваивает устройствам UUID’ы? Где записаны эти самые идентификаторы?
Если говорить о разделах жесткого диска, то UUID’ы присваиваются им в процессе создания файловой системы (некоторые утверждают, что они вычисляются из характеристик раздела), и записываются где-нибудь в суперблоках. Во всяком случае, еще не отформатированный раздел не имеет UUID’а. А при клонировании раздела командой dd, раздел, в который устанавливают клон, меняет свой UUID на идентификатор клона.
При загрузке компьютера, программа udev записывает UUID раздела в его ноду — файл блочного устройства в директории /dev. В доступной пользователю части файловой системы, UUID’ы разделов можно найти в файле /etc/blkid.tab, но информация эта может оказаться устаревшей.
Как узнать UUID в Linux
UUID (Universally Unique identifier) — это 128 битный уникальный номер, стандартизированный Open Software Foundation. UUID помогает идентифицировать разделы в системах Linux. Он генерируется с помощью библиотеки libuuid (используемой e2fsprogs), которая является частью util-linux. Доступна сразу после установки Linux начиная с версии ядра 2.15.1.
UUID создается в локальной системе и всегда уникален.
Если ваша система использует много хранилищ данных, таких как SAN, ISCSI и т. д., то у UUID появляется преимущество. Каждый раз, когда вы перемещаете хранилище, вам не нужно беспокоиться об обновлении /etc/fstab.
В этой статье вы узнаете, как найти UUID накопителей в системе Linux.
Формат UUID
UUID отображается в пяти группах, разделенных дефисами, в виде 8-4-4-4-12 в общей сложности 36 символов.
Как узнать (найти) UUID
В системах на базе Linux/Unix вы можете использовать некоторые утилиты командной строки для поиска UUID устройств. Вы можете найти UUID всех разделов диска системы Linux с помощью команды blkid. Чтобы найти UUID разделов диска, подключенных к вашей системе, выполните следующую команду.
Вы получите следующий результат:
Использование команды lsblk
Вы можете найти UUID разделов устройств с помощью команды lsblk. Например чтобы вывести список UUID разделов устройств, выполните следующую команду lsblk.
$ sudo lsblk -o PATH,SIZE,RO,TYPE,MOUNTPOINT,UUID,MODEL
Ответ терминала будет следующим:
Использование команды ls
В системах Linux сделано так что ОС показывает все устройства как файлы. Таким образом, разделы UUID хранятся в виде файла.
Вы можете перечислить все UUID разделов с помощью команды ls. Для этого вам потребуется ввести:
Ответ в терминале вы увидите следующий.
Заключение
Помните, что UUID будет не очень полезен при работе на ноутбуках или домашних компьютерах. Там где обычно не используются высококачественные устройства хранения данных.
How to Get the UUID of a Disk Partition in Linux
UUID is a property of disk partitions used to uniquely identify them. Here are various ways to get the UUID of a disk partition in the Linux command line.
UUID (Universally Unique Identifiers) is a property of disk partitions and is crucial while managing servers with hundreds of drives.
And the easiest way to get UUID is to list the contents of /dev/disk/by-UUID using the ls command:
The highlighted text in light blue color is the UUID of the partition highlighted with yellow color.
That’s just one way to know the UUID of a partition. There are couple of more ways as well.
Using the blkid utility to get UUID
The blkid utility is used to get information about data blocks in Linux.
And when used without any options, you get details, including the UUID of every memory block present in the system:
And if you want to get the UUID of a specific block, just specify the block name as shown:
Using the lsblk utility to get UUID
The lsblk utility is mainly used to list block devices but when used with the -f option, it can get you additional info, including the UUID of every block:
And if you are on Ubuntu or your system is loaded with snap packages, they will be listed here too. In that case, you can filter those results using the grep command:
Wrapping Up
Through this tutorial, I explained how you could get the UUID of a disk partition in Linux. And if you have any other questions, feel free to let me know in the comments.