Linux基础知识 ·

Linux磁盘RAID阵列与LVM逻辑卷

[隐藏]

磁盘阵列

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

磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。

RAID 0

RAID 0是最早出现的RAID模式,即Data Stripping数据分条技术。RAID 0是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。RAID 0没有提供冗余或错误修复能力,但实现成本相对是最低的。

RAID 0 一种实现方式为串联形式集合为一个卷集,在使用中电脑数据依次写入到各块硬盘中,它的最大优点就是可以整倍的提高硬盘的容量。如使用了三块80GB的硬盘组建成RAID 0模式,那么磁盘容量就会是240GB。其速度方面,各单独一块硬盘的速度完全相同。最大的缺点在于任何一块硬盘出现故障,整个系统将会受到破坏,可靠性仅为单独一块硬盘的1/N。

RAID 0 的另一种方式是在N块硬盘上选择合理的带区来创建带区集。其原理就是将原先顺序写入的数据被分散到所有的四块硬盘中同时进行读写。四块硬盘的并行操作使同一时间内磁盘读写的速度提升了4倍。

RAID 0如果任何一块硬盘出现故障,无法进行任何补救,只适用于对数据安全要求不高的环境。

RAID 1

RAID 1 相当于做镜像硬盘,最低实现需要2块硬盘,当其中一块写入数据时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。

另外,出现硬盘故障的RAID系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。因此,RAID 1多用在保存关键性的重要数据的场合。

RAID 0+1

RAID 0+1名称上我们便可以看出是RAID0与RAID1的结合体。在我们单独使用RAID 1也会出现类似单独使用RAID 0那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为RAID 0+1。把RAID0和RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。RAID0+1要在磁盘镜像中建立带区集至少4个硬盘。

RAID 5

RAID 5 结合了RAID2、3、4的优点,至少需要三块以上硬盘才能组成,这种磁盘阵列的数据写入有点类似于RAID 0,但是会在每块磁盘的写入过程中,每块磁盘还会写入一个同位检查数据,这个数据会记录其他磁盘的备份数据,在一块磁盘损坏是,能够通过同位检查数据修复损坏的数据,但是最多只能允许损坏一块硬盘。

RAID 6

RAID 6 相当于RAID 5的扩展,RAID 5只会对数据做一次同位检查数据,而RAID 6则会做两次,所以就需要两块硬盘存放同位检查数据,这样就可以容许损坏两块硬盘,数据安全能够有很好的保障,但是代价也是非常高昂。

RAID 7

RAID7所有的I/O传送均是同步进行的,可以分别控制,这样提高了系统的并行性,提高系统访问数据的速度;每个磁盘都带有高速缓冲存储器,实时操作系统可以使用任何实时操作芯片,达到不同实时系统的需要。允许使用SNMP协议进行管理和监视,可以对校验区指定独立的传送信道以提高效率。可以连接多台主机,因为加入高速缓冲存储器,当多用户访问系统时,访问时间几乎接近于0。由于采用并行结构,因此数据访问效率大大提高。需要注意的是它引入了一个高速缓冲存储器,这有利有弊,因为一旦系统断电,在高速缓冲存储器内的数据就会全部丢失,因此需要和UPS一起工作。当然了,这么快的东西,价格也非常昂贵。

Spare Disk

RAID 磁盘阵列中的备用磁盘,当一块硬盘损坏时,能够自动启用备用磁盘,修复损坏数据(RAID 5、6),能够极大的降低修复时间并起到保护数据的作用。

 

逻辑卷 LVM

逻辑卷(Logical Volume)是将多块物理分区集合在一起,让它们使用起来就像是一块磁盘一样。

其优点是可以进行在线扩容,容量管理相对方便,能够将多个硬盘集合为一个逻辑上的大容量硬盘。

其缺点也是非常致命的,也就是一旦出现硬盘损坏,数据将无法修复。

PV(Physical Volume)物理卷

我们的实际分区需要调整系统标示符(system ID)成为8e (LVM 的标识符),然后经过pvcreate 的命令将它转换成LVM 最底层的物理卷(PV),之后才能将这些PV加以利用,调整system ID的命令为fdisk 。

若是使用整块硬盘,则不需要此步骤。

VG(Volume Group)卷组

卷组(VG)就是将物理卷(PV)加入到一个组,使其容量整合在一块。

每个VG最多仅能包含65534个PE,若使用LVM默认参数,PE=4M,则一个VG最大可达256GB的容量。

PE(Physical Extend)物理扩展块

每个VG最多仅能包含65534个PE,若使用LVM默认参数,PE=4M,则一个VG最大可达256GB的容量。

PE是LVM 最小的存储块,相当于文件系统中的数据块(block),所以调整PE大小,将会影响VG的最大容量。

LV(Logical Volume)逻辑卷

从卷组(VG)中,划分出来的物理扩展块(PE)的集合,类似于文件系统中的分区。

LVM写入机制

线性模式(linrae):写入数据时,依次写入,当一个逻辑卷数据写满后再使用下一块逻辑卷。

交错模式(triped):写入数据方式类似于RAID 0 ,理论上性能会好一点。

基本上使用LVM主要是为了实现弹性的容量调整,而性能只是次级考虑的问题,并且LVM 的线性模式不不如RAID 安全与成熟,如果追求性能与备份,可以直接使用RAID。

LVM搭建命令

任务PV阶段VG阶段LV阶段
查找pvscanvgscanlvscan
新建pvcreatevgcreatelvcreate
显示pvdisplayvgdisplaylvdisplay
增加vgextendlvextend/lvresize
减少vgreducelvreduce/lvresize
删除pvremovevgremovelvremove
改变容量lvresize
改变属性pvchangevgchangelvchange

PV阶段:

pvcreate:建立物理卷(分区需要修改system ID)。

pvscan:查询系统中的物理卷(PV)。

pvdisplay:显示系统上的物理卷状态。

pvremove:删除物理卷的PV属性,让该设备不再具有PV属性。

VG阶段:

vgcreate:新建一个卷组(VG)。

vgscan:查询系统中的卷组。

vgdisplay:显示系统上的卷组状态。

vgrxtend:在VG中增加PV。

vgreduce:在VG中删除PV。

vgchange:设置VG是否启动。

vgremove:删除一个VG。

LV阶段:

lvcreate:新建一个逻辑卷(LV)。

lvscan:查询系统中的逻辑卷。

lvdisplay:显示系统中逻辑卷的状态。

lvextend:增加逻辑卷大小。

lvreduce:减少逻辑卷大小。

lvremove:删除一个逻辑卷。

lvresize:调整逻辑卷的大小。

LVM的快照功能

LVM的快照就是将创建快照时的文件元数据记录,就像是照了一张照片,当数据变动时,会将变动的数据备份在快照那时的状态,没有变动的数据则不会备份。

LVM中创建快照数据必须是一个VG的中才可以,因为LVM会在同一个VG下创建一个备份区,这个区域会将变动过得数据快照时的状态备份过来。

快照区域容量大小可以指定,快照备份前请大概计算好可能变动文件总大小,快照备份区一旦写满,则无法再改动此VG内所属LV的数据。

lvcreate -s 可创建快照 建议创建为只读,以免误操作删除。

而恢复快照,可以将快照区挂载起来,将其中的文件copy回来等等,方法很多。

创建LVM演示:

将sdb、sdc、sdd做为LVM,其中sdb划分一块分区,其余使用整块硬盘。

补充说明:若文件系统为xfs,则扩展文件系统命令为 xfs_growfs,并且无法缩小文件系统。

参与评论