第一章.概述
一.逻辑卷的作用
磁盘一经分区之后,再想改变磁盘中这个分区的大小就很难了。假如当这个磁盘的空间不够用了,是没有办法扩大这个分区的。所以使用逻辑卷。
注意:xfs 格式的文件系统删除逻辑卷会导致系统崩溃!!!
二.LVM原理
要想理解好LVM的原理,我们必须首先要掌握4个基本的逻辑卷概念。 物理拓展 (PE) : 实体延伸区块 物理卷(pv): 物理磁盘分区。在进行逻辑卷使用时要将ID改为8e 物理卷组(vg): 物理卷的集合 逻辑卷(lv): 取自物理卷组
三. 常用的LVM部署命令
功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce |
四. 安装lvm
yum install -y lvm*
第二章.实战
一.简介
添加两块新硬盘设备 在虚拟机中添加两块新硬盘设备的目的,是为了更好地演示LVM理念中用户无需关心底层物理硬盘设备的特性。我们先对这两块新硬盘进行创建物理卷的操作,可以将该操作简单理解成让硬盘设备支持LVM技术,或者理解成是把硬盘设备加入到LVM技术可用的硬件资源池中,然后对这两块硬盘进行卷组合并,卷组的名称可以由用户来自定义。接下来,根据需求把合并后的卷组切割出一个约为150MB的逻辑卷设备,最后把这个逻辑卷设备格式化成xfs文件系统后挂载使用。
二.添加硬盘后不重启识别硬盘
查看硬盘发现没有识别
[root@web01_123 ~]# lsblk
sdb 8:16 0 20G 0 disk
sdc 8:32 0 2G 0 disk
sr0 11:0 1 1024M 0 rom
查看主机总线号
[root@web01_123 ~]# ls /sys/class/scsi_host/
host0 host1 host2
重新扫描SCST总线来添加设备
[root@web01_123 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
[root@web01_123 ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
[root@web01_123 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
查看硬盘发现已经识别
[root@web01_123 ~]# lsblk
sdb 8:16 0 20G 0 disk
sdc 8:32 0 2G 0 disk
sdd 8:48 0 3G 0 disk
sde 8:64 0 3G 0 disk
三. 新加硬盘全部操作
对磁盘进行分区
[root@web01_123 ~]# fdisk /dev/sdd
m可以查看帮助信息
p是打印当前分区
n是创建分区
t是更改分区类型
w是保存退出
Command (m for help): n #创建分区下面全部默认一路回车
Command (m for help): t #修改ID为8e
Hex code (type L to list all codes): 8e #LVM类型为8e
Changed type of partition 'Empty' to 'Linux LVM'
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdd1 2048 6291455 3144704 8e Linux LVM
Command (m for help): w #保存并退出
创建物理卷
[root@web01_123 ~]# pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created.
查看物理卷
[root@web01_123 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 VolGroup lvm2 a-- <199.00g <153.00g
/dev/sdd1 lvm2 --- <3.00g <3.00g
创建卷组
[root@web01_123 ~]# vgcreate VolGroup1 /dev/sdd1
Volume group "VolGroup1" successfully created
查看卷组
[root@web01_123 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup 1 2 0 wz--n- <199.00g <153.00g
VolGroup1 1 0 0 wz--n- <3.00g <3.00g
创建逻辑卷名字为lv_data使用的卷组为VolGroup1容量为1G
[root@web01_123 ~]# lvcreate -L 1G -n lv_data VolGroup1
Logical volume "lv_data" created.
查看逻辑卷
[root@web01_123 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_data VolGroup1 -wi-a----- 1.00g
lv_root VolGroup -wi-ao---- 30.00g
lv_swap VolGroup -wi-ao---- 16.00g
格式化分区成ext4 #当你想修改文件系统的类型时可以用这种方式比如想改成xfs(centos7 默认)可以用mkfs.xfs
[root@web01_123 ~]# mkfs.ext4 /dev/VolGroup1/lv_data
创建挂载目录
[root@web01_123 ~]# mkdir /data
将逻辑卷挂载到目录
[root@web01_123 ~]# mount /dev/VolGroup/lv_data /data/
查看已挂载成功
[root@web01_123 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_data 976M 2.6M 907M 1% /data
永久挂载
[root@web01_123 data]# vim /etc/fstab
#Lvm地址 #挂载目录 #文件系统类型 df –Th 可以查看注意写错了机器起不来
/dev/mapper/VolGroup-lv_data /data ext4 defaults 0 0
检查 fstab 配置是否正确
mount -a
第三章.逻辑卷常用操作
一.再有空间的情况下扩容逻辑卷
查看/data剩余空间
[root@web01_123 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_data 3.0G 4.0M 2.8G 1% /data
查看卷组剩余空间
[root@web01_123 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup 1 3 0 wz--n- <199.00g <150.00g
给/data扩容1G空间
[root@web01_123 ~]# lvextend -L +1G /dev/VolGroup/lv_data
刷新扩容的逻辑卷
[root@web01_123 ~]# resize2fs /dev/VolGroup/lv_data 注: ext的文件系统用resize2fs 刷新 xfs用xfs_growfsm
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/VolGroup/lv_data is mounted on /data; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/VolGroup/lv_data is now 1048576 blocks long.
查看已扩容成功
[root@web01_123 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_data 4.0G 4.0M 3.8G 1% /data
二. 加硬盘后将空间扩容到原来的卷组
查看新加硬盘
[root@web01_123 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb
给硬盘分区
[root@web01_123 ~]# fdisk /dev/sdb
Command (m for help): n #直接输入n 一路回车
Command (m for help): w #输入w 保存并退出
[root@web01_123 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb
└─sdb1
创建物理卷
[root@web01_123 ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
查看物理卷
[root@web01_123 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 VolGroup lvm2 a-- <199.00g <149.00g
/dev/sdb1 lvm2 --- <20.00g <20.00g
/dev/sdd1 VolGroup1 lvm2 a-- <3.00g 1020.00m
扩容到VolGroup1卷组中去
[root@web01_123 ~]# vgextend VolGroup1 /dev/sdb1
Volume group "VolGroup1" successfully extended
查看卷组容量
[root@web01_123 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup1 2 1 0 wz--n- 22.99g 20.99g
三. 删除一个逻辑卷并将空间添加到另一个逻辑卷中
==注:卸载时显示目标忙,请谨慎操作可能正在使用中,如需停止可用fuser命令找出进程号kill掉==
安装fuser
Yum install –y psmisc
查看占用进程
fuser –mv /data
干掉进程
Kill -9 进程号
查看分区挂载
[root@web01_123 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
└─VolGroup-lv_data 253:3 0 3G 0 lvm /data
卸载/data
[root@web01_123 ~]# umount /data/
查看剩余空间
[root@web01_123 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup 1 3 0 wz--n- <199.00g <150.00g
删除逻辑卷
[root@web01_123 ~]# lvremove /dev/VolGroup/lv_data
Do you really want to remove active logical volume VolGroup/lv_data? [y/n]: y
Logical volume "lv_data" successfully removed
查看剩余空间
[root@web01_123 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup 1 2 0 wz--n- <199.00g <153.00g
四. 用parted进行分区
用fdisk只能分2T以下的空间,随着技术的发展磁盘的空间越来越大,fdisk已经不能满足更多的业务场景,这里我们引进了parted工具进行分区。
查看新加磁盘
[root@web01_123 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sde 8:64 0 3G 0 disk
进行分区
[root@web01_123 ~]# parted /dev/sde
(parted) print #查看磁盘信息
Error: /dev/sde: unrecognised disk label
Model: VMware Virtual disk (scsi)
Disk /dev/sde: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted) mklabel #选择分区表的方式
New disk label type? gpt #我们要分区2TB的磁盘,这里选择gpt (parted) print #查看分区表是否更改为gpt
Model: VMware Virtual disk (scsi)
Disk /dev/sde: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt #显示分区表已更改
(parted) mkpart #创建分区
Partition name? []? sde1 #填写新分区名字
File system type? [ext2]? xfs #文件系统的类型我们用的centos7选择xfs
Start? 0 #分区的起始位置
注:#这里很重要:如果我们要创建多个分区 第一个分区从零开始,创建第二个分区时就要从第一个分区的结束位置开始
简单来说,创建第一个分区为10GB 起始位置填0,结束位置则为10GB,创建第二个分区大小为15GB 起始位置要填10GB,结束位置填25GB,相当于在原来的基础上加15GB。
End? 3GB #结束位置
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i #忽略
(parted) print #查看分区
Model: VMware Virtual disk (scsi)
Disk /dev/sde: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 3221MB 3221MB sde1
(parted) q #退出
Information: You may need to update /etc/fstab.
给磁盘分完区还是按照以前的步骤先格式化磁盘,在创建物理见(pv),然后创建卷组或者加入原来的卷组。
- 删除parted分区的方法
以下是删除分区的方法
(parted)rm 1 #rm后面使用分区的号码,就是用print命令打印出来的Number编号
(parted) print
Model: VBOX HARDDISK (ide)
Disk /dev/hdd: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
五. 直接用一个磁盘做pv
#直接用新加的盘做成一个pv
[root@localhost ~]# pvcreate /dev/sdb
#后期扩容如果加在一个磁盘上可以通过pvresize 命令将新加盘动态调整为现有的磁盘分区的大小
pvresize /dev/sdb