raid和lvm

什么是RAID
  • RAID:Redundant Arrays of Inexpensive(Independent) Disks
  • 1988年由加利福尼亚大学伯克利分校(University of CaliforniaBerkeley) “A Case for Redundant Arrays of Inexpensive Disks”
  • 多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供
RAID
  • 提高IO能力
    磁盘并行读写
  • 提高耐用性
    磁盘冗余来实现
  • 级别:多块磁盘组织在一起的工作方式有所不同
  • RAID实现的方式
    外接式磁盘阵列:通过扩展卡提供适配能力
    内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置
    软件RAID:通过OS实现
RAID 级别
  • RAID0: RAID0是以条带的形式将数据均匀分布在整列的各个磁盘上,这种模式下使用相同型号和容量的磁盘来组成效果最好。其至少需要两个或更多地磁盘;因为存储时,将一个整体的数据分散至多个磁盘,故其大大提高了读写速度,但是,其无法实现冗余,只要有任何一块磁盘损坏,在RAID上面的所有数据都会丢失而无法正常读取。故其不能用在对数据安全性要求高的环境,常用于视频生成和剪辑,图像编辑等一些不需要大的宽带速度的场景。
  • RAID 1:RAID1以镜像的为冗余的方式,对虚拟磁盘上的数据作多分拷贝,放在成员盘上。这种模式下使用相同型号的磁盘性能最好;其将一份数据完整的保存在了两块磁盘上,因此至少需要两个磁盘;其具有100%的冗余,提供较高的数据安全保障,理论上可以实现2倍的读取效率,但是其开销大,空间利用率为50%,在写性能上速度降低,常用于财务,金融等高可用、高安全性的数据存储环境。
  • RAID 5:RAID5采用独立存取的阵列方式,校验信息被均匀的分散到阵列的各个磁盘上,其至少需要三个成员盘,RAID5的总容量会是整体磁盘数量减一,读性能较高,写性能一般,校验inxi1的分布式存储,避免了出现些操作额瓶颈,但是其需要一个复杂的控制逻辑,磁盘重建过程过于复杂;故常用用的场景有文件服务器,Email服务器、web服务器、数据库等应用环境。
  • RAID-6:RAID6技术是在RAID 5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID 5等级。与RAID 5的不同之处于除了每个硬盘上都有同级数据XOR校验区外,还有一个针对每个数据块的XOR校验区。当然,当前盘数据块的校验数据不可能存在当前盘而是交错存储的,具体形式见图。这样一来,等于每个数据块有了两个校验保护屏障(一个分层校验,一个是总体校验),因此RAID 6的数据冗余性能相当好。但是,由于增加了一个校验,所以写入的效率较RAID 5还差,而且控制系统的设计也更为复杂,第二块的校验区也减少了有效存储空间。
  • RAID 10:RAID10结合RAID1和RAID0,先镜像,在条带化,读写性能均有提升,有容错能力,但是其内部的每组镜像最多只能坏一块盘,至少需要4块盘;多用于高可用和高安全性的数据库应用环境。
软RAID的实现
  • mdadm:为软RAID提供管理界面
  • 为空余磁盘添加冗余
  • 结合内核中的md(multi devices)
  • RAID设备可命名为/dev/md0、/dev/md1、/dev/md2、/dev/md3等
  • mdadm:模式化的工具
  • 命令的语法格式:mdadm [mode] <raiddevice> [options] <componentdevices>
  • 支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
  • 模式:
    创建:-C
    装配:-A
    监控:-F
    管理:-f, -r, -a
  • <raiddevice>: /dev/md#
  • <component-devices>: 任意块设备
  • -C: 创建模式
    -n #: 使用#个块设备来创建此RAID
    -l #:指明要创建的RAID的级别
    -a {yes|no}:自动创建目标RAID设备的设备文件
    -c CHUNK_SIZE: 指明块大小,单位k
    -x #: 指明空闲盘的个数
  • -D:显示raid的详细信息
    mdadm -D /dev/md#
  • 管理模式:
    -f: 标记指定磁盘为损坏
    -a: 添加磁盘
    -r: 移除磁盘
  • 观察md的状态: cat /proc/mdstat
软RAID配置示例
  • 使用mdadm创建并定义RAID设备
    mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}1
  • 用文件系统对每个RAID设备进行格式化
    mkfs.xfs /dev/md0
  • 测试RAID设备
  • 使用mdadm检查RAID设备的状况
    mdadm --detail|D /dev/md0
  • 增加新的成员
    mdadm –G /dev/md0 –n4 -a /dev/sdf1
软RAID测试和修复
  • 模拟磁盘故障 mdadm /dev/md0 -f /dev/sda1
  • 移除磁盘 mdadm /dev/md0 –r /dev/sda1
  • 从软件RAID磁盘修复磁盘故障 • 替换出故障的磁盘然后开机 • 在备用驱动器上重建分区 • mdadm /dev/md0 -a /dev/sda1
  • mdadm、/proc/mdstat及系统日志信息
软RAID管理
  • 生成配置文件:mdadm –D –s >> /etc/mdadm.conf
  • 停止设备:mdadm –S /dev/md0
  • 激活设备:mdadm –A –s /dev/md0 激活
  • 强制启动:mdadm –R /dev/md0
  • 删除raid信息:mdadm --zero-superblock /dev/sdb1

逻辑卷管理器(LVM)

  • 允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
  • 允许在多个物理设备间重新组织文件系统
    • 将设备指定为物理卷
    • 用一个或者多个物理卷来创建一个卷组
    • 物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
    • 在物理卷上创建的逻辑卷 是由物理区域(PE)组成
    • 可以在逻辑卷上创建文件系统
pv管理工具
  • 显示pv信息
    pvs:简要pv信息显示
    pvdisplay
  • 创建pv
    pvcreate /dev/DEVICE
  • 删除pv
    pvremove /dev/DEVICE
vg管理工具
  • 显示卷组
    vgs
    vgdisplay
  • 创建卷组
    vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName
    PhysicalDevicePath [PhysicalDevicePath...]: -s制定pe的大小
  • 管理卷组
    vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
    vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
  • 删除卷组
    先做pvmove,再做vgremove
lv管理工具
  • 显示逻辑卷
    lvs
    Lvdisplay
  • 创建逻辑卷
    lvcreate -L #[mMgGtT] -n NAME VolumeGroup
    lvcreate -l 60%VG -n mylv testvg
    lvcreate -l 100%FREE -n yourlv testvg
  • 删除逻辑卷
    lvremove /dev/VG_NAME/LV_NAME
  • 重设文件系统大小
    fsadm [options] resize device [new_size[BKMGTEP]]
    resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
    xfs_growfs /mountpoint
扩展和缩减逻辑卷
  • 扩展逻辑卷:
    lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
    resize2fs /dev/VG_NAME/LV_NAME
    lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME
  • 缩减逻辑卷:
    umount /dev/VG_NAME/LV_NAME
    e2fsck -f /dev/VG_NAME/LV_NAME
    resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
    lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
    mount
跨主机迁移卷组
  • 源计算机上
    1 在旧系统中,umount所有卷组上的逻辑卷
    2 禁用卷组
    vgchange –a n vg0
    lvdisplay
    3 导出卷组
    vgexport vg0
    pvscan
    vgdisplay
    拆下旧硬盘
  • 在目标计算机上
    4 在新系统中安装旧硬盘,并导入卷组:vgimport vg0
    5 vgchange –ay vg0 启用
    6 mount所有卷组上的逻辑卷
创建逻辑卷示例
  • 创建物理卷 pvcreate /dev/sda3
  • 为卷组分配物理卷 vgcreate vg0 /dev/sda3
  • 从卷组创建逻辑卷 lvcreate -L 256M -n data vg0 mkfs.xfs -j /dev/vg0/data
  • 挂载 mount /dev/vg0/data /mnt/data
逻辑卷管理器快照
  • 快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
  • 对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适 的选择
  • 快照只有在它们和原来的逻辑卷不同时才会消耗空间
    • 在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所 改变才会使用这些空间
    • 当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。
    • 快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的 数据
    • 建立快照的卷大小只需要原始逻辑卷的15%~20%就够了,也可以使用 lvextend放大快照
    • 快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据 改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件 系统共享
    • 由于快照区与原本的LV共用很多PE的区块,因此快照与被快照的LV必须在同 一个VG中.系统恢复的时候的文件数量不能高于快照区的实际容量
使用LVM快照
    • 为现有逻辑卷创建快照
      lvcreate -l 64 -s -n data-snapshot -p r /dev/vg0/data
    • 挂载快照
      mkdir -p /mnt/snap
      mount -o ro /dev/vg0/data-snapshot /mnt/snap
    • 恢复快照
      umount /dev/vg0/data-snapshot
      umount /dev/vg0/data
      lvconvert --merge /dev/vg0/data-snapshot
    • 删除快照
      umount /mnt/databackup
      lvremove /dev/vg0/databackup
posted @ 2018-10-31 20:53  AloneSea  阅读(489)  评论(0编辑  收藏  举报