RAID

 

在这篇博客中介绍一下linux的存储设备。

在一个服务器中,存储数据的主要设备是磁盘,磁盘的好坏,以及磁盘读取数据的速度对一个服务器有很大的影响,尤其是web服务器,文件服务器,这些经常需要读取数据,而且对数据的读取速度要求很高的服务器,磁盘的速度对其服务好坏的影响可能是决定性的,而且对一些重要的数据,其数据的安全性将是非常重要的甚至数据远重要于其服务器的本身。

对于硬盘的种类,常见的有IDESATA SCSI等几种,其中SCSI硬盘的寿命,速度都是很不错的,但是其价格是同容量IDE SATA硬盘的八倍,所有有些人就想通过组合IDE硬盘,而达到SCSI的水平,而常见组合硬盘的方法就是RAID

而对硬盘的使用内核需要识别,而可以通过dd命令向内核传递RAID设备的驱动。而由于RAID的使用性很高,在最新的内核中已经加载有了对RAID的驱动。RAID设备在linux中被识别成/dev/md[N] N是数字。mdadm命令能够对RAID设备配置。

RAID的几种方法有RAID0RAID1RAID4RAID5RAID6RAID10RAID01等几种,下面我将分别接受这几种方法:

1.     RAID0 主要是考虑到性能,磁盘数大于等于2。写数据的时候被RAID控制器把数据分成多个块儿,分别存到不同的设备上。但这样有一个缺点就是没用容错,如果有一块儿坏了,所有的数据都将坏了,而且硬盘的大小最好能够相同。

2.     RAID1       通常要求有2的整数倍个数,这种方法完整备份了数据,对数据的速度稍有降低,且磁盘的利用率很低。但是对数据的读取有很大的提高。对数据的容错很好。

3.     RAID4       需要至少3块儿以上的硬盘,假如3块儿硬盘,前两块儿分别存储数据,第三块儿存数对前两块儿的校验码,这样允许有一块儿损坏。但数据存储时需要校验,而其当磁盘有损坏时,速度将变慢,而且恢复时候很容易出错。

4.     RAID5       是对RAID4的改进,是将校验的数据循环存储,这样可以是数据更加安全。

5.     RAID6       是将RAID5中的校验码提供两块儿硬盘数据来存储校验码,这样提供了两块儿磁盘的冗余,即允许两块儿磁盘同时出错。但这样对数据的恢复也是很困难的。

6.     RAID10     对数据先进行RAID0,然后RAID1,这种方法即提供了冗余,而且也提升了速度。

7.     RAID01     对数据先进行RAID1,然后RAID0,这种方法有冗余,但对数据的存储并没有多大的提升。

 

同时linux的内核还支持linear的方法,即串连,将多个容量小的磁盘串在一起,总容量是其所有容量的和,没有容错,也没有速度的提升,

对于以上的方法,没有最好最坏,需要根据实际情况来选择不同的方法。

实现软RAID需要使用命令mdadm,使用方法:

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

[mode]可以省略默认是监控模式

<raiddevice> 指定设备/dev/md0 /dev/md1

[options]   对于不同的mode选项不同,同一个选项的不同mode作用也不同

component-device  子设备如/dev/sda1 /dev/sda2

[mode]常见有

        Assemble   装配 A主机上的RAID的放到B主机上,这个mode让内核自动扫描所有的RAID。或者重新组织以前本机上的RAID设备。

        create 创建

        follow monitor 监控模式(对145610

        grow 新增一块儿硬盘

        manage 管理模式 如:模拟一块儿硬盘坏掉,来检测RAID

 

[options]   -A 装配模式

                  -C 创建

                  -F 监控

                  -G 增加模式

                  默认的是管理模式

                  -v --verbose 显示详细信息

                  -s  --scan    扫描系统中/proc/mdstat中的信息

                  -S 停止RAID设备

        创建模式

                  -n 组建RAID设备包括的磁盘数

                  -x 指定空闲设备的个数

                  -l  RAID的级别

                  -c chunk的大小(一定是2的整数次方倍或是磁盘块儿大小的2的整数倍)默认是64k

                  -f 在管理模式中设置某块儿磁盘坏了,用来测试

        杂项:

                  -D 查看RAID详细信息

补充命令:

mke2fs -j -b 4096 -E stride=16 /dev/md0,意为将/dev/md0格式化为ext3每块儿大小为4k,在使用RAID读取数据时每次存取16个块儿。这样可以提高RAID的磁盘性能。

命令示例:

    注意磁盘的分区需要调整为fb,分区后执行partprobe让内核重新读取分区

 mdadm -C /dev/md0 -a yes -n 2 -l 0 /dev/sda5 /dev/sda6    表示将/dev/sda5 /dev/sda6创建成/dev/md0RAID0设备其中-a yes指定如果/dev/md0不存在直接创建。

创建之后需要格式化mke2fs然后挂载,就能使用了。

查看RAID的状态:在系统中有个文件存储RAID的文件在/proc/mdstat中用命令cat /proc/mdstat 来查看。或者 mdadm -D /dev/md0查看RAID的信息。

在改变以前的分区时需要首先卸载分区

示例命令:

1. mdadm -A -s /dev/md0 需要/etc/mdadm.conf这个配置文件保存系统上正在使用的RAID的设备,可以用MAILADDR,指定将命令结果发到哪个邮箱中。其命令作用是:扫描当前系统上所有的RAID设备并把他们装配起来。

/etc/init.d/中有mdmonitor脚本,可以监控RAID将信息发送给/etc/mdadm.conf中定义的邮箱。

2. mdadm -C /dev/md1 -a yes -n 2 -l 1 -c 32 /dev/sdb1 /dev/sdb2创建RAID1/dev/sdb1/dev/sdb2

3. mdadm /dev/md1 -f /dev/sdb2 模拟将、/dev/sdb2设置为坏的磁盘

4. mdadm /dev/md1 -r /dev/sdb2 移除磁盘/dev/sdb2

5. mdadm /dev/md1 -a /dev/sdb3 添加磁盘/dev/sdb3

6. mdadm -f RAID0没法标示成坏盘

7. umount /dev/md0 mdadm -S /dev/md0 先卸载/dev/md0,然后停止/dev/md0

8. rm -rf /dev/md0 彻底删除/dev/md0设备(必须先停止设备)

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐