Linux: Как я могу просмотреть все UUID для всех доступных дисков в моей системе?


155

Мой /etc/fstabсодержит это:

# / was on /dev/sda1 during installation
UUID=77d8da74-a690-481a-86d5-9beab5a8e842 /               ext4    errors=remount-ro 0       1

В этой системе есть несколько других дисков, и не все диски монтируются в правильном месте (например, / dev / sda1 и / dev / sdb1 иногда меняются местами).

Как я могу увидеть UUID для всех дисков в моей системе? Могу ли я увидеть UUID для третьего диска в этой системе?


@setzamora ответ лучше. Пожалуйста, измените принятый ответ.
nslntmnx

Ответы:


135

В /dev/disk/by-uuidесть символические ссылки , отображающие UUID каждого диска до его вступления в /dev(например /dev/sda1)


3
Это не читается, когда разделы LVM.
Гжегож Вежовецкий

1
LVM уже использует длинные UUID-подобные идентификаторы (хотя представлены по-разному) в своей структуре. Я думаю, что единственной причиной использования UUID файловой системы с LVM был бы унифицированный интерфейс для какой-либо автоматизации, поскольку LVM уже сопоставляет LV с понятными для вас именами.
Телеком

2
ls -lha /dev/disk/by-uuid
deFreitas

160

Есть инструмент под названием blkid(используйте его как root или с sudo),

# blkid /dev/sda1
/dev/sda1: LABEL="/" UUID="ee7cf0a0-1922-401b-a1ae-6ec9261484c0" SEC_TYPE="ext2" TYPE="ext3"

Вы можете проверить эту ссылку для получения дополнительной информации


12
Небольшой комментарий: похоже, членства в группе diskдостаточно для запуска blkid; нет необходимости в полных привилегиях суперпользователя.
Ариэльф

10
Если вам нужен только UUID (например, для анализа в скрипте), вы можете это сделать blkid /dev/sda1 -s UUID -o value.
Джек О'Коннор

3
Быстрый комментарий здесь: в моем дистрибутиве (Debian 8) это дает UUID, а также "PARTUUID", что довольно странно. Я использовал команды {lsblk}, которые дают только одно значение.
Такумар

2
Это экономит много времени, хотя я предпочитаю blkid /dev/sd*перечислять все диски. Выдающейся информации, как правило, более чем достаточно, чтобы найти нужный диск. :)
ZaLiTHkA

2
PARTUUID для дисков с разделами GPT - это UUID GPT для раздела, а не для файловой системы в нем. Может быть полезно, когда файловая система еще не создана. На диске с разделом MBR PARTUUID - это не реальный UUID, а просто подпись диска Windows из MBR + тире + номер раздела.
Телеком

32

Лучшая команда для использования lsblk -f. В нем будут перечислены все устройства и разделы, как они смонтированы (если есть), а также древовидная структура устройств в случае использования LVM, crypto_LUKS или нескольких групп томов на одном диске.


10

Это работает для меня:

ls -la /dev/disk/by-uuid

Если вы хотите проверить тип раздела, используйте:

df -Th

и он покажет вам, если у вас есть ext3 или ext2. Сегодня это помогло мне, потому что был отформатированный раздел ext2, и я подумал, что это ext3, что приводило к сбою монтирования.


Вы всегда можете попробовать mount -t auto /dev/sda1 /media/sda1.
ot--

8

Чтобы получить только UUIDопределенное дисковое устройство (например, для использования в скрипте), вы можете использовать:

sudo blkid -s UUID -o value /dev/sdXY

где /dev/sdXYимя устройства.


6
lsblk -o +uuid,name

Вы можете увидеть все выходные данные, которые могут быть добавлены к -o( --output) с

lsblk --help

Также это сделает работу

# blkid

nameПо умолчанию не печатается?
don_crissti

это. Добавил его только для образовательных целей (добавьте запятую для разделения
нужных

2

Предыдущие ответы не работают для нескольких устройств или для устройств с одинаковыми UUID.

Попробуй это:

sudo blkid /dev/sd*

1
В самом деле ? Ты имеешь ввиду, самый голосующий ответ не работает?
don_crissti

Универсально уникальный идентификатор (UUID) всегда должен быть уникальным. Вся цель UUID состоит в том, чтобы быть уникальным, универсальным. Если нет, то есть проблема. Я видел дублированные UUID в клонированных виртуальных машинах, по крайней мере, для сетевых устройств.
Стефан Ласевский,

5
Если вы клонируете раздел с помощью ddкоманды, копия будет иметь тот же uuid, и да, это проблема. Другие ответы здесь не показали бы это.
Кевин

1

В следующей командной строке вы можете увидеть UUID плюс отображение на разделы.

ls /dev/disk/by-uuid -lt

lrwxrwxrwx 1 root root 10 Sep  1 18:51 57eacf4e-1940-436e-b945-85f8d4833aa5 -> ../../sda2
lrwxrwxrwx 1 root root 10 Sep  1 18:51 656f4cae-8527-43a0-a80f-00ac82818744 -> ../../sda1
lrwxrwxrwx 1 root root  9 Sep  1 18:51 d627595d-4060-440e-8380-a1fe9f3f2a81 -> ../../md0
lrwxrwxrwx 1 root root 10 Sep  1 18:51 0dfd6dfe-1852-460d-852c-676a5b9035ed -> ../../sda4
lrwxrwxrwx 1 root root 10 Sep  1 18:51 b1ddf850-8f81-429f-a653-38ae4a4ebb6f -> ../../sda3
lrwxrwxrwx 1 root root  9 Sep  1 18:51 b4b729f7-5699-411c-8f5a-424bbc7c89fc -> ../../sdb

Почему мы можем видеть uuid sda
Honghe.Wu

Существует один UUID для файловой системы на раздел. На SDA у меня есть 4 раздела, поэтому у меня было 4 UUID. wiki.debian.org/Part-UUID
Николя Геренет,

1

У меня та же проблема, что и у вас: переименование ядра /dev/sd**после перезагрузки:

Конечно, на все мои автоматические установки /etc/fstabссылаются LABEL или UUID, так что в принципе для этого нет проблем. И все приведенные выше команды, blkid или lsblk, дают такую ​​информацию.

Но проблема начинается, как в моем случае, когда вы используете раздел в режиме RAW, с точки зрения текущей загруженной системы: например, либо: раздел используется как необработанное устройство, чтобы создать виртуальный диск для VirtualBox (так ссылка на этот раздел является то вроде: /dev/sdf3) или раздел используется в качестве исходного устройства, чтобы сделать LUN для ISCSI (поэтому ссылка на этот раздел что - то вроде: /dev/sdc6)

Итак, теперь при загрузке, например, в rc.local, вы должны надежным образом выяснить, каково /dev/sdXXустройство вашего выделенного раздела RAW, и адаптировать какой-нибудь файл:

Пример 1

Диск VirtualBox * .vmk Описание этого необработанного диска, в части что-то вроде:

\# Extent description
RW 488397167 FLAT "/dev/sdXX" 0

а затем перезапустите службу VirtualBox

Пример 2

в конфигурации tgtd цель: target0 была связана /dev/sdd6во время сборки. После перезагрузки вы переименовываете тот же раздел. /deb/sdc6 Это происходит со съемным диском, USB или eSATA! Так как же автоматически найти новое устройство? Снова в /etc/rc.d/rc.local

Поэтому в этом случае нам нужен надежный способ узнать, как называется новое устройство. GPT-раздел предлагает уникальный GUID для любого GPT-раздела, записанный в таблице GPT.

gdisk не предоставляет эту информацию в режиме листинга, но только в интерактивном режиме с помощью команды: i. К счастью, blkid делает это!

Поэтому вам нужно написать сценарий оболочки, чтобы просмотреть все ваши диски, которые являются устройством /dev/sdXX, связанным с GUID, замеченным во время создания раздела.

Что-то вроде search_device_by_partUUID.sh:

\#!/bin/bash

PART_UUID=$1
if [ "$PART_UUID" = "" ]
then
    echo "Syntax: $0 <a valid partition UUID>"
    exit 3
fi
lsblk | grep '^sd' | awk '{print $1}' | while read DISK_DEVICE
do 
    INFO=`blkid /dev/${DISK_DEVICE}* | grep "PARTUUID=\"$PART_UUID\"" `
    if [ "$INFO" != "" ]
    then
        echo INFO : "$INFO"
        BLK_DEVICE=`echo "$INFO" | awk '{print $1}'`
        echo $BLK_DEVICE > /dev/shm/blkdevice
        echo -n "BLK_DEVICE : " ; cat /dev/shm/blkdevice
    fi
done

а затем используйте /dev/shm/blkdeviceв своем скрипте rc.local.


0

Чтобы увидеть uuid раздела жесткого диска, я просто загружаю систему с компакт-диска Linux и захожу в монтирование на моем компьютере, нажимаю на раздел, который я хочу увидеть. Будет показан номер uuid раздела Linux.

Вы также можете увидеть диск uuid, запустив утилиту Linux Disk после загрузки компакт-диска Linux.


Что такое "крепление моего компьютера"? А что такое «утилита Linux Disk», звучит как утилита gnome-disk или «Диски»?
Xen2050
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.