Tại sao / var / run được di chuyển sang / run?


66

Từ tổng quan kỹ thuật của Ubuntu 11.10 Oneiric :

Ubuntu 11.10 đã di cư xa /var/run, /var/lock/dev/shmvà bây giờ sử dụng /run, /run/lock/run/shmthay vào đó (tương ứng).

  • Tôi mã hóa các đường dẫn này trong các ứng dụng của mình, tại sao thay đổi này được thực hiện cho Oneiric?
  • Tôi có thể làm gì để làm cho các ứng dụng của mình tương thích ngược và chuyển tiếp? Có cách nào tốt hơn ngoài việc kiểm tra sự tồn tại của đầu tiên /run, và sau đó /var/runkhông?

Câu trả lời:


58

Mục đích là để giảm số lượng tmpfshệ thống tập tin. Vào ngày 11.04, có các tmpfshệ thống tệp riêng biệt tại /var/lock, /var/run/dev/shm. Nếu tất cả các thư mục này đều nằm trong một thư mục cha, thì chỉ cần một thư mục duy nhất tmpfs. Nó cũng cung cấp một vị trí rõ ràng cho dữ liệu trạng thái thời gian chạy tiếp theo không nên tiếp tục trong quá trình khởi động lại.

Trừ khi ứng dụng của bạn phụ thuộc vào đường dẫn chính xác của tệp, ứng dụng của bạn sẽ chạy mà không cần sửa đổi vì các vị trí cũ sẽ được liên kết với các vị trí mới. Các chính sách AppArmor là một trường hợp phụ thuộc vào tên đường dẫn thực, đó là lý do tại sao nó được đề cập cụ thể.

Các liên kết sau đây sẽ giúp giải thích lý do:


36
  1. /run là một vị trí tmpfs phân phối chéo mới để lưu trữ các tệp trạng thái nhất thời, đó là các tệp chứa thông tin về thời gian chạy có thể hoặc không cần phải được viết sớm trong quá trình khởi động và không yêu cầu bảo quản trong quá trình khởi động lại.

    Làm cho /runthư mục có sẵn mang lại cho chúng ta một bước gần hơn đến điểm có thể sử dụng hệ thống bình thường với hệ thống tập tin gốc được gắn ở chế độ chỉ đọc, mà không yêu cầu bất kỳ cách giải quyết lộn xộn nào như aufs/unionfslớp phủ.

    /run thay thế một số vị trí hiện có được mô tả trong Tiêu chuẩn phân cấp hệ thống tập tin:

    • /var/run/run
    • /var/lock/run/lock
    • /dev/shm/run/shm[hiện tại chỉ Debian có kế hoạch thực hiện việc này]
    • /tmp/run/tmp[tùy chọn; Hiện tại chỉ có Debian có kế hoạch cung cấp cái này]
    • /run cũng thay thế một số vị trí khác đã được sử dụng cho các tệp tạm thời:

    • /lib/init/rw/run

    • /dev/.*/run/*
    • /dev/shm/*/run/*
    • tập tin ghi dưới /etc/run/*

    (vì vậy bạn có thể mong đợi những điều này sẽ di chuyển tốt).

    Nguồn: mục tiêu phát hành debian

  2. Tôi sẽ tư vấn về việc tạo một phần trong phần mềm của bạn, nơi bạn đặt các thư mục này thành các biến, thay đổi mã của bạn để sử dụng các biến này và sau đó thay đổi các biến dựa trên hệ thống mà nó được sử dụng (nhưng tôi cá là bạn đã biết điều đó rồi).


1
Bạn có ý nghĩa gì các tập tin có thể ghi dưới /etc. Những người phải tiếp tục khởi động lại quá khứ, phải không? Đó chỉ là tập tin conf chung.
Evan Carroll

6
Ồ tôi hiểu rồi. Ba tập tin dưới /etc, /etc/lvm/cache/ /etc/mtab /etc/network/run/ifstatevà sớm /etc/adjtime. Tôi cho rằng thật tệ /etckhi bắt đầu với họ.
Evan Carroll

5

Từ những gì tôi đã đọc, đây là lời giải thích ban đầu được đưa ra về lý do tại sao / chạy được giới thiệu. http://lwn.net/Articles/436012/


8
Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
Stefano Palazzo

3

Lưu ý: kể từ khi chạy / giới thiệu, các cấu hình nhỏ có thể gặp rắc rối. Máy chủ Ubuntu của tôi là RAM 256Mo và / chạy theo mặc định được đặt thành 49Mo.
Khi khởi động, nó lấp đầy hệ thống tập tin cho đến khi đầy đủ.
Thực hiện các thay đổi trong fstab không hoạt động để làm giảm kích thước tempfs / run. Không có thủ tục khác tôi tìm thấy trên gg.
Tôi tìm thấy giải pháp để thêm vào init script: /etc/rc.localdòng mount -t tmpfs tmpfs /run -o remount,size=85M mở rộng khi khởi động. (85M là dành cho tôi.)


2

Bạn không nên mã hóa bất kỳ /runđường dẫn nào trong số này !

  • Sử dụng /var/run, bởi vì một liên kết tượng trưng sẽ được /runáp dụng nếu có thể
  • /var/lock giống như trên
  • Đừng /dev/shmbao giờ sử dụng mã cứng , luôn luôn sử dụng shm_openvv (API posix)
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.