Můj /etc/fstab
obsahuje toto:
# / was on /dev/sda1 during installation
UUID=77d8da74-a690-481a-86d5-9beab5a8e842 / ext4 errors=remount-ro 0 1
V tomto systému je několik dalších disků a ne všechny disky jsou připojeny na správné místo (například/dev/sda1 a/dev/sdb1 jsou někdy obráceny).
Jak vidím UUID pro všechny disky v mém systému? Mohu vidět UUID třetího disku v tomto systému?
V /dev/disk/by-uuid
existují symlinks mapující UUID každé jednotky na její položku v /dev
(např. /dev/sda1
)
Existuje nástroj s názvem blkid
(použijte jej jako root nebo s Sudo
),
# blkid /dev/sda1
/dev/sda1: LABEL="/" UUID="ee7cf0a0-1922-401b-a1ae-6ec9261484c0" SEC_TYPE="ext2" TYPE="ext3"
můžete zkontrolovat tento odkaz pro více informací
Nejlepším příkazem k použití je lsblk -f
. V případě použití LVM, crypto_LUKS nebo více skupin svazků na stejné jednotce bude uveden seznam všech zařízení a oddílů, jak jsou připojena (pokud vůbec) a stromová struktura zařízení.
Chcete-li získat pouze UUID
konkrétního diskového zařízení (například pro použití ve skriptu), můžete použít:
Sudo blkid -s UUID -o value /dev/sdXY
kde /dev/sdXY
je název zařízení.
Funguje to pro mě:
ls -la /dev/disk/by-uuid
Pokud chcete zkontrolovat, jaký typ oddílu je, použijte:
df -Th
a ukáže vám, jestli máte ext3 nebo ext2. Dnes mi to pomohlo, protože existoval formátovaný oddíl ext2 a myslel jsem si, že to byl ext3, který způsoboval selhání připojení.
lsblk -o +uuid,name
Můžete vidět všechny výstupy, které lze přidat do -o
(--output
) s
lsblk --help
Také to udělá práci
# blkid
Předchozí odpovědi nefungují pro více zařízení nebo pro zařízení se stejnými UUID.
Zkuste to:
Sudo blkid /dev/sd*
Následující příkazový řádek zobrazuje UUID plus mapování na oddíly.
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
Mám stejný problém jako vy: přejmenováním jádra /dev/sd**
Po restartu:
Samozřejmě na všechny mé automatické montáže v /etc/fstab
Se odkazuje LABEL nebo UUID, takže v zásadě pro to neexistuje žádný problém. A všechny výše uvedené příkazy, blkid nebo lsblk, poskytují tento druh informací.
Problémy však začínají jako v mém případě, když používáte oddíl v režimu RAW, v aktuálně spuštěném systémovém bodě pohledu: například buď: oddíl se používá jako prvotní zařízení, aby vytvořil virtuální disk pro VirtualBox (takže odkaz na tento oddíl je něco jako: /dev/sdf3
) nebo je oddíl používán jako nezpracované zařízení k vytvoření LUN pro iSCSI (takže odkaz na tento oddíl je něco jako: /dev/sdc6
)
Takže teď při startu, například v rc.local, musíte spolehlivě najít, jaké je zařízení /dev/sdXX
Vašeho vyhrazeného oddílu RAW, a upravit nějaký soubor:
PŘÍKLAD 1
Disk VirtualBox * .vmk popis tohoto surového disku, v části něco jako:
\# Extent description
RW 488397167 FLAT "/dev/sdXX" 0
a restartujte službu VirtualBox
PŘÍKLAD 2
v konfiguraci tgtd byl cíl: target0 přidružen k /dev/sdd6
v době sestavení. Po restartu získáte stejný oddíl přejmenovaný na /deb/sdc6
To se děje u vyměnitelného disku, USB nebo eSATA! Jak tedy nové zařízení najít automaticky? Opět v /etc/rc.d/rc.local
V tomto případě tedy potřebujeme spolehlivý způsob, jak zjistit, jaký je nový název zařízení. Oddíl GPT nabízí jedinečný GUID pro jakýkoli oddíl GPT, zapsaný v tabulce GPT).
gdisk neposkytuje tyto informace v režimu výpisu, ale pouze v interaktivním režimu s příkazem: i. Naštěstí to blkid dělá!
Musíte tedy napsat skript Shell, abyste se podívali na všechny vaše disky, což je zařízení /dev/sdXX
, Přidružené k GUID zaznamenané v době vytvoření oddílu).
Něco jako, 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
a poté použijte /dev/shm/blkdevice
ve svém rc.local skriptu.
V těchto případech musíte zkontrolovat/dev/disk/by-partuuid. existují symlinks mapující každou jednotku PARTUUID na její položku v/dev/sdb1 atd
Chcete-li vidět uuid na pevném disku, spustím systém pomocí Linux CD a připojím počítač, klikněte na oddíl, který chci vidět. Zobrazí se uuidní číslo oddílu systému Linux.
Disk můžete také vidět spuštěním obslužného programu Linux Disk po spuštění systému Linux CD.