Linux sistemler üzerinde LVM ile disk ekleme

Home » Linux » Linux sistemler üzerinde LVM ile disk ekleme
Linux Yorum yapılmamış

Herhangi sanal ortamda (Vmware, hyper-v, citrix xen v.b.) bulunan mevcut bir linux dağıtımımız üzerinde yine mevcut bir yapımıza yeni bir disk eklememiz gerektiğinde bir takım işlemler yapmamız gerekmektedir. Yani örneğin vmware üzerinde sanal sunucuya disk eklediğimizde bu hemen kullanabileceğimiz anlamına gelmez. Bunu sunucuda tanıtmamız, bir takım işlemlerden geçirmemiz ve tanımlamamız gerekmektedir.

Ben buradaki işlemleri Vmware Workstation ortam üzerinde bulunan Debian 6x sunucumda yapıyorum. Genel anlamda mantık aynı olduğu için başta LVM mantığını sonrasında, bölümlendirme mantığı, disk yapıları gibi konularda bilgi sahibi olunması gerekiyor.

Bilindiği gibi yeni bir disk eklenecekse bu iki yolla yapılır. Bunlardan ilki ya olan bir diskin üzerine ekleme yaparak tamamen genişletme, diğeri ise mevcut diske dokunmadan yeni bir disk alanı oluşturmak. (yani windows ortamında c ve d diskleri gibi..)
1- Var olan disk bölümünü genişletmek,
2- Mevcut yapıya yeni bir disk bölümü eklemek,

Öncesinde işlemlere başlamadan önce birtakım bilgilere sahip olunması gerekiyor. Bunların ne olduğuna kısaca hatırlama amaçlı göz atalım,

Dosya Sistemleri Nelerdir ?

Dosya sisteminden önce dosya sistemini oluşturan dizinler, kapsamları, görevleri ve amaçlarını açıklamak gerekir. Aslında daha çok dizin yapısını kapsamaktadır. FSSTND standartları adı altında kök dizin (/) altında bulunan dizinler aşağıdaki gibidir.

/bin      : Olması zorunlu temel komut dosyalarını içerir.
/boot    : Başlangıç için gerekli dosyaları bulundurur.
/dev      : Donanım dosyaları vardır.
/etc       : Sistem ayarlarını barındırır.
/lib        : Kütüphane dosyaları ve çekirdek modülleri bulunur.
/media : Kaldırılabilir aygıtların (CD-ROM, USB bellek vb.) sisteme eklendiği klasördür.
/mnt     : Sistem açılışında otomatik olarak bağlanan sabit disk bölümleri bu dizin altında eklenir.
/opt      : Üçüncü parti kullanıcı programlarının kurulması içindir.
/sbin    : Sistemi yöneticisiyle ilgili çalıştırabilir dosyaları tutar.
/srv      : Sistemin sunduğu hizmetlerle alakalıdır.
/tmp    : Geçici dosyaları tutmak içindir.
/usr     : Tüm kullanıcılarca paylaşılan verileri içeren dizindir.
/var     : Log dosyaları, e-posta ve yazıcı kuyrukları gibi değişken verileri barındırır.

http://wiki.ubuntu-tr.net/index.php?title=Linux_dosya_sistemi_hiyerar%C5%9Fisi

Yukarıdaki yapıyı detaylı açıklamayacağım. Fakat tüm bu yapının arkadasında elbette düzenleyicisi ve alt yapısı olan dosya sistemi mevcuttur.

Nasıl ki windows ortamlarda ntfs ve fat gibi dosya sistemleri kullanılmaktaysa linux sistemler üzerinde de buna benzer farklı karakteristik ve özelliklerde dosya sistemleri de mevcuttur. Bunlar nelerdir kısaca göz atalım,

ext2 : Bir sonraki versiyon yani ext3 çıkana kadar en çok tercih edilen ve kararlı dosya sistemi idi. İleriye yönelik ve gelişime açık özelliği olması nedeniyle zamanla yerini ext3 ve ext4 dosya sistemlerine bıraktı. Standart unix türevlerini desteklemektedir. Ayrıca journaling özelliği bulunmaması ve veri kayıpları gibi problemleri mevcut olması bir sonraki versiyonun geliştirilmesi için gerekli zemin hazırlamıştır.
http://tr.wikipedia.org/wiki/Ext2

ext3 : Kararlı bir dosya sistemi olmakla beraber journaling (günlükleme) özelliğine sahip olması tercih sebebidir. Bir çok linux dağıtımında default olarak gelmekte ve kullanılmaktadır. Bu dosya sisteminde ext2’ye oranla bir çok problemler, hatalar giderilerek uyumluluk testlerinin ardından ext2 kullanıcıları için kolaylıkla geçiş imkanı tanınmıştır.

http://tr.wikipedia.org/wiki/Ext3

Journaling Nedir ?
Basit ve temel anlamda; disk üzerinde bir işlem yapılacağı zaman öncelikle diskin kendi üzerine yazmadan bir günlük üzerinde tutar ve sonrasında disk üzerine uygular. Bu özelliği sayesinde elektrik kesilmesi veya bunun gibi sistemsel problemlerde yapının en son haline ulaşarak işlemlerin tekrar yapılmasını sağlar ve data kaybını önlemeye yarar. Veriyi iki sefer yazdığı için performans açısından çok sağlıklı olduğu söylenemez. Fakat işe yaramadığı da söylenmemeli.. Ext2 yapıda data kaybının nedeni de bu özelliğe sahip olmamasıydı..

ext4 : Bir önceki sistem olan ext3’ün özelliklerine ve ekstra bir çok geliştirme yapılması ile ortaya çıkan bu dosya sisteminin esas ve önemli özelliği büyük boyutlu dosya ve dosya sistemi özelliği taşımasıdır. Aynı zamanda journaling özelliğindeki performans kayıpları e2fsprogs ve journal checksum gibi araçların gelmesi ile oldukça güzel bir seviyeye getirmiş durumdadır. Bu özellik artık rhel ve centos 6x sürümleriyle birlikte default gelmeye başladığını görebiliriz.

http://tr.wikipedia.org/wiki/Ext4

Msdos : MSDOS, OS/2 ve Windows NT ile uyumlu bir dosya sistemi yapısıdır. MSDOS içerisinde de, Ext3 dosya sisteminde olduğu, dosyaların diske yazılırken parçalanma problemini en aza indirgemek için kullanılan birçok birleştirme programı vardır.

http://tr.wikipedia.org/wiki/MS-DOS

Umsdos : Unix anlamına gelen U harfinden yola çıkarak msdos sisteminin linux dosya sistemi şeklinde çalışabilmesini sağlar.

http://www.tldp.org/HOWTO/UMSDOS-HOWTO.html

Reiserfs: Geliştiricisi Hans Reiser tarafından ismini almış ext3’ün üstüne geliştirilmiş ve dosya sistemi büyüklüğü maksimum seviyeye çıkarmıl bir dosya sistemi yapısıdır. Sistem üzerinde yapılan tüm değişiklikler blok olarak tutulmaktadır.

http://tr.wikipedia.org/wiki/ReiserFS

Dosya sistemleri ile ilgili ayrıntılı bilgiler için aşağıdaki adresler ziyaret edilmeli ve incelenmeli,

https://wiki.archlinux.org/index.php/file_systems
http://tldp.org/LDP/intro-linux/html/sect_03_01.html
http://en.wikipedia.org/wiki/Comparison_of_file_systems
http://bidb.itu.edu.tr/seyirdefteri/blog/2013/09/06/linux-dosya-sistemleri
LVM Nedir, Ne işe yarar,
LVM (Logical Volume Manager), Linux çekirdeği için bir Mantıksal Hacim Yöneticisi’dir. LVM kullanarak depolama alanınızı soyut hale getirebilir, düzenlemesi daha kolay olan “sanal disk bölümleri” oluşturabilirsiniz.

LVM birden fazla diski tek bir disk bölümü olarak kullanmamıza olanak sağlayan ve disk yönetimi işlemlerinde büyük fayda sağlayan bir teknolojidir.

Mantısal Hacim Yönetimi modüler disk veri kümesi oluşturmamıza böylelikle de mevcut disk alanımız üzerinde dilediğimiz zaman dilediğimiz boyutlandırmayı yeniden yapabilmemize, olanak sağlayan bir yapıdır.

Disk alanımızın yetersiz kaldığı durumlarda LVM ile oluşturduğumuz disk veri kümesine, kolaylıkla yeni disk veya disk bölümleri ilave edebilir, çıkarabilir mevcut ihtiyaçlarımıza göre disk alanımızı şekillendirebiliriz.

– Physical Volume – (Fiziksel Bölüm) Fiziksel disk bölümlerinden oluşur.
– Volume Group     – (Bölüm Grubu) Mantıksal ve Fiziksel alanları içerir ve en üst katmanda bulunur.
– Logical Group      – (Mantıksal Grup) Dosya sistemini içeren, disk bölümlerinin karşılığı anlamına gelir.

Bu konu elbette bir kaç satırdan oluşmayacak kadar detaylı ve bir çok özelliği barındırmaktadır. Fakat temel anlamda mantığını bilinmesi yeterlidir. Aşağıdaki kaynaklar bu konuda aydınlatıcı bilgileri içermektedir,

http://tr.wikipedia.org/wiki/LVM
http://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)
http://tldp.org/HOWTO/LVM-HOWTO/
https://www.howtoforge.com/linux_lvm
Şimdi işlemlere başlamadan önce kendi sunucum üzerindeki durumlara göz atıyorum. Linux Debian dağıtımı olduğunun bilgisini vermiştim. Bunun yanında kurulum aşamasında disk yapılandırmam LVM olarak kurulmuştu. Fakat bunu dert etmeniz gerekmez. İleriki bölümde nasıl LVM’e dahil edilir görüyor olacağız.

Sunucum üzerindeki fdisk çıktısını kontrol ediyorum,

Sunucum üzerindeki disk bölümlendirmesine göz atıyorum,

Mevcut disk volumu kontrol ediyorum,

Disk volume’me ait detay bilgilerimi görüntülüyorum,

———————————————
SONUÇ,
Sonuç olarak yapım üzerinde 20gb ‘lık bir disk bulunuyor. Bu diskim /dev/sda bölümü altında bölümlere ayrılmış durumda ve “server-root” isminde bir volume grubu içerisinde yer alıyor.

Ben bu aşamada sunucuma ilk olarak yeni bir disk ekleyeceğim ve var olan diskin üzerinden işlemlere devam edeceğim.
———————————————

Sanal platformum üzerinden diski ekledim ve şimdi sunucu üzerinde eklenen disk görülüyormu kontrol edeceğim. Bunun için önce dmesg log üzerinde aramam gerekiyor.

(dmesg log uzun olduğu için ben yalnızca eklenen disk ile ilgili satırları grep’ledim.)

Gördüğüm gibi yeni bir SCSI diskin sunucuma attach edildiğini/eklendiğini gördüm. Hemen sonrasında fdisk çıktısı alıyorum ve /dev/sdb ile ilgili satırı “Disk /dev/sdb doesn’t contain a valid partition table” görebiliyorum. Bu demektirki artık disk üzerinde işlem yapılmaya hazır.

Bu noktada 2 yöntem ile de LVM üzerinden disk genişletme ve disk oluşturma adımlarına geçebiliriz.

1. Yöntem – Yeni bir disk yapısı oluşturmak,

Yukarıdaki anlatımlarımda sisteme daha önce /dev/sdb adı altında bir bölüm eklemiştim. Şimdi bu bölüm üzerinden işlem yaparak yeni bir disk alanı ekleyeceğim. Bunun için öncelikle fdisk yardımı ile bu bölümü oluşturarak ext3 formatında formatlayacağım.

Bunun için yapılması gereken adımlar aşağıdaki gibidir. Yapılan tüm adımlara ait genel döküm işlem adımlarının hemen altında yer almaktadır.
İşlem Adımları,
– Öncelikle komutumuz verilir,

– Sonrasında Karşımıza gelen ekranda “n” (add a new partition) anlamını taşıyan kısa komut verilir.
– Bu komutun verilmesinin ardından sistem bize oluşturulacak bölümün “extend” veya “primary partition” olmak üzere bir seçim yapmamızı ister. Biz bu adımda “p” seçeneği yani “primary partition” ile devam ederiz.
– Seçim yapılmasının ardından 1 ile 4 arasında bir bölüm numarası vermemiz istenir. Burada “1” verilerek devam edilir. (1 verdiğim zaman /dev/sdb1 olacaktır.)
– Bölüm numarasının hemen ardından sisminin başlangıç ve bitiş değerlerini belirtmemizi isteyen satırlarla karşılaşacağız. Burada default değerlere dokunmadan yalnızca “enter” tuşuna basarak devam edilir ve yapılandırma tamamlanır.
– Son olarak sistem tekrar fdisk konsoluna geri döndürecektir. Burada “write table to disk and exit” anlamına gelen “w” komutunu veririz ve yapılan değişikliklerin kayıt edilerek ilgili komut programından çıkılmasını sağlar.

İşlem adımlarının yapılmış şekli,

Bölümlendirmeyi tamamladığımıza göre ben kararını vermiş olduğum ext3 dosya sistemi olarak /dev/sdb1 bölümünü formatlayacağım. Bunun için aşağıdaki komutu vermem yeterli,

Artık diskim ve bölümlendirmem hazır olduğuna göre sistemime mount ederek kullanımına başlayabilirim. Bunun için son 3 adım kaldı. Bunlar,

İlk Adım,
– Mount edeceğimiz bir dizin oluşturuyorum,
mkdir /mnt/yenidiskim

İkinci Adım,
– Oluşturduğum bu dizine /dev/sdb1 bölümünü mount ediyorum,
mount /dev/sdb1 /mnt/yenidiskim

Son adım,
– Elbette kontrol ediyorum. Aynı zamanda sistemde sürekli olarak ve otomatik mount edilmesini sağlamak için /etc/fstab üzerinde ilgili satırı giriyorum.

Sistem açılışlarında otomatik mount edilmesi için herhangi bir editör yardımı ile dosya açılır ve son satırına ilgili bölümümüz eklenir, (ben nano editörü kullanıyorum dileyen vi kullanabilir..)

###Son Satıra Eklenecek Bölüm###

Hatta editörle uğraşmadan aşağıdaki komut dizilimini direk konsola yazarsanız da otomatik eklenecektir,

Son bir fdisk ile listeyi çekerek kontrolünü sağlayayım,

 

2. Yöntem – Var olan disk yapısını genişletmek/büyütmek,

Bu işlem önce sunucuma yine bir disk ekleyeceğim. Buradaki anlatımım üzerinden gittiğim için var olan yapım üzerinde işlem yapacağım.

Sunucuma sanal ortam üzerinden diskimi ekliyorum ve fdisk ile listenin çıktısını alıyorum,

Görüldüğü gibi listede tam olarak aşağıdaki satırı arıyordum ve buldum. Bu demektirki sistem üzerinde diskim eklenmiş ve /dev/sdc adını almış bulunmakta. Şimdi işlemlerini /dev/sdc üzerinden yapacağım.

Burada tıpkı 1.seçenekte /dev/sdb bölümü için gösterdiğim gibi aynı şekilde /dev/sdc bölümü içinde fdisk üzerinden bölümlendirmesini yapacağım.

Bunun için yapılması gereken adımlar aşağıdaki gibidir. Yapılan tüm adımlara ait genel döküm işlem adımlarının hemen altında yer almaktadır.
İşlem Adımları,
– Öncelikle komutumuz verilir,

– Sonrasında Karşımıza gelen ekranda “n” (add a new partition) anlamını taşıyan kısa komut verilir.
– Bu komutun verilmesinin ardından sistem bize oluşturulacak bölümün “extend” veya “primary partition” olmak üzere bir seçim yapmamızı ister. Biz bu adımda “p” seçeneği yani “primary partition” ile devam ederiz.
– Seçim yapılmasının ardından 1 ile 4 arasında bir bölüm numarası vermemiz istenir. Burada “1” verilerek devam edilir. (1 verdiğim zaman /dev/sdb1 olacaktır.)
– Bölüm numarasının hemen ardından sisminin başlangıç ve bitiş değerlerini belirtmemizi isteyen satırlarla karşılaşacağız. Burada default değerlere dokunmadan yalnızca “enter” tuşuna basarak devam edilir ve yapılandırma tamamlanır.
– Bölümü oluşturduktan sonra ilgili fdisk konsol ekranında iken “t” seçeneği içe sistem üzerinde bölümün id’sini değiştireceğiz (change a partition’s system id). Bunun için “t” tuşuna basıyorum ve enter yaptıktan sonra ise benden hex code yapısında ilgili kodu girmemi isteyor. Bu kısma ise “8e” yazıyorum ve enter’a basarak işlemimi tamamlamış oluyorum.
Detay Bilgi,
Burada amaç LVM yapısına ilgili diskimi dahil etmek. Hex kodlar olarak adlandırılan tüm seçenekler aşağıda yer alıyor. Bunun için ilgili komut ekranında iken “L” (list) anlamına gelen kısa komutunu yazarak listeleyebilirim,

– Son olarak sistem tekrar fdisk konsoluna geri döndürecektir. Burada “write table to disk and exit” anlamına gelen “w” komutunu veririz ve yapılan değişikliklerin kayıt edilerek ilgili komut programından çıkılmasını sağlar.

İşlem adımlarının yapılmış şekli,

Bu işlemleri tamamladığıma göre tekrar fdisk ile daha önce bölünmenmediği uyarısı verilen /dev/sdc bölümümün son durumuna bakıyorum,

(kısaltılmış hali)

Bu noktada volume grup ile ilgili işlemlerime geçebilirim. Öncelikle /dev/sdb1 bölümümü sistemimde önceden var olan volume grubuma ekliyorum. (Önceden var olan volume grup adı=server)

Kontrolünü sağladığım zaman daha önceden olan “server” isimli volume grup’a /dev/sdc1 ‘inde dahil olduğunu görebiliyorum.

Sistemimdeki disk durumunun öncesini ve sonrasını görebilmem adına şu anki halinin df çıktısını alıyorum,

Şimdi daha önce pvscan ile taradığım zaman /dev/sdc’ye ait kullanılabilir 10.00 GiB görmüştüm. Bunu “server” volumu üzerine extend/açmam gerekiyor. Fakat açma işlemini yaparken 10G olarak değilde 09.98G olarak alacağım. Nedeni uzun bir konu fakat kısaca disk bloklarıyla ilgili durum.

Bu işlemin hemen ardından ilgili volume grubumu tekrar boyutlandıracağım ve iki diskin birleştiğini göreceğim,

Artık işlemimiz tamamlanmış durumdadır. Sistemimde son olarak df çıktısını kontrol ediyorum ve daha önce 19G olan alanımın şimdi 29G olduğunu görebiliyorum,

ÖZET,
2 çeşit yöntem ile linux dağıtım üzerinde disk ekleme işlemlerini gördük. Bunlardan ilki diski sisteme eklemek ve mount edilmiş bir şekilde tıpkı windows mantığı ile farklı bir bölüm oluşturarak kullanmamızı sağladık (örneğin c, d, e gibi)..

Diğer yöntemde ise mevcut yapımda bulunan 20gb’lık bir disk alanımın dolduğunu varsaydım ve 10G’lık yeni bir disk ekleyerek bu alanı biraz daha büyütme ihtiyacı duydum. Bu senaryodan yola çıkarak yapımda bulunan mevcut diski genişlettim.