it-swarm-vi.com

linux: Làm cách nào tôi có thể xem tất cả các UUID cho tất cả các đĩa có sẵn trên hệ thống của mình?

/etc/fstab Của tôi chứa nội dung này:

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

Có một số đĩa khác trên hệ thống này và không phải tất cả các đĩa đều được gắn vào đúng vị trí (Ví dụ:/dev/sda1 và/dev/sdb1 đôi khi bị đảo ngược).

Làm cách nào tôi có thể thấy UUID cho tất cả các đĩa trên hệ thống của mình? Tôi có thể xem UUID cho đĩa thứ ba trên hệ thống này không?

177
Stefan Lasiewski

Trong /dev/disk/by-uuid có các liên kết tượng trưng ánh xạ UUID của mỗi ổ đĩa vào mục của nó trong /dev (ví dụ. /dev/sda1)

155
Michael Mrozek

Có một công cụ gọi là blkid (sử dụng nó làm root hoặc với Sudo),

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

bạn có thể kiểm tra liên kết này để biết thêm thông tin

186
setzamora

Lệnh tốt nhất để sử dụng là lsblk -f. Nó sẽ liệt kê tất cả các thiết bị và phân vùng, cách chúng được gắn (nếu có) và cấu trúc cây của các thiết bị trong trường hợp sử dụng LVM, crypto_LUKS hoặc nhiều nhóm âm lượng trên cùng một ổ đĩa.

46
John Rea

Để chỉ nhận UUID của một thiết bị đĩa cụ thể (ví dụ: được sử dụng trong tập lệnh), bạn có thể sử dụng:

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

ở đâu /dev/sdXY là tên của thiết bị.

14
Strahinja Kustudic

Điều này làm việc cho tôi:

ls -la /dev/disk/by-uuid

Nếu bạn muốn kiểm tra loại phân vùng là gì, hãy sử dụng:

df -Th

và nó sẽ hiển thị cho bạn nếu bạn có ext3 hoặc ext2. Hôm nay nó đã giúp tôi vì có một phân vùng ext2 được định dạng và tôi nghĩ rằng đó là ext3, điều này khiến cho mount không thành công.

11
MIrra
lsblk -o +uuid,name

Bạn có thể thấy tất cả các kết quả đầu ra có thể được thêm vào -o (--output) với

lsblk --help

Ngoài ra điều này sẽ làm công việc

# blkid
7
Nico Rodsevich

Các câu trả lời trước không hoạt động cho nhiều thiết bị hoặc cho các thiết bị có UUID giống hệt nhau.

Thử cái này:

Sudo blkid /dev/sd*
2
Kevin

Với dòng lệnh sau, bạn có thể thấy UUID cộng với ánh xạ tới các phân vùng.

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

Tôi có cùng một vấn đề với bạn: đổi tên theo kernel của /dev/sd** Sau khi khởi động lại:

Tất nhiên, tất cả việc gắn tự động của tôi vào /etc/fstab Được tham chiếu bởi LABEL hoặc UUID, vì vậy về cơ bản không có vấn đề gì cho điều đó. Và tất cả các lệnh trên, blkid hoặc lsblk, cung cấp loại thông tin này.

Nhưng rắc rối bắt đầu như trong trường hợp của tôi, khi bạn đang sử dụng phân vùng ở chế độ RAW, trong quan điểm của hệ thống hiện đang khởi động: ví dụ: phân vùng được sử dụng làm thiết bị thô, để tạo đĩa ảo cho VirtualBox (vì vậy tham chiếu đến phân vùng này là một cái gì đó như: /dev/sdf3) hoặc phân vùng được sử dụng làm thiết bị thô, để tạo LUN cho iSCSI (vì vậy tham chiếu đến phân vùng này là một cái gì đó như: /dev/sdc6)

Vì vậy, bây giờ khi khởi động, ví dụ như trong RC.local, bạn phải tìm một cách đáng tin cậy, thiết bị /dev/sdXX Của phân vùng RAW chuyên dụng của bạn là gì và điều chỉnh một số tệp:

VÍ DỤ 1

Đĩa VirtualBox * .vmk mô tả về đĩa thô này, trong phần giống như:

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

và sau đó khởi động lại dịch vụ VirtualBox

VÍ DỤ 2

trong cấu hình tgtd, một mục tiêu: target0 được liên kết với /dev/sdd6 tại thời điểm xây dựng. Sau khi khởi động lại, bạn nhận được cùng một phân vùng được đổi tên thành /deb/sdc6 Điều này xảy ra với một đĩa di động, USB hoặc eSATA! Vậy làm thế nào để tìm thiết bị mới tự động? Một lần nữa trong /etc/rc.d/rc.local

Vì vậy, trong trường hợp này, chúng ta cần một cách đáng tin cậy để tìm tên thiết bị mới là gì. Phân vùng GPT cung cấp duy nhất GUID cho bất kỳ phân vùng GPT nào, được viết trong bảng GPT.

gdisk không cung cấp thông tin này với chế độ liệt kê mà chỉ ở chế độ tương tác với: i lệnh. May mắn thay, blkid làm điều đó!

Vì vậy, bạn cần phải viết tập lệnh Shell, để tìm trong tất cả các đĩa của mình, đó là thiết bị /dev/sdXX, Được liên kết với GUID được chú ý tại thời điểm tạo phân vùng.

Một cái gì đó như, 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

và sau đó sử dụng /dev/shm/blkdevice, trong tập lệnh RC.local của bạn.

Bạn cần kiểm tra/dev/đĩa/by-partuuid trong những trường hợp này. có các liên kết ánh xạ ánh xạ PHẦN MỀM của mỗi ổ đĩa vào mục nhập của nó trong/dev/sdb1, v.v.

0
Sachin Mokashi

Để xem uuid của phân vùng đĩa cứng, tôi chỉ cần khởi động hệ thống với đĩa CD Linux và lấy giá treo máy tính của tôi, nhấp vào, phân vùng tôi muốn xem. Số uuid của phân vùng Linux sẽ được hiển thị.

Bạn cũng có thể thấy đĩa uuid bằng cách chạy tiện ích Linux Disk sau khi đĩa CD Linux khởi động.

0
man puk tam