Ana içeriğe atla

Linux İşletim Sistemlerinde Swap Alanı Yönetimi

Swap (Takas) Alanı, sabit disk üzerinde işletim sistemi tarafından ayrılmış bir bölümdür. İşlenecek veriler “Rastgele Erişimli Belleğe” (RAM) sığmadığı zaman bu bölüm “RAM” gibi kullanılır ve böylece işlemlerin devam etmesi sağlanır. Sabit disklerin veri okuma/yazma hızları RAM’lerden çok daha düşük olduğu için takas alanının kullanılması işlemleri yavaşlatır. Linux işletim sisteminde bu alan sabit disk üzerindeki bir bölmelendirmedir. Fakat Microsoft’a ait Windows İşletim Sistemlerinde “pagefile.sys” isminde bir dosya oluşturulur, RAM’e sığmayan veri buraya yazılır ve Windows İşletim Sistemi kurulumunda ayarlanan boyut ortalama RAM miktarının 1.5 katıdır ve daha sonradan değiştirilebilir. Bu oluşturulan alanı kullanıcı normal olarak göremez; ancak üçüncü parti yazılım üreticilerinin programları ile görmesi mümkündür. Linux İşletim Sistemlerinde bu alanı kullanıcı belirler, genelde RAM değerinin iki katı olarak ayrılır. Swap (Takas) alanı eğer bir Oracle Veritabanı sunucusu için yapılandırılacaksa;

Sunucumuzda;
0 MB ile 256 MB arasında RAM varsa RAM boyutunun 3 katı,
256 MB ile 512 MB arasında RAM varsa RAM boyutunun 2 katı
512 MB ile 2GB arasında RAM varsa RAM boyutunun 1,5 katı
2 GB ile 16 GB arasında RAM varsa RAM boyutu kadar,
16 GB dan fazla RAM varsa 16GB swap alanı oluşturulmalıdır.
(Güncel değerler için kurulum aşamasında http://tahiti.oracle.com sitesinden kontrol edilmelidir.)
Swap alanı için 3 farklı yöntemde yapılandırmayı inceleleyeceğiz.
  • Yeni Bir Disk Ekleyerek Swap Alanını Genişletme
  • Mevcut Diskimiz Üzerinde Dosya Oluşturarak Swap Alanını Genişletme
  • Logical Volume Manager Kullanarak Swap Alanını Genişletme
A-) Yeni Bir Disk Ekleyerek Swap Alanını Genişletme:

1. Sunucumuzda ayrılmış swap alanını sorgulamak için aşağıdaki komutu kullanabiliriz. “Swap” alanımızı sorguladığımızda “4095 MB” swap alanımız olduğunu görüyoruz.
# free -m
             total       used       free     shared    buffers     cached
Mem:          2000        613       1387          0         41        246
-/+ buffers/cache:        325       1675
Swap:         4095          0       4095
2. Sunucumuzda performans durumunu izlemek için kullandığımı “top” komutuylada swap alanımızı görebiliriz.
# top
top - 18:42:44 up 17 min,  2 users,  load average: 0.30, 0.24, 0.17
Tasks: 170 total,   1 running, 169 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.0%us,  0.8%sy,  0.0%ni, 98.0%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:   2048420k total,   628368k used,  1420052k free,    42164k buffers
Swap:  4194300k total,        0k used,  4194300k free,   253024k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
 2804 root      20   0  163m  40m 7504 S  3.0  2.0   0:02.45 Xorg               
 3502 root      20   0  290m  13m 9.9m S  2.0  0.7   0:00.41 gnome-terminal     
 3226 root      20   0  426m  29m  21m S  0.3  1.5   0:02.16 vmtoolsd           
 3556 root      20   0 15080 1188  856 R  0.3  0.1   0:00.14 top                
    1 root      20   0 19400 1536 1228 S  0.0  0.1   0:01.76 init               
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd           
    3 root      20   0     0    0    0 S  0.0  0.0   0:00.01 ksoftirqd/0        
    5 root      20   0     0    0    0 S  0.0  0.0   0:00.04 kworker/u:0
3. Öncelikle yeni bir disk alanını swap alanına eklemeyi inceleyelim.
Sunucumuza yeni bir disk eklemeden önce disklerimizi sorguluyoruz.

# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2

Sunucumuza yeni bir disk ekledikten sonra disklerimizi sorguluyoruz.

# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb

Burada gördüğümüz "sdb" diskimiz geldi. Şimdi bu diskimizi swap alanı
için yapılandıralım.

Öncelikle diskimizde partition table oluşturmak için "fdisk" komutunu
kullanıyoruz.

# fdisk /dev/sdb

# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun,
SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x0a455d53.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261): 
Using default value 261

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
 5  Extended        42  SFS             86  NTFS volume set da  Non-FS data    
 6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)

Command (m for help): p

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0a455d53

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         261     2096451   82  Linux swap / Solaris

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Swap için kullanacağımız disk alanımızın partition table oluşmuş durumdadır.

Disklerimizi tekrar sorguluyoruz.

# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1

gördüğümüz gibi "sdb1" oluşmuş durumdadır.
4. Diskimizi swap alanına uygun şekilde formatlıyoruz ve swap alanlarımızı sorguluyoruz.
# mkswap /dev/sdb1
Setting up swapspace version 1, size = 2096444 KiB
no label, UUID=33e9125f-a2d4-49bf-b424-9c4cc9f5fbc8

# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda1                               partition       4194300 0       -1
/dev/sdb1                               partition       2096444 0       -1

Gördüğümüz gibi 4 GB ve 2 GB swap alanlarımız oluşmuş durumdadır.
5. Yeni yaratmış olduğum swap alanını “/etc/fstab” dosyasına ekliyoruz ve sunucumuzu yeniden başlatıyoruz.
# vim /etc/fstab
dosyasını açıp "sdb1" diskimizi aşağıdaki gibi ekliyoruz.

/dev/sdb1 swap             swap    defaults        0 0

Değişikliklerin geçerli olabilmesi için sunucumuzu yeniden başlatıyoruz.

# shutdown -r now
6. Sunucumuz yeniden başladıktan sonra swap alanımızı yeninden sorguladığımızda toplam 6 GB swap alanımızın olduğunu görüyoruz.
# free -m
             total       used       free     shared    buffers     cached
Mem:          2000        409       1590          0         33        171
-/+ buffers/cache:        204       4553
Swap:         6143          0       6143
B-) Mevcut Diskimiz Üzerinde Dosya Oluşturarak Swap Alanını Genişletme:

1. Aynı işlemi yeni bir disk eklemeden mevcut bir disk alanında aynı Windows işletim sistemindeki gibi bir dosya yaratarak bu dosyayı swap alanına atayabilirim bunun için öncelikle swap için kullanacağımız dosyamızı oluşturuyoruz.
-- Swap Alanına eklemek "/swapfile" isminde 2 GB boyutunda bir dosya oluşturuyoruz.

# dd if=/dev/zero of=/swapfile bs=1024 count=2097152

2097152+0 records in
2097152+0 records out
2147483648 bytes (2.1 GB) copied, 25.0808 s, 85.6 MB/s
2. Oluşturduğumuz dosyamızı swap dosyası formatına çeviriyoruz ve kontrol ediyoruz.
# mkswap /swapfile

mkswap: /swapfile: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=aa8a6a31-3b7d-4593-9584-1fd275d52eb4

Dosyamızın türünü kontrol ediyoruz.

# file /swapfile

/swapfile: Linux/i386 swap file (new style) 1 (4K pages) size 524287 pages
3. Oluşturduğumuz dosyamızın yetkilerini ve sahipliğini ayarlıyoruz.
# chown root:root /swapfile
# chmod 600 /swapfile
# swapon /swapfile
4. Yeni yaratmış olduğum swap alanını “/etc/fstab” dosyasına ekliyoruz ve sunucumuzu yeniden başlatıyoruz.
# vim /etc/fstab
dosyasını açıp "/swapfile" dosyamızı aşağıdaki gibi ekliyoruz.

/swapfile swap                    swap    defaults        0 0

Değişikliklerin geçerli olabilmesi için sunucumuzu yeniden başlatıyoruz.

# shutdown -r now
5. Sunucumuz yeniden başladıktan sonra swap alanımızı yeninden sorguladığımızda toplam 6 GB swap alanımızın olduğunu görüyoruz.
# free -m
             total       used       free     shared    buffers     cached
Mem:          2000       1917         82          0          7       1657
-/+ buffers/cache:        252       1748
Swap:         6143          0       6143
C-) Logical Volume Manager Kullanarak Swap Alanını Genişletme:

1. Öncelikle mevcut tanımlanmış swap alanımızı sorguluyoruz. Anlaşılır olması açısında LVM Kullanarak disk yapılandırması yapıyorsak aşağıdaki gibi isimlendirme yapmakta fayda var.
# cat /etc/fstab

/dev/mapper/vg_koraykey-lv_swap    swap        swap    defaults        0 0

Yukarıda swap alanımızın "vg_koraykey" Volume Grubunda "lv_swap" ismiyle
Logical Volume olarak mount edildiğini görüyoruz.
2. Sonrasında mevcut Volume Grubumuzun genişletebilmemiz için boş alan durumumuzu sorguluyoruz.
# vgdisplay
  --- Volume group ---
  VG Name               vg_koraykey
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               99.51 GiB
  PE Size               4.00 MiB
  Total PE              25474
  Alloc PE / Size       25474 / 99.51 GiB
  Free  PE / Size       0 / 0   
  VG UUID               iBHPHX-4MC0-bvWQ-3sOV-0Rb4-lYcS-3Uac3B

-- Görüldüğü gibi "Free PE/Size" "0" yani hiç boş alanımız yok o yüzden
öncelikle "lvextend" komutu ile volume grubumuzu genişleteceğiz.
Genişletme işlemi yapabilmek için "Volume Group" altına atanacak bir
diski 1. başlık 3. maddedeki adımlarla yapılandırıyoruz.

-- Oluşturduğumuz "/dev/sdb1" diskimizi kullanarak mevcut "Volume Group"
"vg_koraykey"i genişleteceğiz.

# vgextend vg_koraykey /dev/sdb1
No physical volume label read from /dev/sdb1
Physical volume "/dev/sdb1" successfully created
Volume group "vg_koraykey" successfully extended

-- Sunucumuzda "Volume Group" yeniden sorguladığımızda artık 2 GB alanımızın
boş olduğunu göreceğiz.

# vgdisplay
  --- Volume group ---
  VG Name               vg_koraykey
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               101.50 GiB
  PE Size               4.00 MiB
  Total PE              25985
  Alloc PE / Size       25474 / 99.51 GiB
  Free  PE / Size       511 / 2.00 GiB
  VG UUID               iBHPHX-4MC0-bvWQ-3sOV-0Rb4-lYcS-3Uac3B

-- Eğer sunucumuzda "Volume Group" altında yeterli disk alanımız varsa doğrudan
3. adıma geçebiliriz.
3. Şimdi mevcut swap alanımızı “Volume Group” altındaki boş alanı kullanarak genişletelebiliriz. 2 GB boş alanımız var bunun 1 GB alanını mevcut swap bölümünü genişletmek için kullanabiliriz.
# lvextend -L +1G /dev/mapper/vg_koraykey-lv_swap
Extending logical volume lv_swap to 5.00 GiB
Logical volume lv_swap successfully resized
4. Mevcut swap alanımızı genişlettikten sonra mkswap komutu ile alanınımızı tekrar swap olarak yapılandırıyoruz.
-- Öncelikle swap alanını yapılandırabilmek için durduruyoruz.
# swapoff -a

-- Alanımızı yeniden swap olarak yapılandırıyoruz.
# mkswap -f /dev/mapper/vg_koraykey-lv_swap
Setting up swapspace version 1, size = 5242876 KiB
no label, UUID=12887480-91ff-41d7-be84-4fac889e6648

-- Swap alanını yeniden başlatıyoruz.
# swapon -a
5. Sunucumuzda swap alanımızı yeninden sorguladığımızda 4 GB olan swap alanımızın toplam 5 GB’a genişlediğini görüyoruz.
-- Öncesi

# free -m
             total       used       free     shared    buffers     cached
Mem:          2000        613       1387          0         41        246
-/+ buffers/cache:        325       1675
Swap:         4095          0       4095

-- Sonrası

# free -m
             total       used       free     shared    buffers     cached
Mem:          2000       1906         93          0          8       1646
-/+ buffers/cache:        251       1748
Swap:         5119          0       5119
Kaynak: http://www.koraykey.com/?cat=8

Yorumlar

Bu blogdaki popüler yayınlar

Basit ve Dinamik Disk Nedir? Birbirine Nasıl Dönüştürülür?

Sabit diskler Windows 2000 işletim sistemine kadar sadece temel disk (basic disk) olarak ayarlanabiliyordu. Temel disk en fazla 4 birincil bölüm (primary partition) veya 3 primary ve 1 genişleyebilir bölüm (extended partition) şeklinde yapılandırılabilir. Bir temel diskte sadece 1 tane extended partition oluşturulabilir ve sadece primary partitionlara işletim sistemi kurulabilir. Windows 2000 ile gelen dinamik disk teknolojisi, Windows 2000 den sonraki tüm Windowssürümlerinde kullanılabilmektedir. Dinamik disk kavramıyla bölüm (partition) kavramı yerinihacim (volume) kavramına bırakmıştır. Dinamik disklerde, temel disklerde olduğu gibi bir sınırlama yoktur. İstenildiği kadar volume oluşturabilir, temel disk istenirse dinamik hale getirebilir ve bu işlem esnasında herhangi bir veri kaybı yaşanmaz. Fakat dinamik diskler temel diske çevirildiğinde bir veri kaybı söz konusu olacaktır. Temel diskin bilgileri kayıt defterinde tutulur. Dinamik diskin bilgileri kendi üstünde tutulur.

Einstein'in Rölativite Kuramına Bakış

Bu yüzyılın başlarında kuramsal fizikte altın çağ başladığı zaman, adı henüz bilim dünyasında duyulmamış bir fizikçi vardı. Bu, Annalen der Physık’in 1905 tarihli sayısında fotoelektrik olayı, Brown hareketi ve özel görelilikle ilgili ünlü üç çalışmasını birden yayınlayarak üne kavuşan Albert Einstein’dır. Onun fizikteki hayat boyu çalışmaları bilimin felsefesi ve yöntemleri üzerinde büyük etki yaptı. Einstein’ın kendisi bilimci filozoftu. Bu yüzyılın başlarında kuramsal fizikte altın çağ başladığı zaman, adı henüz bilim dünyasında duyulmamış bir fizikçi vardı. Bu, Annalen der Physık’in 1905 tarihli sayısında fotoelektrik olayı, Brown hareketi ve özel görelilikle ilgili ünlü üç çalışmasını birden yayınlayarak üne kavuşan Albert Einstein’dır. Onun fizikteki hayat boyu çalışmaları bilimin felsefesi ve yöntemleri üzerinde büyük etki yaptı. Einstein’ın kendisi bilimci filozoftu. O, hayranlık uyandırıcı bir şekilde felsefeyi kullanarak bugün modern bilimin önemli bir kısmı olan buluşlarını

Rubik Küp Nasıl Çözülür?

Rubik küp 3x3x3 veya 4x4x4 gibi karesel formatta ve her kenarı farklı renkte olan bir küptür. Bu küpün; sabır küpü, sinir küpü, zekâ küpü, renk küpü, Rubikin küpü, sihirli küp (magic box), 3d Puzzle, gibi birçok değişik adı vardır. Unutulmamalıdır ki küpün çözümü için geliştirilmiş bir algoritma vardır. Bu küp ezbere çözülemez. Bu yazıda sizlere küpün en yaygın çözümü anlatılacaktır. Hata yaptığınız yerde hatayı düzeltmeye çalışmayın belirtilen algoritma çerçevesinde çözüme baştan başlayın. Hala küpü çözemediyseniz buradaki yazımızda belirtilen otomatik çözen programları deneyebilirsiniz. Öncelikle bilmeniz gerekenler: Küpün parçaları birbirinden bağımsız değildirler. Küpün orta noktası daima sabittir. Küpü ne kadar çevirirseniz çevirin değişmezler. Kırmızının karşısında daima turuncu, yeşilin karşısında mavi, sarının karşısında beyaz vardır. Bir küp, toplam 26 adet parçadan oluşmaktadır: 8 adet üç renkli köşe parçası, 12 adet iki renkli parça ve 6 adet de sabit tek ren