LVM逻辑卷管理

本文详细介绍RHEL环境下LVM逻辑卷管理的全过程,包括硬盘分区、创建物理卷、卷组及逻辑卷,以及逻辑卷的动态扩展与缩减等高级管理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘自微信公众号 让代码飞起来吧

#Rhel专题二:LVM逻辑卷管理——磁盘管理(二)
2017-05-07 让代码飞起来吧


一、添加20G的硬盘,并新建三个主分区,大小分别为5G、5G、10G
如果对分区操作不熟悉的同学可以去看一下基本存储管理

使用fdisk   或gdisk管理硬盘创建分区

二、更改分区的system id
因为我们刚新建完分区,所以还在磁盘管理界面,t键修改分区的格式
进入后输入需要修改的分区id回车进入,然后输入我们需要更改的格式8e(Linux LVM格式)回车进行修改
如果忘记了8e这个代码,可以在fdisk视图中使用l参数查看一下已知格式的相应代码。

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

可以看到修改格式成功!用相同办法修改其他分区,修改完用p查看一下

Device Boot Start End Blocks Id System
sdb1 1 654 5253223+ 8e Linux LVM
sdb2 655 1308 5253255 8e Linux LVM
sdb3 1309 2610 10458315 8e Linux LVM
可以看到分区格式都已经修改为Linux LVM格式了!然后w保存并退出!

在Centos7中有遇到fdisk /dev/sda 添加闲置空间失败的情况,由GPT格式引起,可以使用gdisk /dev/sda命令来分区划分

三、创建物理卷
命令:pvcreate /dev/sdb{1,2,3}

[root@localhost dev]# pvcreate sdb{1,2,3}
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
  Physical volume "/dev/sdb3" successfully created

可以看到创建物理卷成功!下面用pvscan(也可用简拼pvs)查看一下

[root@localhost dev]# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb1       lvm2 a--  5.01g 5.01g
  /dev/sdb2       lvm2 a--  5.01g 5.01g
  /dev/sdb3       lvm2 a--  9.97g 9.97g

这就是我们创建的物理卷的详细信息!
四、创建卷组
我们可以把物理卷sdb1和sdb2添加到一个卷组内
命令:vgcreate myvg /dev/sdb{1,2}

[root@localhost dev]# vgcreate myvg /dev/sdb{1,2}
  Volume group "myvg" successfully created

可以看到vg组"myvg"创建成功,用vgscan(也可以用简拼vgs)查看一下

[root@localhost dev]# vgs
  VG   #PV #LV #SN Attr    VSize  VFree 
  myvg   2        0     0 wz--n- 10.02g 10.02g

可以看到我们myvg卷组里面有两个pv也就是两个物理卷就是sdb1和sdb2,并且空间是两个物理卷的空间的总和,
五、创建逻辑卷
我们从myvg卷组分出一个逻辑卷mylv:
命令:lvcreate -n mylv -L +5G myvg

[root@localhost dev]# lvcreate -n mylv -L +5G myvg

-n是指新建lvm逻辑卷的名字 -L要大写,来指定逻辑卷大小 后面跟上vg组名称
Logical volume “mylv” created
lvm逻辑卷创建成功!用lvscan(也可以用lvs)来查看一下

[root@localhost dev]# lvs
  LV   VG   Attr       LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  mylv myvg -wi-a----- 5.00g   

可以看到LVM逻辑卷名称为mylv,隶属于myvg卷组,大小为5G!
六、格式化逻辑卷
命令:mkfs -t ext4 /dev/myvg/mylv

[root@localhost dev]# mkfs -t ext4 /dev/myvg/mylv
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
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 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

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

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

格式化成功!
七、进行挂载设置自动挂载
在根目录下新建lv1的文件夹作为挂载目录,然后进行挂载
命令:mount /dev/myvg/mylv /lv1

[root@localhost dev]# cd /
[root@localhost /]# mkdir lv1
[root@localhost /]# mount /dev/myvg/mylv /lv1
[root@localhost /]# cd lv1
[root@localhost lv1]# ls
lost+found

可以看到我们的lvm逻辑卷已经挂载成功,下面新建文件测试是否能使用

[root@localhost lv1]# cat >test.txt<<eof
> lvm
> xiexie
> eof
[root@localhost lv1]# cat test.txt 
lvm
xiexie

能够使用!下一步去设置自动挂载

[root@localhost lv1]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu May  4 03:33:31 2017
#
# 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
#
UUID=9eb6c3c2-ea46-4453-9454-e7e95a99640c /                       ext4    defaults        1 1
UUID=ebe3134e-f959-4468-9c6e-19c850dec400 /boot                   ext4    defaults        1 2
UUID=c9e0a4d4-1288-4809-8868-7c0901ff6fae 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
/dev/myvg/mylv    /lv1                           ext4    defaults        0 0
复制粘贴最后一行并且进行编辑,分别更改挂载点,挂载目录,格式!保存并且退出!重启进行测试!
[root@localhost ~]# cd /lv1/
[root@localhost lv1]# ls
lost+found  test.txt
[root@localhost lv1]# cat test.txt 
lvm
xiexie
[root@localhost lv1]# 

挂载点还在!测试成功!谢谢!

还没完呢,重点才开始。
引入lvm的目的是为了能够动态的扩展和缩减分区的容量,同时还能够保证分区内数据的可用性。我们下面就来看一下lvm是如何做到的。
##一、vg中pv的添加和移除
在刚才的案例中我们将/dev/sdb1和/dev/sdb2两个pv加入到了vg:myvg中,然后从myvg中分出了一个5G的lv:mylv。
在这个基础上我们可以向myvg中添加pv或从myvg中移除pv。
先来看看如何将一个pv添加到myvg中:
在添加之前先来扫描下vg的信息,使用vgs命令

[root@localhost dev]# vgs
  VG   #PV #LV #SN Attr    VSize  VFree 
  myvg   2        1     0 wz--n- 10.02g 5.02g

使用vgextend来扩展vg:vgextend myvg /dev/sdb3

[root@localhost ~]# vgextend myvg /dev/sdb3
Volume group "myvg" successfully extended 

再来扫描vg

[root@localhost dev]# vgs
  VG   #PV #LV #SN Attr    VSize  VFree 
  myvg   3       1     0 wz--n- 19.99g 14.99g

可以看到vg扩展成功。
从vg中移除pv,使用vgreduce命令即可

[root@localhost ~]# vgreduce myvg /dev/sdb3
Removed "/dev/sdb3" from volume group "myvg" 

[root@localhost dev]# vgs
  VG   #PV #LV #SN Attr    VSize  VFree 
  myvg   2        1     0 wz--n- 10.02g 5.02g
vg的扩展和移除都不会影响到lv的内容

[root@localhost /]# cat /lv1/test.txt 
lvm
xiexie

非常棒,鼓励一下,接着来。
##二、lv的扩容
lv的扩容是需要修改两个地方的,一个是lv自身的大小,另一个就是挂载目录的大小,下面我们先来给lv的自身空间进行扩容,先查看下现在lv的自身空间

[root@localhost ~]# lvs
  LV       VG   Attr       LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  mylv myvg -wi-ao---- 5.00g

可以看到现在的lv的大小为5个G,现在我们进行扩容
命令:lvextend /dev/myvg/mylv -L +1G

[root@localhost ~]# lvextend /dev/myvg/mylv -L +1G
  Extending logical volume mylv to 6.00 GiB
  Logical volume mylv successfully resized
[root@localhost ~]# lvs
  LV       VG   Attr       LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  mylv myvg -wi-ao---- 6.00g  

可以看到lv的大小变成了6G,在这里要说明一下,扩容lv大小时数字前面的"+“很关键!加”+“和不加”+“有很大的区别,带”+“号表明是在原来的基础上增加多少空间,不带”+“是表明从原来的基础上变到你指定的大小,所以说不加”+“的话你所指定的一定要比原来的基础大,不然命令是不能成功的,下面为大家演示一下不加”+"该怎么去写命令!
命令:lvextend /dev/myvg/mylv -L 8G

[root@localhost ~]# lvextend /dev/myvg/mylv -L 8G
  Extending logical volume mylv to 8.00 GiB
  Logical volume mylv successfully resized
[root@localhost ~]# lvs
  LV       VG   Attr       LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  mylv myvg -wi-ao---- 8.00g  

可以看到lv的大小是从6G变成了8G而不是增加8G,我们再看一下挂载目录的大小更改没有
命令:df -h

[root@localhost ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/sda2               18G  2.5G   15G  15% /
tmpfs                       931M   76K  931M   1% /dev/shm
/dev/sda1               291M   39M  238M  14% /boot
/dev/sr0                   3.6G  3.6G     0 100% /media/RHEL_6.5 x86_64 Disc 1
/dev/mapper/myvg-mylv  5.0G  138M  4.6G   3% /lv1

可以看到挂载目录的大小并没有改变,因为我们需要改变一下lv的文件系统的大小

命令:resize2fs -f /dev/myvg/mylv
[root@localhost ~]# resize2fs -f /dev/myvg/mylv 
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mylv is mounted on /lv1; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/mylv to 2097152 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 2097152 blocks long.

用df -h再次查看

执行resize2fs报错:
[root@backup binlog]# resize2fs /dev/mapper/centos-home
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block 当尝试打开 /dev/mapper/centos-home 时
找不到有效的文件系统超级块.

确认文件系统是xfs:
[root@backup binlog]# cat /etc/fstab | grep centos-home
/dev/mapper/centos-home /home                   xfs     defaults        0 0

xfs用以下命令来扩磁盘空间:
[root@backup binlog]# xfs_growfs /dev/mapper/centos-home
meta-data=/dev/mapper/centos-home isize=256    agcount=6, agsize=118277632 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=709040128, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=231011, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 709040128 to 715331584

[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 18G 2.5G 15G 15% /
tmpfs 931M 76K 931M 1% /dev/shm
/dev/sda1 291M 39M 238M 14% /boot
/dev/sr0 3.6G 3.6G 0 100% /media/RHEL_6.5 x86_64 Disc 1
/dev/mapper/myvg-mylv 7.9G 140M 7.4G 2% /lv1
可以看到lv挂载目录大小已经变成了8G,扩容成功!
扩容成功之后,去/lv1里面看看你的东西还在不?是不是很帅!
[root@localhost /]# cat /lv1/test.txt
lvm
xiexie

##**三、lv的减容**
下面我们来学习lv的减容,lv的减容和加容步骤并不是一样的
首先取消挂载目录
命令:umount /dev/myvg/mylv
 然后进行磁盘检查
命令:e2fsck -f /dev/myvg/mylv

[root@localhost ~]# e2fsck -f /dev/myvg/mylv
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/myvg/mylv: 12/327680 files (0.0% non-contiguous), 55903/1310720 blocks(在这里说明一下如果忘记磁盘检查命令的话可以先进行减小容量!)

接着减小文件系统的容量
命令:resize2fs /dev/myvg/mylv 5G

[root@localhost ~]# resize2fs /dev/myvg/mylv 5G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/mylv to 1310720 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 1310720 blocks long.
然后进行lv的减容
命令:lvreduce -L 5G /dev/myvg/mylv
[root@localhost ~]# lvreduce -L 5G /dev/myvg/mylv
WARNING: Reducing active logical volume to 5.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv? [y/n]: y(这里的问题是提醒你是否进行缩容,因为改变大小可能会引起文件的丢失!!!)
Reducing logical volume mylv to 5.00 GiB
Logical volume mylv successfully resized
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 5.00g

可以看到我们的lv变成了5G,然后进行重新挂载,
命令:mount /dev/myvg/mylv /lv1
挂载完成后查看lv挂载目录大小
命令:df -h

[root@localhost /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 18G 2.5G 15G 15% /
tmpfs 931M 76K 931M 1% /dev/shm
/dev/sda1 291M 39M 238M 14% /boot
/dev/sr0 3.6G 3.6G 0 100% /media/RHEL_6.5 x86_64 Disc 1
/dev/mapper/myvg-mylv 5.0G 138M 4.6G 3% /lv1
可以看到挂载目录也变成了5G,
我们再去看一下挂载目录里面的文件
[root@localhost /]# cat /lv1/test.txt
lvm
xiexie

可以看到文件还在,所以说在缩容的是否一定要看好可用空间不然会对挂载目录里面的文件造成损坏!在缩容的时候要注意!要先取消挂载目录,再进行磁盘检查,然后更改文件的大小,最后在去给lv进行缩容!!!
##**四、pv、vg、lv的移除**

移除pv,vg和lv时删除时,要安装创建的相反的顺序来删除,先删除lv,再移除vg,最后删除pv
1、删除lv
如果lv已经挂载,先使用umount命令卸载,再执行lvremove来删除

[root@localhost /]# lvremove -f /dev/myvg/mylv

Do you really want to remove active logical volume “mylv”? [y/n]: y
Logical volume “lvol0” successfully removed

2、删除vg

[root@localhost /]# vgremove myvg

Volume group “myvg” successfully removed

3、删除pv

[root@localhost /]# pvremove /dev/sdb3
Labels on physical volume “/dev/sdb3” successfully wiped


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值