Tại sao fstab sử dụng UUID thay vì tên hệ thống tệp thực tế?


21

Ví dụ, đây là dòng đầu tiên của tôi /etc/fstab:

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

Và đây là đầu ra của df -hlệnh (báo cáo dung lượng đĩa trống):

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. Từ hai có thể suy ra rằng UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13ađại diện /dev/vdacho rằng cột đầu tiên trong fstab<file system>?

  2. Vì vậy, nó sẽ ổn nếu tôi sửa đổi /etc/fstabđiều này?

    /dev/vda    /    ext4    errors=remount-ro    0    1
    
  3. EDIT: Nếu có (cho câu hỏi trên), tại sao sudo blkidlệnh hiển thị UUID khác cho /dev/vda?

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

    Tôi đang thiếu gì ở đây?

    Trả lời: Tôi đã kết luận (3) là một lỗi trong đám mây của máy chủ của tôi. Vì vậy, có, UUID được báo cáo bởi blkid(hoặc ls -l /dev/disk/by-uuid) phải giống với cái được sử dụng trong /etc/fstab.


Kiểm tra UUID bằng sudo blkidlệnh.
Avinash Raj

@AvinashRaj Hmm, thật kỳ lạ, sudo blkidlệnh xuất ra một UUID khác cho /dev/vda. Điều này làm tăng thêm sự nhầm lẫn của tôi. :) (Câu hỏi cập nhật.)
Its_me

Đó không phải là một dấu hiệu tốt cho thấy lệnh blkid hiển thị một UUID khác - vui lòng kiểm tra UUID hiện tại với `ls -l / dev / đĩa / by-uuid ''. Kể từ vda của nó, có thể là cơ sở hạ tầng VM cơ bản đã thay đổi một cái gì đó?
thanh lý

@l Liquidat Đây là đầu ra tôi nhận được : lrwxrwxrwx 1 root root 9 Jun 18 11:04 6f469437-4935-44c5-8ac6-53eb54a9af26 -> ../../vda. Đối với câu hỏi khác của bạn, tôi sẽ liên hệ với máy chủ web về điều đó.
it_me

Tôi muốn nói rằng máy có thể không khởi động lại vì mục nhập fstab hoàn toàn sai. Có thể là một đĩa nhân bản hoặc một cái gì đó. Tôi cho rằng không có thiết bị nào khác có UUID được cung cấp trong fstab?
thanh lý

Câu trả lời:


22

Ưu điểm của việc sử dụng UUID là nó độc lập với số thiết bị thực tế mà hệ điều hành cung cấp cho đĩa cứng của bạn.

Hãy tưởng tượng bạn thêm một đĩa cứng khác vào hệ thống và vì một số lý do, HĐH quyết định rằng đĩa cũ của bạn bây giờ sdbthay vì sda.

Quá trình khởi động của bạn sẽ bị sai sót nếu fstabtrỏ đến tên thiết bị. Nhưng trong trường hợp của UUID, nó vẫn ổn.

Thông tin chi tiết hơn về UUID cũng có thể được tìm thấy trên bài đăng trên blog "UUID và Linux: Mọi thứ bạn cần biết"


Vâng. ngay cả khi không thêm đĩa mới, kernel của bạn có thể quyết định chỉ trao đổi hai trong số các ổ đĩa của bạn gắn kết một ngày. Xem wiki.archlinux.org/index.php/Persistent_block_device_naming
Tommy

Điều gì xảy ra nếu tôi muốn sao chép hình ảnh vào một đĩa khác, có UUID khác?
aloplop85

Có ít nhất một tình huống trong đó UUID ít hữu ích hơn: nếu bạn sao chép toàn bộ đĩa, sau đó khởi động lại, bạn có thể bị phân vùng gắn kết từ một trong hai đĩa hoặc sai đĩa.
boot13

Điều đó đúng - kiểm tra bài đăng trên blog được liên kết, nó thậm chí có một phần khi không sử dụng chúng.
thanh lý

Nếu bạn sao chép đĩa, bạn nên thay đổi UUID trên đĩa mới. Tune2fs xfs_admin hoặc reiserfstune có thể làm điều đó tùy thuộc vào hệ thống tập tin của bạn.
steveayre

3

Trong trường hợp đó, tôi có thể sửa đổi / etc / fstab thành cái này không?

Bạn có thể và nó có thể sẽ ổn, nhưng rất có thể sẽ tốt hơn nếu rời khỏi UUID.

UUID là các chuỗi tùy ý được sử dụng để xác định, trong trường hợp này, một phân vùng trên thiết bị khối; nó được lưu trữ với chính phân vùng và có thể được chỉ định một phân vùng khác nếu muốn (giống như các địa chỉ MAC).

Ưu điểm của việc sử dụng UUID là không thể nhầm lẫn, trong khi /dev/vdakhông; điều đó có thể xảy ra khi nó kết thúc là một ổ đĩa khác nhau khi khởi động, mặc dù điều này có thể hoàn toàn là lý thuyết trong bối cảnh (ví dụ: vì bạn chỉ có một ổ đĩa thuộc một loại cụ thể).

Một ví dụ khác tinh tế hơn về việc sử dụng tên thiết bị có thể gây ra sự cố là chuyển đổi gần đây trên một số hệ thống sang sử dụng tên thiết bị mạng nhất quán . Nếu điều này xảy ra như một bản nâng cấp và bạn đã sử dụng tên thiết bị được mã hóa cứng trong tập lệnh mạng ở đâu đó, nó sẽ bị hỏng. Một ví dụ song song các thiết bị khối WRT có thể là một bản nâng cấp kernel hoặc udev làm thay đổi sơ đồ đặt tên.

Một điểm của UUID là làm cho những điều này trở nên khả thi và không gây đau đớn. Vì vậy, trong khi bạn có thể sử dụng tên thiết bị, không có lợi thế nào để làm như vậy trừ khi (ví dụ) bạn có một hệ thống nơi bạn trao đổi các ổ đĩa khác nhau. Nói cách khác, nếu bạn không có lý do chính đáng để làm điều đó, hãy kiên trì UUID .


Đuợc. Vì vậy, những gì giải thích sự khác nhau cho UUIDs /dev/vdatrong /etc/fstabvà báo cáo bằng blkid? (Vui lòng xem câu hỏi được cập nhật nếu bạn chưa có.)
it_me

5
Thay vì hỏi trong một bản cập nhật, bạn nên hỏi nó như một câu hỏi riêng biệt ("Tại sao phân vùng được gắn kết của tôi UUID khác với phân vùng trong fstab?").
goldilocks

2

Bạn có thể làm man fstabcho một đọc khá ngắn gọn về nội dung và ngữ nghĩa của /etc/fstabtập tin. Trên x86, máy chủ Arch linux khá cập nhật của man fstabtôi , cung cấp cho tôi cái này:

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

Vì vậy, vâng, /dev/vdarõ ràng là một trong nhiều tên của một số thiết bị, do đó UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a, cho rằng cả hai tên dường như được gắn vào "/".

Nếu bạn nhìn vào thư mục, /dev/disk/by-uuid/bạn có thể thấy các liên kết tượng trưng chỉ đến những thứ như /dev/sda1, /dev/sdb1trên máy chủ của tôi. Đây có thể là một cách khác để kiểm tra giả thuyết của bạn. /dev/diskcó thư mục con by-id, by-path, by-uuidmà tất cả dường như tên thay thế cho thiết bị tương tự.


Trong trường hợp đó, vấn đề (như được cập nhật trong câu hỏi của tôi) là tôi nhận được hai UUID khác nhau cho /dev/vda! Xin vui lòng xem câu hỏi một lần nữa.
it_me

1
Nếu tôi trả lời câu hỏi ban đầu, có thể nên đánh dấu "đã trả lời" và viết một câu hỏi mới, để bạn không thu thập các câu trả lời không liên quan, câu trả lời phù hợp với câu hỏi gốc và không phải câu hỏi đã sửa đổi.
Bruce Ediger
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.