Linux software RAID
来源:互联网 发布:电信是什么网络模式 编辑:程序博客网 时间:2024/06/07 02:00
RAID 0: (Disk Striping)
通过使用RAID 0,RAID Controller可以试图将数据平均的分布到RAID set中去进行存储。比喻来说,可以将Disk比作是装食物的盘子,而将数据比喻成蛋糕,比方说现在你用四种口味的蛋糕,分别为巧克力,香草,樱桃和草莓 。RAID 0的初始化过程就像是将蛋糕切片,并且把切片分别发到不同的盘子当中去。而RAID 0的driver使得operating System感觉起来像是这个蛋糕完整无缺地,没有被分割地放在一个大的盘子当中去。 比如说,有四块9GB的硬盘被配置到RAID 0的RAID set中去,这时,操作系统就仅会感觉它只拥有一块36GB的硬盘。
RAID 0的目标是在多个存储设备上容纳一个大的文件系统,同时提供data redundancy. RAID 0的优点是数据访问速度。一个文件被平均存储在4个disk上,则最快读取该文件的速度可以提高四倍(多块硬盘同时读取4个block并发不用等待I/O)
RAID 0可以容纳多个容量不相同的disk。当RAID在最新的disk上用尽striping 空间后, 它会在其他盘的剩余空间上进行striping。 当这种情况发生后,在这部分空间上进行数据访问的速度会降低,因为可用的RAID drive总量变少了。 如现在又四块盘做成RAID 0, 大小分别为5GB 5GB 5GB 6GB。 第四块盘的最后一个G的空间被striping 后, 如果访问其上的数据,则仅有一个drive可用,而之前的5GB可以从4个DRIVE同时读取。
RAID 1: (Disk Mirroring)
RAID 1, 简单来说,数据除了会被写入到目标盘,还会被clone到另一个 disk。当在RAID set中的一块盘fail时, 另外一块盘还可以正常工作。当坏盘被替换或修复后,数据会自动从当前正常工作的盘复制到新替换的盘。所以,RAID 1 使得热备空闲盘成为可能,当primary disk 出现错误的时候,热备空闲盘会被自动使用来替换损坏的盘。
RAID 1提供了数据冗余,但是失去了RAID 0速度优势。RAID 1的一个缺点是每次OS想RAID 1的磁盘写数据的时候,都需要写两次。当然这是software RAID才会使用这种策略, 当使用hardware RAID的时候,OS仅写一次到RAID controller,由硬件RAID controller来完成写操作到mirror disks。
RAID 1的一个局限是他所能使用的disk总量是两个disk中最小的disk的磁盘容量。
RAID 4:
RAID 4和RAID 0 类似, 此外,RAID 4 通过将错误校正和奇偶校验信息写入另外一块盘parity disk。 所以 要组成RAID 4至少需要三块盘。而且自多仅允许一块盘损坏。如果损坏盘被替换掉以后,其上存储的原来的数据可以在parity disk帮助下恢复出来。
RAID 4结合了RAID 0的速度优势和RAID 1的数据冗余特点,但是,它最主要的缺点是它上存储的数据时striping的,但是parity 信息不被striping。所以,每次数据被写入RAID set的数据部分的时候,都需要更新parity disk上的数据,所以parity disk很容易成为瓶颈。正是因为这个原因,RAID 4 没有被广泛使用。
RAID 5:
RAID 5是为了克服RAID 4的缺点而出现的, 对于数据部分它同RAID 4使用striping存储,同时和RAID4 不一样的是对于parity部分,将和数据部分一起,进行striping存储。因此,RAID 5很好的将RAID 0 和RAID 1的优点结合起来。
RAID 5 最少需要三个disk或partition
开始之前
对于SCSI或IDE的hardware RAID,有专门的hardware-based RAID controller。一般来说RAID controller有自己的BIOS,你可以在你的系统完成POST(Power on self test)自后来多RAID controller进行配置。Hareware-based RAID 对于操作系统来说完全透明,硬件controller会完成所有的工作而不需要操作系统的干预。
如果Hardware-based RAID controller 不可用,可以使用software RAID。
IDE Drives
为了节省成本,许多小公司的系统会使用IDE disk,但是这会有很多限制。
1 IDE cable的长度很受限,仅有几英尺长。
2 IDE 不支持热交换。也就是说,不可以在系统运行时对IDE设备进行替换。
3 一个IDE controller只能支持两个设备
4 IDE 总线的性能会随着新的设备的连入而变差
5 IDE总线的一个设备的failure会使得另外一个连在同一总线的设备工作不正常。这将是致命的当一个RAID set的两个设备连在同一个cable上。
因此,在使用RAID的时候,构成RAID set的disk来自不同的controller。
Serial ATA Drives
SATA正在替换IDE disk,对于IDE来说,它拥有许多优点:
1 数据cable最长1米
2 SATA拥有更好的错误检错功能
3 每个cable仅有一个SATA设备相连,可以进行热交换,也就是在系统运行的时候进行替换SATA设备
4 没有类似于IDE设备的master和slave之分,更容易配置
5 IDE设备的最高速率为133MB/s 而SATA的是150MB/s,并且在未来有望达到600MB/s
SCSI Drives
SCSI hard disk 拥有更多优点,使得其对于IDE和SATA硬盘来说,更适合来实现RAID。
1 SCSI controller具有更强的容错功能,总线上的一个设备出错很少会影响到其他连着SCSI接口总线上的设备
2 SCSI cable最长可以达到25米,使得SCSI设备更适合数据中心应用
3 Much more than two devices may be connected to a SCSI cable bus. It can accommodate 7 (single-ended SCSI) or 15 (all other SCSI types) devices.
4 一些SCSI设备支持热交换。.
5 SCSI 支持高达 640 Mbytes/s 的传输速率。.
对于software RAID来说,是使用partition还是使用整个disk?
通常来说,在一个disk上的模型parition上做RAID,在另外一些parition作为正常的分区使用不是个好主意。显而易见,这样的话如果一个disk failure会导致整个该磁盘上的整个系统不可用。
如果你决定使用software RAID,一个disk上的所有parition都应该被划到RAID set当中,通常简单的做法是对用于software RAID的disk来说,只建立一个parition。
Disk /dev/sdb: 10.7 GB, 10737254400 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00072406
Device Boot Start End Blocks Id System
/dev/sdb1 1 1305 10482381 fd Linux raid autodetect
Disk /dev/sdc: 21.4 GB, 21474508800 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000053ad
Device Boot Start End Blocks Id System
/dev/sdc1 1 2610 20964793+ fd Linux raid autodetect
注意,建立software RAID之前备份好你原有的数据
Software RAID 会建立一个虚拟的disk, 这个disk是由物理上一个或多个disk或partion组成。建立好的RAID disk要被使用,就首先要被格式化。所以其上的原有数据将会被破坏。
在single user mode 下配置Software RAID
因为你将要修改你的disk结构,所以为了防止在你修改的同时,有人使用你需要创建software RAID disk而使用的物理disk或partition,所以要使你的系统处于single user mode 来杜绝此类情况的放生。
init 1 # runleve set to 1
配置software RAID
准备好你将在哪些disk或parition上建立software RAID。这里假设在如下三个分区上建立一个RAID 5
/dev/hde1/dev/hdf2/dev/hdg1
注意到这三个partition来自不同的disk,分别是hde, hdf和hdg.
如果你需要查看系统上所有的可用的filesystem,包括已经mount的和unmount的。使用fdisk –l和df –k 来查看详情.
[root@bigboy tmp]# fdisk -lDisk /dev/hda: 12.0 GB, 12072517632 bytes255 heads, 63 sectors/track, 1467 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System/dev/hda1 * 1 13 104391 83 Linux/dev/hda2 14 144 1052257+ 83 Linux/dev/hda3 145 209 522112+ 82 Linux swap/dev/hda4 210 1467 10104885 5 Extended/dev/hda5 210 655 3582463+ 83 Linux....../dev/hda15 1455 1467 104391 83 Linux[root@bigboy tmp]#[root@bigboy tmp]# df -kFilesystem 1K-blocks Used Available Use% Mounted on/dev/hda2 1035692 163916 819164 17% //dev/hda1 101086 8357 87510 9% /boot/dev/hda15 101086 4127 91740 5% /data1........./dev/hda7 5336664 464228 4601344 10% /var[root@bigboy tmp]#
你不希望其他人使用你将要建立software RAID的disk或partition,所以先将你要是有的/dev/hde1 /dev/hdf2 /dev/hdg1 unmount掉。
接下来,使用fdisk来设置你要使用的partition:
[root@bigboy tmp]# fdisk /dev/hdeThe number of cylinders for this disk is set to 8355. There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)Command (m for help):
输入m命令来获取帮助。
/dev/hde1 是/dev/hde上的第一个parition,使用fdisk的t命令来指定partition number和设置type code。如果不知道对应得type code是L命令来获取帮助。
Command (m for help): tPartition number (1-5): 1Hex code (type L to list codes): L.........16 Hidden FAT16 61 SpeedStor f2 DOS secondary17 Hidden HPFS/NTF 63 GNU HURD or Sys fd Linux raid auto18 AST SmartSleep 64 Novell Netware fe LANstep1b Hidden Win95 FA 65 Novell Netware ff BBTHex code (type L to list codes): fdChanged system type of partition 1 to fd (Linux raid autodetect)Command (m for help):为了确保你上面所做的改动已经被保存下来,是fdisk p命令来查看当前的partition table。
Command (m for help): pDisk /dev/hde: 4311 MB, 4311982080 bytes16 heads, 63 sectors/track, 8355 cylindersUnits = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Id System/dev/hde1 1 4088 2060320+ fd Linux raid autodetect/dev/hde2 4089 5713 819000 83 Linux/dev/hde4 6608 8355 880992 5 Extended/dev/hde5 6608 7500 450040+ 83 Linux/dev/hde6 7501 8355 430888+ 83 LinuxCommand (m for help):
最后使用fdisk 的w命令将partition table 存储在硬盘上。对于剩下的disk或partition做同样的操作。接下来,开始准备RAID set:因为所以需要的partition都已经准备完毕,需要将它们合并到一个新的RAID partition当中去,然后我们会对新的RAID partition进行格式化并且执行mount操作。
创建RAID Set
使用mdadm命令。
[root@bigboy tmp]# mdadm --create --verbose /dev/md0 --level=5 / --raid-devices=3 /dev/hde1 /dev/hdf2 /dev/hdg1
其中 –create 是创建一个RAID set, --level=5是RAID 5 --raid-device是我们刚才准备要做RAID的三个partition。
确认RAID是否被正确初始化
raid set创建完成后,可以通过查看/proc/mdstat 来查看其状态。
root@bigboy tmp]# cat /proc/mdstatPersonalities : [raid5]read_ahead 1024 sectorsmd0 : active raid5 hdg1[2] hde1[1] hdf2[0] 4120448 blocks level 5, 32k chunk, algorithm 3 [3/3] [UUU]unused devices:
格式化新的RAID Set
mkfs.ext3在new RAID set上创建ext3 文件系统
[root@bigboy tmp]# mkfs.ext3 /dev/md0mke2fs 1.39 (29-May-2006)Filesystem label=OS type: LinuxBlock size=1024 (log=0)Fragment size=1024 (log=0)36144 inodes, 144192 blocks7209 blocks (5.00%) reserved for the super userFirst data block=1Maximum filesystem blocks=6737100818 block groups8192 blocks per group, 8192 fragments per group2008 inodes per groupSuperblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729Writing inode tables: done Creating journal (4096 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 33 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.
创建mdadm.conf 配置文件
系统不会记住构成你RAID set的所有组件,所以你需要将这些信息记录到mdadm.conf 文件中去。使用mdadm –detail –scan –verbose > /etc/mdadm.conf
为新的RAID set创建一个挂载点
mkdir /mnt/raid
编辑/ect/fstab 开机自动挂载
/dev/md0 /mnt/raid ext3 defaults 1 2
mount RAID set
mount –a or mount /dev/md0 /mnt/raid
检查NEW RAID的状态:
/proc/mdstat
- Linux Software raid
- Linux software RAID
- Software RAID For Linux
- Software Raid
- Debian Linux Software RAID 1 實作
- Linux Software RAID step by step
- Linux下的软磁盘矩阵Software RAID实现步骤简介
- Linux中Software RAID的实现和性能分析
- 软件磁盘阵列 (Software RAID)
- mdadm创建software RAID
- 软件磁盘阵列(Software RAID)
- mdadm彻底删除software RAID
- 25.软件磁盘阵列(Software RAID)
- Linux software RAID 1 - root filesystem becomes read-only after a fault on one disk
- 5 Tips To Speed Up Linux Software Raid Rebuilding And Re-syncing
- 在已运行的CentOS 5.3上建立Linux Software Raid 1
- linux RAID
- linux-raid
- zoj 1074 || poj 1050 To the Max(简单DP)
- Beginning Linux Programming chapter 13
- BeauGauge Suite V2 更新至 2.2
- 图表控件--MSChart(3)不闪烁刷新
- 思科认证-课程体系
- Linux software RAID
- Google C++ 编码风格精简
- 360惊天后门曝光:“盗梦盒子”重现江湖
- window.location.href在IE6下面竟然不跳转
- 基于Ubuntu 10.10的最新版fcitx小企鹅输入法的安装配置
- 数据库项目小结
- wine在ubuntu下的使用TM2009beta1的技巧
- 解除约束的oracle的数据库备份方法
- linux乱码 函数传参