Pindahkan / tmp ke RAM

16

Saya mencoba untuk pindah /tmpke RAM dan mematuhi praktik yang baik:

  • /var/tmptidak boleh ditempatkan tmpfs, karena harus selamat dari reboot

  • tidak me /tmp- mount sebagai yang berdiri sendiri tmpfs, tetapi mengandalkan /dev/shmatau/run/shm

Namun, banyak hal telah berubah antara kernel 2.6 dan 3.2:

Perubahan pada konfigurasi dan default sistem file tmpfs

Pada kernel 3.2, gunakan RAMTMP=yesdi /etc/default/tmpfs.

Pertanyaan saya adalah: bagaimana saya bisa mencapai tujuan ini dengan kernel yang lebih tua?

Pilihan saya bukan untuk memodifikasi / etc / fstab baik ini:

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

Apakah ada sekitar RAMTMP2,6 kernel?

Massimo
sumber
1
tmpfsdianggap berbahaya . Inspirasi.
sr_
8
@ sr_ Maaf, saya sangat tidak setuju dengan artikel yang ditautkan. /tmpdapat dan harus digunakan untuk file sementara, itulah intinya. /tmptidak seharusnya selamat dari reboot (gunakan /var/tmpuntuk itu) dan siapa yang membuat email setengah dari RAM + swap (tanpa menyimpannya)?
Marco
@ Mars yakin, saya hanya melempar sesuatu yang saya pikir terkait.
sr_

Jawaban:

19

Anda tidak harus melakukan semua itu, Anda bisa memasang /tmpsebagai tmpfsmenggunakan garis seperti berikut ini di /etc/fstab:

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

Anda juga dapat melakukannya secara langsung (tetapi ingatlah hal-hal yang saat ini ada /tmppada sistem file Anda saat ini tidak akan dapat diakses kecuali melalui inode dan deskriptor file yang saat ini terbuka, jadi Anda harus melakukan ini dengan memodifikasi /etc/fstabdan me-reboot):

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

Perhatikan bahwa tmpfscan swap. Jika Anda menginginkan sistem file yang benar-benar RAM, gunakan ramfs.

Chris Down
sumber
Chris, poin saya adalah "praktik terbaik". Pengembang menempatkan dukungan asli ke mount / tmp lebih dari ... / shm; Saya membaca lebih baik menggunakan kembali tmpfs yang sama.
Massimo
3
@ Massimo Pendapat saya adalah bahwa praktik terbaik adalah tidak mengikat mount. Ini menambah kompleksitas yang tidak perlu.
Chris Down
5
@ Massimo Di mana Anda menemukan 'praktik terbaik' ini? Satu-satunya alasan saya dapat melihat terhadap pemasangan /tmpsebagai tmpfs adalah karena Anda sekarang memiliki 2 filesystem tmpfs potensial yang dapat mengisi dan menggunakan lebih banyak memori ( /tmpdan /dev/shm). Tetapi jika Anda benar-benar khawatir tentang mengisi 2 tmpfs mount, Anda dapat mengurangi ukuran maksimum tmpfs mount.
Patrick
@ ChrisDown apa yang buruk tentang bind mount? Juga memiliki satu tmpf mungkin membuat hal-hal sederhana bukan?
CMCDragonkai
2
@CMCDragonkai Bind mounts sama sekali tidak sederhana secara internal, mereka datang dengan beberapa peringatan tidak intuitif yang mungkin tidak Anda maksudkan (yang secara khusus dipublikasikan adalah drama seputar yang membutuhkan remount untuk mount read-only). Cukup gunakan dua tmpfsmount sebagai gantinya.
Chris Down
17

/etc/default/tmpfsadalah untuk sysvinit, untuk systemd(Debian default sejak jessie), Anda hanya perlu melakukan:

systemctl enable tmp.mount

dan pada Debian Stretch

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

lihat changelog di https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=787542#74

Llu
sumber
Terima kasih! Ini adalah cara yang tepat untuk memindahkan / tmp ke tmpfs di Jessie.
Yasiru G
Terima kasih banyak! pada gentoo saya tidak mengerti mengapa / tmp saya dipasang tmpfs. skrip systemd tmp.mount yang melakukannya.
ufk
4

Saya tahu ini agak lama tetapi dalam pengaturan distribusi tipe-Debian Atur RAMTMP, RAMRUN dan RAMLOCK di / etc / default / tmpfs (/ etc / default / rcS atau sebelum wheezy) melakukan pekerjaan yang sama.

luison
sumber