linux: ฉันจะดู UUID ทั้งหมดสำหรับดิสก์ที่มีอยู่ทั้งหมดในระบบของฉันได้อย่างไร


154

ฉัน/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นั้นมี symlinks การแมป UUID ของแต่ละไดรฟ์กับรายการใน/dev(เช่น/dev/sda1)


3
ไม่สามารถอ่านได้เมื่อพาร์ติชัน LVM
Grzegorz Wierzowiecki

1
LVM ใช้ตัวระบุที่คล้ายกับ UUID ที่ยาว (แม้ว่าจะนำเสนอแตกต่างกัน) ในโครงสร้าง ฉันคิดว่าเหตุผลเดียวที่ใช้ UUID ของระบบไฟล์กับ LVM จะเป็นอินเทอร์เฟซแบบรวมสำหรับการทำงานอัตโนมัติบางประเภทเนื่องจาก LVM ทำการแมป LVs กับชื่อที่เป็นมิตรกับมนุษย์แล้วสำหรับคุณ
telcoM

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

159

มีเครื่องมือที่เรียกว่าblkid(ใช้เป็นรูทหรือด้วยsudo)

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

คุณสามารถตรวจสอบลิงค์นี้สำหรับข้อมูลเพิ่มเติม


12
เพียงความคิดเห็นเล็กน้อย: ดูเหมือนว่าการเป็นสมาชิกของกลุ่มdiskนั้นเพียงพอที่จะเรียกใช้blkid; ไม่จำเป็นต้องใช้สิทธิ์ superuser อย่างเต็มรูปแบบ
arielf

10
หากคุณต้องการเพียง UUID นี้ (เช่นสำหรับการแยกในสคริปต์) blkid /dev/sda1 -s UUID -o valueคุณสามารถทำได้
Jack O'Connor

3
ความคิดเห็นด่วนที่นี่: ใน distro ของฉัน (Debian 8) สิ่งนี้ทำให้ UUID เช่นเดียวกับ "PARTUUID" ซึ่งค่อนข้างสับสน ฉันใช้คำสั่ง {lsblk} ซึ่งให้ค่าเดียวเท่านั้น
takumar

2
อันนี้ช่วยประหยัดเวลาได้มาก แต่ฉันชอบที่จะทำblkid /dev/sd*รายการไดรฟ์ทั้งหมด .. ข้อมูลที่คายออกมาโดยทั่วไปนั้นมากเกินพอที่จะค้นหาไดรฟ์ที่คุณต้องการ :)
ZaLiTHkA

2
PARTUUID สำหรับดิสก์ที่แบ่งพาร์ติชัน GPT เป็น GPT UUID สำหรับพาร์ติชันไม่ใช่สำหรับระบบไฟล์ อาจมีประโยชน์เมื่อระบบไฟล์ยังไม่ถูกสร้างขึ้น บนดิสก์ที่แบ่งพาร์ติชัน MBR, PARTUUID ไม่ใช่ UUID จริง แต่เพียงแค่เป็น Windows Disk Signature จาก MBR + หมายเลข dash + partition
telcoM

31

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คุณก็สามารถลอง
ott--

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

มันคือ. เพิ่มเพื่อวัตถุประสงค์ทางการศึกษาเท่านั้น (เพิ่มเครื่องหมายจุลภาคเพื่อคั่นฟิลด์ที่คุณต้องการ)
Nico Rodsevich

2

คำตอบก่อนหน้านี้ใช้ไม่ได้กับอุปกรณ์หลายเครื่องหรืออุปกรณ์ที่มี UUID ที่เหมือนกัน

ลองสิ่งนี้:

sudo blkid /dev/sd*

1
จริงเหรอ คุณหมายถึงคำตอบที่โหวตมากที่สุดไม่ทำงานใช่ไหม
don_crissti

ตัวระบุที่ไม่ซ้ำแบบสากล (UUID) ควรเป็นเอกลักษณ์เสมอ จุดประสงค์ทั้งหมดของ UUID คือการเป็นเอกลักษณ์สากล หากไม่มีปัญหาเกิดขึ้น ฉันเห็น UUID ที่ซ้ำกันใน VM ที่โคลนอย่างน้อยสำหรับอุปกรณ์เครือข่าย
Stefan Lasiewski

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
Nicolas Guérinet

1

ฉันมีปัญหาเช่นเดียวกับคุณ: เปลี่ยนชื่อโดยเคอร์เนล/dev/sd**หลังจากรีบูต:

แน่นอนการติดตั้งอัตโนมัติทั้งหมดของฉัน/etc/fstabอ้างอิงโดย LABEL หรือ UUID ดังนั้นโดยทั่วไปจะไม่มีปัญหาสำหรับเรื่องนั้น และคำสั่งทั้งหมดข้างต้น blkid หรือ lsblk ให้ข้อมูลประเภทนี้

แต่ปัญหาเริ่มต้นขึ้นในกรณีของฉันเมื่อคุณใช้พาร์ติชันในโหมด RAW ในมุมมองของระบบที่ถูกบูตในปัจจุบัน: ตัวอย่างเช่น: พาร์ติชันที่ใช้เป็นอุปกรณ์ดิบเพื่อสร้างดิสก์เสมือนสำหรับ VirtualBox (ดังนั้น การอ้างอิงไปยังพาร์ทิชันนี้เป็นสิ่งที่ชอบ/dev/sdf3) หรือพาร์ทิชันที่ใช้เป็นอุปกรณ์ดิบเพื่อให้ LUN สำหรับ iSCSI (เพื่อการอ้างอิงไปยังพาร์ทิชันนี้เป็นสิ่งที่ชอบ: /dev/sdc6)

ดังนั้นตอนบูตเช่นใน rc.local คุณจะต้องค้นหาในลักษณะที่เชื่อถือได้/dev/sdXXอุปกรณ์ของพาร์ติชัน RAW เฉพาะของคุณคืออะไรและปรับไฟล์บางไฟล์:

ตัวอย่าง 1

คำอธิบาย VirtualBox disk * .vmk ของ raw disk นี้ในส่วนที่ต้องการ:

\# 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 ของพาร์ติชั่นฮาร์ดดิสก์ฉันเพียงแค่บูทระบบด้วยลินุกซ์ซีดีและกลับไปติดคอมพิวเตอร์ของฉันคลิกที่พาร์ติชั่นที่ฉันต้องการดู หมายเลข uuid ของพาร์ติชัน Linux จะปรากฏขึ้น

คุณยังสามารถดูดิสก์ uuid ได้ด้วยการรันยูทิลิตี Linux Disk หลังจากบู๊ตซีดี Linux


"คอมพิวเตอร์ของฉันติด" คืออะไร และ "ยูทิลิตี้ลินุกซ์ดิสก์" คืออะไรฟังก์ชั่นของ gnome-disk-utility ดิสก์
Xen2050
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.