处理磁盘冗余
(1)解决了数据的读写速率
(2)解决磁盘冗余,保护数据以免丢失
磁盘阵列(Redundant Arrays of Independent Drives,RAID)
Redundant:冗余
Independent:独立的
Arrays:数组,队列
独立磁盘构成的具有冗余能力的阵列
个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。
(1)外接式磁盘阵列柜
(2)内接式磁盘阵列卡
(3)软件来仿真实现raid
raid卡需要驱动。
Raid卡带电池和不带电池的区别?
带电池能保证保存的数据在断电后能存储到内存中
raid0:至少两块盘,只有按条带存储数据
特点:提高数据的存取速度,读写性能提升,但是没有备份,不能容灾。可用容量的100%
应用场景:对数据要求不高的场景下。
raid1:至少两块盘,只有镜像,没有条带
特点:不能解决数据存取速度问题,读性能提升,写性能下降,但是可容灾。可用容量的50%
应用场景:对数据要求很高的场景下。
raid5:至少3块盘,可以提高存取速率,
特点:存储的有存储数据和校验数据,读写性能提升,可以容灾(允许一个盘坏),可用容量是(n-1/n)
应用场景:折中了Raid0和Raid1的优缺点,可适用于大多数应用场景。
特点:存储的有存储数据和两份校验数据,读写性能提升,可以容灾(允许两个盘坏),可用容量是(n-2/n)
特点:至少四块盘,既能提高数据读写性能,也能实现数据容灾,可使用容量为50%
容灾能力稍强。
特点:至少四块盘,既能提高数据读写性能,也能实现数据容灾,可使用容量为50%
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 > 不使用
[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
生成逻辑卷,动态扩容文件空间
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
[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
[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
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