Linux 磁盘管理之 RAID

时间:2021-10-27 05:13:58

 

 

1. 文件系统回顾:

1.1 命令名称:

  dumpe2fs - 显示ext2/ext3/ext4文件系统信息。

1.2 命令语法:

  dumpe2fs [ -bfhixV ] [ -o superblock=superblock ] [ -o blocksize=blocksize ] device

  语法看起来比较复杂,看不懂的直接看下面的常用命令选项和实例。

1.3 命令描述:

  显示device中文件系统的超级块和块组信息。

1.4 常用命令选项:  

    选项

    描述

    -b

    打印文件系统中的坏块

    -o

    不常用,检查严重损坏文件系统时指定

    -f

    强制显示所有信息,即便dumpe2fs对有些文件系统功能标识不能识别

    -i

    显示image文件系统信息。device指定image文件的路径

    -h

    只显示超级块信息

    -x

    将已分组的块的数量用十六进制显示

    -v

    显示dumpe2fs的版本号并推出

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.5 dumpe2fs 命令实例:用 dumpe2fs 查看 /dev/sda1 的文件系统信息:

[root@localhost ~]# dumpe2fs /dev/sda1 

1.6 小结:

        df 命令和 du 命令用来查文件系统大小,fsck 命令用来文件系统的修复,dumpe2fs 命令用来查看文件系统状态。

1.7 Linux 支持的文件系统:

ext2, ext3, ext4

reiserfs, xfs, jfs

GFS2, OCFS2

iso9660

FAT32, NTFS

2.Raid 的级别介绍:

2.1 raid:

redundant array of inexpensive disks  廉价冗余磁盘阵列。

2.2 raid 级别:

raid 的级别没有高低上下之分,只有不同的组合方式之分,raid 的不同级别指的是磁盘的不同连接方式。

2.3 raid 级别组合方式分类:

raid0、raid1、raid4、raid5、raid6、raid10、raid50

raid 从廉价冗余磁盘阵列演变成 redundant array of independent disks (独立冗余磁盘阵列)。

3. Raid 的实现方式:

        raid 可以通过硬件实现(集成、独立),也可以通过软件实现。硬件 raid 是在 BIOS 中设定的,使得操作系统中看到的是一块硬盘;软件 raid 是在操作系统中设定的。 

Linux 磁盘管理之 RAID

4. RAID 级别详解

4.1 RAID 0:

        条带卷(读写性能都很好)。可靠性差,任何一个磁盘挂掉都会导致数据不完整,无法恢复(没有容错能力)。将多快盘当做一块,将一个数据平均分成多个数据块存储。磁盘空间大小必须一样,总的磁盘空间=n*disks。

使用环境:临时目录中的临时数据存储。

 Linux 磁盘管理之 RAID

4.2 RAID 1:

镜像,对数据写入性能没有任何提高(甚至降低),读取性能提升(同raid 0),但是能保证磁盘坏掉一块数据不丢失。(磁盘空间为 1disk)。

使用环境:把服务器操作系统安装在 raid 1 上(一块硬盘挂掉操作系统不受影响),线上业务不终止,数据不丢失。

 Linux 磁盘管理之 RAID

 4.3 RAID 4:

        组合最少三块磁盘,理论上性能提升(n-1)倍,存储空间利用率为(n-1)*disks。如果在 raid 4 中有一个存放数据的磁盘挂掉,数据可以通过校验码计算回来。而且挂掉任何一个存放数据的盘,还是可以用的,但是每次读取数据都需通过校验码计算,大量增加磁盘 IO,有很大可能造成另外的磁盘损坏,造成严重的后果,所以有一块磁盘挂掉后应当立即修复。当一个存放数据的磁盘挂掉,重新修复,换了一块新磁盘,需要另外两个磁盘计算出数据,有很大几率造成另外两个磁盘压力太大导致损坏。(raid 4 并不常用)

 Linux 磁盘管理之 RAID

4.4 RAID 5:

它是 raid 4 的改进版,至少需要三块盘。把 raid 4 某一块磁盘(存放校验码的盘)的压力分摊到了各个磁盘上。容错能力:只能坏一块盘。

 Linux 磁盘管理之 RAID

4.5 RAID 6:

它是 raid 5 的改进版,至少需要四快盘。raid 6 把校验码放两次,把数据组合计算两次,因此它能够坏两块盘,浪费两块盘,更靠谱,但是浪费空间也更多,生产场景不多用。

4.6 RAID 10:

写入性能是每个磁盘的三倍,磁盘空间利用率是总空间大小的二分之一。比 raid 5 可靠。最少 4 块。

 Linux 磁盘管理之 RAID

4.7 RAID 50:

多组 raid 5 组合成 raid 0,就是 raid 50。至少需要 6 块盘。

5. RAID 的创建

5.1 RAID 的实现方式介绍

        RAID 的实现有软件 raid 和 硬件 raid 两种,硬件 riad 对于 Linux 而言所识别的设备是一个接口。对于软 raid  而言,实际上是在内核当中,是靠一个内核模块来实现的软件驱动,这个驱动能够将磁盘让内核模拟成 raid 设备来进行使用,因此存储数据的时候,内核中的模块可以实现将数据分成不同的块存放到磁盘上,实现条带、镜像等功能。这个模块叫 multi disk,简称 MD。它对应的文件都在 /dev/ 下,以 /dev/md#(数字) 方式存在(这个数字跟 raid 的级别没有关系)。

5.2 管理 RAID 的方式

       管理 Linux 软 raid 的命令:mdadm (创建、监控等多用途多功能命令)。它是一个模式化的命令,所以在不同情况下,选项的意义有时也不一样。

[root@master ~]# man mdadm

NAME    

       mdadm - manage MD devices aka Linux Software RAID

SYNOPSIS    #  语法。

       mdadm [mode] <raiddevice> [options] <component-devices>

MODES         #  模式。

    mdadm has several major modes of operation:

    Assemble   # 装配模式。

    Create        #  新建 raid 设备。    

    Follow or Monitor   #  监控模式,监控某个有容错的软 raid 中某一块(或所有)磁盘工作是否正常,该模式只对 raid 1、4、5、6、10 有意义。对 raid 0 没有意义。

    Grow    #  用来实现扩展或收缩(重塑)一个阵列。【有风险,不建议用】

    Manage  #  管理模式。

 This is for doing things to specific components of an array such as adding new spares and removing faulty devices.

OPTIONS

Options for selecting a mode are:

-C, --create

       Create a new array.

-A, --assemble

       Assemble a pre-existing array.

 -F, --follow, --monitor

       Select Monitor mode.

If a device is given before any options, or if the first option is  one of  --add,  --re-add, --add-spare, --fail, --remove, or --replace, then the MANAGE mode is assumed.

#  用以上类似于  --add,  --re-add, --add-spare, --fail, --remove, or --replace 默认就是管理模式。

在 Linux 上软 raid 所用的设备可以是任意块设备(同一磁盘不同分区 raid 无意义)。    

5.3 创建 RAID 的命令介绍

创建 raid 的命令行解释:

语法:mdadm [mode] <raiddevice> [options] <component-devices>

示例:mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda{4,5}

           #  给磁盘的  /dev/sda4 和 /dev/sda5 做 raid 0 。

选项:

For create, build, or grow:-l,--level

 -l, --level #  raid 级别,后面可以接数字,或者下面所示内容。

              Set  RAID  level.  When used with --create, options are: linear,

              raid0, 0, stripe, raid1, 1, mirror, raid4, 4, raid5,  5,  raid6,

              6, raid10, 10, multipath, mp, faulty, container.  Obviously some

              of these are synonymous.

 -c, --chunk #  指定 raid 分的数据块的大小,默认为 64 KB。

              Specify chunk size of kibibytes.  The default when  creating  an

              array  is 512KB.  To ensure compatibility with earlier versions,

              the default when building an array with no  persistent  metadata

              is  64KB.

-a, --auto{=yes,md,mdp,part,p}{NN}  # /对应的 dev/md# 设备文件不存在为其自动创建。

 -n, --raid-devices   #  指定组成 raid 的设备个数(数字)。

-x 指定空闲盘的个数。(和 上面 -n 个数加起来是总个数)。

5.4 创建软 RAID 实践示例

创建 raid 0 的详细步骤说明:

创建软 raid 需要先创建分区,并把2分区类型改为 Linux raid autodetect ,id列改为 fd 。

[root@doraid  ~]# fdisk -l    #  创建 /dev/sda4 和 /dev/sda5 即可做 raid 。

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          26      204800   83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2              26         157     1048576   82  Linux swap / Solaris

Partition 2 does not end on cylinder boundary.

/dev/sda3             157        1045     7134208   83  Linux

[root@doraid ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda{4,5}

#  给磁盘的  /dev/sda4 和 /dev/sda5 做 raid 0 。

[root@doraid ~]# cat /proc/mdstat    #  查看 raid 的详细信息。

[root@doraid ~]# mke2fs -j /dev/md0   #  格式化 raid 设备(不是格式化文件系统)。

[root@doraid ~]# mount /dev/md0 /mnt  # 挂载。

[root@doraid ~]# ls /mnt

lost+found

[root@doraid ~]# umount /dev/md0   #  卸载。