Linux磁盘管理——RAID磁盘阵列&lvm逻辑卷管理&快照

四.raid磁盘阵列

        raid阵列: 磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。

级别:

raid0: 条带化写如磁盘,没有数据冗余,只能提升性能,不能提升安全性,将多块串联使用,最少两块磁盘。

raid1:(磁盘镜像)把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,磁盘利用率降低只有总容量的50%,但提升了安全性

raid5: 带有奇偶检验的条带化写入 最少3块 不单独指定的奇偶盘,在一定程度上保证了安全性,同时也提高性能,磁盘利用率为n-1

raid10: raid1+raid0   最少需要四块磁盘,两两先做raid1 然后再做raid0,既保证了数据的安全,同样提升了性能,磁盘利用率为50%

Linux磁盘管理——RAID磁盘阵列&lvm逻辑卷管理&快照_第1张图片

RAID磁盘阵列配置

raid0

[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信息

raid的持久化

[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

raid1

[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

创建raid10

[root@localhost ~]# mdadm -C -l 10 -n 4 /dev/md10 /dev/sdb /dev/sdc /dev/sdd /dev/sde

模拟损坏: 略

备用盘: 略

五.lvm逻辑卷管理

功能:

1.整合硬盘(将小硬盘从逻辑上整合成一块大硬盘)

2.支持在线扩容(硬盘空间不足时,可以在不影响系统运行的基础上扩大逻辑卷)

Linux磁盘管理——RAID磁盘阵列&lvm逻辑卷管理&快照_第2张图片

PS:一块硬盘(分区)只能属于一个vg,一个lv只能属于一个卷组

      vg可以有多块硬盘组成,可以有多个逻辑卷

 PV、VG、LV的创建

[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

lvs挂载使用

[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

1.使用快照,源lv不动 #快照使用率100% 快照自动损坏

[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 
删除快照

2.使用源lv,快照不动 #用快照备份

[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

lvm在线扩容和文件系统扩容

[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

ps:

1.快照size一定大于数据size,否则恢复中快照100% 快照损坏 备份失败

2.快照备份不能做长时间备份,因为会随着源lv的更新变化,lv的快照使用率会上升

源lv怎么改 快照都不会变

为了保持快照不变 就会拷贝之前的数据到快照去

快照使用率就会增加

你可能感兴趣的:(linux)