Linux'ta takas özelliğini devre dışı bırakmanın en iyi yolu


53

Özel bir derlenmiş 3.18.9 çekirdek çalıştırıyorum ve sistemde takas devre dışı bırakmak için en iyi yolu merak ediyorum. Ayrıca fark yaratırsa init kullanıyorum.

/etc/fstabTakasın önyükleme sırasında çalışmasını / takılmasını önlemek için takas hattını yorumlamak veya kaldırmak yeterli mi yoksa çekirdeğin yeniden Support for paging of anonymous memory (swap)etkinleştirildiğinden% 100 emin olmadan yeniden derlemeliyim mi?

Şifreli bölümleri çalıştırıyorum ve sabit diske yanlışlıkla sızıntıyı önlemek istiyorum. Sistem spesifikasyonlarım, değişmeden değişebilen bir ortamda hayatta kalabilmem için yeterince harika.


Neden takas kodunuz şifrelenmiyor?
Michael Hampton,

@MichaelHampton Sonunda ne olacağını anlayana kadar o sırada bir ihtiyaç görmedim. Ayrıca sistemim, takasın kullanıldığı herhangi bir zamanda bir noktaya ulaşmıyor, bu yüzden çıkarmakta özgürüm.
user283167,

O zaman özelliği çekirdekten kaldırırdım. Aksi halde, birisi bir USB çubuğunu takıp yeniden takmaya başlayabilir.
ott--

@ott Kullanıcı swapon / swapoff çalıştırılabilir kodunu kullanmak için süper kullanıcı erişimi gerektirmiyor mu? Sadece durumunda tekrar devre dışı bırakabilirim, ancak ayrıcalıklı olmayan bir kullanıcının takas dosyaları oluşturabildiğinden emin değilim.
kullanici283167

Gerçekten de, örneğin bir istismarla yapabileceği süper kullanıcı erişimine ihtiyacı var. Peki sunucunuzu 7 gün 24 saat izliyor musunuz?
ott--

Yanıtlar:


76
  1. Yapılandırılmış takas cihazlarını ve dosyalarını ile tanımlayın cat /proc/swaps.
  2. Tüm takas cihazlarını ve dosyalarını ile kapatın swapoff -a.
  3. İçinde bulunan eşleşen referansı kaldırın /etc/fstab.
  4. İsteğe bağlı: Yeniden kullanımlarını önlemek için 1. adımda bulunan takas aygıtlarını veya dosyaları imha edin. Hassas bilgilerin sızdırılması konusundaki endişeleriniz nedeniyle, bir tür güvenli silme işlemi yapmayı düşünebilirsiniz.

adam takas


Bazı sistemlerde initrdarşivi de yeniden kurmalısınız , örneğin dracut --regenerate-all --forceveya ile mkinitrd, yoksa sistem açılmayacaktır. Sayesinde JO Aho ve Carlos ER üzerinde alt.os.linux.suse.
Ant_222

10

Eğer gerçekten eminseniz takas devre dışı bırakmak istediğiniz (not: bu bir değil fiziksel RAM fazlasıyla yeterli olduğundan oldukça emin olduğu yerlerde bile, önerilir), aşağıdaki adımları izleyin:

  1. koşmak swapoff -a: bu hemen takas devre dışı bırakacak
  2. takas girişini kaldır /etc/fstab
  3. rebootsistem. Değişim gitti ise, iyi. Bazı nedenlerden dolayı, hala buradaysa, takas bölümünü kaldırmak zorunda kaldı. Adım 1 ve 2'yi tekrarlayın ve bundan sonra (şimdi kullanılmayan) takas bölümünü kaldırmak için fdiskveya partedkullanın. Burada büyük bir özen gösterin: Yanlış bölümün kaldırılması feci etkilere neden olur!
  4. reboot

1
Yeterince koçunuz olsa bile neden takas devre dışı bırakılması önerilmez?
Rolf

1
Çünkü Linux, önbellekleme için daha fazla bellek boşaltmak için takas bölümünü proaktif olarak kullanıyor. Bu performansı artırabilir. Her neyse, bu ayarlanabilir bir parametredir. Daha fazla bilgi için burayı okuyun . Dahası, takassız bir sistemde hafıza tahsisinde bir artış artışı, çekirdeğin OOM katilini tetikleyebilir.
shodanshok,

1
Teşekkürler, bu makul. Yine de, eğer "yeterince ram" (örneğin: 8 veya 16 GB) dolu ise, o zaman bir tür istisnai durumun (bellek sızıntısı veya başka bir kaçak sorun ile uygulama, DDOS saldırısı vb.) Olabileceğini düşünüyordum. durumda bile takas bile sonunda boğulmuş olurdu. Belki çok ikna edici bir argüman yapmıyorum, ancak bu hafif masaüstü kullanımında olmamalı.
Rolf

9

Sadece takas bölümlerinin /etc/fstabotomatik olarak kullanıldığı, ancak sistemd biraz değişiyor olabilirdi. Yapmanız gerekebilir:

systemctl mask dev-sdXX.swap

(sdXX 'i değiştirin) bu, kullanılmasını istemiyorsanız, neden bir takas bölmesine sahip olduğunuz sorusunu soran, gerçek biçimlendirilmiş takas bölümünüze ...

Eğer systemd kullanmıyorsanız, takas girişlerini kaldırmak /etc/fstabyeterli olacaktır (bildiğim kadarıyla).

Belki de asıl çözüm, takas bölümlerinden kurtulmaktır, bu yüzden yanlışlıkla kullanılmazlar. Takas bölümlerini kaldırmak için, bölüm türünü takastan başka bir şeye değiştirmek için fdisk'i kullanırdım ve sonra bölümü veya kullanımı yeniden biçimlendiririm: dd if=/dev/zero of=/dev/old-swap-partitionsıfırlamak ve kullanımını önlemek için.

Ayrıca bkz . Systemd ile takas bölümünün kullanımını ayarlama .


Hala openRC üzerinden init kullanıyorum, sistemli kurulumdan kasıtlı olarak temizledim. Ve takas soruya gelince, dosya sistemimin üzerinde ext4 olacak şekilde şifrelenmiş dosyaları monte etmek için cryptsetup / luks kullanmaya karar verene kadar düzenli bir kurulum yapıyordum. İnit kullanırken takas devre dışı bırakma yoluna dokunmak çok nazik olabilirseniz çok sevinirim.
user283167

0

Ben görüntülediğinizde / etc / fstab Raspbian dosyayı Dediğim bir yorumu görmek

a swapfile is not a swap partition, no line here
  use dphys-swapfile swap[on|off] for that

Ancak önceden yapılandırılmış takas dosyasını tamamen devre dışı bırakmak için bu gayet iyi çalışıyor:

swapoff -a
chmod -x /etc/init.d/dphys-swapfile
reboot

Bu çözüm bana biraz hızlı ve kirli görünüyor, ancak, sadece ile yeniden etkinleştirebilirsiniz:

chmod +x /etc/init.d/dphys-swapfile
reboot
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.