เหตุใด fstab จึงใช้ UUID แทนชื่อระบบไฟล์จริง


21

ตัวอย่างเช่นนี่คือบรรทัดแรกของฉัน/etc/fstab:

UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a    /    ext4    errors=remount-ro    0    1

และนี่คือผลลัพธ์ของdf -hคำสั่ง (การรายงานพื้นที่ว่างในดิสก์):

honey@bunny:~$ df -T

Filesystem     Type     1K-blocks    Used Available Use% Mounted on
/dev/vda       ext4      30832636 4884200  24359188  17% /
none           tmpfs            4       0         4   0% /sys/fs/cgroup
udev           devtmpfs    498172      12    498160   1% /dev
tmpfs          tmpfs       101796     320    101476   1% /run
none           tmpfs         5120       0      5120   0% /run/lock
none           tmpfs       508972       0    508972   0% /run/shm
none           tmpfs       102400       0    102400   0% /run/user
  1. จากทั้งสองจะถูกจะอนุมานว่าUUID=050e1e34-39e6-4072-a03e-ae0bf90ba13aหมายถึง/dev/vdaให้ที่คอลัมน์แรกในfstabคือ<file system>?

  2. ดังนั้นจะเป็นไรไหมถ้าฉันแก้ไข/etc/fstabมัน?

    /dev/vda    /    ext4    errors=remount-ro    0    1
    
  3. แก้ไข:ถ้าใช่ (คำถามข้างต้น) ทำไมsudo blkidคำสั่งแสดง UUID ที่แตกต่างกัน/dev/vdaใช่หรือไม่

    $ sudo blkid
    
    /dev/vda: LABEL="DOROOT" UUID="6f469437-4935-44c5-8ac6-53eb54a9af26" TYPE="ext4"
    

    สิ่งที่ฉันหายไปที่นี่?

    คำตอบ:ฉันสรุป (3) เป็นข้อผิดพลาดในคลาวด์ของโฮสต์ของฉัน ดังนั้นใช่ UUID รายงานโดยblkid(หรือls -l /dev/disk/by-uuid) /etc/fstabควรจะเหมือนกันเป็นหนึ่งที่ใช้ในการ


ตรวจสอบ UUID ด้วยsudo blkidคำสั่ง
Avinash Raj

@AvinashRaj อืมวิจิตรพิสดารที่sudo blkidคำสั่ง outputs UUID /dev/vdaแตกต่างกันสำหรับ นี่เป็นการเพิ่มความสับสนของฉัน :) (คำถามล่าสุด)
its_me

ไม่ใช่สัญญาณที่ดีที่คำสั่ง blkid แสดง UUID อื่น - โปรดตรวจสอบ UUID ปัจจุบันด้วย `ls -l / dev / disk / by-uuid '' ตั้งแต่ vda มันเป็นไปได้ไหมว่าโครงสร้างพื้นฐาน VM พื้นฐานเปลี่ยนอะไรบางอย่าง?
liquidat

@liquidat lrwxrwxrwx 1 root root 9 Jun 18 11:04 6f469437-4935-44c5-8ac6-53eb54a9af26 -> ../../vdaนี่คือผลลัพธ์ผมได้: สำหรับคำถามอื่นของคุณฉันจะติดต่อเว็บโฮสต์เกี่ยวกับเรื่องนั้น
its_me

ฉันจะบอกว่าเครื่องอาจไม่รีบูตเนื่องจากรายการ fstab นั้นผิดปกติ อาจเป็นดิสก์โคลนหรืออะไรก็ได้ ฉันถือว่ามันไม่มีอุปกรณ์อื่นที่มี UUID ให้ใน fstab?
liquidat

คำตอบ:


22

ข้อดีของการใช้ UUID คือไม่ขึ้นอยู่กับหมายเลขอุปกรณ์จริงที่ระบบปฏิบัติการมอบให้กับฮาร์ดดิสก์ของคุณ

ลองนึกภาพคุณเพิ่มฮาร์ดดิสก์อีกครั้งเพื่อให้ระบบและด้วยเหตุผลบางอย่างระบบปฏิบัติการตัดสินใจว่าดิสก์เก่าของคุณอยู่ในขณะนี้แทนsdbsda

กระบวนการบูทของคุณจะถูกทำให้เมาถ้าfstabชี้ไปที่ชื่ออุปกรณ์ แต่ในกรณีของ UUIDs ก็ถือว่าใช้ได้

ข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับ UUID สามารถพบได้ในโพสต์บล็อก"UUIDs และ Linux: ทุกสิ่งที่คุณจำเป็นต้องรู้"


อ๋อ แม้ไม่มีการเพิ่มดิสก์ใหม่เคอร์เนลของคุณอาจตัดสินใจเพียงแค่สลับสองไดรฟของไดรฟ์ของคุณในหนึ่งวัน ดูwiki.archlinux.org/index.php/Persistent_block_device_naming
Tommy

จะเกิดอะไรขึ้นถ้าฉันต้องการโคลนภาพไปยังดิสก์อื่นซึ่งมี UUID ต่างกัน
aloplop85

มีอย่างน้อยหนึ่งสถานการณ์ที่ UUIDs มีประโยชน์น้อยกว่า: หากคุณโคลนดิสก์ทั้งหมดจากนั้นรีบูตคุณอาจได้รับพาร์ติชันที่ติดตั้งจากดิสก์ทั้งแผ่นหรือดิสก์ที่ไม่ถูกต้อง
boot13

นั่นเป็นความจริง - ตรวจสอบการโพสต์บล็อกที่เชื่อมโยงแม้มีส่วนเมื่อไม่ใช้
liquidat

หากคุณโคลนดิสก์คุณควรเปลี่ยน UUID บนดิสก์ใหม่ tune2fs xfs_admin หรือ reiserfstune สามารถทำได้ขึ้นอยู่กับระบบไฟล์ของคุณ
steveayre

3

ในกรณีนั้นฉันสามารถแก้ไข / etc / fstab เป็นสิ่งนี้ได้ไหม

คุณสามารถและมันจะอาจจะไม่เป็นไร แต่ส่วนใหญ่มันจะเป็นการดีกว่าที่จะออกจาก UUID

UUIDsเป็นสตริงที่ใช้เพื่อระบุตัวตนในกรณีนี้พาร์ติชันบนอุปกรณ์บล็อก มันเก็บไว้ในพาร์ติชั่นและสามารถกำหนดได้ถ้าต้องการ (เรียงจากที่อยู่ MAC)

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

อีกตัวอย่างที่ลึกซึ้งยิ่งขึ้นของการที่ใช้ชื่ออุปกรณ์ที่สามารถก่อให้เกิดปัญหาที่จะเป็นสวิทช์ที่ผ่านมาในบางระบบที่จะใช้ชื่ออุปกรณ์เครือข่ายที่สอดคล้องกัน หากสิ่งนี้เกิดขึ้นเป็นการอัปเกรดและคุณใช้ชื่ออุปกรณ์ฮาร์ดโค้ดในสคริปต์เครือข่ายที่อื่นมันจะแตก ตัวอย่างอุปกรณ์บล็อก WRT แบบขนานอาจเป็นเคอร์เนลหรือ udev อัพเกรดซึ่งเปลี่ยนรูปแบบการตั้งชื่อ

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


ถูก ดังนั้นสิ่งที่อธิบาย UUID ที่แตกต่างกันสำหรับ/dev/vdaใน/etc/fstabและรายงานโดยblkid? (โปรดดูคำถามที่ได้รับการอัปเดตหากคุณยังไม่มี)
its_me

5
แทนที่จะถามในการอัปเดตคุณควรถามว่าเป็นคำถามแยกต่างหาก ("ทำไม UUID พาร์ติชันที่ติดตั้งของฉันจึงแตกต่างจาก UUID ใน fstab")
goldilocks

2

คุณสามารถman fstabอ่านเนื้อหาและความหมายของ/etc/fstabไฟล์ได้อย่างกระชับ ใน x86 เซิร์ฟเวอร์ Arch linux ที่ทันสมัยของman fstabฉันให้สิ่งนี้กับฉัน:

The second field ... describes  the mount point for the filesystem.

ดังนั้นใช่/dev/vdaเห็นได้ชัดว่าเป็นหนึ่งในหลาย ๆ ชื่อสำหรับอุปกรณ์บางอย่างตามที่UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13aกำหนดเนื่องจากชื่อทั้งสองดูเหมือนจะเมานต์ "/"

ถ้าคุณดูในไดเรกทอรี/dev/disk/by-uuid/ที่คุณสามารถดูการเชื่อมโยงสัญลักษณ์ที่ชี้ไปที่สิ่งที่ชอบ/dev/sda1, /dev/sdb1บนเซิร์ฟเวอร์ของฉัน นี่อาจเป็นอีกวิธีหนึ่งในการตรวจสอบสมมติฐานของคุณ /dev/diskมีไดเรกทอรีย่อยby-id, by-path, by-uuidซึ่งปรากฏเป็นชื่ออื่นสำหรับอุปกรณ์เดียวกัน


ในกรณีนั้นปัญหา (ตามที่อัปเดตในคำถามของฉัน) คือฉันได้รับ UUID สองแบบที่แตกต่างกัน/dev/vda! โปรดดูคำถามอีกครั้ง
its_me

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