Gắn ổ đĩa ngoài vào thời điểm khởi động chỉ khi nó được cắm


70

Tôi đã có một mục cho một ổ cứng ngoài trong fstab của mình:

UUID="680C0FE30C0FAAE0" /jgdata ntfs noatime,rw

Nhưng đôi khi ổ đĩa này không được cắm vào lúc khởi động. Điều này khiến tôi đi được nửa đường khi khởi động, với lời nhắc "Tiếp tục chờ, nhấn S hoặc nhấn M" nhưng không có phím nhấn nào có ảnh hưởng ở giai đoạn này (bao gồm Ctrl- Alt- Delete, thậm chí không khóa nắp).

Viết tắt một đoạn script để kiểm tra đầu ra fdisk -l, làm thế nào tôi có thể gắn ổ đĩa này vào lúc khởi động chỉ khi nó có mặt? Sẽ rất hữu ích khi có một mục nhập fdisk cho ổ đĩa này, vì vậy tôi chỉ có thể gõ mount /jgdatathay vì cần một tên thiết bị.

Câu trả lời:


73

Bạn đang đi đúng hướng. Tôi đã tìm thấy một cách sạch sẽ hơn và hình thức tốt hơn một chút.

Tùy chọn chính xác để thêm vào fstabnofail, tuy nhiên, nó cần phải đến sau auto. Nếu bạn thay đổi nó noauto, nó sẽ không bao giờ gắn kết trong khi khởi động. Nếu bạn thêm nobootwaitvào bộ nạp khởi động, bạn có khả năng bỏ lỡ điều gì đó nghiêm trọng, chẳng hạn như gắn phân vùng trước khi fsckhoàn tất kiểm tra hoặc không gắn phân vùng được sử dụng trong quy trình khởi động.

Sau khi thực hiện thay đổi ở trên, Hệ thống sẽ khởi động bình thường (và lắp âm lượng) nếu thiết bị được cắm trong khi hệ thống tắt. Nó cũng sẽ khởi động bình thường nếu thiết bị không có mặt tại thời điểm khởi động.

Bất tiện duy nhất là nếu bạn kết nối thiết bị trong khi hệ thống đang chạy, tùy thuộc vào cấu hình (quá nhiều biến để kiểm tra), thiết bị có thể không được gắn ngay lập tức. Điều này có thể được khắc phục bằng một đơn giản mount -ahoặc mount /specific_devicekhởi động lại.


2
Mỗi ví dụ tôi có thể tìm thấy các chương trình trực tuyến trước khi tự động. Có tài liệu nào cho thứ tự đúng không?
Hackeron

'man fstab' không đưa ra độ chính xác của một đơn đặt hàng cần thiết (được kiểm tra trong centos 7 và Ubuntu 14.04). Mặc dù vậy, nó nói "nofail không báo cáo lỗi cho thiết bị này nếu nó không tồn tại." Tôi tự hỏi nếu điều này sẽ giúp không chờ thời gian chờ khi khởi động nếu không thể truy cập âm lượng nfs.
tisc0

16

Tôi có cùng một vấn đề - Tôi đã thực hiện thêm một bước

Nếu bạn sử dụng nofailtùy chọn trong /etc/fstab, hệ thống sẽ tìm đĩa của bạn (và phân vùng) khi khởi động. Nếu thiết bị được cắm, hệ thống tập tin sẽ được gắn kết. Nếu không, khởi động sẽ tiếp tục như bình thường.

Xem wiki vòm: https://wiki.archlinux.org/index.php/Fstab

Thí dụ

UUID=XXXXXXXXXXXXXXX    /myhdd ntfs  auto,nofail,noatime,rw,user    0   0

Tôi đã cố gắng khởi động hệ thống có và không có thiết bị cắm, và nó hoạt động tốt.

Những gì tôi chưa đạt được là tự động đếm khi đĩa được cắm sau khi khởi động (khi không được cắm khi khởi động). Tôi phải sử dụng mount -anhư root để gắn kết tất cả một lần nữa.


13

tùy chọn noauto có để quá trình khởi động tiếp tục không?

Nó không tự động gắn kết nếu có, nhưng nó được biết đến nếu có vì vậy một mount / jgdata đơn giản hoạt động ... sau đó, mount / jdata được viết kịch bản sẽ không cần kiểm tra đầu ra, chỉ cần bắt lỗi và tiếp tục khởi động

chỉnh sửa: khi đọc thêm một số bootwait có lẽ là một tùy chọn chính xác hơn để vượt qua ... (thường được sử dụng cho các chia sẻ mạng có thể không xuất hiện cho đến sau này trong quá trình khởi động, nhưng nó vẫn có thể gây ra treo, idk)

và tập lệnh gắn kết có thể được thêm vào như vậy: https://stackoverflow.com/questions/2062543/rasty-a-script-with-the-help-of-grub-and-menu-lst


Cảm ơn câu trả lời. Chỉ cần làm rõ, các tùy chọn sẽ được thêm vào dòng fstab, đúng không? (EDIT: Nvm, đã googled nó. Có vẻ như nobootwait là những gì tôi cần.)
Jeremy

1
Tôi đã sử dụng tùy chọn nobootwait trong fstab, hoạt động hoàn hảo, cảm ơn.
Jeremy

5
/dev/xvdh1 /myfs xfs defaults,nofail,x-systemd.device-timeout=30 0 0

đã làm cho tôi.

nofail ... Không báo cáo lỗi cho thiết bị này nếu nó không tồn tại.
x-systemd.device-timeout = 30 ... Khởi động sẽ mất 30 giây nữa nếu thiết bị không tồn tại (mặc định là 90 giây).

Nguồn: https://wiki.archlinux.org/index.php/fstab#External_devices


Đây là câu trả lời tốt nhất và đơn giản nhất. Lưu ý rằng đây là cú pháp mới cho các phiên bản HĐH mới hơn sử dụng systemd, thay thế nobootwaitcú pháp cũ
cxrodgers

Điều này làm việc cho tôi. Key đã thêm thời gian chờ thiết bị; chỉ cần sử dụng nofail, khởi động thực sự sẽ thất bại do thời gian chờ udev. (có lẽ là duy nhất cho các thiết bị USB)
BobHy

1

Cách được đề xuất để gắn kết trong quá trình khởi động là hướng dẫn hệ thống của họ thông qua tệp fstab . Nhìn vào Hỏi của bạn, tôi có thể thấy bạn gần như ở đó, chỉ thiếu hướng dẫn đặt thiết bị sử dụng tùy chọn tự động, cho phép hệ thống của bạn gắn thiết bị khi khả dụng.

Vì vậy, chỉ cần viết lại dòng trong fstab của bạn như sau:

# <file system>           <dir>       <type>    <options>         <dump> <pass>
UUID="680C0FE30C0FAAE0"   /jgdata      ntfs      user,auto,rw       0     0

Sau khi thay đổi và lưu nó, hãy thử gắn nó bằng tay:

$ sudo gắn kết -a

Điều quan trọng cần lưu ý là:

  1. bạn cần chắc chắn về UUID của thiết bị. Các UUID được tạo bởi các tiện ích make-filesystem (mkfs. *) Khi bạn tạo một hệ thống tập tin.
  2. Chúng <options>cần được viết theo một định dạng rất cụ thể, được phân tách bằng dấu phẩy nhưng không có khoảng trắng sau mỗi dấu phẩy. Hãy cẩn thận với điều này ;-)
  3. Tôi không chắc liệu điều này có hoạt động trơn tru không vì bạn đang cố gắng tự động hóa một hệ thống tệp NTFS, có thể điều khiển được bằng các tiện ích NTFS-3G . Mặc dù hướng dẫn của tôi được cho là hoạt động chính xác, tôi chưa bao giờ thử automount NTFS trước đây. Vì vậy, nếu thất bại, tôi khuyên bạn nên xem Phân vùng gắn kết Windows này để sử dụng thay thế NTFS.

Cảm ơn!


Tôi nghĩ rằng anh ấy nhận được hầu hết những gì bạn nói, nhưng nó bị treo khi đĩa không được phát hiện. đó là lý do tại sao tôi đề xuất cách giải quyết theo cách "phù hợp"
RobotHumans

Cảm ơn câu trả lời. sudo blkidLệnh FYI là một cách tốt để tìm ra UUID.
Jeremy

Tôi vừa thử dòng chính xác trong fstab. Khi cắm ổ cứng, hệ thống khởi động bình thường. Nhưng, trong khi khởi động, khi ổ cứng gắn ngoài không được cắm, nó vẫn nhắc tôi chờ / Bỏ qua / Phục hồi thủ công. Vì lời nhắc này không hết thời gian, nếu tôi không ở thiết bị đầu cuối, hộp sẽ không khởi động nếu ổ cứng gắn ngoài không được cắm vào.
Jeremy

Bạn cần thêm nofail, tùy chọn.
kkron

0

Tôi có cùng một vấn đề. Tôi đã chỉnh sửa fstab để nhận xét mục nhập khi tôi biết rằng tôi sẽ không có ổ đĩa hiện tại khi tôi khởi động. Sau đó, khi tôi có ổ đĩa, tôi chỉ cần chỉnh sửa fstab để xóa bình luận và phát hành mount -a. Đây không phải là một giải pháp hoàn hảo. Sẽ thật tuyệt nếu tôi có thể tìm ra cách để hệ thống tự động gắn ổ đĩa nếu có hoặc tự động bỏ qua nếu không có. Vấn đề tương tự xảy ra nếu cổ phiếu NFS của bạn được gắn tự động và máy chủ không có mặt.


1
Kiểm tra câu trả lời tôi đã chấp nhận, chỉ cần thêm nobootwait vào các tùy chọn gắn kết trong fstab.
Jeremy
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.