Swap (Takas) Alanı Nedir ?
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.)
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.)
Makalemizde Swap alanını 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="" 85="" boot="" c7="" extended="" linux="" ppc="" prep="" span="" 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="" ab="" boot="" darwin="" dos="" f2="" gnu="" hurd="" or="" secondary="" span="" sys=""> 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. 3>32m>
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
Bu makalemizdeki “Linux İşletim Sistemlerinde Swap Alanı Yönetimini” inceledik. Burada uygulanan adımlar “Oracle Enterprise Linux 6.4″ işletim sistemi üzerinde test edilmiştir. Diğer Linux dağıtımlarıylada uyumludur.
Başka bir makalede görüşmek üzere…
kaybak: http://www.koraykey.com/?p=2246
Yorumlar
Yorum Gönder