5.2. Takas alanının oluşturulması

Bir takas dosyası çekirdek ile özel bir bağı olmayan sıradan bir dosyadır. Çekirdeği ilgilendiren tek şey, o dosya içinde oyukların (hole) olmadığı ve mkswap(8)'ın kullanımı için hazırlanmış olduğudur. Ayrıca yerel bir disk üzerinde bulunması zorunludur. Bir NFS sistemi üzerinde bulunması uygulama şartlarından dolayı mümkün değildir.

Oyuklar hakkındaki ayrıntı önemlidir. Bir takas dosyası belli bir disk yüzeyini ayırır ve böylece çekirdek hızlı bir şekilde sayfa değiş tokuşunu sağlar. Bunu yaparken normal zamanlarda, bir disk yüzeyinin bir dosya için ayrılması işlemi için gerekli olan bütün işlemleri yerine getirmek zorunda kalmaz. Çekirdek sadece dosyaya ayrılmış sektörleri kullanır. Çünkü bir dosya içindeki oyuklar, ayrılmış bir sektör olmadığı anlamına gelir ve bunları kullanmaya çalışmak çekirdek için hiç de iyi bir fikir değildir.

Aşağıdaki komutla içinde oyuklar olmayan bir takas dosyası oluşturabilirsiniz:

# dd if=/dev/zero of=/ek-takas bs=1024 count=1024
1024+0 records in
1024+0 records out
#

/ek-takas takas dosyasının adıdır ve boyutu count='dan sonra belirtilmektedir. 4kB'ın katlarından oluşan bir alan ayırmak daha uygundur çünkü çekirdek bu alana 4 Kb lık boyutlar ile yazma yapar. Şayet 4kB'ın katları şeklinde alan ayırmazsanız, son bölüm kullanılamayan alan haline gelebilir.

Aslında takas bölümü özel bir bölüm değildir. Onu da diğer bölümleri yaratır gibi yaratırız, tek fark onun içinde işlenememiş bir alan bulunması ve bir dosya sistemi ihtiva etmemesidir. Aslında çekirdek için gerekli olmasa da takas alanını tür 82 (linux takas) olarak işaretlemek iyi olur. Bu, bölüm listesinin daha temiz ve kolay anlaşılır olmasını sağlayacaktır.

Bir swap dosyası veya bölümü oluşturulduktan sonra onun başlangıç bölümüne, çekirdek tarafından kullanılan ve bazı yönetim bilgilerini içeren, bir imza/iz koymalısınız. Bunun için mkswap komutu kullanılır:

# mkswap /ek-takas 1024
Takas alanı sürüm 1, uzunluk = 1044480 bayt olarak ayarlanıyor
#

Takas dosyası var olmasına rağmen henüz kullanımda değildir. Çekirdek bu bölümü sanal bellek sağlaması için kullanmamaktadır.

Uyarı

mkswap komutunu kullanırken çok dikkatli olun, çünkü bu komut işlem yapacağı bölüm veya dosyanın herhangi bir şey içermesine önem vermez. Kolaylıkla son derece önemli bilgiler bulunan bir dosya veya bölüm üzerine yazabilirsiniz. Şans eseri, mkswap komutuna sadece işletim sistemini kurarken ihtiyaç duyabilirsiniz.

Linux bellek yönetimi çeşitli teknik sebeplerden dolayı takas alanı boyutunu 127 MB [( 4096-10) * 8*4096= 139890048 byte] ile sınırlar. Bununla beraber toplam 8 adet takas alanı kullanabilirsiniz.

Aslında bu, şu an için doğru değildir. Yeni çıkan çekirdeklerin ve mkswap komutunun yeni sürümlerinin mimarilerine göre değişiklik göstermektedir. Takas alanları ile ilgili ayrıntılı bilgi mkswap(8) kılavuz sayfasında bulunabilir.