swap-file


Linux sunucu/masaüstü sisteminizin performansını artırmak için ek bir takas alanına ihtiyacınız varsa, yeni bir bölüm oluşturmadan komut satırı seçeneklerini kullanarak Linux sisteminize nasıl bir takas dosyası ekleyeceğinizi öğrenmek istiyor musunuz?

Linux’ta, diğer Unix benzeri işletim sistemlerinde olduğu gibi, bir sabit diskin tam bir bölümünü takas için kullanmak yaygın bir uygulamadır. Ancak, Linux çekirdeğinin 2.6 sürümü ile takas dosyaları takas bölümleri kadar hızlıdır, ancak bir takas bölümü kullanmanız önerilir. Takas dosyalarının idari esnekliği, bölüntülerinkinden daha üstündür; çünkü modern yüksek kapasiteli sabit sürücüler fiziksel sektörleri yeniden haritalayabilir, hiçbir bölüm kesintisiz olmayabilir. Bir takas dosyası olarak ayrılmış bir bölüm veya bir takas dosyası oluşturmak için aşağıdaki talimatları kullanabilirsiniz.


Linux’ta Bir Takas Dosyası Eklemek İçin İşlemler

dd komutunu kullanarak bir takas dosyası oluşturmanız gerekiyor. mkswap komutu, bir Linux takas alanını bir aygıtta veya bir dosyada yapılandırmak için kullanılır.

Adım 1 – Kök Kullanıcı Olarak Oturum Açın


Bir terminal penceresi açın (Uygulamalar > Aksesuarlar > Terminal’i seçin) veya ssh istemcisini kullanarak uzak bir sunucuya giriş yapın. Kök kullanıcıya geçmek için su – (veya sudo -s) yazın ve istendiğinde kök parolasını girin:


$ su -

OR


$ sudo -s

Adım 2 – Depolama Dosyası Oluşturun

Aşağıdaki komutu kullanarak 512MB’lık bir takas dosyası oluşturun (1024 * 512MB = 524288 blok boyutu):


# dd if=/dev/zero of=/swapfile1 bs=1024 count=524288

Örnek çıktılar:

524288+0 records in
524288+0 records out
536870912 bytes (537 MB) copied, 3.23347 s, 166 MB/s

Nerede?

1.if=/dev/zero /dev/zero dosyasından okur. /dev/zero, /swapfile1 adlı depolama dosyasını oluşturmak için çok sayıda null karakter sağlayan özel bir dosyadır.
2.of=/swapfile1 /dev/zero dosyasından oku depolama dosyasını /swapfile1’e yaz.
3. bs=1024 Bir seferde 1024 bayt okur ve yazar.
4.count=524288 Sadece 523288 giriş bloğunu kopyala.

Adım 3 – Güvenli takas dosyası

Güvenlik nedeniyle doğru dosya iznini ayarlayın, şunu girin: Tüm dünyanın okuyabileceği bir takas dosyası çok büyük bir yerel güvenlik açığıdır. Yukarıdaki komutlar yalnızca kök kullanıcının dosyayı okuyup yazabilmesini sağlar.


# chown root:root /swapfile1
# chmod 0600 /swapfile1

Adım 4 – Bir Linux takas alanı kurun

Bir dosyada Linux takas alanı kurmak için aşağıdaki komutu yazın:


# mkswap /swapfile1

Örnek çıktılar:

Setting up swapspace version 1, size = 524284 KiB
no label, UUID=0e5e7c60-bbba-4089-a76c-2bb29c0f0839

Adım 5 – Takas dosyasının etkinleştirilmesi

Son olarak, /swapfile1 takas alanını hemen etkinleştirin, enter tuşuna basın:


# swapon /swapfile1

Adım 6 – /etc/fstab dosyasını güncelleyin

Linux sistemi yeniden başlatıldıktan sonra /swapfile1’i etkinleştirmek için /etc/fstab dosyasına giriş ekleyin. Bu dosyayı vi gibi bir metin düzenleyici kullanarak açın:


# vi /etc/fstab

Aşağıdaki satırı ekleyin:
/swapfile1 none swap sw 0 0

Dosyayı kaydedin ve kapatın. Linux yeniden başlatıldıktan sonra bir dahaki sefere geldiğinde, yeni takas dosyasını sizin için otomatik olarak etkinleştirir.

Linux takas dosyasının etkin olup olmadığını nasıl doğrularım?

Sadece free komutunu kullanın:
$ free -m

             total       used       free     shared    buffers     cached
Mem:          1876       1798         77          0        119       1440
-/+ buffers/cache:        237       1638
Swap:         4607          0       4607

Bkz.

Linux’ta takas kullanım özetini nasıl görüntüleyebilirim?

Aşağıdaki swapon komutunu yazın:
# swapon -s

Örnek çıktılar:

Filename                Type        Size    Used    Priority
/dev/sda6                               partition    4194296 0   0
/swapfile1                              file        524280  0   -1

Başka bir seçenek de /proc/meminfo dosyasını görüntülemektir:


$ less /proc/meminfo
$ grep -i --color swap /proc/meminfo

Örnek çıktılar:

SwapCached:        30748 kB
SwapTotal:       6291448 kB
SwapFree:        6154008 kB

Takas kullanımı hakkında bilgi görüntülemek için top komutunu, atop komutunu ve/veya htop komutunu da kullanabilirsiniz:


# top
# atop
# htop

CentOS Linux sunucusu üzerinde çalışan bir veritabanı sunucusundan örnek çıktılar:

  1  [||                        3.9%]     Tasks: 171, 106 thr; 1 running
  2  [                          0.0%]     Load average: 0.06 0.12 0.09 
  3  [||                        2.0%]     Uptime: 22 days, 07:07:28
  4  [                          0.0%]
  5  [                          0.0%]
  6  [                          0.0%]
  7  [                          0.0%]
  8  [                          0.0%]
  Mem[||||||||||||||||||2112/11909MB]
  Swp[|                   134/6143MB]

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 8523 mysql      20   0 4545M  414M  4816 S  0.0  3.5  0:00.00 /usr/libexec/mysq
 8524 mysql      20   0 4545M  414M  4816 S  0.0  3.5  0:02.74 /usr/libexec/mysq
 8525 mysql      20   0 4545M  414M  4816 S  0.0  3.5  0:16.17 /usr/libexec/mysq
 8526 mysql      20   0 4545M  414M  4816 S  0.0  3.5  0:06.33 /usr/libexec/mysq
 8528 mysql      20   0 4545M  414M  4816 S  0.0  3.5  4:02.14 /usr/libexec/mysq
 8529 mysql      20   0 4545M  414M  4816 S  0.0  3.5  5:22.00 /usr/libexec/mysq
 8530 mysql      20   0 4545M  414M  4816 S  0.0  3.5  0:04.63 /usr/libexec/mysq
 8531 mysql      20   0 4545M  414M  4816 S  0.0  3.5  0:50.95 /usr/libexec/mysq
 8532 mysql      20   0 4545M  414M  4816 S  0.0  3.5  0:08.10 /usr/libexec/mysq
 9359 mysql      20   0 4545M  414M  4816 S  0.0  3.5 22:53.28 /usr/libexec/mysq

Linux’ta disk belleği ve takas için aygıtları ve dosyaları nasıl devre dışı bırakabilirim?

Swapoff komutunu kullanmanız gerekir:


# swapoff /swapfile1
# swapon -s

Bir Linux sunucusunda takas özelliğini nasıl ayarlayabilirim?

Sözdizimi sysctl komutu için aşağıdaki gibidir:


# sysctl vm.swappiness=VALUE
# sysctl vm.swappiness=20

Ya da


# echo VALUE > /proc/sys/vm/swappiness
# echo 30 > /proc/sys/vm/swappiness

proc/sys/vm/swappiness dosyasındaki değer, çekirdeğin bellek sayfalarını ne kadar agresif bir şekilde takas edeceğini kontrol eder. Yüksek değerler agresifliği artırır, düşük değerler agresifliği azaltır. Varsayılan değer 60’tır. Değişiklikleri kalıcı hale getirmek için /etc/sysctl.conf dosyasına aşağıdaki satırı ekleyin:


# echo 'vm.swappiness=30' >> /etc/sysctl.conf


Çalışma zamanında disk belleği ve takas için aygıtları ve dosyaları nasıl devre dışı bırakabilirim?

swapoff komutunu yazın:


$ sudo swapoff -a

Sonuç Olarak

Linux işletim sistemleri altında takas dosyasının nasıl ekleneceğini öğrendiniz. Linux bulut sunucunuzda veya makinenizde man komutunu/info komutunu veya help komutunu kullanarak aşağıdaki man çıktılarını da kontrol edebilirsiniz.


$ man 'mkswap(8)'
$ man 'swapon(8)'
$ man 'dd(1)'
$ man 'free(1)'
$ man 'vmstat(1)'
$ man 'top(1)'