RAID 和 LVM 简单学习笔记

RAID 和 LVM 简单学习笔记


RAID

RAID 简介

RAID: Redundant Arrays of Inexpensive (Independent) Disks 廉价(独立)的磁盘冗余阵列。1988 年由加利福尼亚伯克利分校一个研究人员提出。多个磁盘组成一个’阵列’来提供更好的性能、冗余,或者两者都提供,当然可以提供更大的存储空间。

RAID 实现的方式

  • 外接式磁盘阵列,通过扩展卡提供适配能力
  • 内接式磁盘阵列,主板集成 RAID 控制器,安装操作系统前在 BIOS 中进行配置
  • 软件磁盘阵列,通过操作系统实现

RAID 级别

这里的级别是指,多块磁盘组织在一起的工作方式。

  • RAID-0: 条带卷,strip
  • RAID-1: 镜像卷,mirror
  • RAID-5
  • RAID-6
  • RAID-10
  • RAID-01

一般根据需要使用 RAID-0、RAID-1、RAID-5、RAID-6、RAID-10。

RAID-0

该级别是加速的方式,即读写文件数据时,会把数据切割成以 ‘chunk’ 为单位的数据,按照一定的次序分别写入组成的磁盘中(磁盘数量 N >= 2 )。但是缺点是没有容错性,只有其中的一块硬盘出问题,所有的数据无效。

RAID-1

该级别是冗余的方式,即在写入数据时,同时在组成的磁盘中写入相同的数据(N >=2),这时具有容错性,但是磁盘空间只有一半,写速度没有提升,读性能有提升。

RAID-5

该级别是改进了 RAID-4 的基础上出现的,至少需要三块磁盘,每次写入数据时,也需要进行指定大小的切割,然后在组成磁盘数量按次序写入,但是有一块磁盘不是用于存放数据,而是用于存放其他几个磁盘数据的校验数据,且存放校验的磁盘是按照次序轮流的。

这样,读写性能提升,也有冗余。但是磁盘的使用率是 (N -1)/N。

RAID-6

该级别是在 RAID-5 基础上,增加了一个用于校验的磁盘,容错性更好。但是磁盘至少 4 块,其利用率为 ‘(N-2)/N’。

RAID-10

这是结合 RAID-1 和 RAID-0 两种方式。即先进行镜像式组合,然后再条带时组合。至少 4 块磁盘,利用率 50%。一般来说,这个容错性更好。

RAID-10

这是结合 RAID-0 和 RAID-1 两种方式。即先进行镜像式组合,然后再条带组合。至少 4 块磁盘,利用率 50%。

RAID-50

组合使用 RAID-5 和 RAID-0,容错性更好,但是利用率降低了。

JBOD

JBOD: Just a Bunch of Disks

其实现将多块硬盘的空间逻辑上合并成一个大的连续的空间。

逻辑卷管理器(LVM)

LVM: Logical Volume Manager,允许对卷进行方便操作的抽象层。包括可以重新设定文件系统的大小,允许在多个物理设备间重新组织文件系统等。

其能够把多个物理磁盘组成到一个卷组中,且如果需要可以随时增加磁盘来扩充空间。

实现过程:

  • 指定设备为物理卷
  • 使用一个或多个物理卷来创建一个卷组,物理卷使用固定大小的物理区域(Physical Extent, PE)来定义
  • 在物理卷上创建的逻辑卷,是由 PE 组成的
  • 在逻辑卷上创建文件系统并挂载

lvm

第一个逻辑卷对应的设备名为 /dev/dm-N。‘dm: device mapper’,将一个或多个底层块设备组成一个逻辑设备的模块。

以上的设备名不便于记忆,在 CentOS 6 开始使用软连接,以下两种都存在:

/dev/mapper/VGNAME-LVNAME
/dev/VGNAME/LVNAME

在CentOS 5 上是使用这种名称,不是软连接。

示例:

/dev/mapper/vo10-root
/dev/vo10/root

实现逻辑卷

先准备几个分区或硬盘,可以使用 fdisk 来实现,注意其分区类型是 ‘8e’(Linux LVM),例如创建了 ‘sdd1, sdd2, sde1’。

如果没有 pvcreate 命令可用,需要安装 lvm2 包。

dnf -y install lvm2
pv、vg、lv 管理工具
  • 物理卷管理

    显示物理卷(pv, Physical volume)信息

    # 简要显示信息
    pvs
    # 显示详细信息
    pvdisplay
    

    创建物理卷

    pvcreate /dev/sdd1 /dev/sdd2 ...
    

    移动 pv

    pvmove /dev/devicename
    

    删除 pv

    pvremove /dev/deviecname
    
  • 卷组管理

    显示卷组信息

    vgs
    vgdisplay
    

    创建卷组 vg

    vgcreate vg_mysql /dev/sdd1 /dev/sdd2
    

    扩展卷组

    vgextend vg_mysql /dev/sde1
    
  • 逻辑卷管理

    显示逻辑卷

    lvs
    lvdisplay
    

    创建逻辑卷

    lvcreate -n lv_data -L 500M vg_mysql
    
    # 此时生成的设备名 /dev/vg_mysql/lv_data
    ll /dev/vg_mysql/lv_data
    ... /dev/vg_mysql/lv_data -> ../dm-0
    ll /dev/mapper/vg_mysql/lv_data
    ... /dev/mapper/vg_mysql/lv_data -> ../dm-0
    

    扩充逻辑卷的空间

    lvextend -l +100%free /dev/vg_mysql/lv_data
    # 另一种格式
    lvextend -l +100%vg_mysql /dev/vg_mysql/lv_data
    

    查看并扩充文件系统的空间

    blkid /dev/vg_mysql/lv_data
    
    # 对于 ext4 文件系统使用
    resize2fs /dev/vg_mysql/lv_data
    
    # 对于 xfs 文件系统使用
    xfs_growfs /dev/vg_mysql/lv_data
    

    使用选项 -r 可以同时扩展逻辑卷空间并调整文件系统的空间

    lvextend -r -L +1G /dev/vg_mysql/lv_data
    

从以下实验室可知,使用逻辑卷的性能比普通分区要好多了。

dd if=/dev/zero of=/dev/sda2/image bs=1M count=1024
dd if=/dev/zero of=/dev/vg_mysql/lv_data/image bs=1M count=1024

其实物理卷可以使用 RAID 技术,这样的结合,不仅有冗余,性能也好。

注意:想要缩减逻辑卷,必须要取消挂载才能操作及文件系统必须是 ‘ext’ 系列,‘xfs’ 不支持缩减,并且,缩减的空间不能出现比现有数据需要的空间少的情况。

为了确保数据的安全性,建议缩减前对数据进行备份。

# 取消挂载
umount /dev/VGNAME/LVNAME
# 检查文件系统
e2fsck -f /dev/VGNAME/LVNAME
# 缩小文件系统空间大小
resize2fs /dev/VGNAME/LVNAME N[mMgGtT]
# 缩减逻辑卷大小
lvreduce -L [-]N[mMgGtT] /dev/VGNAME/LVNAME
# 重新挂载
mount ...

如果想要把已经使用的物理磁盘拆除或更换,需要把该磁盘已被使用的 ‘pe’ 移动到同一个卷组的 ‘pe’ 上去。条件是这些要移动的空间在同一个卷组中是空间可以存放的。

# 移走
pvmove /dev/sde1
# 从组中删除
vgreduce vg0 /dev/sde1
# 删除物理卷
pvremove /dev/sde1
跨主机迁移卷组

源计算机上

  1. umount 所有卷组上的逻辑卷

  2. 禁用卷组

    vgchange -a n vg0
    lvdisplay
    
  3. 到处卷组

    vgexport vg0
    pvscan
    vgdisplay
    
  4. 拆下所有的旧硬盘并装入目标电脑,并导入卷组

    vgimport vg0
    
  5. 启用

    vgchange -ay vg0
    
  6. mount 所有卷组上的逻辑卷

逻辑卷快照

逻辑卷快照原理

快照是特殊的逻辑卷。在创建逻辑卷快照时,创建一个与源卷相同或较小的快照空间,此时该卷是空的,只有在源卷发生改变时才把发生变化的原始文件拷贝出来。对于不断发生变化的卷中,想要复制或备份现有数据,快照时最合适的选择。对于没有发生变化的数据,两个卷是共享的。

由于快照区与原卷的 lv 共享很多 PE 块,因此快照与原卷的 lv 必须在同一个 vg 中,系统恢复时的文件大小不能高于快照区的实际大小。

实现逻辑卷快照

示例:

mkfs.ext4 /dev/vg0/data
mount /dev/vg0/data /mnt/data

# 为现有逻辑卷创建快照
lvcreate -l 64 -s -n data-snapshot -p r /dev/vgo/data
# 或者
lvcreate -l 64 -s -n data-snapshot /dev/vgo/data
# 挂载快照
mkdir -p /mnt/snap
# 在 xfs 文件系统中需要选项 -o nouuid
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 /dev/databackup
lvremove /dev/vg0/databackup
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值