UUID Of ไดรฟ์ที่ไม่แสดงใน / dev / disk / by-uuid หรือ blkid


12

ฉันมีไดรฟ์ USB ที่ไม่ได้รับ UUID เมื่อฉันดูเนื้อหาของ / dev / disk / by-uuid มันไม่มีอยู่จริง จุด dev ที่พาร์ติชันใช้งานอยู่คือ on / dev / sdb ฉันสามารถเห็น sdb ภายใต้ / dev / disk / by-path นอกจากนี้เมื่อใช้ blkid ฉันจะได้ผลลัพธ์เป็นศูนย์ ฉันสมมติว่าฉันได้รับรหัสข้อผิดพลาดที่คืนกลับมา

มีวิธีรับ UUID สำหรับพาร์ติชันนี้หรือไม่?

ผลลัพธ์ของ fdisk -l /dev/sdb:

Disk /dev/sdb: 320.1 GB, 320072932352 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142446 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00082145

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   625141759   312569856   83  Linux

ตารางพาร์ติชันและพาร์ติชันถูกสร้างขึ้นด้วย gparted ดังนั้นจึงถูกแบ่งพาร์ติชันและรันคำสั่ง mkfs.ext3

เอาต์พุตของ fsck -n / dev / sdb1

fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
fsck.ext2: Superblock invalid, trying backup blocks...
zwei was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
zwei: 11/19537920 files (0.0% non-contiguous), 1275097/78142464 blocks

มันจัดรูปแบบเป็นไดรฟ์ ext3 เหตุใดจึงแสดงเป็น ext2


คุณต้องอธิบายให้ชัดเจนว่าอุปกรณ์ใดที่คุณกำลังพูดถึง /dev/sdbจะไม่ได้มี UUID แต่/dev/sdb1ควรถ้าจะได้รับการจัดรูปแบบ
goldilocks

1
ฉันหมายถึง / dev / sdb1 ซึ่งอยู่ภายใต้ / dev / sdb
monksy

fsck -n /dev/sdb1โพสต์การส่งออกของ คุณสามารถลองให้ UUID กับมันtune2fs -U random /dev/sdb1ดูก็ได้ ไม่สำคัญว่า UUID คืออะไร
goldilocks

โพสต์ [ขออภัยถ้านี่น่ารำคาญ]
monksy

1
ไม่มีปัญหา. บิต "superblock ไม่ถูกต้อง" อาจอธิบายได้ว่าทำไมไม่มี UUID หากคุณต้องการสำรองข้อมูลที่นั่นให้ลองติดตั้งแล้วทำเช่นนั้นแล้วยกเลิกการต่อเชื่อมและfsck -y /dev/sdb1; หากคุณไม่สามารถติดตั้งได้ให้เรียกใช้ fsck และหวังว่าจะไม่มีอะไรหายไป อ่านman fsckสำหรับความแตกต่างระหว่างและ-n -y
goldilocks

คำตอบ:


13

นั่นคือสิ่งที่ควรจะเกิดขึ้น

มีการใช้งานสองภาษาของคำว่า "ดิสก์" หรือ "ไดรฟ์" ในการเล่นที่นี่: อันแรกหมายถึงอุปกรณ์ทางกายภาพเช่นแท่ง usb ที่สองอ้างถึงพาร์ติชันระบบแฟ้มซึ่งอาจมีหลายบนอุปกรณ์ทางกายภาพหนึ่ง

โหนดอุปกรณ์เช่น/dev/sdaอ้างถึงความรู้สึกแรก (อุปกรณ์ทางกายภาพ); โหนดอุปกรณ์เช่น/dev/sda1อ้างถึงที่สอง (พาร์ทิชันระบบแฟ้ม) ทำให้รู้สึก? sda1 เป็นพาร์ติชันระบบแฟ้มบนดิสก์ทางกายภาพ sda เป็นไปได้ที่จะฟอร์แมตอุปกรณ์ทั้งหมดด้วยพาร์ติชันเดียว แต่โดยทั่วไปแล้ว/dev/sdaจะไม่มี UUID

พาร์ทิชันระบบแฟ้มมี UUIDs, อุปกรณ์ทางกายภาพไม่ ฉันเชื่อว่าพวกเขาถูกสร้างแบบสุ่มเมื่อสร้างระบบไฟล์ (ซึ่งเป็นเหตุผลว่าทำไมพวกเขาจะเปลี่ยนถ้าคุณเช่นฟอร์แมตพาร์ติชันและทำไมถ้าคุณบล็อกระดับคัดลอกพาร์ทิชันและสร้างพาร์ติชันใหม่ด้วยภาพคุณจะมีสองพาร์ติชัน ด้วย UUID เดียวกัน)

ดังนั้นเก็บไว้ในใจ UUID ถูกสร้างขึ้นเมื่อพาร์ทิชันที่มีรูปแบบ เมื่อคุณแบ่งพาร์ติชันดิสก์ (เช่นด้วย fdisk) คุณไม่ได้ฟอร์แมตอะไรคุณเพียงแค่ตั้งค่าประเภทพาร์ติชัน (และขนาด ฯลฯ ) ในตารางพาร์ติชันดังนั้นพาร์ติชันที่ยังไม่ฟอร์แมตใหม่จะไม่มี UUID

ในที่สุดเนื่องจากเป็นเครื่องมือที่ใช้ในการฟอร์แมตพาร์ติชันที่ตั้งค่า UUID อาจเป็นไปได้ว่าเครื่องมือเก่า ๆ อาจไม่ทำเช่นนี้ อย่างไรก็ตามคุณสามารถตั้งค่าใหม่ (สำหรับต่อ) ด้วยtune2fsเช่น:

tune2fs -U random /dev/whatever

SDA เป็นไดรฟ์หลักของฉัน SDB, SDD, ฯลฯ เป็นไดรฟ์ USB ฉันได้อัปเดตคำตอบเพื่อรวม fdisk -l เพื่อพิสูจน์ว่ามีพาร์ติชัน
พระสงฆ์

@monksy: และโหนดอุปกรณ์ซึ่งไม่ได้รายงาน UUID คือ/dev/sdb1หรือ/dev/sdb? ในภายหลังไม่ควร นอกจากนี้เอาต์พุต fdisk ไม่ได้ระบุว่ามีการฟอร์แมตพาร์ติชันและดังนั้นจึงไม่ได้พิสูจน์ว่าควรมี UUID ให้ใช้งาน ฉันได้เพิ่มย่อหน้าสั้น ๆ ข้างต้นเพื่ออธิบายสิ่งนี้
goldilocks

มันเป็นสูตร เมื่อเสียบใน [รายการ fstab ก่อน] gnome automounter จะนำมาขึ้น ฉันไม่ได้รับ UUID สำหรับ sdb1 fdisk -l เป็นเพียงการพิสูจน์ว่ามีพาร์ติชันอยู่ที่นั่น
พระสงฆ์

1
ฉันต้องรีบูตก่อนที่พาร์ทิชันจะปรากฏใน/dev/disk/by-uuid(Ubuntu 16.04 แต่อาจส่งผลกระทบต่อคนอื่น ๆ ) ดังนั้น (1) สร้างพาร์ติชั่นและระบบไฟล์, (2) รีบูท อาจเป็นวิธีที่ไม่ต้องรีบูต แต่ฉันต้องการตรวจสอบว่าทุกอย่างเกิดขึ้นจากการบูตเย็นดังนั้นจึงไม่ได้ตรวจสอบ
fazy

2

กระบวนการ / dev / disk / by-uuid จะถูกเติมในการบูทโดยโปรแกรม "partprobe" หากคุณมีดิสก์หรือพาร์ติชันที่ไม่สามารถรับรู้พาร์ติชั่นได้ partprobe จะล้มเหลวด้วยข้อผิดพลาดและหยุดสแกนพาร์ติชั่นที่เหลือ:

root@machine1:~# partprobe 
Error: /dev/mapper/sda5_crypt: unrecognised disk label
root@machine1:~# 

ที่เห็นได้ชัดว่าข้อผิดพลาดในส่วน partprobe อาจเป็นเฉพาะกับ Ubuntu 14.04 (เชื่อถือได้) วิธีแก้ปัญหาคือเรียกใช้ partprobe อย่างชัดเจนบนพาร์ติชันที่ไม่ได้สแกน:

root@machine1:~# partprobe /dev/sdd1

โปรดทราบว่า partprobe เริ่มต้นขึ้นหลายครั้งเป็นผลมาจากการดำเนินการจัดการดิสก์ทุกครั้งดังนั้นการแก้ปัญหาจึงมีอายุสั้น


2

ฉันพบว่าfile -sสามารถให้ UUID สำหรับพาร์ติชันในกรณีที่blkidจะไม่:

sudo file -s /dev/sda1
/dev/sda1: Linux rev 1.0 ext2 filesystem data (mounted or unclean), UUID=ef55765f-dae5-426f-82c4-0d98265c5f21 (needs journal recovery)

1

ลอง sudo ด้วยls -l /dev/disk/by-uuidหรือblkid /dev/sdb1

ฉันมี + แบ่งพาร์ติชันที่จัดรูปแบบนอกจากนี้ยังมีเหตุผลบางอย่างที่จะไม่แสดงขึ้นในรายการจนกว่าฉันใช้ sdb1sudo

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