RAID、LVM

RAID

处理磁盘冗余

为什么学习?

(1)解决了数据的读写速率

(2)解决磁盘冗余,保护数据以免丢失

是什么?

磁盘阵列(Redundant Arrays of Independent Drives,RAID)

Redundant:冗余

Independent:独立的

Arrays:数组,队列

独立磁盘构成的具有冗余能力的阵列

个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。

RAID分为哪几类

(1)外接式磁盘阵列柜

(2)内接式磁盘阵列卡

(3)软件来仿真实现raid

raid卡需要驱动。

Raid卡带电池和不带电池的区别?

带电池能保证保存的数据在断电后能存储到内存中

RAID类型:

raid0(不含检验与冗余的条带存储)

raid0:至少两块盘,只有按条带存储数据

特点:提高数据的存取速度,读写性能提升,但是没有备份,不能容灾。可用容量的100%

应用场景:对数据要求不高的场景下。

raid1(不含校验的镜像存储)

raid1:至少两块盘,只有镜像,没有条带

特点:不能解决数据存取速度问题,读性能提升,写性能下降,但是可容灾。可用容量的50%

应用场景:对数据要求很高的场景下。

raid5(数据块级别的分布式校验条带存储)

raid5:至少3块盘,可以提高存取速率,

特点:存储的有存储数据和校验数据,读写性能提升,可以容灾(允许一个盘坏),可用容量是(n-1/n)

应用场景:折中了Raid0和Raid1的优缺点,可适用于大多数应用场景。

raid6:至少4块盘,可以提高存取速率

特点:存储的有存储数据和两份校验数据,读写性能提升,可以容灾(允许两个盘坏),可用容量是(n-2/n)

Raid01 == Raid0+Raid1(内部是条带,外部镜像)

特点:至少四块盘,既能提高数据读写性能,也能实现数据容灾,可使用容量为50%

容灾能力稍强。

Raid10 == Raid1+Raid0(内部镜像,外部条带)

特点:至少四块盘,既能提高数据读写性能,也能实现数据容灾,可使用容量为50%

测试raid

1.挂载三块盘

2.三个盘的分区格式,分两个区

fd:-------对分区raid,转换一下,支持raid的格式。(只存在于软raid)

3.组raid
raid0

[root@localhost ~]# mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb2 /dev/sdc1

raid5

[root@localhost ~]# mdadm -C /dev/md1 -l 5 -n 3 /dev/sdb3 /dev/sdc2 /dev/sdd1

4.格式化raid

[root@localhost ~]# mkfs.ext4 /dev/md0

[root@localhost ~]# mkfs.ext4 /dev/md1

5.创建挂载点

[root@localhost ~]# mkdir /raid0

[root@localhost ~]# mkdir /raid5

6.挂载

[root@localhost ~]# mount /dev/md0 /raid0

[root@localhost ~]# mount /dev/md1 /raid5

系统盘:raid5

数据盘:(插入系统盘,固态——>组raid——>装系统)

查看可用大小:
[root@localhost ~]# mdadm --detail /dev/md0

raid0 2.5 *2 == (5G) 4.88

[root@localhost ~]# mdadm --detail /dev/md1

raid5 2.5 *3 == (5G) 5.1

数据的读取速率

在不使用raid的情况下:

[root@localhost ~]# time dd if=/dev/zero of=txt bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 29.5963 s, 35.4 MB/s
real 0m30.742s
user 0m0.002s
sys 0m10.882s

在使用raid0的情况下:

[root@localhost ~]# time dd if=/dev/zero of=/raid0/txt bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 1.72986 s, 606 MB/s
real 0m1.816s
user 0m0.002s
sys 0m1.192s

在使用raid5的情况下:

[root@localhost ~]# time dd if=/dev/zero of=/raid5/txt bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 2.52019 s, 416 MB/s
real 0m2.660s
user 0m0.001s
sys 0m0.865s

raid0 > raid5 > 不使用

容灾:raid故障模拟

[root@localhost ~]# mdadm /dev/md1 -f /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md1
[root@localhost ~]# mdadm --detail /dev/md1
Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 34 1 active sync /dev/sdc2
3 8 49 2 active sync /dev/sdd1
0 8 18 - faulty /dev/sdb2
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb1
mdadm: set device faulty failed for /dev/sdb1: Device or resource busy
[root@localhost ~]# mdadm --detail /dev/md0

LVM:逻辑卷管理器

生成逻辑卷,动态扩容文件空间

PV:物理卷,LVM的逻辑存储块,与磁盘分区是逻辑对应关系

VG:卷组,逻辑上的磁盘设备

PE:物理长度,是逻辑上的最小存储单元,EP4MB

LE:LV上的最小存储单元,与PE对应

LV:逻辑卷,物理意义上的分区

创建物理卷

[root@localhost ~]# pvcreate /dev/sdb
[root@localhost ~]# pvcreate /dev/sdb /dev/sdc1
[root@localhost ~]# pvcreate /dev/sdb /dev/sdc{1,2,3}

查看

[root@localhost ~]# pvdisplay:更加详细
[root@localhost ~]# pvs

列出系统中的物理卷

[root@localhost ~]# pvscan

移除物理卷

[root@localhost ~]# pvremove

将数据移动到硬盘上

[root@localhost ~]# pvmove

创建卷组

[root@localhost ~]# vgcreate test_vg1 /dev/sdb
vgcreate vgname /dev/device

​ -s:指定PE的大小

​ vgcreate -s 8M vgname /dev/device

删除卷组

[root@localhost ~]# vgremove vgname

将物理卷添加到卷组中

[root@localhost ~]# vgextend vgname pvname

删除卷组中的物理卷,缩减

[root@localhost ~]# vgreduce

查看

[root@localhost ~]# vgdisplay

[root@localhost ~]# vgs

更改卷组名称

[root@localhost ~]# vgrename

改变卷组工作状态

[root@localhost ~]# vgchange

创建逻辑卷

[root@localhost ~]# lvcreate -L 2G -n test_lv1 test_vg1

l:指定逻辑卷大小,以PE为单位进行指定。

-L:指定逻辑卷大小,以空间大小(小于卷组)

​ #:绝对容量

​ +#:增量

-n:指定逻辑卷名称。

-s:指定创建逻辑卷快照

​ lvcreate -s -n 快照名 -L 大小 逻辑卷 -p r(表示只读属性)

-p:设置属性 r 只读属性

扩展逻辑卷

[root@localhost ~]# lvextend

缩减逻辑卷

[root@localhost ~]# lvreduce

查看

[root@localhost ~]# lvdisplay

[root@localhost ~]# lvs

删除逻辑卷

[root@localhost ~]# lvremove

恢复快照

[root@localhost ~]# lvconvert --merge 快照路径

将原本的磁盘做成物理卷,并创建卷组

先分区
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2
[root@localhost ~]# pvs
[root@localhost ~]# vgcreate -s 10M myvg /dev/sdb1 /dev/sdb2
[root@localhost ~]# vgs
[root@localhost ~]# lvcreate -L 500M -n mylv myvg
[root@localhost ~]# lvs
[root@localhost ~]# mkfs.ext4 /dev/myvg/mylv
[root@localhost ~]# mkdir /tmp/mylv
[root@localhost ~]# mount /dev/myvg/mylv /tmp/mylv/
[root@localhost ~]# df -Th

vg缩减

[root@localhost ~]# vgextend myvg /dev/sdb3
[root@localhost ~]# dd if=/dev/zero of=/tmp/mylv/lvfile bs=1M count=500
[root@localhost ~]# pvmove /dev/sdb1
[root@localhost ~]# vgreduce myvg /dev/sdb1
[root@localhost ~]# cd /tmp/mylv
[root@localhost mylv]# ls
lost+found lvfile

lv扩容

[root@localhost mylv]# lvextend -L +500M /dev/myvg/mylv
[root@localhost mylv]# df -h
[root@localhost mylv]# resize2fs /dev/myvg/mylv
[root@localhost mylv]# df -h

lv缩减

1、先卸载逻辑卷
2、检测逻辑卷空间 e2fsck
3、使用resiz2fs缩减文件系统大小
4、使用lvreduce缩减逻辑卷大小

逻辑卷的大小大于等于文件系统的大小

[root@localhost /]# umount /dev/myvg/mylv
[root@localhost /]# df
[root@localhost /]# e2fsck -f /dev/myvg/mylv(检测)
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/myvg/mylv: 12/254000 files (0.0% non-contiguous), 524035/1024000 blocks
[root@localhost /]# resize2fs /dev/myvg/mylv 100M(文件系统大小,将文件系统的大小调至100M,lvs查询)
[root@localhost /]# lvreduce -L 100M /dev/myvg/mylv(逻辑卷的大小,挂载后df -h查看)
[root@localhost /]# lvs
[root@localhost /]# mount /dev/myvg/mylv /tmp/mylv

你可能感兴趣的:(RAID、LVM)