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)'