-----------------------------------------------------------------------------

   Memperbesar dan mengurangi ukuran Partisi Harddisk dengan LVM

-----------------------------------------------------------------------------
##### By Henry Saptono < henry[at]nurulfikri.com >, April 2007 ######




=============================================================================
Pengantar
=============================================================================
LVM (Logical Volume Management) memungkinkan ukuran hard disk dengan mudah
diperbesar/expand ataupun dikurangi/reduce. Ide dasar dari LVM adalah
memudahkan Anda dalam "meresize" ukuran partisi Harddisk Anda.
Dalam konsep LVM seluruh partisi harddisk disebut dengan "Physical Volume",
Kemudian Physical volume dimasukkan kedalam suatu "Volume Group", dari 
Volume Group dibuatlah  "Logical Volume".
Jika Anda ingin memanfaatkan partisi LVM maka Anda perlu menginstall utiliti
untuk mensetup LVM, jadi pastikan paket utiliti lvm2 (lvm2-2.02.06-6.0.RHEL4) 
telah terinstall pada system Anda (dalam tulisan ini penulis menggunakan Linux CentOS 4.4 final) 


===============================================================================
Membuat partisi Harddisk LVM
===============================================================================

1. Membuat "Physical Volume"
--------------------------------
Untuk menerapkan partisi harddisk dengan LVM sebaiknya Anda memiliki
Harddisk lebih dari satu, tetapi dalam contoh kali ini kita hanya memiliki
sebuah harddisk (/dev/hda) yang sebelumnya terdiri dari beberapa partisi,
Misalkan Anda memiliki partisi hardisk  /dev/hda10, dan /dev/hda11
kedua partisi ini masing-maisng ukurannya 2.80 GB dan  964.00 MB
lalu kedua partisi harddisk ini akan dijadikan sebagai Pyhisical Volume.
Untuk membuat  Pyhisical Volume jalankan perintah sbb:

[root@sotnec ~]# pvcreate /dev/hda10
 Physical volume "/dev/hda10" successfully created
[root@sotnec ~]# pvcreate /dev/hda11
 Physical volume "/dev/hda11" successfully created

 
2. Membuat "Volume Group"
------------------------------
Selanjutnya Anda harus membuat "Volume Group" yang terdiri dari "Physical
Volume" /dev/hda10 dan /dev/hda11. Tetapi sebelumnya Anda buat dahulu
file konfigurasi LVM secara otomatis dengan perintah Sbb:

[root@sotnec ~]# vgscan
  Reading all physical volumes.  This may take a while...

Kemudian barulah Anda buat Volume Group dengan perintah sbb:

[root@sotnec ~]# vgcreate -v lvm-hda /dev/hda10 /dev/hda11
    Wiping cache of LVM-capable devices
    Adding physical volume '/dev/hda10' to volume group 'lvm-hda'
    Adding physical volume '/dev/hda11' to volume group 'lvm-hda'
    Archiving volume group "lvm-hda" metadata (seqno 0).
    Creating volume group backup "/etc/lvm/backup/lvm-hda" (seqno 1).
  Volume group "lvm-hda" successfully created

Perintah diatas akan membuat sebuah Volume Group dengan nama lvm-hda (nama ini
bisa didefinisikan sesuai keinginan Anda).

3. Membuat "Logical Volume" 
------------------------------------
Dari Volume Group yang sudah ada Anda kemudian dapat membuat "Logical Volume",
sebelumnya lihat dahulu daftar Volume Group yang ada saat ini, Anda dapat menjalankan 
perintah sbb:      

[root@sotnec ~]# vgdisplay
  --- Volume group ---
  VG Name               lvm-hda
  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               3.74 GB
  PE Size               4.00 MB
  Total PE              958
  Alloc PE / Size       0 / 0
  Free  PE / Size       958 / 3.74 GB
  VG UUID               0pGE2d-07s0-5u3t-sZBH-osZp-T6DI-HGXDYO

Dan selanjutnya buatlah "Logical Volume" dengan perintah sbb:

[root@sotnec ~]#  lvcreate -l  958 lvm-hda -n lvm0
  Logical volume "lvm0" created

hasil perintah diatas akan membuat file device di /dev/lvm-hda/lvm0

Untuk melihat "Logical Volume" yang tadi sudah Anda buat jalankan perintah
sbb:

[root@sotnec ~]# lvdisplay
  --- Logical volume ---
  LV Name                /dev/lvm-hda/lvm0
  VG Name                lvm-hda
  LV UUID                N3gRGE-2Kbp-jnnL-OwCo-CR9P-kq9g-ucBZ5l
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                3.74 GB
  Current LE             958
  Segments               2
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:0


4. Memformat partisi LVM ("device lvm0") dengan File System ext3
----------------------------------------------------------------

Selanjutnya partsis LVM yang telah dibuat diformat dengan file system ext3,
lakukan perintah berikut :

[root@sotnec ~]# mkfs.ext3 /dev/lvm-hda/lvm0
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
490560 inodes, 980992 blocks
49049 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1006632960
30 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


5. Memounting device "lvm0" (partisi LVM)
-----------------------------------------
Setelah selesai diformat maka partisi LVM Anda sudah dapat digunakan
untuk itu coba Anda mount ke direktori tertentu dalam file system linux,
misalnya kita akan memunting device /dev/lvm-hda/lvm0 ke direktori /media/lvm

[root@sotnec ~]# mount /dev/lvm-hda/lvm0 /media/lvm/
[root@sotnec ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda8             7.7G  3.7G  3.7G  51% /
/dev/hda6             6.7G  6.0G  363M  95% /opt/source
none                  121M     0  121M   0% /dev/shm
/dev/mapper/lvm--hda-lvm0
                      3.7G   40M  3.5G   2% /media/lvm

Dari perintah df -h tampak bahwa partsis LVM Anda sudah di mount dan
tinggal digunakan. Coba Anda kopi atau salin file atau folder tertentu ke
dalam partisi atau direktori /media/lvm, contoh sbb:

[root@sotnec ~]# cp -rf /etc /media/lvm/

perintah diatas akan menyalin direktori /etc kedalam /media/lvm/
lalu coba lihat size yang telah digunakan saat ini dari partisi LVM Anda, sbb:

[root@sotnec ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda8             7.7G  3.7G  3.7G  51% /
/dev/hda6             6.7G  6.0G  363M  95% /opt/source
none                  121M     0  121M   0% /dev/shm
/dev/mapper/lvm--hda-lvm0
                      3.7G   85M  3.5G   3% /media/lvm
[root@sotnec ~]# ls -al /media/lvm/
total 36
drwxr-xr-x   4 root root  4096 Apr 24 14:07 .
drwxr-xr-x   5 root root  4096 Apr 24 12:15 ..
drwxr-xr-x  86 root root  8192 Apr 24 14:07 etc
drwx------   2 root root 16384 Apr 24 14:01 lost+found


Nah sudah berfungsi bukan partisi LVM Anda. Lalu bagaimana jika
partisi LVM Anda mulai penuh dan Anda ingin memperbesar ukuran dari partisi
LVM Anda saat ini. ? Nah untuk menjawabnya coba perhatikan bagian selanjutnya.


===============================================================================
Memperbesar/menambah (Expand) ukuran disk partisi LVM Anda.
===============================================================================

Suatu saat partisi LVM Anda akan kehabisan space atau dengan kata lain 
Available size disk nya akan mendekati 0% alias Full penggunaan size nya. Nah
untuk menjaga-jaga Anda berniat untuk menambah ukuran/size partisi LVM anda
(contoh : "lvm0"). Nah bagaimanakah caranya ?, misalkan Anda memiliki partisi
Hard disk /dev/hda12 dengan ukuran  964.62 MB (misal: sebesar inilah tambahan size
yang akan Anda terapkan) . Nah partisi /dev/hda12 ini akan Anda jadikan
sebagai Physical Volume dari Volume Group "lvm-hda". Untuk itu Anda buatlah
terlebih dahulu "Physical Volume" /dev/hda12 dengan perintah sbb:

[root@sotnec ~]# pvcreate /dev/hda12
  Physical volume "/dev/hda12" successfully created

Lalu coba cek seluruh "Physical Volume" yang ada saat ini:

[root@sotnec ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/hda10
  VG Name               lvm-hda
  PV Size               2.80 GB / not usable 0
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              717
  Free PE               0
  Allocated PE          717
  PV UUID               BNk2Eo-ne4J-R4Xl-KYou-L8dF-xKBn-5UHFx5

  --- Physical volume ---
  PV Name               /dev/hda11
  VG Name               lvm-hda
  PV Size               964.00 MB / not usable 0
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              241
  Free PE               0
  Allocated PE          241
  PV UUID               g1tFCz-AULA-H6UY-NPFC-PRzZ-ekcc-9BkdEX

  --- NEW Physical volume ---
  PV Name               /dev/hda12
  VG Name
  PV Size               964.62 MB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               RP1FCi-hwJ6-nLkP-hMuU-zM9i-BIcs-mB4GEz

[root@sotnec ~]# vgdisplay
  --- Volume group ---
  VG Name               lvm-hda
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               3.74 GB
  PE Size               4.00 MB
  Total PE              958
  Alloc PE / Size       958 / 3.74 GB
  Free  PE / Size       0 / 0
  VG UUID               0pGE2d-07s0-5u3t-sZBH-osZp-T6DI-HGXDYO



Kemudian Anda harus memperluas (extend) Volume Group "lvm-hda" dimana sekarang
kita ingin Physical Volume /dev/hda12 menjadi anggota dari Volume Group
"lvm-hda", untuk itu jalankan perintah berikut:

[root@sotnec ~]# vgextend  lvm-hda /dev/hda12
  Volume group "lvm-hda" successfully extended

Coba cek volume group saat ini, seharusnya Volume Group "lvm-hda" ukuran size
nya bertambah bukan ? dari  3.74 GB menjadi  4.68 GB


[root@sotnec ~]# vgdisplay
  --- Volume group ---
  VG Name               lvm-hda
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               4.68 GB
  PE Size               4.00 MB
  Total PE              1199
  Alloc PE / Size       958 / 3.74 GB
  Free  PE / Size       241 / 964.00 MB
  VG UUID               0pGE2d-07s0-5u3t-sZBH-osZp-T6DI-HGXDYO


Apakah "Logical Volume (lvm0)" ukurannya telah bertambah ?
---------------------------------------------------------
Untuk menjawabnya coba Anda mount ulang partisi /dev/lvm-hda/lvm0 

[root@sotnec ~]# umount  /media/lvm
[root@sotnec ~]# mount /dev/lvm-hda/lvm0 /media/lvm
[root@sotnec ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda8             7.7G  3.7G  3.7G  51% /
/dev/hda6             6.7G  6.0G  363M  95% /opt/source
none                  121M     0  121M   0% /dev/shm
/dev/mapper/lvm--hda-lvm0
                      3.7G   85M  3.5G   3% /media/lvm

dari perintah "df -h " diatas terlihat bahwa partisi lvm0 belum
bertambah ukurannya, nah solusinya agar Logical Volume ukurannya
juga mengikuti ukuran sebagaimana ukuran real Volume Group "lvm-hda" saat ini
maka Anda harus mengextend "Logical Volume" lvm0 dengan perintah sbb:

[root@sotnec ~]#  lvextend -l 1199  /dev/lvm-hda/lvm0 /dev/hda12
  Extending logical volume lvm0 to 4.68 GB
  Logical volume lvm0 successfully resized

Catatan:
-l 1199 menunjukkan total PE yang Anda dapat lihat dari perintah "vgdisplay"

 
Selanjutnya meresize juga ukuran partisi /dev/lvm-hda/lvm0. Untuk itu
coba lakukan langkah-langkah berikut ini:

Umount terlebih dahulu partisi /dev/lvm-hda/lvm0, sbb:

[root@sotnec ~]# umount  /media/lvm/

Check/scan file system sbb:

[root@sotnec ~]# e2fsck -f /dev/lvm-hda/lvm0
e2fsck 1.35 (28-Feb-2004)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/lvm-hda/lvm0: 4034/490560 files (0.1% non-contiguous), 37159/980992
blocks

Kemudian coba Anda resize file system /dev/lvm-hda/lvm0, sbb:

[root@sotnec ~]#  resize2fs /dev/lvm-hda/lvm0 4600M
resize2fs 1.35 (28-Feb-2004)
Resizing the filesystem on /dev/lvm-hda/lvm0 to 1177600 (4k) blocks.
The filesystem on /dev/lvm-hda/lvm0 is now 1177600 blocks long.


Coba Anda mount lagi /dev/lvm-hda/lvm0 sbb:

[root@sotnec ~]# mount /dev/lvm-hda/lvm0 /media/lvm/

Lalu lihatlah ukurannya saat ini, sbb:

[root@sotnec ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda8             7.7G  3.7G  3.7G  51% /
/dev/hda6             6.7G  6.0G  363M  95% /opt/source
none                  121M     0  121M   0% /dev/shm
/dev/mapper/lvm--hda-lvm0
                      4.5G   85M  4.2G   2% /media/lvm

Dan coba lihat data yg ada pada /dev/lvm-hda/lvm0, tidak hilang
dan tetap ada bukan ?

[root@sotnec ~]# ls /media/lvm/
etc  lost+found




===============================================================================
Mengurangi (Reduce) ukuran disk partisi LVM Anda.
===============================================================================

Hal yang sebaliknya dapat juga Anda lakukan (harus hati-hati !!) yaitu
mengurangi atau memperkecil ukuran partisi LVM Anda tetapi tentunya
pengurangan jangan sampai size total partisi LVM lebih kecil dari size yang sudah 
digunakan pada partisi LVM tersebut. Nah untuk memperkecil atau mengurangi
partisi LVM , dapat Anda lakukan sbb:

Umount terlebih dahulu partisi /dev/lvm-hda/lvm0, sbb:

[root@sotnec ~]# umount  /media/lvm/

Check/scan file system sbb:

[root@sotnec ~]# e2fsck -f /dev/lvm-hda/lvm0
e2fsck 1.35 (28-Feb-2004)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/lvm-hda/lvm0: 4034/588672 files (0.1% non-contiguous), 40237/1177600
blocks

Lalu resize partisi LVM (misalnya menjadi 4200M atau 4.2G) sbb:

[root@sotnec ~]#  resize2fs /dev/lvm-hda/lvm0 4200M
resize2fs 1.35 (28-Feb-2004)
Resizing the filesystem on /dev/lvm-hda/lvm0 to 1075200 (4k) blocks.
The filesystem on /dev/lvm-hda/lvm0 is now 1075200 blocks long.


Dan cobalah Anda mount partisi LVM tersebut, sbb:

[root@sotnec ~]# mount /dev/lvm-hda/lvm0 /media/lvm/
[root@sotnec ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda8             7.7G  3.7G  3.7G  51% /
/dev/hda6             6.7G  6.0G  363M  95% /opt/source
none                  121M     0  121M   0% /dev/shm
/dev/mapper/lvm--hda-lvm0
                      4.1G   85M  3.8G   3% /media/lvm

Nah tampak bukan ukuran Size partisi LVM ("lvm0") saat ini menjadi "+/- 4,1G".

nah silahkan Anda coba dech...