Logical Volume Management (LVM) merupakan dynamic partition yang dapat memudahkan seorang Administrator untuk melakukan management disk space. Prosesnya adalah dengan melakukan penggabungan beberapa media penyimpanan fisik (physical disk) atau storage disk dalam suatu volume group sehingga dari volume group tersebut dapat dibagi atau di partisi kembali menjadi satu atau beberapa logical volume sesuai dengan yang dibutuhkan. Seperti halnya melakukan proses partisi suatu disk fisik, hanya saja dengan menggunakan salah satu fitur LVM yaitu dapat memudahkan proses penambahan space (extend), pengurangan space (reduce) dan penyesuaian space (resize) suatu file sistem dalam LVM storage, baik Physical Volume (PV), Volume Group (VG) atau Logical Volume (LV).
Artikel ini merupakan dokumentasi hasil penerapan LVM pada mesin komputer dengan spesifikasi Sistem Operasi GNU/Linux CentOS 6.7 x86_64 dan dengan menggunakan 1x 500GB Hardisk Drive (HDD) termasuk dengan list partisinya sebagai berikut.
[root@server ~]# fdisk -l|grep /dev Disk /dev/sda: 500.1 GB, 500107862016 bytes /dev/sda1 * 1 83 520548 83 Linux /dev/sda2 84 5100 31466624 83 Linux /dev/sda3 5101 77867 456394624 5 Extended /dev/sda5 5101 21819 104861540 83 Linux /dev/sda6 21820 38538 104861540 83 Linux /dev/sda7 38539 55257 104861540 83 Linux /dev/sda8 55258 71976 104861540 83 Linux /dev/sda9 71977 77867 36948324 82 Linux swap / Solaris
Partisi sda5, sda6, sda7 dan sda8 tersebut akan digunakan sebagai partisi LVM storage dengan kondisi hasilnya berupa logical volume yang akan di mount terhadap moint point /backup. Pada artikel ini tidak didokumentasikan proses pembuatan partisi Linux seperti diatas, Penulis beranggapan bahwa proses partisi sudah dapat diproses dan disiapkan secara mandiri, baik menggunakan fdisk
, parted
atau partition tools lainnya.
Cek Paket LVM2
Secara default sudah terinstall dengan CentOS 6.7 minimal namun apabila belum maka bisa dicoba install menggunakan perintah yum sebagai berikut.
[root@server ~]# yum -y install lvm2
[root@server ~]# rpm -qa|grep lvm lvm2-2.02.118-3.el6_7.4.x86_64 lvm2-libs-2.02.118-3.el6_7.4.x86_64
Kondisi File Sistem Disk
[root@server ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 30G 1.3G 27G 5% / tmpfs 3.8G 0 3.8G 0% /dev/shm /dev/sda1 485M 84M 376M 19% /boot
Dapat diketahui bahwa /backup masih menggunakan atau tergabung dengan partisi sda2. Sesuai dengan kondisi bahwa akan diterapkan LVM storage dengan logical volume yang akan termount terhadap mount point /backup.
Create LVM Partition
Proses create partisi LVM menggunakan perintah fdisk sebegai berikut.
[root@server ~]# fdisk /dev/sda
Setelahnya akan dihadapkan kedalam mode fdisk sebagai berikut.
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):
Cek partisi label LVM terlebih dahulu melalui list yang tersedia sebagai berikut dengan opsi menu l.
Command (m for help): 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
Dapat diketahui bahwa label LVM Partition menggunakan hexacode 8e. Selanjutnya sesuaikan dengan mengganti label partisi default sda5, sda6, sda7, sda8 menjadi label LVM Partition dengan menggunakan hexacode 8e melalui opsi menu t.
Command (m for help): t Partition number (1-9): 5 Hex code (type L to list codes): 8e Changed system type of partition 5 to 8e (Linux LVM) Command (m for help): t Partition number (1-9): 6 Hex code (type L to list codes): 8e Changed system type of partition 6 to 8e (Linux LVM) Command (m for help): t Partition number (1-9): 7 Hex code (type L to list codes): 8e Changed system type of partition 7 to 8e (Linux LVM) Command (m for help): t Partition number (1-9): 8 Hex code (type L to list codes): 8e Changed system type of partition 8 to 8e (Linux LVM)
Cek dengan menampilkan atau print hasil penyesuaian LVM Partition tersebut menggunakan opsi menu p kemudian save write dengan menggunakan opsi menu w. Perlu dicatat proses tersebut dapat menhapus data partisi terkait.
Command (m for help): p Disk /dev/sda: 500.1 GB, 500107862016 bytes 224 heads, 56 sectors/track, 77867 cylinders Units = cylinders of 12544 * 512 = 6422528 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000e94c0 Device Boot Start End Blocks Id System /dev/sda1 * 1 83 520548 83 Linux /dev/sda2 84 5100 31466624 83 Linux /dev/sda3 5101 77867 456394624 5 Extended /dev/sda5 5101 21819 104861540 8e Linux LVM /dev/sda6 21820 38538 104861540 8e Linux LVM /dev/sda7 38539 55257 104861540 8e Linux LVM /dev/sda8 55258 71976 104861540 8e Linux LVM /dev/sda9 71977 77867 36948324 82 Linux swap / Solaris Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks.
Create Physical Volume (PV)
Tahapan awal dalam penerapan LVM storage adalah mempersiapkan physical volume terlebih dahulu. Dalam hal ini partisi sda5, sda6, sda7 dan sda8 akan dibuat sebagai physical volume.
[root@server ~] pvcreate /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8 Physical volume "/dev/sda5" successfully created Physical volume "/dev/sda6" successfully created Physical volume "/dev/sda7" successfully created Physical volume "/dev/sda8" successfully created
Cek Physical Volume
[root@server ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda5 lvm2 --- 100.00g 100.00g /dev/sda6 lvm2 --- 100.00g 100.00g /dev/sda7 lvm2 --- 100.00g 100.00g /dev/sda8 lvm2 --- 100.00g 100.00g
Create Volume Group (VG)
Setelah physical volume siap maka selanjutnya menyiapkan volume group, dalam kondisi ini akan dibuat 1 volume group dengan nama chrootid_vg0 menggunakan 2 physical volume saja dari 4 physical volume yang tersedia mengingat 2 physical volume yang tersisa akan di gunakan penerapan resize lvm storage yang akan disampaikan dalam tahapan lanjut.
[root@server ~]# vgcreate -s 16M chrootid_vg0 /dev/sda5 /dev/sda6 Volume group "chrootid_vg0" successfully created
Cek Volume Group
[root@server ~]# vgs VG #PV #LV #SN Attr VSize VFree chrootid_vg0 2 0 0 wz--n- 200.00g 200.00g
Cek Detail Volume Group
[root@server ~]# vgdisplay --- Volume group --- VG Name chrootid_vg0 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 200.00 GiB PE Size 16.00 MiB Total PE 12800 Alloc PE / Size 0 / 0 Free PE / Size 12800 / 200.00 GiB VG UUID ZNDS2Y-EuRv-I1E2-7xK8-cG4y-jQOA-B7p4LY
VG Name: Nama suatu volume group
VG Access: Akses terhadap suatu volume group
VG Status: Status suatu volume group
VG Size: Besar ukuran suatu volue group
PE Size: Besar ukuran suatu Physical extend
Total PE: Jumlah PE
Alloc PE / Size: Total PE serta ukurannya yang telah dialokasikan
Free PE / Size: Total PE serta ukurannya yang masih tersedia di dalam suatu volume group
Perlu diketahui bahwa PE atau Physical Extend merupakan satuan MB yang menjadi acuan atau tolak ukur dalam menentukan size suatu volume. Misal satu PE Size atau ukurannya adalah sebesar 16MB. Jika ingin menambahkan (extend) size atau ukuran suatu volume sebesar 1GB = 1x1024MB maka memerlukan 1024/16 = 64PE dan untuk contoh lain apabila memerlukan volume sebesar 200GB = 200x1024MB = 204800MB maka memerlukan 204800/16 = 12800PE hasilnya sama seperti VG Size dan Total PE atas VG Name chrootid_vg0 diatas.
Create Logical Volume
Dalam pembuatan suatu logical volume bisa berdasarkan PE atau size dari kondisi Volume Group yang diketahui dalam mementukan besar kapasitas Logical Volumenya sesuai dengan yang dikehendaki.
Dalam kondisi artikel ini akan di dokumentasikan create 1x Logical Volume (LV) sebesar 200GB berdasarkan Physical Extend atau PE dengan kalkulasinya sebagai berikut.
(TotalPE / nLV) x PEsize = Extended Size (MB) 12800PE/1LV = 12800PE x 16MB = 204800MB = 200GB
Apabila keseluruhan VG Size ingin dibuat dan dibagi sebanyak n Logical Volume maka dapat menggunakan formula sederhana tersebut diatas. Kemudian untuk perintahnya berdasarkan PE adalah sebagai berikut.
[root@server ~]# lvcreate -l 12800 -n data0 chrootid_vg0 Logical volume "data0" created.
Dimana opsi -l untuk alokasi PE untuk menetukan besar suatu volume dan opsi -n untuk drive letter suatu volume yang dicreate dari Volume Group chrootid_vg0. Kemudian untuk create Logical Volume beradasarkan size dapat mengganti opsi -l menjadi -L dan sesuiakan nilainya dengan yang dikehendaki, misal 200GB adalah sebagai berikut.
[root@server ~]# lvcreate -L 200G -n data0 chrootid_vg0 Logical volume "data0" created.
Delete Logical Volume
[root@server ~]# lvremove /dev/chrootid_vg0/data0 Do you really want to remove active logical volume data0? [y/n]: y Logical volume "data0" successfully removed
Cek Logical Volume
[root@server ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert data0 chrootid_vg0 -wi-a----- 200.00g
Cek Detail Logical Volume
[root@server ~]# lvdisplay --- Logical volume --- LV Path /dev/chrootid_vg0/data0 LV Name data0 VG Name chrootid_vg0 LV UUID k7MQlR-dw8r-S3k7-AHqt-b9Sz-H6UM-1G9EeV LV Write Access read/write LV Creation host, time server.chrootid.com, 2016-04-11 10:59:51 +0700 LV Status available # open 0 LV Size 200.00 GiB Current LE 12800 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
[root@server ~]# lvs -v Using logical volume(s) on command line. Finding all volume groups. LV VG #Seg Attr LSize Maj Min KMaj KMin Pool Origin Data% Meta% Move Cpy%Sync Log Convert LV UUID LProfile data0 chrootid_vg0 2 -wi-a----- 200.00g -1 -1 253 0
Format Logical Volume
Proses formating suatu disk atau partisi tentu harus diketahui terlebih dahulu lokasi disk partisinya tersebut termasuk dengan Logical Volume. Untuk Logical Volume yang sebelumnya telah dicreate dengan nama data0 dari Volume Group chrootid_vg0 adalah berada di dalam lokasi /dev/chrootid_vg0/data0
berdasarkan hasil pengecekan lvs
atau lvdisplay
. Setelah diketahui maka dapat diproses format dengan menggunakan mkfs.ext4 untuk label /backup karena akan dikondisikan mount pointnya terhadap direktori tersebut.
[root@server ~]# mkfs.ext4 -L /backup /dev/chrootid_vg0/data0 mke2fs 1.41.12 (17-May-2010) Filesystem label=/backup OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 13107200 inodes, 52428800 blocks 2621440 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 1600 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 29 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
Mounting Logical Volume
[root@server ~]# mkdir /backup [root@server ~]# mount -l /dev/chrootid_vg0/data0 /backup/
Kondisi file sistem setelah logical volume termount terhadap mount point /backup adalah sebagai berikut.
[root@server ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 30G 1.3G 27G 5% / tmpfs 3.8G 0 3.8G 0% /dev/shm /dev/sda1 485M 84M 376M 19% /boot /dev/mapper/chrootid_vg0-data0 197G 60M 187G 1% /backup
Setiap Logical Volume juga memiliki UUID dan bisa ditambahkan label. UUI dan label tersebut bisa digunakan untuk proses auto mount melalui /etc/fstab
mengingat apabila mengacu pada manual mount seperti contoh diatas perlu di mount kembali apabila sistem mengalami reboot.
Pertama cek label serta UUID atas Logical Volume terlebih dahulu.
[root@server ~]# blkid |grep vg /dev/mapper/chrootid_vg0-data0: LABEL="/backup" UUID="ea6fb1cc-0bc4-4282-8d2e-20e66ecae992" TYPE="ext4"
Setelah diketahui label serta UUID nya maka bisa langsung ditambahkan baris sebagai berikut melalui /etc/fstab
.
Berdasarkan Label
LABEL="/backup" /backup ext4 defaults 1 2
Contoh konfig file /etc/fstab
nya adalah sebagai berikut.
# # /etc/fstab # Created by anaconda on Mon Apr 11 09:27:49 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # LABEL="/" / ext4 defaults 1 1 LABEL="/boot" /boot ext4 defaults 1 2 LABEL="/backup" /backup ext4 defaults 1 2 UUID=2d5d081e-723c-4be5-b323-1df8e381e135 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
Berdasarkan UUID
UUID="ea6fb1cc-0bc4-4282-8d2e-20e66ecae992" /backup ext4 defaults 1 2
Contoh konfig file /etc/fstab
nya adalah sebagai berikut.
# # /etc/fstab # Created by anaconda on Mon Apr 11 09:27:49 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # LABEL="/" / ext4 defaults 1 1 LABEL="/boot" /boot ext4 defaults 1 2 UUID="ea6fb1cc-0bc4-4282-8d2e-20e66ecae992" /backup ext4 defaults 1 2 UUID=2d5d081e-723c-4be5-b323-1df8e381e135 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
Silahkan lakukan percobaan reboot sistem kemudian cek menggunakan perintah df -h
dan pastikan bahwa partisi logical volume yang telah tercreate dan termount terhadap mount point tujuan atau /backup yang telah ditentukan sudah termount dengan baik.
Nice pisan ieu mah, simple and jelas