跟高手学习LINUX笔记-15

第十五章 LVM管理和LVM分区系统损坏如何挂载导数据实战
本节所讲内容:
15.1 LVM的工作原理
15.1.1 LVM的实用性
实战运用场景:对生产用服务器磁盘空间利用率是运维重点关注的问题之一,如果存储数据的分区磁盘空间不够了对生产用服务器影响很大。
处理方式常用有以下两种
没有引入LVM:
1、发布服务器停机通知-->停用服务-->关机增加硬盘-->分区格式化挂载-->将数据拷到新的位置-->修改相关的配置文件-->启动服务恢复业务-->发布业务恢复通知
引入LVM:
2、发布服务器停机通知-->停用服务-->关机增加硬盘-->分区LVM在线动态扩容->启动服务恢复业务-->发布业务恢复通知
从上面的可以看到不同的影响如下:
1)最大也是浪费时间最多的是拷贝数据及修改配置文件,在现阶段动辄T级别的数据,这个时间会很长的
2)对于大型软件配置文件关联性很强,一个地方修改不好也是个很麻烦的事情
15.1.2 LVM的工作原理
LVM是在物理工作层与系统工作层中间加入了一个逻辑管理层,所以再对物理磁盘操作的时候不再单纯使用操作系统的分区格式化,而是引入了叫逻辑卷的管理
15.1.3 LVM的相关定义
物理存储介质:也就是我们常用的物理磁盘,但分区时设置让LVM能识别的格式--选择t-->8e
物理卷PV:物理卷就是LVM的基本存储逻辑块,可以想像成一袋袋面粉
卷组VG: 1个或多个物理卷组合而成,可以想像成一个个由面粉和成的面团
逻辑卷LV:LV是从VG管理分配出来的,可以在LV之上建立1文件系统进而格式化挂载使用,可以想像成一个个可口的大馒头
PE:组成逻辑卷的最小单位,默认:4M
最小存储单位总结:
名称 最小存储单位
硬盘 扇区(512字节)
文件系统 block(多用4K)
raid chunk (512K)
LVM PE (默认4M) 可以在建立VG时修改
如:# vgcreate -s 4M vg1 /dev/sdb1
注:在考RHCSA中有与此相关的内容
1个或多个磁盘/分区/raid-->1个或多个物理卷PV-->合成卷组VG-->从VG划出空间生成逻辑卷LV-->格式化LV挂载使用
15.2 创建LVM的基本步骤
1) 物理磁盘被格式化为PV,(空间被划分为一个个的PE) #PV包含PE
2) 不同的PV加入到同一个VG中,(不同PV的PE全部进入到了VG的PE池内) #VG包含PV
3) 在VG中创建LV逻辑卷,基于PE创建,(组成LV的PE可能来自不同的物理磁盘) #LV基于PE创建
4) LV直接可以格式化后挂载使用 #格式化挂载使用
5) LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

15.2.1 lvm常用的命令
功能 PV管理命令 VG管理命令 LV管理命令
scan 扫描 pvscan vgscan lvscan
create 创建 pvcreate vgcreate lvcreate
display 显示 pvdisplay vgdisplay lvdisplay
remove 移除 pvremove vgremove lvremove
extend 扩展 vgextend lvextend
reduce 减少 vgreduce lvreduce
下面的操作会用的一些查看命令:
查看卷名 简单对应卷信息的查看 扫描相关的所有的对应卷 详细对应卷信息的查看
物理卷 pvs pvscan pvdisplay
卷组 vgs vgscan vgdisplay
逻辑卷 lvs lvscan lvdisplay

操作步骤:
在虚拟机添加块硬盘
1)[root@node-1 ~]# fdisk /dev/sdb

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xc16527da

Device Boot Start End Blocks Id System

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519):
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): w
这样就可以创建一个用来LVM用的分区了
[root@node-1 ~]# partprobe /dev/sdb

2)创建PV
[root@node-1 ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@node-1 ~]# pvdisplay

"/dev/sdb1" is a new physical volume of "<10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size <10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID O0zkg0-OEmV-fF1d-V7oy-GZsr-YXW7-qK8Dee

3)创建VG设置PE为16M
[root@node-1 ~]# vgcreate -s 16M vg01 /dev/sdb1
Volume group "vg01" successfully created
[root@node-1 ~]# vgscan | grep vg01
Reading volume groups from cache.
Found volume group "vg01" using metadata type lvm2
4)创建一个大小为2G的LV
命令:
lvcreate
-n 逻辑卷名称
-L 具体大小
-l 多少个PE
[root@node-1 ~]# lvcreate -n lv01 -L 2048M vg01
Logical volume "lv01" created.
[root@node-1 ~]# lvscan | grep lv01
ACTIVE '/dev/vg01/lv01' [2.00 GiB] inherit
[root@node-1 ~]# lvcreate -n lv02 -l 100 vg01 --这里是16M100=1600M
Logical volume "lv01" created.
[root@node-1 ~]# lvscan | grep lv02
ACTIVE '/dev/vg01/lv02' [1.56 GiB] inherit
LV进行扩容(重点四星)
扩容:将LV01扩容为5G
格式化后挂载
[root@node-1 ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@node-1 ~]# mount /dev/vg01/lv01 /www
[root@node-1 ~]# cp /etc/passwd /etc/hosts
/www
[root@node-1 ~]# ll /www
total 16
-rw-r--r-- 1 root root 158 Mar 4 14:43 hosts
-rw-r--r-- 1 root root 370 Mar 4 14:43 hosts.allow
-rw-r--r-- 1 root root 460 Mar 4 14:43 hosts.deny
-rw-r--r-- 1 root root 1076 Mar 4 14:43 passwd
[root@node-1 ~]# lvextend -L +3G /dev/vg01/lv01
Size of logical volume vg01/lv01 changed from 2.00 GiB (128 extents) to 5.00 GiB (320 extents).
Logical volume vg01/lv01 successfully resized.
[root@node-1 ~]# df -hT | grep www
/dev/mapper/vg01-lv01 xfs 2.0G 33M 2.0G 2% /www
如果文件格式为EXT4则需要用: [root@node-1 ~]# resize2fs /dev/vg01/lv01
如果文件格式为XFS则需要用: [root@node-1 ~]# xfs_growfs /dev/vg01/lv01
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 524288 to 1310720
[root@node-1 ~]# df -hT | grep www
/dev/mapper/vg01-lv01 xfs 5.0G 33M 5.0G 1% /www
【增加容量成功】
15.2.2 LVM删除
删除LVM流程:
1)umount卸载 ->
[root@node-1 ~]# umount /www

2)lvremove lv移出卷组中所有逻辑卷->
[root@node-1 ~]# lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
Logical volume "lv01" successfully removed
[root@node-1 ~]# lvremove /dev/vg01/lv02
Do you really want to remove active logical volume vg01/lv02? [y/n]: y
Logical volume "lv02" successfully removed
3)vgremove vg移出卷组->
[root@node-1 ~]# vgremove /dev/vg01
Volume group "vg01" successfully removed
4)pvremove 移出pv
[root@node-1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.51g 40.00m
/dev/sdb1 vg01 lvm2 a-- 9.98g 3.42g
[root@node-1 ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
[root@node-1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.51g 40.00m

15.3 实战-LVM分区系统损坏如何挂载导数据实战
客户的一台centos7.6的A服务器系统文件有问题,但客户要导出/home/下安装oracle的数据库文件,现场有一台centos7.4的B服务器,两台服务器都
是用默认分区,这也给后序的工作带来了梦魇
客户的操作步骤:
1)将A服务器上硬盘挂从盘到B服务器上
2)由于两者分区一样且都采用了LVM分区,所以在挂载第二块硬盘逻辑卷的时候一直报错
接到客户的电话,仔细分析相关的情况,感觉可能是VG名称冲突引起的问题
到现场后处理过程如下:
(1)先查看相关的信息
[root@web~]# fdisk -l //下面会看到所有硬盘的情况,sda是B服务器自己的硬盘,sdb则是挂载上去的硬盘
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000c4715

Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 121602 976248832 8e Linux LVM
.......

Disk /dev/sdb: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 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: 0x000ec679

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sdb2 64 14594 116707328 8e Linux LVM
........
[root@web~]# vgscan 扫描卷组
[root@web~]# vgscan
Reading all physical volumes. This may take a while...
WARNING: Duplicate VG name VolGroup: Existing FKsJuO-7348-hHqs-MKVq-WLMl-2Sbh-0oh8NZ (created here) takes precedence over JTFVF9-ULu5-cHKu-T1p3-4HnB-Tk2p-BpjwHX
WARNING: Duplicate VG name VolGroup: Existing FKsJuO-7348-hHqs-MKVq-WLMl-2Sbh-0oh8NZ (created here) takes precedence over JTFVF9-ULu5-cHKu-T1p3-4HnB-Tk2p-BpjwHX
Found volume group "VolGroup" using metadata type lvm2
Found volume group "VolGroup" using metadata type lvm2

从上面出现警告,卷组名称冲突
[root@localhost ~]#vgdisplay //显示出多有卷组信息
WARNING: Duplicate VG name VolGroup: Existing FKsJuO-7348-hHqs-MKVq-WLMl-2Sbh-0oh8NZ (created here) takes precedence over JTFVF9-ULu5-cHKu-T1p3-4HnB-Tk2p-BpjwHX
WARNING: Duplicate VG name VolGroup: Existing FKsJuO-7348-hHqs-MKVq-WLMl-2Sbh-0oh8NZ (created here) takes precedence over JTFVF9-ULu5-cHKu-T1p3-4HnB-Tk2p-BpjwHX
WARNING: Duplicate VG name VolGroup: Existing JTFVF9-ULu5-cHKu-T1p3-4HnB-Tk2p-BpjwHX (created here) takes precedence over FKsJuO-7348-hHqs-MKVq-WLMl-2Sbh-0oh8NZ
--- Volume group ---
VG Name VolGroup
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 111.30 GiB
PE Size 4.00 MiB
Total PE 28492
Alloc PE / Size 28492 / 111.30 GiB
Free PE / Size 0 / 0
VG UUID JTFVF9-ULu5-cHKu-T1p3-4HnB-Tk2p-BpjwHX

WARNING: Duplicate VG name VolGroup: Existing FKsJuO-7348-hHqs-MKVq-WLMl-2Sbh-0oh8NZ (created here) takes precedence over JTFVF9-ULu5-cHKu-T1p3-4HnB-Tk2p-BpjwHX
--- Volume group ---
VG Name VolGroup
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 931.02 GiB
PE Size 4.00 MiB
Total PE 238341
Alloc PE / Size 238341 / 931.02 GiB
Free PE / Size 0 / 0
VG UUID FKsJuO-7348-hHqs-MKVq-WLMl-2Sbh-0oh8NZ
[root@web~]# vgrename JTFVF9-ULu5-cHKu-T1p3-4HnB-Tk2p-BpjwHX vg01 --修改卷组名称(操作重点)
WARNING: Duplicate VG name VolGroup: Existing FKsJuO-7348-hHqs-MKVq-WLMl-2Sbh-0oh8NZ (created here) takes precedence over JTFVF9-ULu5-cHKu-T1p3-4HnB-Tk2p-BpjwHX
WARNING: Duplicate VG name VolGroup: Existing FKsJuO-7348-hHqs-MKVq-WLMl-2Sbh-0oh8NZ (created here) takes precedence over JTFVF9-ULu5-cHKu-T1p3-4HnB-Tk2p-BpjwHX
WARNING: Duplicate VG name VolGroup: Existing JTFVF9-ULu5-cHKu-T1p3-4HnB-Tk2p-BpjwHX (created here) takes precedence over FKsJuO-7348-hHqs-MKVq-WLMl-2Sbh-0oh8NZ
Volume group "VolGroup" successfully renamed to "vg01"
[root@web~]# vgdisplay //可以看到已经有一个改名为vg01,这样就没有卷组名字冲突
[root@web~]# vgchange -ay /dev/vg01 //激此卷组
3 logical volume(s) in volume group "vg01" now active
[root@web~]# mkdir /mnt/hdb //新建一个文件夹用来作为挂载点
[root@web~]# mount /dev/vg01/逻辑卷名(比如LogVol00) /mnt/hdb //挂载vg01/LogVol00
使用完以后要卸载

猜你喜欢

转载自blog.51cto.com/450955/2475480