设为首页收藏本站language 语言切换
查看: 2014|回复: 6
收起左侧

[原创] Linux学习笔记之LVM

[复制链接]
发表于 2021-5-20 10:56:30 | 显示全部楼层 |阅读模式
LVM是 Logical Volume Manager(逻辑卷管理)的简写,是Linux环境下对磁盘分区进行管理的一种机制,LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。在使用
LVM对磁盘进行动态管理以后,我们是以逻辑卷的方式呈现给上层的服务的,完整过程是:磁盘物理分区-物理卷-卷组-逻辑卷-挂载到目录

物理拓展(Physical Extend,PE):逻辑卷管理的最基本单位,PE的默认大小是4M大小  

物理卷(Physical Volume,PV):就是指硬盘分区,也可以是整个硬盘或已创建的软RAID,是LVM的基本存储设备,格式化为物理卷的过程就是磁盘划分为一个个PE。

卷组(Volume Group,VG):是由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个逻辑卷。

逻辑卷(Logical Volume,LV):类似于非LVM系统中的硬盘分区,它建立在卷组之上,是一个标准的块设备,在逻辑卷之上可以建立文件系统




安装LVM
首先确定系统中是否安装了lvm工具:
[root@root@liang ~]# rpm –qa|grep lvm
lvm2-2.02.143-12.el6.x86_64
mesa-private-llvm-3.6.2-1.el6.x86_64
lvm2-libs-2.02.143-12.el6.x86_64
如果命令结果输入类似于上例,那么说明系统已经安装了LVM管理工具;如果命令没有输出则说明没有安装LVM管理工具,则需要从网络下载或者从光盘装LVM rpm工具包。

查看分区情况
[root@root@Liang ~]# fdisk -l
Disk /dev/sda: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 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: 0x000cc014

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26       65271   524082176   8e  Linux LVM

Disk /dev/sdb: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 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

创建PV
[root@root@Liang ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
[root@root@Liang ~]#pvdisplay
--- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_liang
  PV Size               499.80 GiB / not usable 3.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              127949
  Free PE               96717
  Allocated PE          31232
  PV UUID               nOi2m2-03LV-DbEE-G1q3-n4GR-KcX1-cPwzjd

  "/dev/sdb" is a new physical volume of "500.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name
  PV Size               500.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               j4mZH0-aJdE-uQp6-IGOW-gswH-TDdz-EiE9iK

创建VG
[root@root@Liang ~]# vgcreate vgdata /dev/sdb
Volume group "vgdate" successfully created
[root@Liang ~]# vgdisplay
  --- Volume group ---
  VG Name               vgdata
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  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               500.00 GiB
  PE Size               4.00 MiB
  Total PE              127999
  Alloc PE / Size       0 / 0
  Free  PE / Size       127999 / 500.00 GiB
  VG UUID               K1miIA-YG0l-0z1c-jq5Z-o9dK-mIQE-bPPmRz

  --- Volume group ---
  VG Name               vg_liang
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               4
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               499.80 GiB
  PE Size               4.00 MiB
  Total PE              127949
  Alloc PE / Size       31232 / 122.00 GiB
  Free  PE / Size       96717 / 377.80 GiB
  VG UUID               WddBub-6aQl-1bg8-9IKH-Fawt-HWaI-WztWq5

创建完成VG之后,才能从VG中划分一个LV。

创建LV

[root@Liang ~]# lvcreate -l +100%FREE -n /dev/vgdata/lvoradata /dev/vgdata  
  Logical volume "lvoradata" created.
创建一个空闲空间100%大小的lv,名字为 lvoradata
常用实例:


(1)创建一个指定大小的lv,并指定名字为lvoradata

[root@Liang ~]#
lvcreate -L 2G -n lvoradata datavg


(2)创建一个占全部卷组大小的lv,并指定名字为lvoradata(注意前提是vg并没有创建有lv)


[root@Liang ~]# lvcreate -l 100%VG -n lvoradata datavg


(3)创建一个空闲空间80%大小的lv,并指定名字为lvoradata(常用)

[root@Liang ~]#
lvcreate -l 80%Free -n lvoradata datavg

[root@Liang ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/datavg/lvoradata
  LV Name                lvoradata
  VG Name                datavg
  LV UUID                Ykgv0R-Zba2-IrAe-gSzS-IWYn-LCD6-x2SB3o
  LV Write Access        read/write
  LV Creation host, time Liang, 2019-03-18 16:51:56 +0800
  LV Status              available
  # open                 0
  LV Size                500.00 GiB
  Current LE             127999
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:4

  --- Logical volume ---
  LV Path                /dev/vg_liang/vg_home
  LV Name                vg_home
  VG Name                vg_liang
  LV UUID                Qy6Lol-FwjQ-1dXr-97BE-Sdr6-DlZJ-L0ZS3T
  LV Write Access        read/write
  LV Creation host, time Liang, 2019-03-18 07:30:03 +0800
  LV Status              available
  # open                 1
  LV Size                20.00 GiB
  Current LE             5120
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

  --- Logical volume ---
  LV Path                /dev/vg_liang/vg_tmp
  LV Name                vg_tmp
  VG Name                vg_liang
  LV UUID                zzPBF1-oz5n-b6dH-BiXm-wCl5-1KKn-7VsyPe
  LV Write Access        read/write
  LV Creation host, time Liang, 2019-03-18 07:30:09 +0800
  LV Status              available
  # open                 1
  LV Size                20.00 GiB
  Current LE             5120
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:3

  --- Logical volume ---
  LV Path                /dev/vg_liang/vg_SWAP
  LV Name                vg_SWAP
  VG Name                vg_liang
  LV UUID                OFkemh-A1DO-mtkt-855h-Q93u-ipIZ-3JZ0hQ
  LV Write Access        read/write
  LV Creation host, time Liang, 2019-03-18 07:30:15 +0800
  LV Status              available
  # open                 1
  LV Size                32.00 GiB
  Current LE             8192
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/vg_liang/vg_root
  LV Name                vg_root
  VG Name                vg_liang
  LV UUID                eOEIiT-2uIs-cARy-q3Ho-p9Do-krX1-kELC9a
  LV Write Access        read/write
  LV Creation host, time Liang, 2019-03-18 07:30:16 +0800
  LV Status              available
  # open                 1
  LV Size                50.00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

---------------------
LV格式化及挂载
[root@Liang ~]# mkfs -t ext4 /dev/datavg/lvoradata
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
32768000 inodes, 131070976 blocks
6553548 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
4000 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,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information此处直接回车)
done

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

将格式化后的LV分区挂载到指定的目录下,就可以像普通目录一样存储数据了(本例将格式化后的lv挂载到/oradata)
[root@Liang ~]# fdisk -l

Disk /dev/sda: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 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: 0x000cc014

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26       65271   524082176   8e  Linux LVM

Disk /dev/sdb: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 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/mapper/datavg-lvoradata: 536.9 GB, 536866717696 bytes
255 heads, 63 sectors/track, 65270 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

[root@Liang ~]# mount /dev/mapper/datavg-lvoradata /oradata/
[root@Liang ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_liang-vg_root
                       50G  3.6G   44G   8% /
tmpfs                  16G   76K   16G   1% /dev/shm
/dev/sda1             190M   41M  140M  23% /boot
/dev/mapper/vg_liang-vg_home
                       20G   44M   19G   1% /home
/dev/mapper/vg_liang-vg_tmp
                       20G  4.7G   14G  25% /tmp
/dev/sr0              3.7G  3.7G     0 100% /media/CentOS_6.9_Final
/dev/mapper/datavg-lvoradata
                      493G   70M  467G   1% /oradata

挂载之后,可以看到此LV的容量。
如果要在系统启动的时候启动LV,最好是将lvData写入fstable 文件中
打开/etc/fstab,在最后一行添加/dev/mapper/datavg-lvoradata指定需要挂载的分区LV,/oradata指定要挂载的目录(挂载点),ext4分区文件系统格式,其它使用默认即可


LVM动态扩容
1)卷组中有剩余的空间
通过vgdisplay命令可以检查当前卷组空间使用情况:

[root@cfbdb5 oracle]# vgdisplay
--- Volume group ---
VG Name vg_test
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 19.99 GB
PE Size 4.00 MB
Total PE 5118
Alloc PE / Size 2560 / 10.00 GB
Free PE / Size 2558 / 9.99 GB
VG UUID YEYtOr-JpCK-P7MV-FFVo-BgEi-Ooef-IG3hlc
确定当前卷组剩余空间9.99GB,剩余PE数量为2558个。在这里将所有的剩余空间全部增加给逻辑卷 /dev/vg_test/lv_test。
[root@cfbdb5 oracle]# lvextend -l +2558 /dev/vg_test/lv_test     //或者lvextend -L +9.99G /dev/vg_test/lv_test  
Extending logical volume lv_test to 19.99 GB
Logical volume lv_test successfully resized
也可以通过-L直接指定大小,通过 +/- 来 增加/减小 空间。
修改逻辑卷大小后,通过resize2fs来修改文件系统的大小。
[root@cfbdb5 oracle]#resize2fs /dev/vg_test/lv_test
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/vg_test/lv_test is mounted on /opt/oracle; on-line resizing required
Performing an on-line resize of /dev/vg_test/lv_test to 5240832 (4k) blocks.
The filesystem on /dev/vg_test/lv_test is now 5240832 blocks long.
再次查看文件系统的大小:
[root@cfbdb5 oracle]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
16G 4.7G 11G 32% /
/dev/sda1 99M 27M 67M 29% /boot
tmpfs 872M 0 872M 0% /dev/shm
/dev/mapper/vg_test-lv_test
20G 156M 19G 1% /opt/oracle

2)卷组中空间不足
  当卷组中没有足够的空间用于扩展逻辑卷的大小时,就需要增加卷组的容量,而增加卷组容量的惟一办法就是向卷组中添加新的物理卷。
  首先需要对新增加的磁盘进行分区、创建物理卷等工作。),接下来是利用vgextend命令将新的物理卷加入到卷组中, 我们这里使用/dev/sdc1。
[root@cfbdb5 oracle]#vgextend vg_test /dev/sdc1
Volume group "vg_test" successfully extended
[root@cfbdb5 oracle]# vgdisplay
--- Volume group ---
VG Name vg_test
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 8
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 59.98 GB
PE Size 4.00 MB
Total PE 15356
Alloc PE / Size 5118 / 19.99 GB
Free PE / Size 10238 / 39.99 GB
VG UUID YEYtOr-JpCK-P7MV-FFVo-BgEi-Ooef-IG3hlc

完成卷组的扩容后,就可以按照第一种情况的方法完成逻辑卷的扩容,最终实现分区的动态调整。如:
[root@cfbdb5 oracle]# lvextend -L +39G /dev/vg_test/lv_test
[root@cfbdb5 oracle]# resize2fs /dev/vg_test/lv_test                        /**磁盘格式为ext4时,用此命令**/
如果报错:
......
resize2fs: Bad magic number in super-block while trying to open /dev/vg_test/lv_test
Couldn't find valid filesystem superblock.

可以尝试用xfs命令
[root@docker-server ~]# xfs_growfs /dev/vg_test/lv_test        /**centos7开始,磁盘格式为  xfs用此命令**/
卸载删除lv步骤:
     前提:确保数据备份
         1、卸载
             umount 挂载点
         2、移除lv
             lvremove /dev/VG_NAME/LV_NAME
         3、移除vg
             vgremove VG_NAME
         4、移除pv
             pvremove /dev/sda#


PS:重启名 pv  vg lv    pvrename   vgrename    lvrename
 楼主| 发表于 2021-5-20 10:57:52 | 显示全部楼层
LVM.txt (13.89 KB, 下载次数: 5, 售价: 1 个鸿鹄币)
沙发 2021-5-20 10:57:52 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2021-5-20 10:59:27 | 显示全部楼层
了解一下,謝謝分享了
板凳 2021-5-20 10:59:27 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2021-5-22 12:28:21 | 显示全部楼层
感谢楼主分享
地板 2021-5-22 12:28:21 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2021-5-28 20:07:31 | 显示全部楼层
感謝樓主分享
5# 2021-5-28 20:07:31 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-3 20:55 , Processed in 0.086129 second(s), 15 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表