第一章.概述
一.逻辑卷的作用
磁盘一经分区之后,再想改变磁盘中这个分区的大小就很难了。假如当这个磁盘的空间不够用了,是没有办法扩大这个分区的。所以使用逻辑卷。
注意: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