Tôi nên lưu trữ dữ liệu chia sẻ ở đâu trong hệ thống tập tin?


44

Trường hợp trong hệ thống tập tin unix là vị trí thông thường để lưu dữ liệu cụ thể của người dùng, ví dụ: dữ liệu được chia sẻ qua nfs hoặc ftp hoặc sao lưu?

Tôi rõ ràng có thể tạo và sử dụng bất kỳ thư mục tùy ý nào (như / home / shared, / data hoặc / var / data), nhưng tôi thực sự tự hỏi liệu có bất kỳ hướng dẫn thực hành "tốt nhất" hay "phổ biến" nào không. Các hệ thống tập tin tiêu chuẩn cấp bậc không chỉ định một vị trí cho dữ liệu chia sẻ.

Để sao lưu, tôi có xu hướng sử dụng / var / sao lưu, nhưng vì một số cronjobs ghi vào nó nên nó thực sự còn lại để sử dụng?

Câu trả lời:


29

Câu hỏi này dường như có câu trả lời rõ ràng trong Tiêu chuẩn phân cấp hệ thống tập tin , trong đó chỉ định /srv"chứa [ing] dữ liệu dành riêng cho trang web được cung cấp bởi hệ thống này" . (3.16.1)

Mục đích chính của việc chỉ định điều này là để người dùng có thể tìm thấy vị trí của các tệp dữ liệu cho dịch vụ cụ thể và để các dịch vụ yêu cầu một cây duy nhất cho dữ liệu chỉ đọc, dữ liệu có thể ghi và tập lệnh

(nhấn mạnh của tôi)

Lưu ý: 'Được phục vụ bởi hệ thống' không nhất thiết phải đề cập đến Internet. Nó thậm chí không có nghĩa là một mạng. Nó được áp dụng cho ngay cả một hệ thống chia sẻ. Hơn nữa, các từ trang webdịch vụ nên được hiểu theo nghĩa trước internet của chúng. Trang web của bạn có thể là "bộ phận vật lý" hoặc "văn phòng tài chính".

Nó tiếp tục nói:

Trên các hệ thống lớn, có thể hữu ích cho cấu trúc / srv theo ngữ cảnh quản trị, chẳng hạn như / srv / vật lý / www, / srv / compsci / cvs, v.v. Thiết lập này sẽ khác với máy chủ đến máy chủ. Do đó, không có chương trình nào nên dựa vào cấu trúc thư mục con cụ thể của / srv hiện có hoặc dữ liệu nhất thiết phải được lưu trữ trong / srv. Tuy nhiên / srv phải luôn tồn tại trên các hệ thống tuân thủ FHS và nên được sử dụng làm vị trí mặc định cho dữ liệu đó.

Do đó, bạn nên cấu trúc thêm dữ liệu của mình trong các thư mục như /srv/nfs, /srv/backupv.v.

Tôi cũng nên đề cập rằng ít người làm điều này nữa. Nhưng không có lý do chính đáng tại sao họ không. Các tiêu chuẩn là không có nghĩa là hết hạn.

/vartheo truyền thống được sử dụng cho những thứ như ống in và tệp nhật ký, nhưng nó cũng được máy chủ web Apache sử dụng (trên các hệ thống Debian - SUSE use / srv); Dường như không có sự đồng thuận về việc liệu /varmột thư mục thích hợp cho dữ liệu được chia sẻ. Nhưng nếu bạn quyết định sử dụng nó thay vào đó, bạn sẽ không hối tiếc.

Cũng lưu ý: Câu trả lời của Karthick không có nghĩa là sai. FHS nói / srv "nên được sử dụng làm vị trí mặc định cho dữ liệu đó", nhưng tiêu chuẩn để lại một số chỗ cho sở thích của riêng bạn, tùy thuộc vào cách bạn diễn giải các điều khoản.


4
Lưu ý rằng Debian (và Red Hat) đã bắt đầu đưa các tệp của Apache vào /var/www, trước đó /srv/là một phần của FHS.
mattdm

Một lời giải thích tốt, cảm ơn, mặc dù có vẻ như câu trả lời cho câu hỏi là "thực sự không có một tiêu chuẩn nào thực sự tuân theo". Có lẽ nên có, có lẽ nó thực sự không quan trọng.
misterben

Vâng, bạn nên luôn luôn phá vỡ các quy tắc khi bạn có lý do chính đáng để. Nhưng tôi ước tính tiêu chuẩn này được tuân thủ một cách tỉ mỉ trong nhiều triển khai quy mô lớn.
Stefano Palazzo

Những người muốn chuyển sang một tiêu chuẩn chung, nên tìm câu trả lời này một cách rõ ràng dựa trên FHS.
Jeremy

13
  • Dữ liệu không dành cho người dùng có thể được lưu trữ trong / usr / local / var để nó không kết thúc trên chia sẻ newtwork một lần nữa.
  • Bất cứ điều gì không thuộc ../local/ .. đều được phép kết thúc trên chia sẻ nfs, vì vậy nếu bạn muốn tải xuống dữ liệu từ chia sẻ nfs, và hãy chắc chắn rằng chúng được lưu trữ cục bộ trên ổ cứng.
  • Sau đó, bạn nên chọn một đường dẫn có ... / local / .. trong đó .... phần còn lại phụ thuộc vào bản chất của dữ liệu, vào loại dữ liệu. Nó có thể là / local / var hoặc / local / tmp, v.v. .

Hệ thống phân cấp tệp:
văn bản thay thế

Cũng có một cái nhìn về điều này


1
Mặc dù đây là một đại diện hữu ích của FHS, nó vẫn không đề xuất một vị trí tiêu chuẩn cho một kho lưu trữ dữ liệu được chia sẻ.
misterben

FSH tuyên bố rằng: / usr là dữ liệu có thể chia sẻ, chỉ đọc. Điều đó có nghĩa là / usr phải được chia sẻ giữa các máy chủ tuân thủ FHS khác nhau và không được ghi vào . Hmmm, vì vậy nó dường như phụ thuộc vào mục đích chia sẻ của bạn.
htorque

@htorque Tôi đang nghiêng về suy nghĩ ở đâu đó bên dưới / var là thích hợp nhất cho việc chia sẻ tệp, như bạn đã đề xuất trong câu trả lời (hiện đã bị xóa) của mình.
misterben

1
Tôi đã xóa câu trả lời của mình, vì FHS cũng tuyên bố rằng: Các ứng dụng thường không được thêm các thư mục vào cấp cao nhất của / var. Những thư mục như vậy chỉ nên được thêm vào nếu chúng có ý nghĩa toàn hệ thống và tham khảo danh sách gửi thư của FHS. - FHS đơn giản là không muốn bạn chia sẻ dữ liệu (có thể ghi)! : P
htorque

Cảm ơn, một cái nhìn tổng quan hữu ích và giống như câu trả lời khác mà nó thực sự phục vụ cho tài liệu rằng không có câu trả lời dứt khoát, bản thân nó rất hữu ích.
misterben

5

Tôi không nghĩ FHS định nghĩa bất kỳ nơi nào cho dữ liệu người dùng được chia sẻ. Tùy thuộc vào người dùng nơi họ muốn lưu trữ dữ liệu được chia sẻ. Tôi thường sử dụng /usr/local/sharedhoặc /home/shared.


1

Tôi đã thấy /exportđược sử dụng để phục vụ với nfs và /mntđược sử dụng để chia sẻ nfs cục bộ, trong môi trường công ty, như được đề xuất trong tài liệu NFS, một tiêu chuẩn mà tôi nghi ngờ ban đầu đến từ Sun OS, sau đổi tên thành Solaris.

Các /etc/exportstên tập tin đã xuất khẩu khối lượng và các /exportsthư mục phục vụ cho họ để người dùng từ xa, người gắn chúng trên /mnt. Máy chủ lưu trữ cũng có thể gắn các chia sẻ tương tự này /mntbằng cách sử dụng cùng một trình nền nfs để sử dụng bất kỳ máy khách hoặc quy trình nào đang chạy cục bộ trên máy chủ, để duy trì khả năng tương thích với bất kỳ máy chủ từ xa nào và có thể giữ lại chức năng cân bằng tải, hạn ngạch, v.v.

Đó là gần với một 'tiêu chuẩn' như nó được. Lưu ý rằng /exportkhông có trong FHS do đó /exportđã được thêm độc lập, vì vậy có lẽ không ai hài lòng /srv. Có lẽ vì sự nhầm lẫn tiềm ẩn với 'dịch vụ' chạy dưới dạng daemon chứ không phải là 'khối lượng được phục vụ'. /exportđược đặt tên rõ ràng với rất ít cơ hội nhầm lẫn. Tôi không bao giờ nhìn thấy bất cứ điều gì trong /srv.

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.