Ini adalah panduan lengkap pemula untuk LVM (Logical Volume Management) di Linux.
Dalam tutorial ini, Anda akan mempelajari konsep LVM, komponennya, dan mengapa Anda harus menggunakannya.
Saya tidak akan terbatas pada penjelasan teoretis saja. Saya juga akan menunjukkan contoh langsung untuk membuat dan mengelola LVM di Linux.
Singkatnya, saya akan memberi Anda semua informasi penting yang Anda perlukan untuk mulai bekerja dengan LVM di dunia nyata.
Apa itu LVM di Linux?
LVM adalah singkatan dari Logical Volume Management. Ini adalah metode alternatif untuk mengelola sistem penyimpanan daripada yang berbasis partisi tradisional. Di LVM, alih-alih membuat partisi, Anda membuat volume logis, dan kemudian Anda dapat dengan mudah memasang volume tersebut di sistem file Anda seperti halnya partisi disk.
Satu pengecualian untuk pernyataan sebelumnya adalah Anda tidak dapat menggunakan volume logis untuk/boot
. Itu karena GRUB (bootloader paling umum untuk Linux) tidak dapat membaca dari volume logis. Alternatif terkenal untuk GRUB, systemd-boot di sisi lain hanya membaca sistem file vfat, jadi itu juga tidak akan berfungsi. Komponen LVM
Ada tiga komponen utama untuk LVM:
- Volume Fisik
- Grup Volume
- Volume Logis
Meskipun daftar tersebut terdiri dari tiga komponen, hanya dua di antaranya yang merupakan mitra langsung ke sistem partisi. Tabel berikut mencatatnya.
Sistem Partisi Disk | LVM |
---|---|
Partisi | Volume Logis |
Disk | Grup Volume |
Volume fisik tidak memiliki padanan langsung, tetapi saya akan segera membicarakannya.
Mengapa menggunakan LVM?
Keuntungan utama dari LVM adalah betapa mudahnya mengubah ukuran volume atau grup volume. Ini mengabstraksi semua bagian jelek (partisi, disk mentah) dan meninggalkan kita dengan kumpulan penyimpanan pusat untuk digunakan.
Jika Anda pernah mengalami kengerian mengubah ukuran partisi, Anda pasti ingin menggunakan LVM.
Persiapan lab untuk praktik
Artikel ini bukan hanya teori. Saya akan menunjukkan contoh perintah aktual di sepanjang jalan dan cara terbaik untuk mempelajari sesuatu adalah bekerja dengannya, langsung. Untuk itu, saya sarankan Anda menggunakan mesin virtual.
Untuk membantu Anda dengan itu, saya telah menyiapkan Vagrantfile sederhana yang dapat Anda gunakan untuk menjalankan mesin virtual yang sangat ringan dengan VirtualBox. Mesin virtual ini memiliki tiga disk tambahan yang dapat Anda dan saya gunakan untuk contoh perintah di bawah ini.
Buat direktori di suatu tempat di sistem file Anda dan simpan yang berikut ini di file di sana, bernama Vagrantfile
.
Vagrant.configure "2" do |config|
config.vm.box = "ubuntu/focal64"
config.vm.hostname = "lvm"
3.times {|i| config.vm.disk :disk, size: "5GB", name: "drive-#{i}"}
config.vm.provider :virtualbox do |machine|
machine.memory = 1024
machine.cpus = 1
machine.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
end
end
# vi: set ft=ruby
Atau jika mau, Anda dapat menggunakan wget
atau curl
untuk mengunduh file dari inti saya.
wget https://gist.githubusercontent.com/debdutdeb/98ed1b6aef36885d07ce8247188dfd5e/raw/524259da5dfa2d8750883d01c8159829729e224d/Vagrantfile
Pastikan Anda telah menginstal Vagrant dan VirtualBox.
Setelah Vagrantfile berada di tempatnya, atur variabel lingkungan VAGRANT_EXPERIMENTAL
ke disks
.
export VAGRANT_EXPERIMENTAL=disks
Terakhir, jalankan mesin virtual menggunakan perintah berikut (pastikan Anda berada di direktori yang sama dengan Vagrantfile):
vagrant up
Setelah mesin berjalan, Anda dapat menggunakan vagrant ssh
ke SSH ke dalamnya dan jalankan contoh perintah dari artikel ini.
Ingatlah untuk menjalankan vagrant destroy
dari direktori yang sama dengan Vagrantfile setelah Anda selesai.
Menginstal LVM
Sebelum Anda dapat menggunakan salah satu perintah, Anda perlu menginstal lvm2
kemasan. Ini harus sudah diinstal sebelumnya di sebagian besar distribusi modern, terutama yang berbasis Ubuntu. Tapi tetap saja, saya harus menyebutkan ini sebelum bergerak maju. Untuk menginstal lvm2
, lihat dokumentasi distribusi Anda.
Hands-on dengan LVM
Untuk penelusuran langsung ini, saya telah membuat mesin virtual dengan penyimpanan root 40G (tidak penting) dan tiga disk eksternal berukuran 5G. Ukuran disk ini sewenang-wenang.
[email protected]:~$ lsblk -o name,size,fstype
NAME SIZE FSTYPE
loop0 55.5M squashfs
loop1 32.3M squashfs
loop2 70.4M squashfs
sda 40G
└─sda1 40G ext4
sdb 10M iso9660
sdc 5G
sdd 5G
sde 5G
Seperti yang Anda lihat, perangkat yang akan saya gunakan adalah sdc
, sdd
dan sde
.
Ingat saya bilang ada tiga komponen utama untuk LVM?
- Volume Fisik
- Grup Volume
- Volume Logis
Saatnya untuk melihat mereka satu per satu.
1. Volume Fisik
Hal pertama yang perlu Anda ketahui tentang LVM, adalah volume fisik. Volume fisik adalah bahan mentah atau blok bangunan yang digunakan untuk mencapai abstraksi yaitu volume logis. Dengan kata yang lebih sederhana, volume fisik adalah unit logis dari sistem LVM.
Volume fisik dapat berupa apa saja, disk mentah, atau partisi disk. Membuat dan menginisialisasi volume fisik adalah hal yang sama. Keduanya berarti Anda hanya menyiapkan blok penyusun (yaitu partisi, disk) untuk operasi lebih lanjut. Ini akan menjadi lebih jelas dalam beberapa saat.
Utilitas: Semua utilitas yang mengatur volume fisik dimulai dengan huruf pv
untuk P fisik V olume. Misalnya. pvcreate
, pvchange
, pvs
, pvdisplay
dll.
Membuat volume fisik
Anda dapat membuat volume fisik menggunakan disk mentah yang tidak dipartisi atau partisi itu sendiri.
Seperti yang saya sebutkan sebelumnya, saya memiliki tiga drive eksternal yang terpasang pada mesin virtual saya, mari kita mulai dengan /dev/sdc
.
Kami menggunakan pvcreate
perintah untuk membuat volume fisik. Cukup berikan nama perangkat ke sana dan tidak ada yang lain.
sudo pvcreate /dev/sdc
Anda akan melihat sesuatu seperti ini:-
[email protected]:~$ sudo pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
Selanjutnya saya akan mempartisi /dev/sdd
menjadi bagian yang sama. Gunakan alat apa saja, cfdisk
, parted
, fdisk
dll, ada banyak alat untuk mencapai pekerjaan ini.
[email protected]:~$ lsblk -o name,size,fstype | grep sdd
sdd 5G
├─sdd1 2.5G
└─sdd2 2.5G
Sekarang Anda dapat dengan cepat membuat dua volume fisik lagi dari dua partisi ini dalam satu langkah, berikan kedua perangkat ini ke pvcreate
sekaligus.
sudo pvcreate /dev/sdd1 /dev/sdd2
Lihat:-
[email protected]:~$ sudo pvcreate /dev/sdd1 /dev/sdd2
Physical volume "/dev/sdd1" successfully created.
Physical volume "/dev/sdd2" successfully created.
Mencantumkan volume fisik yang tersedia
Ada tiga perintah yang dapat Anda gunakan untuk mendapatkan daftar volume fisik yang tersedia, pvscan
, pvs
dan pvdisplay
. Anda biasanya tidak perlu meneruskan apa pun ke perintah ini.
pvscan
:-
[email protected]:~$ sudo pvscan
PV /dev/sdc lvm2 [5.00 GiB]
PV /dev/sdd1 lvm2 [2.50 GiB]
PV /dev/sdd2 lvm2 [<2.50 GiB]
Total: 3 [<10.00 GiB] / in use: 0 [0 ] / in no VG: 3 [<10.00 GiB]
pvs
:-
[email protected]:~$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sdc lvm2 --- 5.00g 5.00g
/dev/sdd1 lvm2 --- 2.50g 2.50g
/dev/sdd2 lvm2 --- <2.50g <2.50g
pvdisplay
:-
[email protected]:~$ sudo pvdisplay
"/dev/sdc" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID SzSkdD-xKYa-4y7P-teyU-481p-uiQ8-qieMJJ
"/dev/sdd1" is a new physical volume of "2.50 GiB"
--- NEW Physical volume ---
PV Name /dev/sdd1
VG Name
PV Size 2.50 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 553Iy4-JJ21-LfIw-udtO-j9Cd-7gFS-iXXFVS
"/dev/sdd2" is a new physical volume of "<2.50 GiB"
--- NEW Physical volume ---
PV Name /dev/sdd2
VG Name
PV Size <2.50 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID bf7ghn-QkPm-EUdp-GdyW-shMG-5sMn-VhNtYB
Seperti yang Anda lihat selain hanya mencantumkan volume fisik, perintah ini juga memberi Anda banyak informasi lain tentang volume ini.
Menghapus volume fisik
Anda dapat menghapus volume fisik dengan pvremove
memerintah. Sama seperti pvcreate
, cukup berikan perangkat (yang diinisialisasi sebagai volume fisik) ke pvremove
perintah.
Untuk demonstrasi, saya akan menghapus /dev/sdd2
dari daftar.
sudo pvremove /dev/sdd2
Outputnya harus sama dengan ini:-
[email protected]:~$ sudo pvremove /dev/sdd2
Labels on physical volume "/dev/sdd2" successfully wiped.
Sekarang daftar volume fisik dengan sudo pvs
[email protected]:~$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sdc lvm2 --- 5.00g 5.00g
/dev/sdd1 lvm2 --- 2.50g 2.50g
/dev/sdd2
tidak ada lagi di sini.
2. Grup Volume
Grup volume adalah kumpulan volume fisik. Ini adalah tingkat abstraksi berikutnya di LVM. Grup volume adalah kumpulan penyimpanan yang menggabungkan kapasitas penyimpanan beberapa perangkat penyimpanan mentah.
Utilitas: Semua nama utilitas grup volume dimulai dengan vg
, singkatan dari V olume G kelompok, mis. vgcreate
, vgs
, vgrename
dll.
Membuat grup volume
Grup volume dibuat menggunakan vgcreate
memerintah. Argumen pertama untuk vgcreate
adalah nama yang ingin Anda berikan pada grup volume ini, dan sisanya adalah daftar volume fisik yang akan mendukung kumpulan penyimpanan.
sudo vgcreate lvm_tutorial /dev/sdc /dev/sdd1
Contoh:-
[email protected]:~$ sudo vgcreate lvm_tutorial /dev/sdc /dev/sdd1
Volume group "lvm_tutorial" successfully created
Mencantumkan grup volume
Mendaftar grup volume mirip dengan membuat daftar volume fisik, Anda dapat menggunakan perintah yang berbeda dengan berbagai tingkat verbositas, vgdisplay
, vgscan
dan vgs
.
Saya pribadi lebih suka vgs
perintah, sudo vgs
[email protected]:~$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
lvm_tutorial 2 0 0 wz--n- 7.49g 7.49g
vgscan
:-
[email protected]:~$ sudo vgscan
Found volume group "lvm_tutorial" using metadata type lvm2
vgdisplay
:-
[email protected]:~$ sudo vgdisplay
--- Volume group ---
VG Name lvm_tutorial
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 7.49 GiB
PE Size 4.00 MiB
Total PE 1918
Alloc PE / Size 0 / 0
Free PE / Size 1918 / 7.49 GiB
VG UUID LYVE9P-vY0G-OAW6-an8q-yfBx-rrB1-YU61m1
Mencantumkan volume fisik yang dilampirkan ke grup volume
Anda dapat membuat daftar semua volume fisik yang terhubung ke grup volume tertentu dengan menggunakan perintah berikut:-
sudo pvdisplay -S vgname=<volume_group_name> -C -o pv_name
Contoh:-
[email protected]:~$ sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name
PV
/dev/sdc
/dev/sdd1
Anda juga bisa mendapatkan hitungan volume fisik.
sudo vgdisplay -S vgname=<volume_group_name> -C -o pv_count
Contoh:-
[email protected]:~$ sudo vgdisplay -S vgname=lvm_tutorial -C -o pv_count
#PV
3
Memperluas grup volume
Memperluas grup volume berarti menambahkan volume fisik tambahan ke grup volume. Untuk melakukannya vgextend
perintah digunakan. Sintaksnya sederhana:-
vgextend <volume_group> <physical_volume1> <physical_volume2> ....
Mari kita kembangkan lvm_tutorial
volume dengan /dev/sdd2
.
sudo vgextend lvm_tutorial /dev/sdd2
Fokus pada keluaran:-
[email protected]:~$ sudo vgextend lvm_tutorial /dev/sdd2
Physical volume "/dev/sdd2" successfully created.
Volume group "lvm_tutorial" successfully extended
Di bagian volume fisik, kami akhirnya menghapus /dev/sdd2
sebagai volume fisik, tetapi partisi atau disk mentah harus diinisialisasi sebagai volume fisik jika tidak, LVM tidak akan dapat mengelolanya sebagai bagian dari grup volume. Jadi vgextend
siap /dev/sdd2
sebelum menambahkannya ke grup volume.
Sekarang buat daftar volume fisik yang dilampirkan ke grup volume ini, hanya untuk memastikan.
sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name
Keluaran:-
[email protected]:~$ sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name
PV
/dev/sdc
/dev/sdd1
/dev/sdd2
/dev/sdd2
sekarang dalam daftar seperti yang diharapkan.
Mengurangi grup volume
Sama seperti memperluas grup volume berarti menambahkan volume fisik lain, menguranginya berarti menghapus satu atau beberapa volume fisik.
Kami menggunakan vgreduce
perintah untuk melakukan ini. Sintaks umumnya adalah sebagai berikut:-
vgreduce <vgname> <physical_volume1> <physical_volume2> ....
Mari kita hapus volume fisik /dev/sdc
dan /dev/sdd1
.
sudo vgreduce lvm_tutorial /dev/sdc /dev/sdd1
Contoh:-
[email protected]:~$ sudo vgreduce lvm_tutorial /dev/sdc /dev/sdd1
Removed "/dev/sdc" from volume group "lvm_tutorial"
Removed "/dev/sdd1" from volume group "lvm_tutorial"
Jika grup volume memiliki volume logis yang aktif, Anda tidak akan dapat menguranginya seperti ini. Buat daftar volume fisik lagi.
sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name
Keluaran:-
[email protected]:~$ sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name
PV
/dev/sdd2
Kedua volume fisik itu hilang.
Sekarang, untuk sisa artikel ini, tambahkan kedua volume fisik itu kembali.
sudo vgextend lvm_tutorial /dev/sdc /dev/sdd1
Menghapus grup volume
Anda dapat menghapus volume logis dengan vgremove
perintah.
sudo vgremove lvm_tutorial
Jangan jalankan perintah ini sekarang, jika tidak, Anda harus membuat ulang grup volume. Jika Anda ingin mengujinya, jalankan di akhir artikel ini.
3. Volume Logika
Inilah yang sebagian besar akan Anda kerjakan. Volume logis seperti partisi, tetapi alih-alih duduk di atas disk mentah, ia duduk di atas grup volume. Anda bisa,
- Memformat volume logis dengan sistem file mana pun yang Anda inginkan.
- Pasang di mana saja di sistem file yang Anda inginkan.
Di bagian ini Anda akan belajar,
- Cara membuat volume logis.
- Operasi umum pada volume logis.
- Mengubah ukuran volume logis.
- Menghapus volume logis.
Utilitas: Semua nama utilitas grup volume dimulai dengan lv
, singkatan dari L ogis V olume. misalnya lvcreate
, lvs
, lvreduce
dll.vgcreate
, vgs
, vgrename
dll.
Membuat volume logis
Volume logis dibuat menggunakan lvcreate
memerintah. Sintaks yang umum digunakan terlihat sebagai berikut,
sudo lvcreate -L <size> -n <lvname> <vgname>
Biarkan saya memecahnya untuk Anda:-
-L
pilihannya adalah untuk ukuran volume logis baru, Anda dapat menggunakan bilangan bulat apa pun dengan "GB", "MB" atau "KB" di bagian akhir. Misalnya. "1GB".-n
pilihannya adalah untuk menamai volume logis ini.- Akhirnya Anda harus memberikan nama grup volume yang akan menjadi bagian dari volume logis ini. Jadi sambil memberikan volume logis dengan ukuran, pastikan grup volume memiliki ruang yang tersedia.
Jalankan perintah berikut pada mesin virtual:-
sudo lvcreate -L 5GB -n lv1 lvm_tutorial
Contoh keluaran:-
[email protected]:~$ sudo lvcreate -L 5GB -n lv1 lvm_tutorial
Logical volume "lv1" created.
Operasi umum pada volume logis
Seperti yang saya katakan sebelumnya, Anda dapat menempatkan sistem file pada volume logis serta memasangnya di mana saja di sistem file.
Setelah dibuat, Anda dapat menemukan volume logis di /dev/<vgname>/<lvname>
jalur. Misalnya dalam kasus kami volumenya akan berada di /dev/lvm_tutorial/lv1
.
[email protected]:~$ ls -l /dev/lvm_tutorial/lv1
lrwxrwxrwx 1 root root 7 May 17 02:09 /dev/lvm_tutorial/lv1 -> ../dm-0
Sekarang Anda dapat menggunakannya seperti partisi apa pun. Format dengan ext4,
sudo mkfs.ext4 /dev/lvm_tutorial/lv1
Pasang di suatu tempat di struktur direktori Anda saat ini seperti /mnt
,
sudo mount -t ext4 /dev/lvm_tutorial/lv1 /mnt
Mengubah ukuran volume logis
Anda dapat memperluas volume logis menggunakan lvextend
perintah dan kurangi ukurannya menggunakan lvreduce
memerintah. Atau Anda dapat menggunakan perintah tunggal lvresize
untuk menyelesaikan kedua tugas.
Pertama mari kita lihat apakah grup volume memiliki ruang tersisa di dalamnya atau tidak.
sudo vgs -S vgname=lvm_tutorial -o vg_free
Keluaran:-
[email protected]:~$ sudo vgs -S vgname=lvm_tutorial -o vg_free
VFree
<4.99g
Menurut output, saya memiliki beberapa ruang tersisa, jadi mari kita tingkatkan ukuran volume sebesar 2GB.
Ingat volume logis masih terpasang di /mnt
.
[email protected]:~$ mount | grep '/mnt'
/dev/mapper/lvm_tutorial-lv1 on /mnt type ext4 (rw,relatime)
Gunakan perintah berikut untuk mengubah ukuran volume:-
sudo lvresize -L +2GB lvm_tutorial/lv1
Sintaks umumnya adalah seperti ini:-
lvresize -L [+|-][Size] <vgname>/<lvname>
Simbol + atau - setelah -L
tergantung pada apakah Anda mencoba memperbesar atau memperkecil ukuran volume.
Setelah ukuran volume meningkat, sistem file juga harus diubah ukurannya. Untuk ext4, perintah yang digunakan adalah resize2fs
.
sudo resize2fs /dev/lvm_tutorial/lv1
Keluaran:-
[email protected]:~$ sudo resize2fs /dev/lvm_tutorial/lv1
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/lvm_tutorial/lv1 is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/lvm_tutorial/lv1 is now 1835008 (4k) blocks long.
Tidak semua sistem file mendukung pengubahan ukuran panas, Ext4 dan XFS adalah salah satu yang didukung. Saya sarankan Anda tetap berpegang pada ini. Mengurangi volume logis adalah tugas yang sedikit lebih rumit dan saya tidak akan membicarakannya di artikel ini. Saya mengurangi ukuran volume ini sebesar 1 GB.
Menghapus volume logis
Anda menghapus volume logis dengan lvremove
memerintah. Sintaks perintahnya adalah sebagai berikut:-
lvremove <vgname>/<lvname>
Jalankan perintah ini di mesin virtual:-
sudo lvremove lvm_tutorial/lv1
Keluaran:-
[email protected]:~$ sudo lvremove lvm_tutorial/lv1
Do you really want to remove and DISCARD active logical volume lvm_tutorial/lv1? [y/n]: y
Logical volume "lv1" successfully removed
Ada banyak operasi lain yang dapat dilakukan pada volume logis, volume fisik, dan grup volume, tetapi tidak mungkin untuk menulis semua itu ke dalam satu artikel.
Saya memberi Anda satu disk lagi /dev/sde
di mesin virtual. Gunakan, praktikkan beberapa perintah dari artikel ini, buat grup volume baru, perpanjang yang sudah ada, praktikkan saja.
Saya harap artikel ini bermanfaat bagi Anda, jika Anda ingin melihat lebih banyak tentang ini di masa mendatang, beri tahu saya di bagian komentar di bawah.