I have got 2 hard disks of 2GB size each -
# fdisk -l 2>/dev/null | grep '/dev/sd[a-b]' Disk /dev/sda: 2147 MB, 2147483648 bytes Disk /dev/sdb: 2147 MB, 2147483648 bytes
The following steps will show you how to create logical volumes on these hard disks.
Step 1: Prepare the disks
If you are using entire disks for creating logical volumes, then make sure they are raw disks. ie they should not contain any partitions.
If you are using individual partitions on a disk for LVM, then you should open fdisk (or another partitioning tool) and set each partition as type "Linux LVM" - 0x8e
, so that they can be recognized by the LVM system.
Step 2: Initialize the disks to be used as a physical volume
To initialize the disks to be used as a physical volume, you use
pvcreate
.# pvcreate /dev/sda
Writing physical volume data to disk "/dev/sda"
Physical volume "/dev/sda" successfully created
# pvcreate /dev/sdb
Writing physical volume data to disk "/dev/sdb"
Physical volume "/dev/sdb" successfully created
Now use
lvmdiskscan
to verify that the hard disks have been properly initialized.# lvmdiskscan
/dev/sda [ 2.00 GiB] LVM physical volume
...
/dev/sdb [ 2.00 GiB] LVM physical volume
...
2 disks
2 LVM physical volume whole disks
0 LVM physical volumes
Step 3: Create the volume group
To create a volume group, you run the
vgcreate
as follows.# vgcreate vg_sda /dev/sda Volume group "vg_sda" successfully created
# vgcreate vg_sdb /dev/sdb Volume group "vg_sdb" successfully created
This creates a volume group descriptor at the start of each disk.
Step 4: Create the logical volumes
Logical volumes can be classified into 3 types -
- Linear volumes
- Stripped volumes, and
- Mirrored volumes
Logical volumes are similar to partitions in hard disks - only better.
Use
lvcreate
command to create a logical volume. Lets create a single linear logical volume within each of the volume groups that was created.
# lvcreate --extents 100%FREE --name lv_sda vg_sda Logical volume "lv_sda" created
# lvcreate --extents 100%FREE --name lv_sdb vg_sdb Logical volume "lv_sdb" created
In the above commands,
--extents
gives the number of logical extents to allocate for the new logical volume. Here we have specified the number as the percentage of the free space in the volume group.lvcreate
takes a lot of options. Do check its man page to know more.
Step 5: Verify your work
Lastly, you should scan all disks for logical volumes and volume groups. For this you use the tools -
vgscan
and lvscan
respectively.# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg_sdb" using metadata type lvm2
Found volume group "vg_sda" using metadata type lvm2
and scan the logical volumes on all the disks ...
# lvscan
ACTIVE '/dev/vg_sdb/lv_sdb' [2.00 GiB] inherit
ACTIVE '/dev/vg_sda/lv_sda' [2.00 GiB] inherit
The logical volumes are included in the
/dev
directory in the format /dev/vg/lv where vg is volume group name, and lv is logical volume name. In our case it will be - /dev/vg_sda/lv_sda
and /dev/vg_sdb/lv_sdb
.Run
lvdisplay
to see the details of the logical volumes that were created.# lvdisplay
--- Logical volume ---
LV Name /dev/vg_sdb/lv_sdb
VG Name vg_sdb
LV UUID ytRveJ-ZCsD-gIXd-Uzfl-UOeO-8CYF-xdXb72
LV Write Access read/write
LV Status available
# open 0
LV Size 2.00 GiB
Current LE 511
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3
--- Logical volume ---
LV Name /dev/vg_sda/lv_sda
VG Name vg_sda
LV UUID gTG0Sy-TiF9-3bmF-C7U5-FlqJ-TbZG-eYULtf
LV Write Access read/write
LV Status available
# open 0
LV Size 2.00 GiB
Current LE 511
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
From here on, you can access the logical volumes the same way you access physical disks. All the commands such as for mounting disks, creating file systems, formatting and so on will work on the logical volumes as well.
What to do next
Before you start using the logical volumes to store your files, you have to do 2 things, namely -
- Format the logical volume, and
- Mount the logical volume in a suitable location.
First lets format the logical volumes
Formating the logical volume involves creating a file system on it. You use the
mke2fs
command to create a file system.# mkfs.ext4 /dev/vg_sda/lv_sda
and for the second logical volume ...
# mkfs.ext4 /dev/vg_sdb/lv_sdb
Now lets mount the logical volumes in a suitable location.
Mounting the first logical volume at /mnt/volume-a
# mkdir /mnt/volume-a # mount -t ext4 /dev/vg_sda/lv_sda /mnt/volume-a
and mounting the second logical volume at /mnt/volume-b
# mkdir /mnt/volume-b # mount -t ext4 /dev/vg_sdb/lv_sdb /mnt/volume-b
If you want to automatically mount the logical volume(s) each time you boot into Linux, you will have to enter the appropriate line in the /etc/fstab
file as well.
List of LVM Commands
To recap, following are the LVM commands we have used to create logical volumes in Linux.
pvcreate
- Initializes physical volume for later use by logical volume manager (LVM). lvmdiskscan
- Scan for all devices visible to LVM.vgcreate
- Create a volume group.lvcreate
- Create a logical volume in an existing volume group.vgscan
- Scan all disks for volume groups and rebuild caches.lvscan
- Scan all disks for logical volumes.lvdisplay
- Display attributes (information) of all logical volumes.There are many more LVM commands that accomplish other tasks. However, these set of LVM commands should get you started on creating an LVM in Linux.
0 comments:
Post a Comment