磁盘阵列配置与说明

分区:
 第一个分区都是/boot
 尽可能把经常读写的数据放在越靠前的分区


选择适当的文件系统:
 ext4 --> ext3

 rhel5 : 安装e4fsprogs软件包 ---> mkfs.ext4


 块大小
  # mkfs.ext4 -b 4096 /dev/sda8

  块越大,适合存放大文件,容易浪费空间
  块越小,适合存放小文件,节省空间

 挂载:
  noatime <---不会去更新文件的访问时间。
   对于一些访问时间并不敏感的应用,干脆就关闭。
  # mount -o noatime  /dev/sda8 /web
  
  noacl <---取消访问控制列表

 IO算法
  内核如何执行IO指令才高效

查看当某个块设备采用哪种IO算法执行IO指令
# cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]

anticipatory  预判断算法。适合读写速度特别慢的设备。每执行一个IO指令后,都会浪费2ms时间去思考下一个IO可能会读取哪里的数据,先读取了,加载到内存。

deadline 尽可能在更短的时间内完成更多的IO指令。可能会出现不公平的现象。
cfq  默认采用的算法。完全公平算。
noop  啥算法都没有,哪个程序的IO指令先产生就先执行的。

 调整前,使用vmstat,iostat记录硬盘的读写性能数据。修改IO算法,
 采集几天的性能数据,作对比,才能判断出哪种算法具体的应用。


如何调整?
 临时调整
# echo "deadline" > /sys/block/sda/queue/scheduler
# cat /sys/block/sda/queue/scheduler
noop anticipatory [deadline] cfq


开机就生效:
# vim grub.conf
....
....
        kernel /vmlinuz-2.6.32-220.el6.x86_64 ro ... elevator=deadline

 

 磁盘阵列:
  raid1 ,raid0 , raid5  ,raid1+0  , raid0+1
  把多个块设备按照某种算法组合起来,读写数据的时候,是多个块设备一起工作。不同的组合有不同的功能。


 raid0
  至少两个块设备。
  读写效率提升N倍(N就是代表硬盘的个数)
  缺点:坏掉任意一个设备,整个组合就不能使用,数据就会丢失。


 raid1
  一般需要两个块设备,但也至少两个。
  读写效率并没有提供,有些芯片能够提高读效率
  提供数据的访问冗余。

 raid5
  至少3个设备,设备越多,数据读写性能越好。
  有数据冗余的功能。
  只允许坏掉任意一个设备。
  支持热插拔

 raid10 先用四个设备分别做两组raid1设备,然后把两个raid1设备再做raid0
 
   

 

做实验的时候,仅仅使用不同的分区来模拟不同的块设备。事实上完全实现不了任何的调优的功能。


要求:硬盘的容量、型号应该是一致。

分3-4个容量一样的分区,模拟原始设备。
 类型可以修改为fd

 

例子:分别实现raid0和raid1


创建一个raid0设备组合md0,由sda7和sda8来完成,这个过程叫组装:
# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda7 /dev/sda8


# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sda8[1] sda7[0]
      4206592 blocks super 1.2 512k chunks
 

建议把该软raid设备当成分区来处理,直接就对它进行格式化使用

# mkfs.ext4 /dev/md0
# mount /dev/md0 /mnt/raid0


创建一个raid1设备组合md1,由sda9和sda10来完成,这个过程叫组装:
# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda{9,10}

查看创建的过程:
# watch "cat /proc/mdstat"
Every 2.0s: cat /proc/mdstat                   Sat Dec  8 15:05:13 2012

Personalities : [raid0] [raid1]
md1 : active raid1 sda10[1] sda9[0]
      2103447 blocks super 1.2 [2/2] [UU]
      [========>............]  resync = 42.4% (894400/2103447) finish=0
.6min speed=29813K/sec

 

 


验证:raid0和raid1的原理

# mount -o remount,sync /dev/md0
一个终端在不断的监控
# iostat -m -d sda7 sda8 2
...
Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda7             37.00         0.00        10.40          0         20
sda8             46.00         0.00        10.50          0         21
...

另外一个终端测试
# dd if=/dev/zero of=/mnt/raid0/500M bs=1M count=512


数据冗余验证:
 取消挂载
 破坏一个分区的数据 
# dd if=/dev/zero of=/dev/sda8
 再也无法挂载了。

无法挂载
# mount /dev/md0 /mnt/raid0
mount: you must specify the filesystem type

# mdadm /dev/md1 --fail /dev/sda9
mdadm: set /dev/sda9 faulty in /dev/md1  <---把md1组合中的sda9设定为故障设备。
# dd if=/dev/zero of=/dev/sda9  <---才去破坏数据

# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sda9[0](F) sda10[1] <---软件raid驱动就认为sda9是失效,不以它为标准
      2103447 blocks super 1.2 [2/1] [_U] 

vim /etc/mdadm.conf
mdadm -detail --scan >>/etc/mdadm.conf
DEVICE /dev/sda7 /dev/sda8 /dev/sda9 /dev/sda10
  
相关的管理命令:
 把组合的组装的信息保存到配置文件中,便于下次自动的重新组装。
# vim  /etc/mdadm.conf
DEVICE  /dev/sda7 /dev/sda8 /dev/sda9 /dev/sda10

# mdadm --detail --scan >> /etc/mdadm.conf

最后配置文件应该是类似这样的:
# cat /etc/mdadm.conf
DEVICE  /dev/sda7 /dev/sda8 /dev/sda9 /dev/sda10
ARRAY /dev/md0 metadata=1.2 name=www.upl.com:0 UUID=de9a3204:1f2dfd23:618d96fa:f5bf6639
ARRAY /dev/md1 metadata=1.2 name=www.upl.com:1 UUID=e668730e:7c05436e:1217fe71:033499db

停止组合
# umount /dev/md0
# umount /dev/md1

# mdadm  --stop /dev/md0
mdadm: stopped /dev/md0

# mdadm  --stop /dev/md1
mdadm: stopped /dev/md1

# cat /proc/mdstat
Personalities : [raid0] [raid1]
unused devices:

# mdadm -As /dev/md0 《--如果mdadm.conf存在md0的组装信息,就能自动的组装
mdadm: /dev/md0 has been started with 2 drives.

# mdadm -As /dev/md1


如果当初的组装信息并没有保存在/etc/mdadm.conf配置文件中,那该如何重新组装:
 方法1:重启,操作系统帮我们自动识别并且组装
 
 方法2:手工用命令识别,然后组装。


# mdadm -E /dev/sda7
/dev/sda7:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : de9a3204:1f2dfd23:618d96fa:f5bf6639  《---
         Name : www.upl.com:0  (local to host www.upl.com)
  Creation Time : Sat Dec  8 15:00:44 2012
     Raid Level : raid0  《---
   Raid Devices : 2

....

# mdadm -E /dev/sda8
/dev/sda8:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : de9a3204:1f2dfd23:618d96fa:f5bf6639  <---
           Name : www.upl.com:0  (local to host www.upl.com)
  Creation Time : Sat Dec  8 15:00:44 2012
     Raid Level : raid0
   Raid Devices : 2


查找本机所有的块设备,主要他们曾经组装过一个uuid="xxxx",就会把他们找到,重新组装成md0
# mdadm -A --uuid="de9a3204:1f2dfd23:618d96fa:f5bf6639" /dev/md0
mdadm: /dev/md0 has been started with 2 drives.

 之后把这些信息按照上面教的方法保存到配置文件

 

例子: 创建raid5设备

把原来的块设备上所有旧的组装信息都删除掉:
# mdadm -S /dev/md0
# mdadm -S /dev/md1

# mdadm --zero-superblock /dev/sda{7,8,9,10}
  mdadm --zero-superblock /dev/sda{7,8,9,10}

再去创建raid5设备
  mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda{7,8,9} --spare-devices=1 /dev/sda10
# mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda{7,8,9} --spare-devices=1 /dev/sda10


查看动态创建的过程:
# watch "cat /proc/mdstat"
Every 2.0s: cat /proc/mdstat                   Sat Dec  8 16:21:15 2012

Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sda9[4] sda10[3](S) sda8[1] sda7[0]
      4206592 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [
UU_]
      [==>..................]  recovery = 11.0% (232780/2103296) finish
=1.7min speed=17906K/sec

unused devices:

创建完毕:
# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sda9[4] sda10[3](S) sda8[1] sda7[0]
      4206592 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

格式化,挂载,测试
# mkfs.ext4 /dev/md0
# mount /dev/md0 /mnt/raid5


思考:如何验证raid5的原理?


# mdadm /dev/md0 --fail /dev/sda9 <---通过命令告诉raid驱动,sda9已经被损坏了
mdadm: set /dev/sda9 faulty in /dev/md0

# cat /proc/mdstat   <---后台在自动使用sda10后备设备自动恢复。
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sda9[4](F) sda10[3] sda8[1] sda7[0]
      4206592 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [>....................]  recovery =  2.4% (50964/2103296) finish=1.3min speed=25482K/sec
     
unused devices:

在算的过程中,raid组合继续可以使用。

你可能感兴趣的:(磁盘阵列配置与说明)