Linux Sunucularda Swap Alanı Oluşturmak & İnce Ayarları

Swap alanı ram yetmediği durumlarda, mysql çökmesi yaşadığınız vs. gibi durumlarda özellikle Digitalocean, vultr gibi yerlerden alınan ufak ramlı sunucularda gerekli oluyor.

Centos 7 de denedim. Centos sürümlerinde, Ubuntu vs de kullanılabilir.

İlk komut ile swap dosyasını oluşturuyoruz;

sudo dd if=/dev/zero of=swapfile bs=1K count=3M

3M olan yer 3 Gb swap alanı oluşturacağımı gösteriyor. Yani 1 gb swap alanı oluşturacaksak;

sudo dd if=/dev/zero of=swapfile bs=1K count=1M

10 Gb swap alanı oluşturacaksak;

sudo dd if=/dev/zero of=swapfile bs=1K count=10M

Diyerek açacağımız Gb ye göre komutu verip bekliyoruz. Bu alan diskinizden direk olarak düşülür. Orta kararda 2Gb bence yeterlidir.

Sonraki komutla Swap dosyamıza yazma hakkını veriyoruz;

sudo chmod 600 /swapfile

ana dizinde oluşturulan swap dosyamıza yazma iznimizi verdik.

Sonrasında;

ls -lh /swapfile

ile oluşan dosya özelliklerine bakıyoruz. Çıktısı alttaki gibi olur;

-rw------- 1 root root 3.0G Oct 23 01:08 /swapfile

Görüldüğü gibi ben 3 gb lik swap dosyası oluşturdum ve yazma iznini verdim.

Sonraki aşamada Swap alanını ilan ediyoruz. Kısaca ahanda bu swap diyoruz;

sudo mkswap /swapfile

Alttaki gibi bir çıktısı olur;

Setting up swapspace version 1, size = 3145724 KiB
no label, UUID=72e558ce-d33b-4b1c-a434-1d2c99df5990

Sonrasında swap alanını aktif ediyoruz:

sudo swapon /swapfile

İşlem tamam. Sonrasında bir doğrulayalım bakalım gördümü sistem;

free -h

dedik çıktı alttaki gibi olur.

Görüldüğü gibi sunucuda 1 gb ram var. 3 gb swap alanı oluşmuş.

İşlemimiz bitmedi. Makina tekrar başlayınca işlemi kalıcı hale getirmeliyiz. İşlemi fstab dosyamıza da tanıtıyoruz.

sudo nano /etc/fstab

Burayı yani /etc/fstab dosyasını aç dedik üstteki komutla. Sonra;

/swapfile swap swap defaults 0 0

bu kodu açtığımız dosyada alt kısma ekliyoruz.

Ctrl+x dedik sonra y dedik enterledik ve kaydettik sonrasında.

Yada dilersek /etc/fstab alanına eklemeyi tek satır komutlada yapabiliriz. (Üstteki gibi manuel eklemişseniz vermeyin alttaki komutu)

cat /etc/fstab | grep -q swapfile || echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab

Sonra reboot atıyoruz makinaya. (İnce ayarları da yapacaksanız alttaki ince ayarlarıda yapıp toplu 1 kere reboot en sonda da atabilirsiniz.) Ve makina açılınca;

free -h

diyoruz. Çıktımız alttaki gibiyse;

swap alanımız hayırlı uğurlu olsun.

=========== :grinning: BURANIN ALTINA G**ÜNÜZ YEMİYORSA GİRİŞMEYİN. ÜSTTEKİ İŞLEMLER İLE SWAP ZATEN OLUŞTURDUNUZ. :scream: ===========

Swap ince ayarları: (Zorunlu değil. Üstteki işlemleri yapmışsanız burası extra. İşte şu kadar seviyeye ramım gelince bu swapı kullanmaya başlasın bunu alttan itibaren belirliyorsunuz.

Swap alanı oluşturduk ama ram hangi aşamaya kadar kullanılınca swap alanı ram gibi kullanılacak bunu belirlemeliyiz.

Bunu da Swappiness ile yapabiliyoruz.

cat /proc/sys/vm/swappiness

komutunu verdik. Burada centos 7 de digitalocean’da 30 gibi bir değer çıkıyor.

Kısaca ters bir orantı var.

Swappiness değeri
10 ise eğer ram %90 kullanılırsa swap alanı kullanımı başlasın.
30 ise eğer ram %70 kullanılırsa swap alanı kullanımı başlasın.
40 ise eğer ram %60 kullanılırsa swap alanı kullanımı başlasın.
80 ise eğer ram %20 kullanılırsa swap alanı kullanımı başlasın.
100 ise eğer ram %0 kullanılırsa swap alanı kullanımı başlasın.

gibi telaffuz edebiliriz. Aslında 30 değeri benim için gayet iyi. Ama nasıl değiştirilir anlatmak adına alt bölüme detayları veriyorum.

nano /etc/sysctl.conf

komutuyla sysctl.conf dosyasını açıyoruz.

vm.swappiness = 10

diye ayarlayalım. Yoksa orda en altına ekleyelim. Varsa düzenleyelim. Yani telaffuzu;
10 ise eğer ram %90 kullanılırsa swap alanı kullanımı başlasın.
idi. Üstte vermiştik.

Sonrasında Centos için;

/usr/lib/tuned/latency-performance/tuned.conf
/usr/lib/tuned/throughput-performance/tuned.conf
/usr/lib/tuned/virtual-guest/tuned.conf

3 dosyada da aynı şekilde;

vm.swappiness = 10

bu değeri kaç yapacaksak değiştirelim. Bu tamamdır.

Sonrasında vfs_cache_pressure diye bir değer var. Bu değer 0 a yaklaşınca swap dosyasına alınan dosyalar daha uzun süre tutulur. Dokunmanızı önermiyorum ama bilgi olması açısından detaylarını veriyorum.

nano /etc/sysctl.conf

ile dosyamızı açıyoruz. Sonrasında;

vm.vfs_cache_pressure = 100

100 90 80 değer ne olacaksa yazıyoruz.

En sondada yaptığımız işlemlerin değerlerini kontrol ediyoruz;

Swap kontrolü:

cat /proc/sys/vm/swappiness

vm.vfs_cache_pressure kontrolü:

cat /proc/sys/vm/vfs_cache_pressure

neyi neyle ayarlamışsak o değeri verir. Bazı şeylerin etkinleşmesi için reboot atıyoruz sunucumuza. Sonrasında swap alanı ve vm.vfs_cache_pressure değerlerimizi üstteki 2 cat la başlayan komutla kontrol ediyoruz. Alttaki ile de bir bakış atıyoruz.

free -h

Noktalıyoruz.