LVM逻辑卷管理和RAID
知识要点
LVM概述
LVM管理命令
LVM应用实例
LVM troubleshooting
Raid概述
LVM概述
Logical Volume Manager,逻辑卷管理
是对磁盘分区进行管理的一种机制
[root@localhost ~]# rpm -qa | grep lvm
lvm2-2.02.143-7.el6.x86_64
mesa-private-llvm-3.6.2-1.el6.x86_64
lvm2-libs-2.02.143-7.el6.x86_64
是一种将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现一种磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性,使用普通的磁盘分区,当一个磁盘的分区空间不够使用的时候,可能就会带来很大的麻烦。使用LVM在一定程度上就可以解决普通磁盘分区带来的问题。
屏蔽了底层磁盘布局,便于动态调整磁盘容量
相对传统分区方式的有下列优点
空间利用率高:硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间
可以在线扩展容量:文件系统建立在逻辑卷上,而逻辑卷可根据需要改变大小(在卷组容量范围内)以满足要求
文件系统建立在LVM上,可以跨分区,方便使用
可随意定义逻辑卷卷标
/boot分区用于存放引导文件,不能应用LVM机制
LVM概述
LVM机制的基本概念
PV(Physical Volume,物理卷)
处于LVM最底层,可以是整个硬盘或使用fdisk等工具建立的普通分区
包括许多默认4MB大小的PE(Physical Extents,基本单元),PE是PV中可以用于分配的最小存储单元
VG(Volume Group,卷组)
是一个或多个物理卷组合而成的整体,是建立在PV之上的。同一VG中所有PV的PE大小应该相同,当VG被创建后,我们才能正常查看PE的数量 。
LV(Logical Volume,逻辑卷)
从卷组中分割出的一块空间,它是建立在VG之上,相当于原来分区的概念。不过大小可以动态改变。其实LV就是由PE组成的,不过在LV里面这些PE叫做LE。
LE(Logical Extents)
LE是LV中可以用于分配的最小存储单元,与PE大小相同并一一对应
LVM管理命令
建立命令的用法
pvcreate 设备名(硬盘,分区)
vgcreate 卷组名 物理卷名1 物理卷名2
lvcreate -L 大小 -n 逻辑卷名 卷组名
LVM应用实例
案例描述:
公司的邮件服务器由于用户数量众多,邮件存储需要大量的空间,考虑到动态扩容的需要,计划增加两块SCSI硬盘并构建LVM逻辑卷,挂载到“/mail”目录专门用于存放邮件数据
推荐步骤:
PV --> VG -->LV --> 格式化,挂载使用文件系统
1. 转化物理卷
使用fdisk命令规划两个分区,类型设置为“8e”
/dev/sdb1、/dev/sdc1
使用pvcreate命令转换上述分区为物理卷
2. 创建卷组
使用vgcreate命令创建卷组mail_store
包括物理卷:/dec/sdb1、/dev/sdc1
3. 创建逻辑卷
使用lvcreate命令创建逻辑卷 mail
从卷组mail_store上划出60GB空间
使用mkfs命令创建ext3文件系统
调整LV大小
为逻辑卷扩容
使用lvextend命令为逻辑卷 mail扩充容量
从卷组 mail_store 上再划出10GB给逻辑卷mail
使用resize2fs命令更新文件系统大小
调整逻辑卷大小命令
lvextend -L +大小 /dev/卷组名/逻辑卷名
lvresize -L +/-大小 /dev/卷组名/逻辑卷名
如果要增大逻辑卷,先用增大逻辑卷,再用resize2fs增大文件系统
可以在线增大逻辑卷
给LV扩容:
增加的空间来自lv所在的VG的空闲空间
lv底层的分区或者硬盘可以跨多个
// 查看分区信息
[root@localhost ~]# fdisk -l
Disk /dev/sda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 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: 0x000922f6
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 281 2048000 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 281 26109 207461376 83 Linux
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 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/sdc: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 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
//新建两个硬盘sdb200G,sdc100G
[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 Jan 4 15:44 /dev/sda
brw-rw----. 1 root disk 8, 1 Jan 4 15:44 /dev/sda1
brw-rw----. 1 root disk 8, 2 Jan 4 15:44 /dev/sda2
brw-rw----. 1 root disk 8, 3 Jan 4 15:44 /dev/sda3
brw-rw----. 1 root disk 8, 16 Jan 4 15:44 /dev/sdb
brw-rw----. 1 root disk 8, 32 Jan 4 15:44 /dev/sdc
//创建PV,两个
[root@localhost ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
[root@localhost ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created
//查看pv
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 ---- 100.00g 100.00g
/dev/sdc lvm2 ---- 200.00g 200.00g
[root@localhost ~]# pvdisplay
"/dev/sdb" is a new physical volume of "100.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 100.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID o7Pak2-w42B-8IQY-7ygP-s710-Z196-a8Dr7z
"/dev/sdc" is a new physical volume of "200.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 200.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID EByPeb-ens6-svgo-STnn-9heG-1ckL-rrkYS5
//创建vg
[root@localhost ~]# vgcreate mail_vg /dev/sdb /dev/sdc
Volume group "mail_vg" successfully created
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name mail_vg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 299.99 GiB
PE Size 4.00 MiB
Total PE 76798
Alloc PE / Size 0 / 0
Free PE / Size 76798 / 299.99 GiB
VG UUID xaJM2J-dWIp-GgSf-caBY-LZrD-HKGQ-xFjM8W
//创建lv
[root@localhost ~]# lvcreate -L 10G -n mail_lv mail_vg
Logical volume "mail_lv" created.
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/mail_vg/mail_lv
LV Name mail_lv
VG Name mail_vg
LV UUID 1gIQDH-REfe-EZ2I-0pYc-lA1B-tdd1-M1mqTY
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2019-01-04 15:51:39 +0800
LV Status available
# open 0
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
[root@localhost ~]# ll /dev/mail_vg/mail_lv
lrwxrwxrwx. 1 root root 7 Jan 4 15:51 /dev/mail_vg/mail_lv -> ../dm-0
[root@localhost ~]# ll /dev/dm*
brw-rw----. 1 root disk 253, 0 Jan 4 15:51 /dev/dm-0
[root@localhost ~]# ll /dev/dm*
brw-rw----. 1 root disk 253, 0 Jan 4 15:51 /dev/dm-0
[root@localhost ~]# ls /dev/mapper/
control mail_vg-mail_lv
[root@localhost ~]# ls /dev/mapper/ -l
total 0
crw-rw----. 1 root root 10, 58 Jan 4 15:44 control
lrwxrwxrwx. 1 root root 7 Jan 4 15:51 mail_vg-mail_lv -> ../dm-0
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mail_lv mail_vg -wi-a----- 10.00g
//格式化
[root@localhost ~]# mkfs.ext4 /dev/mail_vg/mail_lv
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
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 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
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
//创建
[root@localhost ~]# mkdir /mail
//挂载
[root@localhost ~]# mount /dev/mail_vg/mail_lv /mail
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 204074816 2152260 191549488 2% /
tmpfs 953140 0 953140 0% /dev/shm
/dev/sda1 194241 38688 145313 22% /boot
/dev/mapper/mail_vg-mail_lv
10190136 23028 9642820 1% /mail
[root@localhost ~]# df -P
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/sda3 204074816 2152260 191549488 2% /
tmpfs 953140 0 953140 0% /dev/shm
/dev/sda1 194241 38688 145313 22% /boot
/dev/mapper/mail_vg-mail_lv 10190136 23028 9642820 1% /mail
//查看UUID
[root@localhost ~]# blkid /dev/mapper/mail_vg-mail_lv
/dev/mapper/mail_vg-mail_lv: UUID="4c4a8e9b-cb19-47a5-9765-b2412
[root@localhost ~]# vim /etc/fstab
//UUID=4c4a8e9b-cb19-47a5-9765-b2412417df8f /mail ext4 defaults 0 0
[root@localhost ~]# vim /etc/fstab
[root@localhost ~]# mount -a //检查格式是否出错
//扩容
[root@localhost ~]# lvextend -L +20G /dev/mail_vg/mail_lv
Size of logical volume mail_vg/mail_lv changed from 10.00 GiB (2560 extents) to 30.00 GiB (7680 extents).
Logical volume mail_lv successfully resized.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mail_lv mail_vg -wi-ao---- 30.00g
[root@localhost ~]# df -P
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/sda3 204074816 2152276 191549472 2% /
tmpfs 953140 0 953140 0% /dev/shm
/dev/sda1 194241 38688 145313 22% /boot
/dev/mapper/mail_vg-mail_lv 10190136 23028 9642820 1% /mail
[root@localhost ~]# df -Ph
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 195G 2.1G 183G 2% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 190M 38M 142M 22% /boot
/dev/mapper/mail_vg-mail_lv 9.8G 23M 9.2G 1% /mail
[root@localhost ~]# df -PhT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 ext4 195G 2.1G 183G 2% /
tmpfs tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 ext4 190M 38M 142M 22% /boot
/dev/mapper/mail_vg-mail_lv ext4 9.8G 23M 9.2G 1% /mail
[root@localhost ~]# resize2fs
resize2fs 1.41.12 (17-May-2010)
Usage: resize2fs [-d debug_flags] [-f] [-F] [-M] [-P] [-p] device [new_size]
//刷新
[root@localhost ~]# resize2fs /dev/mapper/mail_vg-mail_lv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/mail_vg-mail_lv is mounted on /mail; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/mapper/mail_vg-mail_lv to 7864320 (4k) blocks.
The filesystem on /dev/mapper/mail_vg-mail_lv is now 7864320 blocks long.
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 195G 2.1G 183G 2% /
tmpfs 931M 0 931M 0% /dev/shm
如果要缩小逻辑卷,先用resizefs缩小文件系统再缩小逻辑卷
必须先卸载文件系统
步骤:
1、查看文件系统已用空间
2、卸载文件系统
3、强制检查文件系统,确保文件系统处于一致性状态
4、缩小文件系统 resize2fs
5、缩小lv
6、挂载文件系统
注意:lv和文件系统的大小要一致
调整VG大小
调整卷组大小命令
卷组扩容
vgextend 卷组名 物理卷
卷组收缩
查看卷组包含的PV
命令:pvs
vgreduce 卷组名 物理卷
如果某一块磁盘或者分区故障了如何将数据快速转移到相同卷组的其他空间去?
步骤:
1、通过pvmove命令转移空间数据
2、通过vgreduce命令将坏的磁盘或者分区从卷组里面移除。
3、通过pvremove命令将坏的磁盘或者分区从系统中删除掉。
正确的关闭LVM
千万不要在没有关闭LVM的情况下删除分区
正确关闭LVM的步骤
umount卸载lvm文件系统
清除/etc/fstab中LVM的挂载记录
lvremove删除逻辑卷
vgremove删除卷组
pvremove删除物理卷
fdisk修改分区ID
LVM troubleshooting
pv、vg、lv都正常,但文件系统不正常
模拟故障
备份逻辑卷
dd if=/dev/vg0/lv0 of=lv0.bak
模拟对逻辑卷的破坏操作
dd if=/dev/zero of=/dev/vg0/lv0 bs=512 count=4
检查是否能挂载该分区
报错:mount: you must specify the filesystem type
对逻辑卷进行修复
fsck -yt ext3 /dev/vg0/lv0
再次挂载该分区
RAID概述
RAID廉价冗余磁盘阵列
硬件RAID
速度快,性能好,支持热插拔
需专门的RAID磁盘阵列卡,价格昂贵,还需配合相应的驱动
软件RAID
使用mdadm软件仿真磁盘阵列功能
无需专门硬件,性价比较好
设备文件标识是/dev/md0
根据可靠性、性能和成本对RAID划分了等级
RAID0、RAID1、RAID5、RAID6、RAID10、RAID01
常见RAID等级
RAID0:条带(striping)
硬盘数目>=2
读写性能最快,同时读取,硬盘数目越多,读取速度越快
没有冗余
不允许其中的一块盘有故障
空间利用率100%
RAID1:镜像(mirroring)
硬盘数目=2
存储数据一样
两块硬盘的数据相同,允许一块出现故障
存储到一个,同步到另一个
空间利用率50%
一搬用于安装OS
RAID4:带校验的条带
允许坏掉一块,不允许坏掉两块
空间利用率(4-1)/4=75%
RAID5:条带+分布校验
硬盘数目>=3
读写性能较快
有冗余,有校验
最多允许其中的一块盘有故障
空间利用率(n-1)/n n:硬盘数量
更换新硬盘之后,重新写入,此时速度较慢(恢复+写入)
RAID6:条带+分布校验+分布校验
RAID10:镜像+条带
应用最多
RAID1+0
硬盘数目>=4
每两个组合成镜像组,底层先做RAID1,再做RSID0
同时读写,速度快
空间利用率50%
有冗余
一般用于数据库服务器
RAID01:条带+镜像
RAID等级总结
RAID配置总结
1、配置RAID
2、安装OS
RAID卡有缓存,一般以G为单位(2G)
本章总结
弄清逻辑卷管理中PV、VG、LV的概念
熟悉逻辑卷的扩大和缩小的方法
常用RAID的等级和特点
练习