--------------------------------RAID------------------------------
磁盘阵列RAID,RedundantArrays of Inexpensive Disks,即容错廉价磁盘阵列
   
     (图片考虑鸟哥linux私房菜基础篇第三版--P464)

级别:仅代表磁盘组织方式不同,没有上下之分;

RAID-0:(等量模式,stripe):性能最佳-------条带
 性能提升,几乎接近n倍:读,写----将完整数据切割成n份,同时分开存入n个磁盘
 冗余能力(容错能力),没保证--损坏一个磁盘,整个数据文件将丢失
 空间利用率:nS
 至少需要2块盘
 
RAID-1:让一份完整的数据保存在两块磁盘上边---镜像
 性能表现:写性能下降,读性能提升
 冗余能力:有
 空间利用率:1/2---整体RAID的容量几乎少了50%
 至少2块盘
 
RAID-5:轮流校验盘
 性能表现:读,写提升
 冗余能力:有
 空间利用率:(n-1)/n
 至少需要3块
  RAID-5有同位检查码,所以其总容量会是整体磁盘数量减1块,而当其中磁盘损毁的数量大于等于2的时候,整组就会损毁。
RAID 1+0  就是将RAID-0 RAID-1 组合起来 先1后0  比较考虑使用这个。
 性能表现:读,写提升
 冗余能力:有
 空间利用率:1/2
 至少需要4块
RAID 0+1  就是将RAID-0 RAID-1 组合起来 先0后1
 性能表现:读,写提升
 冗余能力:有
 空间利用率:1/2
 至少需要4块
 
RAID-50 先5 后0
 性能表现:读,写提升
 冗余能力:有
 空间利用率:(n-1)/n
 至少需要6块
 
jbod:多块盘叠加-将多个小盘组合成一个大盘,不分割数据和盘,盘满便叠加
 性能提升:无
 冗余能力:有
 空间利用率100%
 至少需要2块
 
 
软件磁盘阵列:
 通过系统仿真,因此使用的设备文件名是系统的设备文件,文件名为/dev/md0,/dev/md1
 
逻辑RAID:
/dev/md#
/dev/md1

MD:Multi Device,多设备 用户空间工具,管理工具

 mdadm:将任何块设备做成RAID
 模式化的命令:
  1、创建模式
   -C
    专用选项:
     -l:级别
     -n:设备个数
     -a {yes|no}:自动为其创建设备文件
     -c:CHUNK大小(字符串),2^n默认为64k
     -x #:指定空闲盘个数
   
  2、管理模式
   -a|--add,-r|--remove ,-f|--fail--set-faulty
   mdadm /dev/md# --fail /dev/sda7

  3、监控模式
   -F
  4、增长模式
   -G
  5、装配模式
   -A
 查看RAID阵列的详细信息
 mdadm -D /dev/md#
  --detail
 停止阵列:
 mdadm -S /dev/md#
 --stop
 watch:周期性的执行某命令,并以全屏方式显示结果
 -n #:指定周期长度,单位为秒,默认为2
 watch -n # 'COMMAND'
 
 mdadm -D --scan > /etc/madam.conf    将当前RAID信息保存至配置文件,以便以后进行装配


 
 
 
 
 
例子:创建RAID-0   2G:
     
  fdisk创建2个1G的分区,t 调整类型为 fd  完事记得重读 partprobe /dev/sda     cat /pro/partitions确保下是否识别两个新建的分区
  mdadm -C /dev/md0 -a yes  -l 0 -n 2 /dev/sda{5,6}
   cat /pro/mdstat 会显示当前系统上处于启用的RAID设备
  mke2fs -j /dev/md0 任何一个存储空间需要格式化,挂载
  mount /dev/md0  /mnt       ls /mnt可以查看是否挂载(出现lost+found)
     
 创建RAID1   2G
 
  fdisk创建2个2G的分区,L 调整类型为 fd  完事记得重读
  partprobe /dev/sda     cat /pro/partitions
  mdadm -C /dev/md1 -a yes  -l 1 -n 2 /dev/sda{7,8}
   cat /pro/mdstat   (会显示进度%)
  mke2fs -j /dev/md1
  mount /dev/md0  /media       ls /media
     
 模拟损坏一块RAID1的一块磁盘
  mdadm /dev/md1 --fail /dev/sda8
 查看下md1的信息
  mdadm --detail /dev/md1
   cd进去/media/文件,看看是否能cat inittab  (可以使用)
 因为8被模拟损坏,所以需要移除
  mdadm /dev/md1 -r /dev/sda8 重新detail 其状态为remove
 现在将新的分区加进来
  mdadm /dev/md1 -a /dev/sda9    查看detail 显示正在恢复
     
 停止阵列
  mdadm -S /dev/md1
 重新启用
  mdadm -A /dev/md1 /dev/sda7 /dev/sda9 可以-D查看
  
 ####假如在md1里面多加入一块分区
  mdadm -a /dev/sda7    其中已有2块磁盘为好的,这位第三块,显示状态为space即为空闲
 那么此时将sda8模拟下线,
  mdadm /dev/md1 -f /dev/sda8
   mdadm -D /dev/md1 查看7正在同步,而8显示为损坏的空闲盘
  
 watch 'cat /proc/mdstat'  可以自动2秒刷新一次同步的进度
 
  mdadm -D --scan > /etc/madam.conf
  将当前RAID信息保存至配置文件,以便以后进行装配
  
  
  
  
  
------------------------------DM-LVM---------------------------------  
  
LVM:叫做逻辑卷管理器,做法是将几个物理分区通过软件组合成为一块看起来是独立的大磁盘,然后将这块大磁盘在经过分成为可以使用的分区LV
 
 PhysicalVolume,PV,物理卷
  系统标示符为8e
 VolumeGroup,VG,卷用户组
 Physical Extend,PE,物理扩展块
  默认使用4MB而LVM的VG最多仅包含有65534个PE,因此默认的LVMVG会有4M*65534/(1024M/G)=256G。
 LogicalVolume,LV逻辑卷
  
 LVM最主要的用处是在实现一个可以天性调整容量的文件系统上么人不是在新建一个性能为主的磁盘上 
  
例子:
 
 fdisk /dev/sda  创建1个7G的分区,1个3G的分区(多余创建1个5G的),t 调整类型为 8e  完事记得重读 partprobe /dev/sda     cat /pro/partitions确保下是否识别两个新建的分区
 
 PV的创建
  pvcreate /dev/sda{10,11}
   (pvs可以查看当前系统的pv...pvdisplay详细)
   (pvscan扫描当前系统的pv)
 VG的创建
  vgcreate myvg /dev/sda{10,11}
   (vgs可以查看当前系统的vg...vgdisplay详细)
   (vgscan扫描当前系统的vg)
   (-s可以指定PE的大小,默认是4M    vgcreate VG_NAME )
  删除vg(如果vg上已经创建了LV并且已经存了数据,那么它不能直接删除)
   vgremove myvg
   重新创建PE为8M的VG
    vgcreate -s 8M myvg /dev/sda{10,11}
  VG的缩减(就是将其中的PV去除,也就是要将PV中的PE挪走)
   pvmove /dev/sda11
   vgreduce myvg /dev/sda11
   pvs查看可看到sda11没有VG组,然后
   pvremove /dev/sda11
  VG的扩展
   pvcreate /dev/sda12
   vgextend myvg /dev/sda12
将12加入VG myvg中
 LV的创建
  lvcreate -L 50M -n textlv myvg
   lvs查看.lvdisplay
  mke2fs -j /dev/myvg/textlv  格式化
  mount /dev/myvg/textlv /mnt 挂载-----lv /dev/mapper可查看真正的设备文件名
  ls /mnt
  移除LV
   先解除挂载
    umount /mnt
   然后移除
    lvremove /dev/myvg/textlv
    
 扩展逻辑卷-----先扩展物理,然后再增加逻辑卷
  lvextend(扩展物理)
   -L [+]#(+的作用是代表扩展到还是扩展为,不带+是扩展为)
  resize2fs(扩展逻辑)
   resize2fs /PATH/TO/LV 5G扩展到5G
   resize2fs -p /PATH/TO/LV    修复逻辑卷的边界为最大
  
  lvcreate -L 2G -n testlv myvg
   mke2fs -j /dev/myvg/textlv
   mkdir /user
   vim /etc/fstab << /dev/myvg/testlv  /users ext3 default,acl 0 0
   mount -a
   mount
   cd /users      ls
   cp /etc/inittab .      ls       cat inittab(可用)
   df -h
   lvextend -L 5G /dev/myvg/testlv
(vgs确保空间够用)
   df -lh   lvs (结果显示只扩展了物理边界,没扩展逻辑的)
   resize2fs -p /dev/myvg/testlv    df -lh 显示正确
   (处于挂载中的 不用卸载可直接扩展)

 缩减逻辑卷
  注意:
  1、不能在线缩减,得先卸载;
  2、确保缩减后的空间大小依然能存储原有的数据;
  3、在缩减之前应该先强行检查文件,以确保文件系统处于一致性状态;
  resize2fs
   resize2fs /PATH/TO/PV 3G
   
  lvreduce -L [-]# /PATH/TO/LV
  重新挂载
  
  df -lh  查看空间多少,
  umount /users
  mount 
   查看卸载完成否
  e2fsck -f /dev/myvg/testlv   强制文件系统检查
  resize2fs /dev/myvg/testlv 3G 缩减至3G
  lvreduce -L 3G /dev/myvg/testlv 缩减边界
  mount -a
  mount
  df -lh
  
  
 使用快照卷
 1、生命周期为整个数据时长,在这段时长内,数据的增长量不能超出快照卷大小;
 2、快照卷应该是只读的;
 3、跟原卷在同一卷组内;
 
  创建快照卷
  lvcreate
   -s 表示其为快照卷
   -p r|w 设定权限为只读r
  
  lvcreate -L # -n SLV_NAME  -s -p r /PATH/TO/LV
  
  lvcreate -L 50M -n testlv-snap -s -p r /dev/myvg/testly
  mount /dev/myvg/test-snap /mnt
  cd /mnt     ls 显示挂载完成
  cat  inittab | wc-l  显示50
  
  tar -jcf /tmp/users/tar.bz2  inittab备份下镜像
  ls /tmp
  删除快照
  umount /mnt
  lvremove /dev/myvg/testlv-snap
  还原备份快照
  tar xf /tmp/users/tar.bz2 -C ./
  ls