Most of the linux administrator facing run out of disk space to store data and sometimes there is another request for them to create additional logical volume manager(LVM) for new system or to store data. It is possible to perform this task if that system administrator has the right skill on linux. Otherwise, they will put themselves and the organization in the disaster or risk as working with the system’s data is on of the most critical job that must be perform with the right steps and skills. In this post, i will show how to create additional LVM on Red Hat Enterprise Linux 6 (RHEL 6) system. This step may apply to CentOS 6.0. CentOS 6.1 and CentOS 6.2.
1. By typing the mount command with no arguments shows us all currently mounted filesystems
[root@rhel6 ~]# mount /dev/mapper/VolGroup-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
2. Print the current partition table of the hard disk :
[root@rhel6 ~]# fdisk -l Disk /dev/sda: 12.9 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 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: 0x0000690f 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 1567 12069888 8e Linux LVM Disk /dev/dm-0: 10.2 GB, 10242490368 bytes 255 heads, 63 sectors/track, 1245 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: 0x00000000 Disk /dev/dm-0 doesn't contain a valid partition table Disk /dev/dm-1: 2113 MB, 2113929216 bytes 255 heads, 63 sectors/track, 257 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: 0x00000000 Disk /dev/dm-1 doesn't contain a valid partition table Disk /dev/sdb: 12.9 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 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: 0x00000000 Disk /dev/sdb doesn't contain a valid partition table
3. Create new partition for /dev/sdb using below command :
[root@rhel6 ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x1adc0629. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) 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): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1566, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-1566, default 1566): Using default value 1566 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
4. Convert this disk into a physical volume :
[root@rhel6 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created
Display the physical volume :
[root@rhel6 ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name VolGroup PV Size 11.51 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 2946 Free PE 0 Allocated PE 2946 PV UUID tzxpC7-70n1-OuUQ-kMfT-H627-VHAA-kroHvm "/dev/sdb1" is a new physical volume of "12.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 12.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID SoWQ5U-CmmA-tjIY-KDh0-H3gU-qVpa-tx4n6n
5. With the physical volume created we now need to create new volume group for it. In this case i will give the volume group name VolGroup_rhel6 :
[root@rhel6 ~]# vgcreate VolGroup_rhel6 /dev/sdb1 Volume group "VolGroup_rhel6" successfully created
Display the volume group
[root@rhel6 ~]# vgdisplay --- Volume group --- VG Name VolGroup_rhel6 System ID Format lvm2 Metadata Areas 1 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 1 Act PV 1 VG Size 11.99 GiB PE Size 4.00 MiB Total PE 3070 Alloc PE / Size 0 / 0 Free PE / Size 3070 / 11.99 GiB VG UUID mg2I2s-8u5l-Mjm7-oKrQ-yYJ3-yzaO-mq2u9v --- Volume group --- VG Name VolGroup System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 11.51 GiB PE Size 4.00 MiB Total PE 2946 Alloc PE / Size 2946 / 11.51 GiB Free PE / Size 0 / 0 VG UUID uROlLN-3aef-Cb7G-rJ8W-EyY0-aDaf-TyeE5T
6. Create logical volumes with the name of rhelvol into VolGroup_rhel6 volume group :
[root@rhel6 ~]# lvcreate --name rhelvol -l 100%FREE VolGroup_rhel6 Logical volume "rhelvol" created
Display logical volume :
[root@rhel6 ~]# lvdisplay --- Logical volume --- LV Name /dev/VolGroup_rhel6/rhelvol VG Name VolGroup_rhel6 LV UUID o3RQMB-O3Lu-TB2h-7pSm-A2kI-sh1W-rXb1Ce LV Write Access read/write LV Status available # open 0 LV Size 11.99 GiB Current LE 3070 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 --- Logical volume --- LV Name /dev/VolGroup/lv_root VG Name VolGroup LV UUID 1f4tl8-rCgZ-yI9J-xCsI-Hrh2-5DUS-DJF5N2 LV Write Access read/write LV Status available # open 1 LV Size 9.54 GiB Current LE 2442 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Name /dev/VolGroup/lv_swap VG Name VolGroup LV UUID Kpw601-Wcvj-EM8b-FJnh-v2f6-5CqT-rV2JdT LV Write Access read/write LV Status available # open 1 LV Size 1.97 GiB Current LE 504 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1
7. Creating a file with the mke2fs command :
[root@rhel6 ~]# mke2fs -j /dev/VolGroup_rhel6/rhelvol
[root@rhel6 ~]# mke2fs -j /dev/VolGroup_rhel6/rhelvol mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 786432 inodes, 3143680 blocks 157184 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=3221225472 96 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@rhel6 ~]# e2label /dev/VolGroup_rhel6/rhelvol /opt
[root@rhel6 ~]# vi /etc/fstab
# # /etc/fstab # Created by anaconda on Wed Jan 4 03:41:29 2012 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/VolGroup-lv_root / ext4 defaults 1 1 /dev/VolGroup_rhel6/rhelvol /opt ext4 defaults 1 1 UUID=0e03e7c9-6971-4783-8fb9-fc251febf486 /boot ext4 defaults 1 2 /dev/mapper/VolGroup-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
[root@rhel6 /]# mount /opt
[root@rhel6 /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 9.4G 2.1G 6.9G 23% / tmpfs 504M 0 504M 0% /dev/shm /dev/sda1 485M 29M 432M 7% /boot /dev/mapper/VolGroup_rhel6-rhelvol 12G 159M 12G 2% /opt
Type the mount command with no arguments to shows the updated mounted filesystems. /dev/mapper/VolGroup_rhel6-rhelvol now exist at the bottom :
[root@rhel6 ~]# mount /dev/mapper/VolGroup-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/mapper/VolGroup_rhel6-rhelvol on /opt type ext4 (rw)