İçindekiler
LVM, modüler disk veri kümesi veya kümeleri oluşturulmasını, böylelikle de istenildiğinde mevcut disk alanı üzerinde istenilen boyutlandırmanın yeniden yapabilmesini sağlar. Disk alanının yetersiz kaldığı durumlarda LVM ile oluşturulan disk veri kümesine kolaylıkla yeni disk veya disk bölümleri ilave edebilir, ihtiyaca göre disk alanı şekillendirilebilir. Özellikle büyük disk alanı ihtiyacı olan sistemlerde LVM ile disk veri kümeleri oluşturularak ya da sisteme yeni bir disk daha eklenerek toplam disk boyutu arttırılabilir veya sistemde pasif durumda olan bir disk bölümü aktif disk kümesine dahil edilebilir. Aynı zamanda mevcut disk bölümlerinin boyutları değiştirilebilir. Yapılacak fiziksel veri alanı değişikliklerinden sistemin mevcut haritası hiçbir şekilde etkilenmez ve yeni tanımlar yapmaya gerek kalmaz.
LVM ile bir ya da birden fazla olan disklerinizi tek bir disk havuzuymuş gibi gösterip, partitions ile karmaşık disk alanı hesaplamalarını sizin yerinize soyutlayıp yapıyor.
Özellikler;
LVM’in en önemli özelliği online (on-the-fly) disk üzerinde işlem yapmamıza olanak sağlamaktadır.
Bir birinden bağımsız kaynaklar (diskler den tek bir Volume oluşturabilmektedir.
LVM, hacim grubu (Volume Group – vp) ve bu grubun içinde fiziksel hacim (Physical Volume – pv) ve mantıksal hacimlerden (Logical Volume – lv) oluşur.
- Volume Group : Fiziksel (Physical) ve mantıksal (Logical) hacimleri (volume) içine alan üst düzey bir katmandır.
- Physical Volume : Fiziksel hacim adından da anlaşılacağı üzere fiziksel aygıtlardan (disklerden) veya disk bölümlerinden oluşan kısımdır. Dikkat edilmesi gereken konu, oluşturulan partition (bölme) nin Linux LVM (8e) olarak tanımlanmış olması gerekmektedir! Partation yapısını fdisk veya parted disk yönetim araçları ile ilerleyen bolümde nasıl yapılacağı anlatılacaktır.
- Logical Volume : Disk bölümlerinin karşılığıdır. Dosya sistemi içerir. Filesystem (Dosya işletim sistemleri) nin yapılandırıldığı katman olarak adlandırılabilir. Genel olarak Linux ext3, ext4 filesystem kullanmakta.
Ayrıca fiziksel hacim içerisinde fiziksel birimler (PE) ve aynı şekilde mantıksal hacim içerisinde bulunan mantıksal kümeler vardır. Bunların varsayılan değeri tüm dosya sistemlerinde aynı olup 4 MB’dır.
- Fiziksel Birimler (PE): Fiziksel hacim her biri eşit uzunlukta (varsayılan değeri 4 MB) veri parçalarına bölünmüştür.
- Mantıksal Birimler (LE): Mantıksal hacimlerde aynı şekilde her biri eşit uzunlukta (varsayılan değeri 4 MB) veri parçalarına bölünmüştür. Fiziksel birimler ve mantıksal birimler arasında da birebir ilişki vardır.
Limitler;
LVM bir takım limitler içerir. Ancak bu limitler günümüzde bile kolay aşılabilecek ve problem oluşturabilecek limitler değildirler. Ayrıca bu limitler çekirdeğin sınırlarına, fiziksel ve mantıksal birim boyutlarına göre de sistemden sisteme farklılık gösterebilir.
Makine başına oluşturulabilecek maksimum hacim grubu (VG) sayısı 99 ‘dur.
Her hacim grubu içinde olabilecek maksimum fizisel hacim sayısı 256 dır. Tek bir LVM boyutu varsayılan 4 MB fiziksel birim değeri ile maksimum 255.99 GB olabilir. Bu değer kullanılan sistemin özelliğine göre 2 TB hatta istenildiğinde 1 Petabyte ‘a kadar çıkabilir.
Her fiziksel hacim grubu yine varsayılan 4 MB’lık fiziksel birim değeri ile maksimum 262 GB olabilir. Yani her fiziksel hacim grubu maksimum 65534 tane fiziksel birim içerebilir bu da varsayılan 4 MB’lık değer ile 65534*4 = 262 GB ‘a denk gelir.
LVM’de Kullanılan Komutlar ve Görevleri
- “pvcreate” sisteme diski veya bölümü fiziksel olarak tanıtır. Genellikle fdisk’ten sonra kullanılır
- “pvdisplay” fiziksel tanımlı diskleri ve bölümleri ekrana listeler
- “pvremove” fiziksel tanımlı diskin veya bölümün tanımını iptal eder
- “vgcreate” hacim grubu oluşturur
- “vgextend” hacim grubuna disk veya bölüm ekler
- “vgreduce” hacim grubundan disk veya bölüm çıkartır
- “vgremove” hacim grubununu kaldırır
- “vgdisplay” hacim grubunu listeler
- “vgcfgbackup” mevcut hacim grubunun ayarlarını bir dosyaya yedekler.(Ayarlar /etc/lvm/backup dizini altına yedeklenir)
- “vgcfgrestore” mevcut hacim grubunun ayarlarını dosyadan düzenler
- “lvcreate” tanımlı mantıksal gruptan disk alanı oluşturur
- “lvdisplay” mantıksal sürücüleri ekrana listeler
- “lvremove” mantıksal sürücüleri kaldırır
- “lvreduce” tanımlı mantıksal sürücülerden blok siler
- “lvextend” tanımlanmış mantıksal sürücüye blok ekler
- “lvmdiskscan” Sistemdeki tüm diskleri listeler
Örnek bir LVM yapılandırması
Öncelikle fiziksel diski bölümlendiririz(partition), fdisk veya parted aracını kullanabiliriz. Unutmamız gereken kısım bölümü Linux LVM olarak etiketlemeliyiz.
[root@oracle12c ~]# fdisk /dev/sdc Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x00b3e92c. 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): p Disk /dev/sdc: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 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: 0x00b3e92c Device Boot Start End Blocks Id System Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-2610, default 1): 1 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): 2610 Command (m for help): p Disk /dev/sdc: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 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: 0x00b3e92c Device Boot Start End Blocks Id System /dev/sdc1 1 2610 20964793+ 83 Linux 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): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): p Disk /dev/sdc: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 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: 0x00b3e92c Device Boot Start End Blocks Id System /dev/sdc1 1 2610 20964793+ 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@oracle12c ~]#
- Öncelikle “Pyhsical Volume” oluşturuyoruz
[root@oracle12c ~]# pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created
- Diskimizi bağlayacağımız bir Volume Group oluşturuyoruz
[root@oracle12c ~]# vgcreate vg_test /dev/sdc1 Volume group "vg_test" successfully created
- “vg_test” volume grup içinde bir tane data1 isimli disk oluşturuyoruz
[root@oracle12c ~]# lvcreate -n lv_data1 -L1GB vg_test Logical volume "lv_data1" created.
- Oluşturduğumuz “Volume Group” ları listelemek için aşağıdaki komutu kullanıyoruz.
[root@oracle12c ~]# vgdisplay --- Volume group --- VG Name : vg_test System ID Format : lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 19.99 GiB PE Size 4.00 MiB Total PE 5118 Alloc PE / Size 256 / 1.00 GiB Free PE / Size 4862 / 18.99 GiB VG UUID xDTJsV-NunQ-y5xa-VKHb-KKXn-V8iE-rdwK8W
- “Volume Group” altındaki disklerimizi göremek için aşağıdaki komutu kullanabiliriz.
[root@oracle12c ~]# pvscan PV /dev/sdc1 VG vg_test lvm2 [19.99 GiB / 18.99 GiB free] Total: 1 [19.99 GiB] / in use: 1 [19.99 GiB] / in no VG: 0 [0 ]
- Oluşturduğumuz diskleri aşağıdaki komutla listeleyebiliriz
[root@oracle12c ~]# lvscan ACTIVE '/dev/vg_test/lv_data1' [1.00 GiB] inherit
- Diskimizi “ext4” file system ile formatlıyoruz.
[root@oracle12c ~]# mkfs.ext4 /dev/vg_test/lv_data1 mke2fs 1.43-WIP (20-Jun-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 65536 inodes, 262144 blocks 13107 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=268435456 8 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done
- Formatlamış olduğumuz diskimizi bağlayacak bir dizin yaratıyoruz.
Diskimizi oluşturduğumuz dizine “mount” ediyoruz.
[root@oracle12c ~]# mkdir /data1 [root@oracle12c ~]# mount /dev/mapper/vg_test-lv_data1 /data1/ [root@oracle12c ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 47G 25G 21G 55% / tmpfs 2.0G 88K 2.0G 1% /dev/shm /dev/sda1 485M 108M 352M 24% /boot /dev/mapper/vg_test-lv_data1 1008M 34M 924M 4% /data1
Silme
Sistemimizde bulunan “Logical Volume”, “Volume Group” ve “Pyhciscal Volume”leri silmek için aşağıdaki adımları izlemeliyiz.
Öncelikle kaldıracağımız diskimizi “umount” ediyoruz.
[root@oracle12c ~]# umount /data1/
Logical Volume kaldırmak için.(Sadece bir disk kaldıracaksak bu adımı uygulamalıyız)
[root@oracle12c ~]# lvremove /dev/vg_test/lv_data1
Volume Group kaldırmak için. (Tüm volume group ve bağlı diskleri kaldıracaksak)
[root@oracle12c ~]# lvremove vg_test
Pyhsical Volume kaldırmak için. (Sistemimizdeki diski LVM kullanımı dışına çıkartacaksak bu adımı uygulamalıyız.)
[root@oracle12c ~]# pvremove /dev/sdc1
Aşağıdaki komut ile durumu sorgulayabiliriz.
[root@oracle12c ~]# vgdisplay
Genişletme
Sistemimizde bulunan bir diskle veya yeni takılan bir diskle mevcut alanlarımızı genişletmek için aşağıdaki adımları izlemeliyiz.
“vg_test” volume grubumuza yeni takdığımız diskimizi ekleyeceğiz.
Öncelikle diskimizde “fdisk” komutu ile “partition table” yaratıyoruz.
[root@oracle12c ~]# vgextend vg_test /dev/sdd1
Şimdi atadığımız bu diskimizdeki 4.99 GB alanı “lv_root” isimli diskimize ekleyelim.
[root@oracle12c ~]# lvextend -L+4.99GB /dev/vg_test/lv_data1
Küçültme
Sistemimizde bulunan bir diski küçültüp boşa çıkan alanı başka bir diske veya boşa çıkan alanla yeni bir “Logical Volume” oluşturmak istiyorsak aşağıdaki adımları izlemeliyiz.
Bir “Logical Volume” 10 GB alanı boşa çıkartalım.
[root@oracle12c ~]# lvreduce -L-3GB /dev/vg_test/lv_data1
Çıkarttığımız 10 GB alan ile yeni bir “Logical Volume” oluşturalım.
[root@oracle12c ~]# lvcreate -n lv_data2 -L10GB vg_test
Çıkartığımız 10 GB alanı varolan bir “Logical Volume” eklemek için
[root@oracle12c ~]# lvextend -L+10GB /dev/vg_test/lv_data2
Yedekleme ve Geri Yükleme
LVM için yaptığımız ayarları yedeklemek veya geri dönmek için aşağıdaki adımları izlemeliyiz. Burada verileri değil sadece LVM ayarlarını yedekle veya geri dönmektedir.
Ayarlarımızı yedeklemek için
( “/etc/lvm/backup” dizini altına yedeklenir.)
[root@oracle12c ~]# vgcfgbackup vg_koraykey
Ayarlarımızı yedekten dönmek için
[root@oracle12c ~]# vgcfgrestore vg_koraykey
lvm : Lvm komutlarının çıktısını ekrana listeler.
lvmdiskscan : Sistemdeki tüm diskleri listeler.
NOT : Yukarıda komutlarla yaptığımız bütün bu işlemleri GNOME Disks Utility, KDE Partition Manager veya Qtparted gibi araçlarla grafiksel olarak da yapabiliriz.
http://www.koraykey.com/?p=3315
http://www.admin-magazine.com/Archive/2017/41/Manage-logical-volumes-with-GUI-tools/(offset)/3
https://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-lvm.html
Mustafa Bektaş Tepe
İyi Çalışmalar