raid阵列: 磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
级别:
raid0: 条带化写如磁盘,没有数据冗余,只能提升性能,不能提升安全性,将多块串联使用,最少两块磁盘。
raid1:(磁盘镜像)把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,磁盘利用率降低只有总容量的50%,但提升了安全性
raid5: 带有奇偶检验的条带化写入 最少3块 不单独指定的奇偶盘,在一定程度上保证了安全性,同时也提高性能,磁盘利用率为n-1
raid10: raid1+raid0 最少需要四块磁盘,两两先做raid1 然后再做raid0,既保证了数据的安全,同样提升了性能,磁盘利用率为50%
[root@localhost ~]# mdadm -C -l 0 -n 2 /dev/md0 /dev/sdb /dev/sdc
创建md0 (raid0) -C 创建 -l 级别 -n 数量
[root@localhost ~]# mdadm -D /dev/md0
查询raid信息
[root@localhost ~]# mdadm -Ds
查询scan信息
[root@localhost ~]# touch /etc/mdadm.conf
创建持久化配置文件
[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf
将磁盘信息写入配置文件中
[root@localhost ~]# vim /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
DEVICE /dev/sdb /dev/sdc
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=e58796e8:dcc0d93f:aab62872:5ee13358
[root@localhost ~]# mdadm -S /dev/md0
停止raid
[root@localhost ~]# mdadm -A /dev/md0
激活raid0(有配置文件)
[root@localhost ~]# mdadm -A /dev/md0 /dev/sdb /dev/sdc
如果没配置文件激活方法
挂载使用raid:
[root@localhost ~]# mkfs.xfs /dev/md0
格式化
[root@localhost ~]# mount -t xfs /dev/md0 /mnt/
挂载使用
删除raid
[root@localhost ~]# mdadm -S /dev/md0
[root@localhost ~]# rm -rf /etc/mdadm.conf
[root@localhost ~]# rm -rf /dev/md0
[root@localhost ~]# mdadm -C -l 1 -n 2 /dev/md1 /dev/sdb /dev/sdc
[root@localhost ~]# mkfs.xfs /dev/md1
[root@localhost ~]# mount /dev/md1 /mnt
[root@localhost ~]# mdadm /dev/md1 -f /dev/sdb
# -f faulty 模拟损坏磁盘
[root@localhost ~]# mdadm -D /dev/md1
移除坏的磁盘
[root@localhost ~]# mdadm /dev/md1 -r /dev/sdb
# -r remove 移除
mdadm: hot removed /dev/sdb from /dev/md1
[root@localhost ~]# mdadm -D /dev/md1
添加新磁盘
[root@localhost ~]# mdadm /dev/md1 -a /dev/sdd
# -a 添加磁盘
[root@localhost ~]# mdadm -D /dev/md1
# 修复raid1
添加备用盘(自动替换损坏盘,恢复数据) raid 1 5 10
创建过程中添加
[root@localhost ~]# mdadm -C -l 1 -n 2 /dev/md1 /dev/sdb /dev/sdc -x 1 /dev/sdd
#-x 备用磁盘
或者
后期添加
[root@localhost ~]# mdadm /dev/md1 -a /dev/sdb
raid5
卸载md1
[root@localhost ~]# umount /dev/md1
删除md1
[root@localhost ~]# mdadm -S /dev/md1
[root@localhost ~]# rm -rf /dev/md1
清空/dev/sdb /dev/sdc超级块信息
超级块(superblock):超级块中包含有关i节点的位置、文件系统大小、块数目,以及状态等信息
[root@localhost ~]# mdadm --zero-superblock /dev/sdb
[root@localhost ~]# mdadm --zero-superblock /dev/sdc
创建raid5
[root@localhost ~]# mdadm -C -l 5 -n 3 /dev/md5 /dev/sdb /dev/sdc /dev/sdd
模拟损坏: 略
备用盘: 略
创建raid10
[root@localhost ~]# mdadm -C -l 10 -n 4 /dev/md10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
模拟损坏: 略
备用盘: 略
1.整合硬盘(将小硬盘从逻辑上整合成一块大硬盘)
2.支持在线扩容(硬盘空间不足时,可以在不影响系统运行的基础上扩大逻辑卷)
PS:一块硬盘(分区)只能属于一个vg,一个lv只能属于一个卷组
vg可以有多块硬盘组成,可以有多个逻辑卷
[root@localhost ~]# pvcreate /dev/sdb /dev/sdc /dev/sdd
[root@localhost ~]# pvs #查看pv
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb lvm2 --- 2.00g 2.00g
/dev/sdc lvm2 --- 2.00g 2.00g
/dev/sdd lvm2 --- 2.00g 2.00g
[root@localhost ~]# pvdisplay #也可以查看pv
创建vg
[root@localhost ~]# vgcreate vgtest /dev/sdb /dev/sdc /dev/sdd
[root@localhost ~]# vgs #查看vg
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vgtest 3 0 0 wz--n- <5.99g <5.99g
[root@localhost ~]# vgdisplay
3.创建lv
[root@localhost ~]# lvcreate -L 3G -n /dev/vgtest/lvtest vgtest
# -L 指定大小 -n 逻辑卷名字
[root@localhost ~]# 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
lvtest vgtest -wi-a----- 3.00g
[root@localhost ~]# lvdisplay
[root@localhost ~]# mkfs.xfs /dev/vgtest/lvtest
[root@localhost ~]# mount -t xfs /dev/vgtest/lvtest /mnt/
[root@localhost ~]# lvextend -L +2G /dev/vgtest/lvtest
root@localhost ~]# 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
lvtest vgtest -wi-ao---- 5.00g
[root@localhost ~]# df -Th
#查看文件系统
/dev/mapper/vgtest-lvtest xfs 3.0G 33M 3.0G 2% /mnt
扩大文件系统
[root@localhost ~]# xfs_growfs /dev/vgtest/lvtest
[root@localhost ~]# df -Th #文件系统
/dev/mapper/vgtest-lvtest xfs 5.0G 33M 5.0G 1% /mnt
[root@localhost ~]# pvcreate /dev/sde
[root@localhost ~]# vgextend vgtest /dev/sde
lvm缩小(离线,不能挂载,不能使用) xfs文件不能缩小 ext4文件系统可以缩小
删除
[root@localhost ~]# umount /dev/vgtest/lvtest
[root@localhost ~]# lvremove /dev/vgtest/lvtest
[root@localhost ~]# vgremove vgtest
[root@localhost ~]# pvremove /dev/sd{b,c,d,e}
快照: 是源lv在创建快照时那个瞬间,所有文件的元数据(metadata)记录,当你读写文件时,会将文件对应数据块从源lv中拷贝到快照中.
创建(lvtest)快照
[root@localhost mnt]# lvcreate -L 50M -s -n /dev/vgtest/lvtest-s0 lvtest
# -s snapshot 快照
[root@localhost mnt]# 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
lvtest vgtest owi-aos--- 500.00m
lvtest-s0 vgtest swi-a-s--- 52.00m lvtest 0.00
[root@localhost /]# umount /dev/vgtest/lvtest
[root@localhost /]# mount /dev/vgtest/lvtest-s0 /mnt/
cow技术: 写实拷贝(英语:Copy-on-write,简称COW)是一种计算机程序设计领域的优化策略。其核心思想是,如果有多个调用者(callers)同时要求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。这过程对其他的调用者都是透明的(transparently)。此作法主要的优点是如果调用者没有修改该资源,就不会有副本(private copy)被创建,因此多个调用者只是读取操作时可以共享同一份资源。
上文来源:https://blog.csdn.net/ljb825802164/article/details/88528726
[root@localhost mnt]# lvcreate -L 50M -s -n /dev/vgtest/lvtest-s0 lvtest
# -s snapshot 快照
[root@localhost /]# umount /dev/vgtest/lvtest
[root@localhost /]# mount /dev/vgtest/lvtest-s0 /mnt/
[root@localhost /]# dd if=/dev/zero of=/mnt/data bs=100M count=1
[root@localhost /]# 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
lvtest vgtest owi-a-s--- 500.00m
lvtest-s0 vgtest swi-I-s--- 52.00m lvtest 100.00
[root@localhost /]# lvremove /dev/vgtest/lvtest-s0
删除快照
[root@localhost mnt]# mount /dev/vgtest/lvtest /mnt/
[root@localhost /]# cat /mnt/aa.txt
123456789
[root@localhost /]# cat /mnt/cc.txt
abcdefghijlmn
[root@localhost /]# lvcreate -L 50M -s -n /dev/vgtest/lvtest-s0 lvtest
错误删除
[root@localhost mnt]# rm -rf /mnt/*
利用快照恢复
[root@localhost /]# umount /dev/vgtest/lvtest
[root@localhost /]# mount /dev/vgtest/lvtest-s0 /mnt/
[root@localhost /]# cat /mnt/aa.txt
123456789
[root@localhost /]# cat /mnt/cc.txt
qwertyuiop
[root@localhost /]# cp /mnt/aa.txt /mnt/cc.txt /tmp/
[root@localhost /]# umount /dev/vgtest/lvtest-s0
[root@localhost /]# mount /dev/vgtest/lvtest /mnt/
[root@localhost /]# cp /tmp/aa.txt /tmp/cc.txt /mnt/
[root@localhost /]# ls /mnt/
aa.txt cc.txt
[root@node6 ~]# pvcreate /dev/vdb1 /dev/vdb2
[root@node6 ~]# vgcreate vgxfs /dev/vdb2 /dev/vdb1
[root@node6 ~]# lvcreate -l 25 -n lvxfs vgxfs
Logical volume "lvxfs" created
[root@node6 ~]# mkfs.xfs /dev/vgxfs/lvxfs
meta-data=/dev/vgxfs/lvxfs isize=256 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=1200, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@node6 ~]# mount /dev/vgxfs/lvxfs /xfs/
[root@node6 ~]# lvextend -l +100%FREE /dev/vgxfs/lvxfs
[root@node6 ~]# xfs_growfs /xfs/
meta-data=/dev/mapper/vgxfs-lvxfs isize=256 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal bsize=4096 blocks=1200, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 25600 to 47104
1.快照size一定大于数据size,否则恢复中快照100% 快照损坏 备份失败
2.快照备份不能做长时间备份,因为会随着源lv的更新变化,lv的快照使用率会上升
源lv怎么改 快照都不会变
为了保持快照不变 就会拷贝之前的数据到快照去
快照使用率就会增加