/ Tmp dizini için RAM depolama alanını nasıl kullanabilirim ve maksimum RAM kullanım miktarını nasıl ayarlayabilirim?


92

Soru üzerine Anonim tarafından yapılan yorumları gördükten sonra / tmp dizini nasıl temizlenir? , Sistemimde uygulamanın harika bir fikir olacağını buldum, çünkü 16GB RAM'im var ve hiçbir zaman kullanmadım.

Geçici dosyalarım asla diske yazılmaz. Bir RAM diske yazılır. tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0/ Etc / fstab içine yazdım .

Sorum şu:

RAM Kullanımı için maksimum değer ayarlayabilir miyim /tmp? Ve bu durumda, eğer maksimum miktar aşılırsa ne olur, sabit diske yazılır mı?

Bunu belirten bir çözüm okudum:

mkdir -p /tmp/ram
sudo mount -t tmpfs -o size=512M tmpfs /tmp/ram/

Fakat benim anladığım kadarıyla, bu kalıcı bir çözüm olmayacak. Kalıcı olması gerekiyorsa, /etc/fstabyapılandırma dosyasına eklenmesi gerekir .

Bu doğru çözüm ise, bu mount komutunu bir satırda nasıl dönüştürebilirim /etc/fstab?


bu aynı zamanda yararlı bir yazı ile 'tüketmeyeceğiniz' ve
SSD'niz

Ha ha tam olarak aynı soru beni buraya getirdi: D
Teddy Markov

Yanıtlar:


80

Kesinlikle haklısın. Fstab girişine göre şöyle olur:

tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,noexec,mode=1777,size=512M 0 0

Lütfen aklınızda bulundurun:

As tmpfsdoldurdu, bir "yeterli alan" hatası vererek herhangi bir fiziksel sabit disk gibi davranacaktır. Yeniden başlatma (ve böylece önbelleği boşaltmak) bunu düzeltirken, tek bir işlem başlamak için boşluktan daha fazla alan harcadığında sorun yaşayabilirsiniz tmpfs. Bu durumda, bilgisayarınız elbette başlamak üzere bir takas bölümünüz olması koşuluyla, sisteminizin durmasına neden olacak şekilde, ramdan diske geçmeye başlayacaktır.

Bunu göz önünde bulundurarak, bugünlerde 512 MB'lık bir büyüklük günümüzde çok daha az olabilir, çünkü modern makinelerde çok daha fazla koç vardır ve bu daha ucuz hale gelmiştir. Zaten 16GB ram'a sahip olduğunuzdan, ramınızın yarısı için varsayılan değeri kullanmak, tmpfsneredeyse tüm senaryolar için yeterli olmalıdır. Varsayılan değeri kullanmak için size=512Mgirişi /etc/fstabdosyanızda bırakın .

Başka bir not:

Diğer sistem klasörlerini de kolayca ramdisk'e, örneğin

/var/cache

/var/games

/var/log/apt(sadece veya defaults,noatimeolmadan kullanın )mode=nosuid

Ancak dikkatli olun: Yukarıdaki kuralların aynısı geçerlidir, alanın tükenmesi büyük sorunlara neden olabilir. Örneğin, / var / log / apt için alanın tükeneceğini hayal edin, hiçbir program yükleyemezsiniz! Ayrıca, /var/logklasörleri ramdisk içine yüklemek , yeniden başlattıktan sonra tüm günlük dosyalarınızı siler, böylece beklenmedik bir şey olursa sisteminizde hata ayıklayamazsınız. Yani bu ayarları kullanmak kendi sorumluluğunuzdadır!

Editorial not: Bu klasör ve alt klasörleri zaten varsayılan olarak takılı olduğundan /run, tmpfstakma seçeneğini kaldırdım tmpfs.


11
Yanılmıyorsam / var / tmp /, yeniden başlattıktan sonra dosyaları tutmak içindir. Bu ve / tmp / arasındaki temel fark budur, bu yüzden / var / tmp'i ram'a taşımamalısınız.

3
Ubuntu'da 4GB tmpfs bitiyorsa, 20GB SWAP bölümümü kullanır mı?
Loostro

3
Evet, bunu da eklemem gerekecek. Tmpfs sınırlarını aştığında, bölmeyi değiştirecek şekilde uzatacaktır (bir tane verin).
FuzzyQ

5
RAM'inizin yarısını ayırmak, RAM'inizin yarısının RAMDISK için ayrıldığı anlamına mı geliyor, yoksa sadece RAMDISK'in tüketebileceği bir başlık mı ve kullanımda olmayanlar, RAM'in ihtiyacı olan programa atanan ücretsiz RAM'dir.
matt

6
@ matt Sadece bir kapak.
FuzzyQ

35

Kullanılan sistemlerde systemd, mount'ı kullanma amacını gerçekleştirmek için fstab yerine systemd birim dosyası kullanma tmpfsseçeneğiniz vardır tmp. Ubuntu 16.04 sistemimde koştum:

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

Dosya /usr/share/systemd/tmp.mountşuna benziyor:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
[Unit]
Description=Temporary Directory
Documentation=man:hier(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
ConditionPathIsSymbolicLink=!/tmp
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
After=swap.target

[Mount]
What=tmpfs
Where=/tmp
Type=tmpfs
Options=mode=1777,strictatime

[Install]
WantedBy=local-fs.target

FuzzyQ'un fstab yaklaşımını kullanan systemd, fstab girişlerinizi dinamik olarak mount birimlerine dönüştürür. Her iki yaklaşımın da daha iyi olduğunu sanmıyorum.

Sorular olarak RAM maksimum limitini ayarlamak için, bir eklemek gerekir size=512Miçin Optionsbir virgül ile ayrılmış hat.


2
systemctl enable tmp.mountCp else systemctl " Failed to start tmp.mount: Unit tmp.mount not found." mesajıyla başarısız olacak sonra ihtiyacınız olacak
vimdude

4
@Rick, rahatsız edici systemctl edit tmp.mountolacak şekilde kullanmak daha iyi . Bu, değişikliklerinizi override.conf içine koyar, böylece varsayılan tmp.mount ayarını değiştirmezsiniz ve varsayılan yapılandırmaya geri dönmek için override.conf dosyasını kolayca silebilirsiniz.
Bulat M.

Bulat'ın systemctl edit'i kullanmakla ilgili söylediklerini ve aynı zamanda ilk adımdan ln -sziyade aynı şeyi kullanın cp.
Michael Gratton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.