20 Juni 2014

Logical Volume Management dengan LVM di Linux

Media penyimpanan yang umum digunakan pada sebuah komputer adalah hardisk. Pengaturan yang umum digunakan adalah sebuah hardisk dibagi menjadi beberapa partisi. Kemudian dari tiap-tiap partisi diformat dan setelah itu diatur mount point yang diberikan ke partisi tersebut. Sedikit kekurangan dari sistem tersebut adalah kesulitan untuk menambah dan mengurangi kapasitas sebuah partisi apabila penuh terisi. Selain itu apapbila ada hardisk yang rusak, maka pergantian hardisk harus mematikan sistem terlebih dahulu. Kekurangan pengaturan hardisk cara lama dapat diatasi dengan menggunakan logical volume management. Manfaat menggunkan logical volume management antara lain:
  • Fleksible dalam pengaturan ukuran partisi, sehingga mudah ditambah atau dikurangi (tentu dengan memperhatikan file dan maksimal hardisk).
  • Penggantian hardisk bisa secara online, tidak perlu mematikan sistem.
  • Menyediakan fitur backup, yang dapat menyimpan keadaan storage dalam waktu tertentu.
  • Logical volume dapapt diberi label sesuai keperluan, misalnya "gudang" atau "personalia", bukan seperti sda1, sdc, dll.
Perhatian, praktik dalam tulisan ini saya lakukan dalam virtual mesin, jangan dilakukan dalam komputer yang digunakan sehari-hari, karena dapat menghapus seluruh data anda.
Urutan untuk menggunakan metode logical volume management adalah sebagai berikut:
  1. Physical disk, logical volume management adalah pengelolaan storage secara logic, namun tetap membutuhkan fisik hardisk. Hardisk yang ada harus dibuat partisi terlebih dahulu. Partisi bisa seluruh hardisk ataupun sebagian saja dari hardisk, dan btentu saja bisa terdiri dari beberapa hardisk.
  2. Physical Volume, Partisi kemudian diubah menjadi physical volume agar bisa digabungkan dengan physical volume lainnnya. Sehingga meningkatkan kapasitas maksimal penyimpanan.
  3. Volume group, semua physical volume yang sudah dibuat, kemudian digabungkan menjadi satu disebut volume group. Sehingga volume group ini seolah-olah menjadi satu buah hardisk yang berukuran jumlah total semua physical volume yang diatukan.
  4. Logical volume, menggantikan konsep partisi pada fisik hardisk tradisional.Logical volume diambil dari volume group sama seperti partisi diambil dari hardisk. Kita bisa memberi nama logical volume sesuai kebutuhan, tetapi partisi tidak bisa diberi nama (hanya diberi label).
Kondisi awal sebelum memulai praktik adalah:
  • Host OS = Debian wheezy
  • Virtual Machine = Virtualbox
  • Guest OS = Centos 6.5
  • Jumlah hardisk pada guest OS = 5 (sda, sdb, sdc, sdd, sde)

Melihat semua disk fisik dalam sistem

Gunakan command fdisk -l untuk mengetahui hardisk yang ada dalam sistem.
[root@santos ~]# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 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: 0x00029a1f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1045     7875584   8e  Linux LVM

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 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: 0x91bb1007
....
....
....
Untuk menghindari terlalu banyak paste di halaman ini, saya potong hasil dari command fidsk -l. Secara keseluruhan, hardisk dalam sistem ada 5, yaitu sda, sdb, sdc, sdd, sde. Hardisk sda adalah disk yang digunakan untuk instalasi.

1. Persiapan hardisk dan partisi fisik

Dalam tahap ini, yang akan kita lakukan adalah membuat partisi dalam hardisk fisik, kemudian mengubah partisi fisik tersebut menjadi physical volume untuk digabungkan menjadi volume group nantinya. Tipe partisi yang dapat digunakan untuk physical volume adalah linux lvm. Untuk membuat partisi, kita gunakan fdisk.
[root@santos ~]# fdisk /dev/sdb

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): 'n'
Command action
   e   extended
   p   primary partition (1-4)
'p'
Partition number (1-4): '1'
First cylinder (1-1044, default 1): "enter" 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): "enter"
Using default value 1044

Command (m for help): 't'
Selected partition 1
Hex code (type L to list codes): "8e"
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): 'w'
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
Ulangi proses pembuatan partisi dan mengubah partisi menjadi bertipe linux lvm seperti di atas untuk hardisk sdc dan sdd. Hardisk sde akan kita gunakan nanti.

2. Pembuatan physical volume

Hasil dari tahap sebelumnya, sekarang kita memiliki 3 hardisk dengan masing-masing 1 partisi di dalamnya, yaitu sdb1, sdc1, dan sdd1. Ketiga partisi tersebut bertipe linux lvm. Sekarang kita ubah partisi fisik menjadi physical volume. Command yang digunakan adalah pvcreate <path partisi>.
[root@santos ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
[root@santos ~]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created
[root@santos ~]# pvcreate /dev/sdd1
  Physical volume "/dev/sdd1" successfully created
[root@santos ~]# pvscan
  PV /dev/sda2   VG vg_livecd       lvm2 [7.51 GiB / 0    free]
  PV /dev/sdb1                      lvm2 [8.00 GiB]
  PV /dev/sdc1                      lvm2 [8.00 GiB]
  PV /dev/sdd1                      lvm2 [8.00 GiB]
  Total: 4 [31.50 GiB] / in use: 1 [7.51 GiB] / in no VG: 3 [23.99 GiB]
Seperti yang terlihat, kita sudah berhasil membuat 3 physical volume baru. Untuk memeriksa physical yang ada dalam sistem, gunakan command pvscan, jika ingin melihat info lebih detail tentang tiap-tiap physical disk, gunakan command pvdsiplay.

3. Pembuatan volume group

Setelah physical volume selesai dibuat, kita akan menggabungkan semua physical volume tersebut menjadi sebuah volume group. Kita akan membuat sebuah volume group dengan nama fileserver. Command yang digunakan adalah vgcreate <nama volume group> <path partisi>.
[root@santos ~]# vgcreate fileserver /dev/sdb1 /dev/sdc1 /dev/sdd1
  Volume group "fileserver" successfully created
[root@santos ~]# vgscan 
  Reading all physical volumes.  This may take a while...
  Found volume group "fileserver" using metadata type lvm2
  Found volume group "vg_livecd" using metadata type lvm2
Volume group dengan nama fileserver sudah berhasil dibuat. Gunakan command vgscan untuk melihat volume group yang ada dalam sistem, gunakan command vgdisplay untuk melihat detail setiap volume group yang ada dalam sistem.

4. Pembuatan logical volume

Konsep logical volume dalam volume group sama dengan konsep partisi dalam hardisk. Untuk membuat logical volume, kita gunakan command lvcreate. Kita akan membuat 3 logical volume dengan nama masing-masing share, media dan backup yang diambil dari volume group fileserver.
[root@santos ~]# lvcreate --size 10G --name share fileserver
  Logical volume "share" created
Logical volume dengan nama share dan dengan kapasitas 10GB sudah berhasil dibuat. Selanjutnya membuat logical volume backup dengan kapasitas 2GB
[root@santos ~]# lvcreate --size 2G --name backup fileserver
  Logical volume "backup" created
Setelah backup, selanjutnya membuat logical volume media dengan kapasitas 5GB
[root@santos ~]# lvcreate --size 5G --name media fileserver
  Logical volume "media" created
Untuk memeriksa hasilnya, gunakan command lvscan. Jika ingin melihat lebih detail mengenai setiap logical volume yang ada di sistem, gunakan command lvdisplay.
[root@santos ~]# lvscan 

  ACTIVE            '/dev/fileserver/share' [10.00 GiB] inherit
  ACTIVE            '/dev/fileserver/media' [5.00 GiB] inherit
  ACTIVE            '/dev/fileserver/backup' [2.00 GiB] inherit
  ACTIVE            '/dev/vg_livecd/lv_root' [6.54 GiB] inherit
  ACTIVE            '/dev/vg_livecd/lv_swap' [992.00 MiB] inherit

5. Pembuatan filesystem pada logical volume

Kita sudah membuat 3 logical volume pada volume group fileserver. Akan tetapi, ketiga logical volume tersebut masih belum dapat digunakan dan belum dapat diisi file karena belum memiliki filesystem. Sekarang kita akan memberikan filesystem pada ketiga logical volume diatas, yaitu dengan filesystem ext3. Kita menggunakan command mkfs.ext3 <path logical volume>.
[root@santos ~]# mkfs.ext3 /dev/fileserver/share 
mke2fs 1.41.12 (17-May-2010)
...

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

This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@santos ~]# mkfs.ext3 /dev/fileserver/backup 
mke2fs 1.41.12 (17-May-2010)
...

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

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@santos ~]# mkfs.ext3 /dev/fileserver/media 
mke2fs 1.41.12 (17-May-2010)
...

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

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

6. Mounting logical volume ke dalam sistem

Proses pembuatan logical volume sudah selesai, sekarang kita bisa melakukan mounting logical volume tersebut seperti biasa. Pertama kita siapkan direktori khusus sebagai mount point. Saya akan membuat direktori di /var untuk masing-masing logical volume.
[root@santos ~]# mkdir /var/share
[root@santos ~]# mkdir /var/backup
[root@santos ~]# mkdir /var/media
Setelah direktori khusus dibuat, sekarang kita bisa mounting logical direktori ke dalam sistem.
[root@santos ~]# mount /dev/fileserver/media /var/media
[root@santos ~]# mount /dev/fileserver/share /var/share
[root@santos ~]# mount /dev/fileserver/backup /var/backup
Sekarang setiap logical volume sudah bisa digunakan seperti biasa. Untuk memeriksanya, gunakan command df -h.
[root@santos ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_livecd-lv_root
                      6.5G  6.2G  270M  96% /
tmpfs                 499M     0  499M   0% /dev/shm
/dev/sda1             485M  104M  356M  23% /boot
/dev/mapper/fileserver-media
                      5.0G  139M  4.6G   3% /var/media
/dev/mapper/fileserver-share
                      9.9G  151M  9.2G   2% /var/share
/dev/mapper/fileserver-backup
                      2.0G   68M  1.9G   4% /var/backup

7. Mounting logical group secara otomatis setelah boot

Pada point nomor 6, kita melakukan mounting logical volume secara manual. Dengan cara itu, maka setelah restart logical volume yang sudah di mount akan unmount. Agar logical volume bisa dimounting secara otimatis, kita bis menulis konfigurasinya di /etc/fstab. Bukalah /etc/fstab dengan text editor yang sering anda gunakan. Tambahkan baris berikut pada bagian paling bawah:
/dev/fileserver/share   /var/share      ext3    defaults        0 0
/dev/fileserver/media   /var/media      ext3    defaults        0 0
/dev/fileserver/backup  /var/backup     ext3    defaults        0 0
Dengan tambahan baris di atas, logical volume yang ada akan otomatis di mounting masing-masing ke /var/share, /var/media, dan /var/backup setiap kali booting. Untuk mencobanya, lakukan reboot pada sistem anda, kemudian cek dengan command df -h.

8. Menambah kapasitas logical volume

Kita sudah melakukan proses pembuatan logical volume dan mounting logical volume tersebut ke dalam sistem. Sekarang kita akan menambah kapasitas penyimpanan dari salah satu logical volume yang telah dibuat. Langkah-langkah yang harus dilakukan adalah menambah kapasitas logical volume, kemudian menambah ukuran filesystem pada logical volume tersebut. Sebelum melakukan perubahan pengaturan pada sebuah logical volume, kita harus meng-unmount terlebih dahulu logical volume tersebut.
[root@santos ~]# umount /var/share
Kita akan menambah kapasitas dari logical volume share. menjadi yang awalnya 10 GB menjadi 12 GB. Command yang dipakai adalah lvextend --size <ukuran baru> <path logical volume>.
[root@santos ~]# lvextend --size 12G /dev/fileserver/share
  Extending logical volume share to 12.00 GiB
  Logical volume share successfully resized
Setelah menambah kapasitas dari logical volume, langkah selanjutnya adalah menambah kapasitas filesystem ext3 yang kita berikan pada logical volume share pada proses sebelumnya. Command yang dipakai adalah e2fsck -f <path logical volume>.
[root@santos ~]# e2fsck -f /dev/fileserver/share 
e2fsck 1.41.12 (17-May-2010)
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/fileserver/share: 11/655360 files (0.0% non-contiguous), 79696/2621440 blocks
Untuk memeriksa kapasitas logical volume share yang baru bisa digunakan command lvscan. Setelah kapasitas ditambahkan, logical volume share bisa dimount lagi seperti cara sebelumnya. Yang perlu diperhatikan adalah ukuran kapasitas baru dari sebuah logical volume tidak boleh melebihi ukuran total volume group.

9. Mengurangi kapasitas logical volume

Setelah berhasil menambah kapasitas, sekarang kita akan mengurangi kapasitas dari logical volume share. Seperti sebelumnya ketika kita menambah kapasitas, untuk mengurangi kapasitas kita juga harus meng-unmont logical volume. Urutan dalam mengurangi kapasitas logical volume terbalik dengan penambahan, pertama harus mengurangi ukuran filesystem kemudian mengurangi kapasitas logical volume tersebut. Sebelumnya, kita unmount logical volume share.
[root@santos ~]# umount /var/share
Kemudian kita kurang ukuran filesystem dalam logical volume tersebut. Untuk mengurangi ukuran filesystem, kita perlu melakukan dua command, pertama e2fsck -f <path logical volume> kemudian resize2fs <path logical volume> <ukuran baru>.
[root@santos ~]# e2fsck -f /dev/fileserver/share
e2fsck 1.41.12 (17-May-2010)
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/fileserver/share: 11/655360 files (0.0% non-contiguous), 79696/2621440 blocks
[root@santos ~]# resize2fs /dev/fileserver/share 5G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/fileserver/share to 1310720 (4k) blocks.
The filesystem on /dev/fileserver/share is now 1310720 blocks long.
Kemudian barulah kita kurangi ukuran logical volume dengan command lvreduce -L<ukuran baru> <path logical volume>.
[root@santos ~]# lvreduce -L5G /dev/fileserver/share 
  WARNING: Reducing active logical volume to 5.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce share? [y/n]: 'y'
  Reducing logical volume share to 5.00 GiB
  Logical volume share successfully resized

10. Menambah hardisk ke dalam volume group

Selanjutnya kita akan melakukan penambahan hardisk ke dalam volume group fileserver. Penambahan hardisk bisa karena ingin memperbesar kapasitas volume group atau mengganti hardisk lain untuk perawatan. Di bagian awal, kita masih memiliki satu hardisk yang belum digunakan, yaitu sde. Sekarang kita akan tambahkan hardisk sde ke dalam sistem logical volume. Sebelum ditambahkan ke dalam volume group fileserver, hardisk sde harus dijadikan physical volume terlebih dahulu. Silakan ikuti proses pembuatan physical volume pada tahap sebelumnya. Saya akan memulai tahap ini dengan asumsi bahwa sde sudah dijadikan physical volume. Command yang digunakan adalah vgextend <nama volume group> <path physical volume>.
[root@santos ~]# vgextend fileserver /dev/sde1 
  Volume group "fileserver" successfully extended
Untuk memeriksanya, gunakan commang vgdisplay, lihat pada bagian Cur PV dan Act PV, bagian ini menunjukan jumlah physical volume yang ada dalam volume group.

11. Mencopot salah satu hardisk dari sistem

Terkadang setelah beberapa waktu, kinerja hardisk tidak maksimal. Sekarang kita akan mencopot hardisk dari sistem. Setelah sebelumnya kita pasang hardisk baru (sde), sekarang kita akan mencopot salah satu hardisk, yaitu sdb. Kita akan melanjutkan praktik dari sebelumnya, dimana hardisk sde sudah tergabung dalam volume group. Langkah pertama yang harus kita lakukan adalah memindahkan isi dari physical volume, kia gunakan command pvmove <path physical volume sumber> <path physical volume target>.
[root@santos ~]# pvmove /dev/sdb1 /dev/sde1
  /dev/sdb1: Moved: 0.5%
  /dev/sdb1: Moved: 42.0%
  /dev/sdb1: Moved: 83.9%
  /dev/sdb1: Moved: 100.0%
Setelah isi dari physical volume dipindahkan, selanjutnya physical volume dilepaskan dari volume group. Command yang digunakan adalah vgreduce <nama volume group> <path physical volume yang ingin dilepas>.
[root@santos ~]# vgreduce fileserver /dev/sdb1
  Removed "/dev/sdb1" from volume group "fileserver"
Gunakan command vgdisplay, lihat bagian Cur PV dan Act PV jika berhasil, seharusnya jumlahnya berkurang dari sebelumnya. Langkah selanjutnya adalah melepaskan physical volume dari sistem. Command yang digunakan adalah pvremove <path physical volume yang ingin dilepas>.
[root@santos ~]# pvremove /dev/sdb1
  Labels on physical volume "/dev/sdb1" successfully wiped
Gunakan command pvdisplay atau pvcommand untuk memeriksa apakah physical volume sdb1 masih menempel di sistem. Jika sudah terlepas dari sistem, anda bisa melepaskan hardisk sdb dari mesin anda. Dengan demikian kita bisa melepaskan hardisk tanpa mematikan sistem.

Referensi







Tidak ada komentar:

Posting Komentar