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.

Linux LVM Logical Volume Manager 1


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 ~]#
  1. Öncelikle “Pyhsical Volume” oluşturuyoruz
[root@oracle12c ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created
  1. Diskimizi bağlayacağımız bir Volume Group oluşturuyoruz
[root@oracle12c ~]# vgcreate vg_test /dev/sdc1
Volume group "vg_test" successfully created
  1. “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.
  1. 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
  1. “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 ]
  1. Oluşturduğumuz diskleri aşağıdaki komutla listeleyebiliriz
[root@oracle12c ~]# lvscan
 ACTIVE '/dev/vg_test/lv_data1' [1.00 GiB] inherit
  1. 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
  1. 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.

Linux LVM Logical Volume Manager 2

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

394 total views, 4 views today