- 积分
- 170
- 鸿鹄币
- 个
- 好评度
- 点
- 精华
- 注册时间
- 2016-11-12
- 最后登录
- 1970-1-1
- 阅读权限
- 20
- 听众
- 收听
助理工程师
|
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 |
|