lvm
lvm优缺点
优点
比起传统的硬盘分区管理方式,LVM更富于灵活性:
1.将多块硬盘看作一块大硬盘
2.使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区。
3.可以创建小的逻辑卷(LV),在空间不足时再动态调整它的大小。
4.在调整逻辑卷(LV)大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间。
5.可以在线(online)对逻辑卷(LV)和卷组(VG)进行创建、删除、调整大小等操作。不过LVM上的文件系统也需要重新调整大小,好在某些文件系统(例如ext4)也支持在线操作。
6.无需重新启动服务,就可以将服务中用到的逻辑卷(LV)在线(online)/动态(live)迁移至别的硬盘上。
7.允许创建快照,可以保存文件系统的备份,同时使服务的下线时间(downtime)降低到最小。
8.支持各种设备映射目标(device-mapper targets),包括透明文件系统加密和缓存常用数据(caching of frequently used data)。这将允许你创建一个包含一个或多个磁盘、并用LUKS加密的系统,使用LVM on top 可轻松地管理和调整这些独立的加密卷 (例如. /, /home, /backup等) 并免去开机时多次输入密钥的麻烦。
缺点
1.在系统设置时需要更复杂的额外步骤。
2.Windows系统并不支持LVM,若使用双系统,你将无法在Windows上访问LVM分区。
图解lvm工作流程
流程解释
普通磁盘
↓
格式化文件系统、block=4KB ,有N个block
↓
挂载分区使用
lvm磁盘
↓
磁盘、格式化为PV(磁盘的容量被分为N个PE) ,PE默认单位是4MB,等于1024个block
↓
PV加入卷组VG(动态伸缩的大磁盘)
↓
创建逻辑卷LV(等于创建了分区)
↓
格式化文件系统xfs (sdb sdc sdd),逻辑卷
↓
挂载使用
lvm常用命令
pv命令
前提是需要安装lvm命令
yum install lvm2 -y
安装该工具后,方可使用lvm的命令
创建pv
pvcreate /dev/sdb /dev/sdc
Device /dev/sdb excluded by a filter.
Physical volume "/dev/sdc" successfully created.
查看pv
pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 20.00g 20.00g
/dev/sdc lvm2 --- 20.00g 20.00g
pvscan
PV /dev/sdb lvm2 [20.00 GiB]
PV /dev/sdc lvm2 [20.00 GiB]
Total: 2 [40.00 GiB] / in use: 0 [0 ] / in no VG: 2 [40.00 GiB]
pvdisplay
"/dev/sdb" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 2TNNkN-nrwY-4B1o-Riz9-JeXV-ec75-vdSU35
"/dev/sdc" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 8XqTIn-1KNA-dFcS-0rYj-XnBx-Z7Dr-AQfLN6
删除pv
pvremove /dev/sdb /dev/sdc
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.
vg命令
第一件事 pv化
pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
创建(加入)卷组
vgcreate vg-02241 /dev/sdb /dev/sdc
Volume group "vg-0224" successfully created
查看卷组
vgs
VG #PV #LV #SN Attr VSize VFree
vg-02241 2 0 0 wz--n- 39.99g 39.99g
vgscan
Reading volume groups from cache.
Found volume group "vg-02241" using metadata type lvm2
vgdisplay
--- Volume group ---
VG Name vg-02241
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 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 0 / 0
Free PE / Size 10238 / 39.99 GiB
VG UUID 5q13EV-p02d-m2iM-FrLS-s6kN-StJo-St0eJ0
扩容
vgextend vg1-0224 /dev/sdd
Volume group "vg1-0224" successfully extended
删除vg
vgremove vg-0224
Volume group "vg-0224" successfully removed
lv命令
创建lv
lvcreate
-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节
-l 指定逻辑卷的大小(PE个数)
-n 后面跟逻辑卷名
-s 创建快照
创建lv,设定为卷组容量的一半
lvcreate -n 0224lv1 -l 50%VG vg-02241
Logical volume "0224lv1" created.
指定逻辑卷大小
lvcreate -n lv1-0224 -L 10G vg-02241
Logical volume "lv1-0224" created.
查看逻辑卷信息
lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
0224lv1 vg-02241 -wi-a----- <20.00g
lv1-0224 vg-02241 -wi-a----- 10.00g
扩容
给lv2增加10G
lvextend -L +10G /dev/vg1-0224/lv2
调整到25G大小
lvextend -L 25G /dev/vg1-0224/lv2
虽然你调整了 lv2逻辑卷的大小,但是文件系统它不知道,你得告诉文件系统,也跟着调整分区的容量,以及重新设置block的数量
ext4文件系统,使用resize2fs命令
xfs文件系统,使用xfs_growfs调整大小
删除逻辑卷
lvremove /dev/vg-02241/lv1-0224
Do you really want to remove active logical volume vg-02241/lv1-0224? [y/n]: Y
Logical volume "lv1-0224" successfully removed
lvm创建实战
1.安装lvm
yum install lvm2 -y
2.查看pv
pvs
3.创建pv
pvcreate /dev/sdb /dev/sdc
4.查看创建后的pv
pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb lvm2 --- 40.00g 40.00g
/dev/sdc lvm2 --- 20.00g 20.00g
5.查看vg
vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
6.创建vg sdb sdc创建为卷组,名字是 vg1-0224
注意语法
vgcreate vg1-0224 /dev/sdb /dev/sdc
Volume group "vg1-0224" successfully created
7.查看创建后的vg
vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1-0224 2 0 0 wz--n- 59.99g 59.99g
8.查看lv
lvs
9.创建lv(创建分区)
一个lv1 20G
lv2 15G
lvcreate -n lv1 -L 20G vg1-0224
Logical volume "lv1" created.
lvcreate -n lv2 -L 10G vg1-0224
Logical volume "lv2" created.
lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
lv1 vg1-0224 -wi-a----- 20.00g
lv2 vg1-0224 -wi-a----- 10.00g
ls /dev/vg1-0224/
lv1 lv2
10.查看磁盘设备信息
通过如下命令,查看lvm设备的信息
blkid |grep 'sd[bc]'
/dev/sdb: UUID="O5ueJC-Tbd2-qab2-kx6U-Z2dD-y4od-tjosy3" TYPE="LVM2_member"
/dev/sdc: UUID="uygL2d-owAr-NCoC-j6Ml-dHrT-QbSh-DjABxZ" TYPE="LVM2_member"
查看/dev/卷组/
ls /dev/vg1-0224/
11.给lv格式化文件系统
lv1 20G ---xfs
lv2 15G ----ext4
mkfs.xfs /dev/vg1-0224/lv1
mkfs.ext4 /dev/vg1-0224/lv2
12.挂载lv
mount 设备名 挂载点
mount /dev/vg1-0224/lv1 /t1
mount /dev/vg1-0224/lv2 /t2
13.查看挂载
mount -l |grep t1
/dev/mapper/vg1--0224-lv1 on /t1 type xfs (rw,relatime,attr2,inode64,noquota)
mount -l |grep t2
/dev/mapper/vg1--0224-lv2 on /t2 type ext4 (rw,relatime,data=ordered)
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.5G 16G 9% /
devtmpfs 899M 0 899M 0% /dev
tmpfs 911M 0 911M 0% /dev/shm
tmpfs 911M 9.6M 902M 2% /run
tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 1014M 142M 873M 14% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/mapper/vg1--0224-lv1 20G 33M 20G 1% /t1
/dev/mapper/vg1--0224-lv2 9.8G 37M 9.2G 1% /t2
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 40G 0 disk
├─vg1--0224-lv1 253:2 0 20G 0 lvm /t1
└─vg1--0224-lv2 253:3 0 10G 0 lvm /t2
sdc 8:32 0 20G 0 disk
sr0 11:0 1 4.2G 0 rom
14.开机自动挂载
一定切记,如果你的设备发生了变化,一定要去修改/etc/fstab
否则系统开机,读取该fstab文件,找不到设备,无法正确挂载就会报错
进入紧急模式,直到你再次修复fstab文件
重启即可
把t1 t2设置为开机自动挂载
tail -2 /etc/fstab
UUID="04fda700-511c-43d4-ae9a-d87d72ee7175" /t1 xfs defaults 0 0
/dev/mapper/vg1--0224-lv2 /t2 ext4 defaults 0 0
lvm扩容
先查看当前机器的lv情况,确定你要扩容的设备
df -h |grep t2
/dev/mapper/vg1--0224-lv2 9.8G 37M 9.2G 1% /t2
扩容到20G需求
1. 你的卷组,容量还够不够
2. 卷组容量不够,加新硬盘,再次pv化,加入卷组就好了
方案1,卷组容量够
1.确认vg够不够
vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1-0224 2 2 0 wz--n- 59.99g 29.99g
2.确认够用,直接lvextend扩容lv逻辑卷即可
给lv2增加10G
lvextend -L +10G /dev/vg1-0224/lv2
Size of logical volume vg1-0224/lv2 changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).
Logical volume vg1-0224/lv2 successfully resized.
lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
lv1 vg1-0224 -wi-ao---- 20.00g
lv2 vg1-0224 -wi-ao---- 20.00g
用法2,直接,调整到25G大小
lvextend -L 25G /dev/vg1-0224/lv2
Size of logical volume vg1-0224/lv2 changed from 20.00 GiB (5120 extents) to 25.00 GiB (6400 extents).
Logical volume vg1-0224/lv2 successfully resized.
lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
lv1 vg1-0224 -wi-ao---- 20.00g
lv2 vg1-0224 -wi-ao---- 25.00g
3.虽然你调整了 lv2逻辑卷的大小,但是文件系统它不知道,你得告诉文件系统,也跟着调整分区的容量,以及重新设置block的数量
ext4文件系统,使用resize2fs命令
xfs文件系统,使用xfs_growfs调整大小
4.调整lv ext4文件系统的大小
resize2fs /dev/mapper/vg1--0224-lv2
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg1--0224-lv2 is mounted on /t2; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 4
The filesystem on /dev/mapper/vg1--0224-lv2 is now 6553600 blocks long.
df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 17G 1.6G 16G 9% /
devtmpfs devtmpfs 899M 0 899M 0% /dev
tmpfs tmpfs 911M 0 911M 0% /dev/shm
tmpfs tmpfs 911M 9.6M 902M 2% /run
tmpfs tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 142M 873M 14% /boot
/dev/mapper/vg1--0224-lv1 xfs 20G 33M 20G 1% /t1
/dev/mapper/vg1--0224-lv2 ext4 25G 44M 24G 1% /t2
tmpfs tmpfs 183M 0 183M 0% /run/user/0
5.调整lv1的文件系统,调整到50G
看看卷组还剩下多少,不够用了,就得扩大卷组了
vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1-0224 2 2 0 wz--n- 59.99g 14.99g
情况2,卷组容量不够了
1.创建新物理卷,pv
步骤
关机、添加硬盘,开机
添加一个50G硬盘
ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc /dev/sdd
给硬盘pv化
pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created.
2.查看pv
pvs
3.查看vg
vgs
pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb vg1-0224 lvm2 a-- <40.00g 0
/dev/sdc vg1-0224 lvm2 a-- <20.00g 14.99g
/dev/sdd lvm2 --- 50.00g 50.00g
vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1-0224 2 2 0 wz--n- 59.99g 14.99g
4.vg扩容
vgextend vg1-0224 /dev/sdd
Volume group "vg1-0224" successfully extended
vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1-0224 3 2 0 wz--n- <109.99g <64.99g
5.再次查看vg
vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1-0224 3 2 0 wz--n- <109.99g <64.99g
6.扩容lv
lvextend -L 50G /dev/vg1-0224/lv1
Size of logical volume vg1-0224/lv1 changed from 20.00 GiB (5120 extents) to 50.00 GiB (12800 extents).
Logical volume vg1-0224/lv1 successfully resized.
7.再次查看lv
lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
lv1 vg1-0224 -wi-ao---- 50.00g
lv2 vg1-0224 -wi-ao---- 25.00g
8.调整xfs文件系统
xfs_growfs /t1
meta-data=/dev/mapper/vg1--0224-lv1 isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=5242880, 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 5242880 to 13107200
9.查看磁盘挂载容量情况
df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 17G 1.6G 16G 9% /
devtmpfs devtmpfs 899M 0 899M 0% /dev
tmpfs tmpfs 911M 0 911M 0% /dev/shm
tmpfs tmpfs 911M 9.6M 902M 2% /run
tmpfs tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 142M 873M 14% /boot
/dev/mapper/vg1--0224-lv1 xfs 50G 33M 50G 1% /t1
/dev/mapper/vg1--0224-lv2 ext4 25G 44M 24G 1% /t2
tmpfs tmpfs 183M 0 183M 0% /run/user/0
删除lvm
1./etc/fstab,清除开机自动挂载的配置
2.取消挂载
umount /t1
umount /t2
3.依次删除lvm的组件
lvremove /dev/vg1-0224/lv1
Do you really want to remove active logical volume vg1-0224/lv1? [y/n]: y
Logical volume "lv1" successfully removed
lvremove /dev/vg1-0224/lv2
Do you really want to remove active logical volume vg1-0224/lv2? [y/n]: y
Logical volume "lv2" successfully removed
4. 删除vg
vgremove vg1-0224
Volume group "vg1-0224" successfully removed
vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
5. 删除pv,还原磁盘原本类型
pvremove /dev/sdb /dev/sdc /dev/sdd
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.
Labels on physical volume "/dev/sdd" successfully wiped.
6. 最后,磁盘就还原为了不可动态调整的磁盘了,你可以格式化后,挂载使用该设备
mount /dev/sdd /t1
df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 17G 1.6G 16G 9% /
devtmpfs devtmpfs 899M 0 899M 0% /dev
tmpfs tmpfs 911M 0 911M 0% /dev/shm
tmpfs tmpfs 911M 9.6M 902M 2% /run
tmpfs tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 142M 873M 14% /boot
tmpfs tmpfs 183M 0 183M 0% /run/user/0
/dev/sdd xfs 50G 33M 50G 1% /t1
raid
RAID 0
RAID0 俗称“条带”,它将两个或者多个硬盘组成一个逻辑硬盘,容量是所有硬盘之和。 Raid0最低需要两块硬盘,它把数据分散到每块硬盘上进行存储,所以raid0拥有所有 raid种类中最强的存储性能。 而raid0的总可用空间容量就是硬盘数量乘以最低容量硬盘的容量,连续读写性能就是单盘的倍数。
特点:数据条带化,无校验,不提供数据保护; 数据并发写入多个硬盘。
优点:RAID读写性能最高,100%的磁盘空间利用率。
缺点:此方式硬盘数据没有冗余,没有容错,一旦一个物理硬盘损坏,则所有数据均丢失。
适用:RAID0 适合于对数据量大,但安全性要求不高的场景,比如音像、视频文件的存储等。
RAID 1
RAID1俗称“镜像”,它最少由两个硬盘组成,而且两个硬盘上存储的数据均相同,以实现数据冗余。 容错性是所有组合中方式里最好的,只要有一块硬盘正常,则能继续保持正常工作。 但它对磁盘利用率只有50%。 RAID1只支持两块硬盘组RAID阵列,而实际容量只有最小的那块硬盘的容量,原因是RAID1只提高了数据的安全性。 但是RAID1不等于数据备份。
特点:数据镜像,无校验(检查)。 一半的空间存储冗余数据,但是在所有的RAID中数据安全性 最高。
优点:所有的RAID中安全性能最高,即使一块磁盘发生故障,仍能正常运转。 镜像磁盘没有完全 故障,数据就不会丢失。
缺点:一半的磁盘空间用于存储冗余数据,磁盘空间利用率50%
适用:数据安全性要求比较高的场景,如邮件系统,数据库等。
RAID 5
RAID5采用硬盘分割的技术,最少需要三块硬盘才可以组建RAID5阵列,它没有数据冗余,而是把数据奇偶校验的方式存储到每块硬盘上,它将数据分散储存在阵列的每个磁盘,并且还伴有一个数据校验位,数据位与校验位通过算法能相互验证,当丢失其中的一位时,RAID控制器能通过算法,利用其它两位数据将丢失的数据进行计算还原。 因而RAID5最多只允许一个硬盘损坏,有容错性。
特点:数据条带化,校验数据均匀分布在每个物理磁盘上。 当某个物理磁盘发生故障十五,可根 据同一条带的其他数据块和对应的校验数据来重建损坏的数据。
优点:允许1个物理磁盘发生故障,而不丢失数据。 读取性能相对较高,磁盘空间利用率大于 RAID1+0。
缺点:写入性能相对低。 重建数据时,性能会受到较大的影响。
适用:RAID5可理解为RAID0和RAID1折中方案,兼顾储存性能,数据安全和存储成本等因素。
RAID 10
RAID10是先将数据进行镜像操作,然后再对数据进行分组。 RAID 1 在这里就是一个冗余的 备份阵列,而 RAID 0 则负责数据的读写阵列。 至少要四块盘,两块做 raid0,另两块 做 raid1,RAID 10 对存储容量的利用率和 RAID 1 一样低,只有 50%.。 Raid1+0 方 案造成了 50%的磁盘浪费,但是它提供了 200%的速度和单磁盘损坏的数据安全性, 并且当同时损坏的磁盘不在同一 Raid1 中,就能保证数据安全性。
特点:RAID1与RAID0的结合,先创建RAID1,再创建RAID0
优点:读取性能仅次于RAID0。 镜像中的磁盘没有全部故障,数据就不会丢失。 一半的物理磁盘 发生故障时,仍可以运转。
缺点:成本高。 磁盘利用率50%,一半的空间用于冗余数据。
适用:适用于读写性能要求高,数据安全大于磁盘成本的场景。 如银行、数据库等。