Di chuyển / tmp vào RAM


16

Tôi đang cố gắng chuyển /tmpsang RAM và tuân thủ thực hành tốt:

  • /var/tmpKHÔNG nên được đặt vào tmpfs, vì nó phải tồn tại khi khởi động lại

  • không gắn kết /tmpnhư một độc lập tmpfs, mà dựa vào /dev/shmhoặc/run/shm

Tuy nhiên, mọi thứ đã thay đổi giữa 2,6 và 3,2 hạt nhân:

Thay đổi cấu hình và mặc định của hệ thống tập tin tmpfs

Trên nhân 3.2, sử dụng RAMTMP=yestrong /etc/default/tmpfs.

Câu hỏi của tôi là: làm thế nào tôi có thể đạt được mục tiêu này với hạt nhân cũ?

Lựa chọn của tôi cũng không phải là sửa đổi / etc / fstab.

mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp

Có cái gì đó giống như RAMTMPcho 2,6 hạt nhân?


1
tmpfscoi là có hại . Thức ăn cho suy nghĩ.
sr_

8
@sr_ Xin lỗi, tôi hoàn toàn không đồng ý với bài viết được liên kết. /tmpcó thể và nên được sử dụng cho các tập tin tạm thời, đó là toàn bộ quan điểm của nó. /tmpkhông được phép tồn tại trong quá trình khởi động lại (sử dụng /var/tmpcho điều đó) và ai là người soạn email bằng một nửa kích thước RAM + trao đổi (mà không lưu nó)?
Marco

@Marco chắc chắn, tôi vừa ném vào thứ gì đó tôi nghĩ có liên quan.
sr_

Câu trả lời:


19

Bạn không cần phải làm tất cả những điều đó, bạn chỉ có thể gắn kết /tmpnhư tmpfsbằng cách sử dụng một dòng như sau trong /etc/fstab:

tmpfs /tmp tmpfs mode=1777,nosuid,nodev 0 0

Bạn cũng có thể thực hiện trực tiếp (nhưng lưu ý những thứ hiện có trong /tmphệ thống tệp hiện tại của bạn sẽ không thể truy cập được ngoại trừ thông qua mô tả tệp inode và hiện đang mở, vì vậy bạn thực sự nên làm điều này bằng cách sửa đổi /etc/fstabvà khởi động lại):

mount -o mode=1777,nosuid,nodev -t tmpfs tmpfs /tmp

Lưu ý rằng tmpfscó thể trao đổi. Nếu bạn muốn có một hệ thống tập tin thực sự chỉ có RAM, hãy sử dụng ramfs.


Chris, quan điểm của tôi là "thực hành tốt nhất". Các nhà phát triển đặt hỗ trợ riêng để gắn kết / tmp trên ... / shm; Tôi đọc nó là tốt hơn để sử dụng lại các tmpfs tương tự.
Massimo

3
@Massimo Ý kiến ​​của tôi là cách tốt nhất là không ràng buộc gắn kết. Nó thêm sự phức tạp không cần thiết.
Chris Xuống

5
@Massimo Bạn đang tìm thấy 'thực hành tốt nhất' này ở đâu? Lý do duy nhất tôi có thể thấy chống lại việc cài đặt /tmpdưới dạng tmpfs là vì hiện tại bạn có 2 hệ thống tệp tmpfs tiềm năng có thể lấp đầy và sử dụng nhiều bộ nhớ hơn ( /tmp/dev/shm). Nhưng nếu bạn thực sự lo lắng về việc lấp đầy 2 mount tmpfs, bạn có thể giảm kích thước tối đa của mount tmpfs.
Patrick

@ChrisDown có gì xấu về liên kết gắn kết? Ngoài ra có một tmpfs duy nhất có thể làm cho mọi thứ đơn giản hơn phải không?
CMCDragonkai

2
@CMCDragonkai Gắn kết gắn kết là bất cứ điều gì ngoại trừ đơn giản trong nội bộ, chúng đi kèm với một số cảnh báo không trực quan mà bạn có thể không có ý định (một phim công khai đặc biệt là bộ phim truyền hình xung quanh yêu cầu kết nối cho chỉ gắn kết chỉ đọc). Chỉ cần sử dụng hai tmpfsgắn kết thay thế.
Chris Down

17

/etc/default/tmpfslà dành sysvinitcho systemd(mặc định Debian kể từ jessie) bạn chỉ cần làm:

systemctl enable tmp.mount

và trên Debian Stretch

cp /usr/share/systemd/tmp.mount /etc/systemd/system/
systemctl enable tmp.mount

xem thay đổi trên https://bugs.debian.org/cgi-bin/ormsreport.cgi?orms=787542#74


Cảm ơn! Đây là cách thích hợp để di chuyển / tmp sang tmpfs trong Jessie.
Yasiru G

cảm ơn bạn rất nhiều! trên gentoo tôi không hiểu tại sao / tmp của tôi được gắn tmpfs. kịch bản systemd tmp.mount thực hiện nó.
ufk

4

Tôi biết điều này khá cũ nhưng trong cài đặt phân phối kiểu Debian Đặt RAMTMP, RAMRUN và RAMLOCK trong / etc / default / tmpfs (/ etc / default / rcS hoặc trước khi wheezy) thực hiện cùng một công việc.

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.