详解Linux环境软RAID 5建立过程

简介:
1:Raid定义
  RAID,全称Redundant Array of Inexpensive Disks,中文名为廉价磁盘冗余阵列.RAID可分为软RAID和硬RAID,软RAID是通过软件实现多块硬盘冗余的.而硬RAID是一般通过RAID卡来实现RAID的.前者配置简单,管理也比较灵活.对于中小企业来说不失为一最佳选择.硬RAID往往花费比较贵.不过,在性能方面具有一定优势.
 
2:RAID分类
  RAID可分为以下几种,做个表格认识下:
RAID 0 存取速度最快 没有容错
RAID 1 完全容错 成本高,硬盘使用率低.
RAID 3 写入性能最好 没有多任务功能
RAID 4 具备多任务及容错功能 Parity 磁盘驱动器造成性能瓶颈
RAID 5 具备多任务及容错功能 写入时有overhead
RAID 0+1 速度快、完全容错 成本高
 
3:Linux RAID 5实验详解
 
假设我有4块硬盘,(没有条件的朋友可以用虚拟机设置出4块硬盘出来).分别为/dev/sda  /dev/sdb  /dev/sdc  /dev/sdd.首先做的就是分区了.
[root@localhost /]# fdisk /dev/sda
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n #按n创建新分区
Command action
e extended
p primary partition (1-4) #输入p 选择创建主分区
p
Partition number (1-4): 1 #输入 1 创建第一个主分区
First cylinder (1-130, default 1): #直接回车,选择分区开始柱面这里就从 1 开始
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-102, default 130):
Using default value 130
Command (m for help): w #然后输入w写盘
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
 
其它分区照这样做全部分出一个区出来.下面是总分区信息:
[root@localhost /]# fdisk -l
Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         130     1044193+  83  Linux
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         130     1044193+  83  Linux
Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         130     1044193+  83  Linux
Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1         130     1044193+  83  Linux

 
下一步就是创建RAID了.
[root@localhost ~]# mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd[a-d]1               #意思是创建RAID设备名为md0, 级别为RAID 5
mdadm: array /dev/md0 started. 
   使用3个设备建立RAID,空余一个做备用.
 
OK,初步建立了RAID了,我们看下具体情况吧.
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
        Version : 00.90.01
  Creation Time : Fri Aug  3 13:53:34 2007
     Raid Level : raid5
     Array Size : 2088192 (2039.25 MiB 2138.31 MB)
    Device Size : 1044096 (1019.63 MiB 1069.15 MB)
   Raid Devices : 3
  Total Devices : 4
Preferred Minor : 0
    Persistence : Superblock is persistent
    Update Time : Fri Aug  3 13:54:02 2007
          State : clean
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1
         Layout : left-symmetric
     Chunk Size : 64K
    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1
       2       8       33        2      active sync   /dev/sdc1
       3       8       49       -1      spare   /dev/sdd1
           UUID : e62a8ca6:2033f8a1:f333e527:78b0278a
         Events : 0.2
 
让RAID开机启动.配置RIAD配置文件吧.默认名字为mdadm.conf,这个文件默认是不存在的,要自己建立.该配置文件存在的主要作用是系统启动的时候能够自动加载软RAID,同时也方便日后管理.
说明下,mdadm.conf文件主要由以下部分组成:DEVICES选项制定组成RAID所有设备, ARRAY选项指定阵列的设备名、RAID级别、阵列中活动设备的数目以及设备的UUID号.
[root@localhost ~]# mdadm --detail --scan > /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=e62a8ca6:2033f8a1:f333e527:78b0278a
   devices=/dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1
#默认格式是不正确的,需要做以下方式的修改:
[root@localhost ~]# vi /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
devices /dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=e62a8ca6:2033f8a1:f333e527:78b0278a
 
将/dev/md0创建文件系统,
[root@localhost ~]# mkfs.ext3 /dev/md0
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
261120 inodes, 522048 blocks
26102 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
16320 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
内容
 
挂载/dev/md0到系统中去,我们实验是否可用:
[root@localhost ~]# cd /
[root@localhost /]# mkdir mdadm
[root@localhost /]# mount /dev/md0 /mdadm/
[root@localhost /]# cd /mdadm/
[root@localhost mdadm]# ls
lost+found
[root@localhost mdadm]# cp /etc/services .
[root@localhost mdadm]# ls
lost+found  services
 
好了,如果其中某个硬盘坏了会怎么样呢?系统会自动停止这块硬盘的工作,然后让后备的那块硬盘顶上去工作.我们可以实验下.
[root@localhost mdadm]# mdadm /dev/md0 --fail /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0
[root@localhost mdadm]# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdc1[3](F) sdd1[2] sdb1[1] sda1[0] # F标签以为此盘为fail.
      2088192 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
 
如果我要移除一块坏的硬盘或添加一块硬盘呢?
#删除一块硬盘
[root@localhost mdadm]# mdadm /dev/md0 --remove /dev/sdc1
mdadm: hot removed /dev/sdc1
[root@localhost mdadm]# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdd1[2] sdb1[1] sda1[0]
      2088192 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
#增加一块硬盘
[root@localhost mdadm]# mdadm /dev/md0 --add /dev/sdc1
mdadm: hot added /dev/sdc1
[root@localhost mdadm]# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sdc1[3] sdd1[2] sdb1[1] sda1[0]
      2088192 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
 
好了,结束了,Boss巡逻过来了.


本文转自 wuqingying 51CTO博客,原文链接:http://blog.51cto.com/carywu/36803 ,如需转载请自行联系原作者
相关文章
|
16天前
|
关系型数据库 MySQL Linux
|
19天前
|
Linux
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
《FFmpeg开发实战》书中介绍了直播的RTSP和RTMP协议,以及新协议SRT和RIST。SRT是安全可靠传输协议,RIST是可靠的互联网流传输协议,两者于2017年发布。腾讯视频云采用SRT改善推流卡顿。以下是Linux环境下为FFmpeg集成libsrt和librist的步骤:下载安装源码,配置、编译和安装。要启用这些库,需重新配置FFmpeg,添加相关选项,然后编译和安装。成功后,通过`ffmpeg -version`检查版本信息以确认启用SRT和RIST支持。详细过程可参考书中相应章节。
30 1
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
|
14天前
|
安全 Ubuntu Linux
6 个受欢迎且好用的轻量级Linux桌面环境
Linux被认为是最安全的系统,但这并不意味着它不受恶意软件或其他安全漏洞的侵害。Linux系统的使用范围非常广泛,因此防范潜在威胁至关重要。在这里,将探索 2024 年适用于 Linux 的最佳防病毒软件。根据评级、功能以及与其他 Linux 发行版的兼容性列出了十款最佳防病毒软件,内容仅供分享,不做其它用途。
91 0
6 个受欢迎且好用的轻量级Linux桌面环境
|
28天前
|
安全 Linux
蓝易云 - Linux学习之RAID
以上就是Linux中RAID的基本概念和使用方法。
21 1
|
1月前
|
安全 Linux
蓝易云 - Linux学习之RAID
最后,你可以使用 `mdadm --detail /dev/md0`命令检查RAID状态。
23 2
|
19天前
|
Linux 网络安全 虚拟化
Ngnix04系统环境准备-上面软件是免费版的,下面是收费版的,他更快的原因使用了epoll模型,查看当前Linux系统版本, uname -a,VMWARE建议使用NAT,PC端电脑必须使用网线连接
Ngnix04系统环境准备-上面软件是免费版的,下面是收费版的,他更快的原因使用了epoll模型,查看当前Linux系统版本, uname -a,VMWARE建议使用NAT,PC端电脑必须使用网线连接
|
20天前
|
Linux Docker 容器
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的
|
20天前
|
负载均衡 Java Linux
黑马头条01,环境搭建,今日头条的介绍,今日头条的功能架构图,技术栈的说明,服务层,nacos(奶靠丝)安装,安装在Linux服务器上环境准备,
黑马头条01,环境搭建,今日头条的介绍,今日头条的功能架构图,技术栈的说明,服务层,nacos(奶靠丝)安装,安装在Linux服务器上环境准备,
|
23天前
|
Linux
【问题解决】Linux环境下pip下载缓慢
【问题解决】Linux环境下pip下载缓慢
12 0
|
27天前
|
Linux Shell Python
linux服务器python2升级安装python3.7环境
linux服务器python2升级安装python3.7环境
61 0