Mengubah Ukuran Partisi LVM2
Sudah tahu apa itu Linux Volume Manager version 2 atau biasa disingkat LVM2? Mudahnya sih LVM itu adalah sebuah metode untuk mengelola volume ruang simpan dengan mudah. Ingat yang saya tulis di sini adalah volume ruang simpan, bukan harddisk. Kenapa begitu? Karena sebuah volume LVM2 dapat terdiri dari sebuah partisi atau beberapa partisi atau beberapa partisi yang berada di beberapa harddisk. Oleh karena itu saya menyebutnya sebagai volume ruang simpan.
Hal lain yang memudahkan adalah sebuah volume LVM2 dapat dibagi-bagi lagi menjadi beberapa partisi logikal seperti layaknya kita membuat partisi pada harddisk. Tetapi tentu saja semua partisi logikal tersebut tidak terlihat sendiri-sendiri jika kita buka menggunakan program manajer partisi. Hanya partisi tempat volume LVM2 berada yang dapat terlihat. Kemudian proses pengubahan ukuran partisi-partisi logikal di dalam volume LVM2 juga sangat mudah karena kita tidak perlu pusing memindahkan data-data dari suatu partisi ke tempat lain karena kita akan memperbesar ukuran partisi yang lainnya. Selama masih ada ruang kosong di dalam volume LVM2 tersebut kita dapat memperbesar ukuran partisi logikal yang kita miliki semudah ini (asumsi filesystem adalah EXT4 dan ruang kosong tersisa 90G+):
Berikut adalah langkah-langkah yang saya lakukan untuk menyusutkan ukuran partisi LVM2 saya:
PERHATIAN! JANGAN LUPA UNTUK MEM-BACKUP SELURUH DATA ANDA JIKA INGIN MELAKUKAN HAL BERIKUT INI! BERBAHAYA!
# pvdisplay -C --units M PV VG Fmt Attr PSize PFree /dev/sda3 vg01 lvm2 a-- 182531.92M 89724.55M Perbesar ukuran partisi logikal pada LVM2 satu harddisk: # lvresize -L +40G vg01/HOME Perbesar ukuran partisi logikal pada LVM2 dua harddisk. Nantinya ruang tambahan 40G tersebut akan tersebar di harddisk satu (sda) dan dua (sdb): # lvresize -L +40G vg01/HOME /dev/sda:0-1 /dev/sdb:0-1 Perbesar ukuran filesystem: # resize2fs -p /dev/vg01/HOME
Selesai.
Lalu bagaimana jika kita ingin mengubah ukuran partisi LVM2 itu sendiri? Meskipun jarang atau tidak pernah dilakukan karena LVM2 sendiri jarang digunakan pada satu buah harddisk dan penggunaan rumahan biasa caranya tetap ada. Hanya saja semua proses pada volume LVM2 harus dilakukan manual karena sampai saat ini belum ada program manajer partisi yang dapat mengelola volume LVM2. Kalau mengelola partisinya sih bisa.
Jadi ceritanya karena suatu hal, bisa jadi karena saya ingin menambahi ukuran partisi primer lainnya atau karena saya pingin (suka-suka saya lah), saya ingin mengurangi ukuran partisi LVM2 saya yang hanya menggunakan 1 buah harddisk. Kira-kira beginilah tampilan aslinya
Nah saya ingin menambahi ukuran partisi di dalam partisi ekstended saya, caranya bagaimana?
Hal pertama yang harus dilakukan adalah mengurangi ukuran partisi logikal di dalam volume LVM2 tersebut. Akan tetapi karena di dalam partisi logikal tersebut ada filesystem dengan format EXT4, maka kita susutkan ukuran filesystemnya dahulu sebelum menyusutkan ukuran partisi logikal:
INGAT UNTUK UNMOUNT PARTISI SEBELUM MELAKUKAN AKSI
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg01-HOME 151G 56G 88G 39% /mnt/sda3
# umount /mnt/sda3
# e2fsck -vfy /dev/vg01/HOME
e2fsck 1.42.1 (17-Feb-2012)
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
243 inodes used (0.00%)
8 non-contiguous files (3.3%)
0 non-contiguous directories (0.0%)
# of inodes with ind/dind/tind blocks: 0/0/0
Extent depth histogram: 146/85/2
14560990 blocks used (36.92%)
0 bad blocks
1 large file
221 regular files
13 directories
0 character device files
0 block device files
0 fifos
0 links
0 symbolic links (0 fast symbolic links)
0 sockets
--------
234 files
# resize2fs -p /dev/vg01/HOME 72G
resize2fs 1.42.1 (17-Feb-2012)
Resizing the filesystem on /dev/vg01/HOME to 18874368 (4k) blocks.
Begin pass 2 (max = 5950340)
Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXX-----------
# e2fsck -f /dev/vg01/HOME
# mount /dev/vg01/HOME
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg01-HOME 72G 55G 15G 80% /mnt/sda3
Sekarang kita bisa mengurangi ukuran partisi logikal /dev/vg01/HOME. Ingat unmount dulu!
# unmount /dev/vg01/HOME
# lvdisplay -C --units M
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
HOME vg01 -wi--- 161526.84M
Ada baiknya kita tes dulu konfigurasi penyusutan yang kita inginkan
# lvreduce -t -v -L -64G vg01/HOME
Test mode: Metadata will NOT be updated and volumes will not be (de)activated.
Finding volume group vg01
Test mode: Skipping archiving of volume group.
Reducing logical volume HOME to 86.43 GiB
Found volume group "vg01"
Found volume group "vg01"
Found volume group "vg01"
Test mode: Skipping backup of volume group.
Logical volume HOME successfully resized
Test mode: Wiping internal cache
Wiping internal VG cache
Jika sudah yakin, penyusutan bisa kita lakukan
# lvreduce -v -L -64G vg01/HOME
Finding volume group vg01
Archiving volume group "vg01" metadata (seqno 31).
Reducing logical volume HOME to 86.43 GiB
Found volume group "vg01"
Found volume group "vg01"
Found volume group "vg01"
Creating volume group backup "/etc/lvm/backup/vg01" (seqno 32).
Logical volume HOME successfully resized
Kita cek kembali kondisi filesystem kita dengan memperbesar ukuran filesystem hingga memenuhi partisi logikalnya
# resize2fs -p /dev/vg01/HOME
resize2fs 1.42.1 (17-Feb-2012)
Resizing the filesystem on /dev/vg01/HOME to 22658048 (4k) blocks.
Begin pass 1 (max = 116)
Extending the inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/vg01/HOME is now 22658048 blocks long.
Kita cek kembali filesystem kita
# e2fsck -vfy /dev/vg01/HOME
Setelah kita mount, akan tampak bahwa ukuran filesystem sudah berkurang
# mount /dev/vg01/HOME /mnt/sda3
# df -B 1M
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/mapper/vg01-HOME 88370 55676 28273 67% /mnt/sda3
Setelah itu kita cek apakah ruang yang tersisa dari volume LVM2 sudah tersedia. Unmount lagi.
# pvdisplay -C --units M PV VG Fmt Attr PSize PFree /dev/sda3 vg01 lvm2 a-- 182531.92M 89724.55M Kita nonaktifkan dulu volume LVM2 kita, buat jaga2 saja. # vgchange -a n vg01 0 logical volume(s) in volume group "vg01" now active
Kita tes dulu konfigurasi penyusutan volume LVM2 yang kita mau. Siapa tahu ukuran yang kita inginkan itu kurang mencukupi untuk ditempati partisi logikalnya
# pvresize -t -v --setphysicalvolumesize 100G /dev/sda3
Test mode: Metadata will NOT be updated and volumes will not be (de)activated.
Using physical volume(s) on command line
Test mode: Skipping archiving of volume group.
/dev/sda3: Pretending size is 209715200 not 356513792 sectors.
Resizing volume "/dev/sda3" to 356513792 sectors.
Resizing physical volume /dev/sda3 from 0 to 25599 extents.
/dev/sda3: cannot resize to 25599 extents as later ones are allocated.
0 physical volume(s) resized / 1 physical volume(s) not resized
Test mode: Wiping internal cache
Wiping internal VG cache
Ternyata jika kita kurangi ukuran volume menjadi 100G masih kurang, atau ukuran partisi logikal melebihi 100G. Kalau begitu kita tambahi sedikit, mudah2an cukup
# pvresize -t -v --setphysicalvolumesize 102G /dev/sda3
Test mode: Metadata will NOT be updated and volumes will not be (de)activated.
Using physical volume(s) on command line
Test mode: Skipping archiving of volume group.
/dev/sda3: Pretending size is 213909504 not 356513792 sectors.
Resizing volume "/dev/sda3" to 356513792 sectors.
Resizing physical volume /dev/sda3 from 0 to 26111 extents.
Updating physical volume "/dev/sda3"
Test mode: Skipping backup of volume group.
Physical volume "/dev/sda3" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
Test mode: Wiping internal cache
Wiping internal VG cache
Jika tidak ada masalah lagi, kita dapat menjalankan penyusutan hingga kita memperoleh ukuran volume LVM2 yang kita inginkan
# pvresize -v --setphysicalvolumesize 102G /dev/sda3
Using physical volume(s) on command line
Archiving volume group "vg01" metadata (seqno 32).
/dev/sda3: Pretending size is 213909504 not 356513792 sectors.
Resizing volume "/dev/sda3" to 356513792 sectors.
Resizing physical volume /dev/sda3 from 0 to 26111 extents.
Updating physical volume "/dev/sda3"
Creating volume group backup "/etc/lvm/backup/vg01" (seqno 33).
Physical volume "/dev/sda3" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
Cek apakah ukuran volume LVM2 sudah sesuai.
# vgscan Reading all physical volumes. This may take a while... Found volume group "vg01" using metadata type lvm2 Aktifkan kembali volume LVM2 kita # vgchange -a y vg01 1 logical volume(s) in volume group "vg01" now active # pvdisplay -C --units M PV VG Fmt Attr PSize PFree /dev/sda3 vg01 lvm2 a-- 109517.47M 16710.11M # lvdisplay -C --units M LV VG Attr LSize Origin Snap% Move Log Copy% Convert HOME vg01 -wi-ao 92807.36M # df -B 1M Filesystem 1M-blocks Used Available Use% Mounted on /dev/mapper/vg01-HOME 88370 55676 28273 67% /mnt/sda3
Lho kok ruang kosongnya malah ikut berkurang. Bukannya kita ingin menambahi jumlah ruang kosong? Itu karena yang kita ubah adalah ukuran volume yang ditempati oleh partisi logikal. Jika sebelum disusutkan ukuran ruang kosong dalam volume tersebut sekitar 92G-94G, setelah kita susutkan volume LVM2-nya sementara partisi logikalnya tidak ikut berkurang maka ruang kosong dalam volume tersebut akan berkurang. Sisanya kemana? Sisanya tidak digunakan oleh volume LVM2 kita alias benar-benar ruang kosong dalam harddisk tetapi masih di dalam partisi LVM2 kita.
Akan tetapi, meskipun telah kita susutkan, ukuran volume LVM2 akan tetap seperti gambar awal. Mengapa? Karena operasi yang kita jalankan tadi hanya diterapkan di dalam volume LVM2. Jadi jika kita lihat menggunakan program manajer partisi seperti GParted, secara fisik di harddisk posisi titik awal dan akhir dari partisi LVM2 belum berubah. Agar ukuran partisi LVM2 berubah (berkurang), kita harus mengubahnya secara manual menggunakan fdisk.
Catat dahulu struktur/layout partisi kita utamanya partisi LVM2 kita
# fdisk /dev/sda Command (m for help): p Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x1707a8a5 Device Boot Start End Blocks Id System /dev/sda1 4096 33050623 16523264 83 Linux /dev/sda2 * 33054720 90152959 28549120 7 HPFS/NTFS/exFAT /dev/sda3 90155008 467642367 188743680 8e Linux LVM /dev/sda4 467642368 976773119 254565376 5 Extended /dev/sda5 467644416 972208127 252281856 83 Linux /dev/sda6 972210176 976773119 2281472 82 Linux swap / Solaris
Setelah itu hapus partisi tersebut dan buat kembali sekaligus kita kurangi ukuran partisi LVM2-nya
Command (m for help): d
Partition number (1-6): 3
Command (m for help): n
Partition type:
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p):
Using default response p
Selected partition 3
First sector (2048-976773167, default 2048): 90155008
Last sector, +sectors or +size{K,M,G} (90155008-467642367, default 467642367): +120G
Command (m for help): t
Partition number (1-6): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)
Cek kembali, jika sudah sesuai dengan keinginan kita (bandingkan ukurannya), tuliskan tabel partisi yang baru tersebut ke MBR
Command (m for help): p Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x1707a8a5 Device Boot Start End Blocks Id System /dev/sda1 4096 33050623 16523264 83 Linux /dev/sda2 * 33054720 90152959 28549120 7 HPFS/NTFS/exFAT /dev/sda3 90155008 341813247 125829120 8e Linux LVM /dev/sda4 467642368 976773119 254565376 5 Extended /dev/sda5 467644416 972208127 252281856 83 Linux /dev/sda6 972210176 976773119 2281472 82 Linux swap / Solaris Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Untuk mengkonfirmasi secara visual kita lihat kembali di GParted.
Bagaimana? Mudah bukan?

