linux软raid阅读笔记,linux自学笔记——RAID级别特性以及软RAID的实现
RAID,Redundant Arrays of Inexpensive Disks廉价冗余磁盘阵列,又称为Redundant Arrays of Independent Disks,独立冗余磁盘阵列。
其基本原理就是利用多块较小的磁盘通过不同的组织方式,组成一个大的磁盘组,以提高磁盘的IO能力和耐用性。由于组织方式不同,所以把RAID分为多个级别。而最常用的是RAID0,RAID1,RAID5,RAID6,RAID10,RAID01.下面我们将对以上的级别进行比较分析。
级别:level
RAID 0:RAID 0又称为条带存储,基本原理就是将数据划分为数据块分别存于各个磁盘中。
读写性能得到提升,由于数据在写入时被划分为N块,理论上,读写速度将是之前的N倍;
可用空间为:N*min(min为容量最小的那块磁盘容量);
无容错能力,当一块磁盘损坏时,磁盘内的数据将会发生损坏;
最少磁盘数:2,2+;
RAID 0如右下图所示:
RAID 1:RAID 1又称为镜像存储,基本原理就是将数据分别存入磁盘阵列中的每一块磁盘中,实现数据备份。
读性能提升,写性能略有下降,由于数据被百分之百的复制到了其他磁盘,所以写性能下降,而读取性能提升;
可用空间为:1*min(min为容量最小的磁盘的容量);
有冗余能力,当一块磁盘发生损坏时,数据不会发生损坏;
最少磁盘数:2,2+;
RAID 1如下图所示:
RAID 5:RAID 5采用校验码和并行传送技术,把数据和对应的XOR校验码分别存储在不同的磁盘上,其中全部的的XOR
校验码占据的磁盘空间为一块磁盘的大小,剩余的N-1块磁盘存放数据。
读,写性能提升,由于在写入数据时需要不断计算校验码的关系,其写入速率略有下降;
可用空间:(N-1)*min(min为容量最小的磁盘的容量);
有容错能力:一块磁盘,当一块磁盘放生损坏时,通过校验码可以恢复磁盘的数据,数据安全性得到了保证;
最少磁盘数:3,3+;
RAID 5如右下图所示:
RAID 6:RAID6,采用两个独立分布式校验码,在RAID 5的基础上多了一个校验码;
读写性能提升,同样写入数据需要计算校验码关系,写入速率下降;
可用空间:(N-2)*min(容量最小的磁盘的容量)
有容错能力:2,采用两个分布式校验码,就算有两块磁盘同时损坏,数据也能恢复,数据非常安全;
最少磁盘数:4,4+;
RAID 6如右下图所示:
混合类型:
RAID 10:RAID 10就是先做RAID 1,通过控制器将磁盘划分为镜像卷,进行冗余,再做RAID 0,通过控制器将数据
分为条带存储。
读写性能提升;
可用空间:N*min/2,空间利用率降低了50%;
有容错能力:每组镜像最多只能坏一块;
最少磁盘数:4,4+;
RAID 10如右下图所示
RAID 01:RAID 01与RAID 10相反,先做RAID 0,后做RAID 1,读写性能得到了提升,空间利用率为50%;
以上为RAID常用的几个级别的特性,下面我们将对其实现方式做一些说明。
RAID的实现方式可分为两种,一种是硬件实现方式,另外一种是软件实现方式。硬件实现方式是基于硬件RAID卡实现,而软件的RAID是通过madm工具来实现的,我们先对模式化工具mdadm进行简单的了解。
mdadm命令:
mdadm - manage MD devices aka Linux Software RAID
语句格式为mdadm [mode] [options]
模式:
创建:-C
装配:-A
监控:-F
管理:-f,-r,-a
:/dev/md#
:任意块设备
-C:创建模式
-n #:使用#块磁盘来创建此设备;
-l #:指明要创建的RAID的级别;
-a {yes|no}:自动创建目标RAID的设备文件;
-c CHUNK SIZE:指明块大小;
-x #:指明空闲盘的个数;
-D:显示RAID的详细信息:
mdadm –D /dev/md#
管理模式:
-f:标记指定的磁盘为损坏;
-a:添加磁盘;
-r:移除磁盘;
观察md设备的状态:
cat /proc/mdstat
停止md设备:
mdadm –S /dev/md#
Watch命令:
-n #:刷新间隔,单位为秒;
Watch –n# ‘COMMAND’
以上为mdadm的基础用法,下面我们将通过实例建一个软RAID:
1.使用fdisk命令划分4个分区,其中3个做RAID 5,还有一个做空闲盘;
[root@claude ~]# fdisk/dev/sdb
Device contains neither a valid DOSpartition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with diskidentifier 0x262f7c1e.
Changes will remain in memory only, untilyou decide to write them.
After that, of course, the previous contentwon't be recoverable.
Warning: invalid flag 0x0000 of partitiontable 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated.It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G}(1-2610, default 2610):
Using default value 2610
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G}(1-2610, default 2610): +2G
Command (m for help): N
Command action
l logical (5 or over)
p primary partition (1-4)
L
First cylinder (263-2610, default 263):
Using default value 263
Last cylinder, +cylinders or +size{K,M,G}(263-2610, default 2610): +2G
Command (m for help): N
Command action
l logical (5 or over)
p primary partition (1-4)
L
First cylinder (525-2610, default 525):
Using default value 525
Last cylinder, +cylinders or +size{K,M,G}(525-2610, default 2610): +2G
Command (m for help): N
Command action
l logical (5 or over)
p primary partition (1-4)
L
First cylinder (787-2610, default 787):
Using default value 787
Last cylinder, +cylinders or +size{K,M,G}(787-2610, default 2610): +2G
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes
Sector size (logical/physical): 512 bytes /512 bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disk identifier: 0x262f7c1e
Device Boot Start End Blocks Id System
/dev/sdb1 1 2610 20964793+ 5 Extended
/dev/sdb5 1 262 2104452 83 Linux
/dev/sdb6 263 524 2104483+ 83 Linux
/dev/sdb7 525 786 2104483+ 83 Linux
/dev/sdb8 787 1048 2104483+ 83 Linux
2.分区都创建好以后将分区的id都改为fd格式,并保存退出:
Command (m for help): t
Partitionnumber (1-8): 5
Hex code(type L to list codes): fd
Changedsystem type of partition 5 to fd (Linux raid autodetect)
Command (m for help): t
Partitionnumber (1-8): 6
Hex code(type L to list codes): fd
Changedsystem type of partition 6 to fd (Linux raid autodetect)
Command (m for help): t
Partitionnumber (1-8): 7
Hex code(type L to list codes): fd
Changedsystem type of partition 7 to fd (Linux raid autodetect)
Command (m for help): t
Partitionnumber (1-8): 8
Hex code(type L to list codes): fd
Changedsystem type of partition 8 to fd (Linux raid autodetect)
Command (m for help): p
Disk/dev/sdb: 21.5 GB, 21474836480 bytes
255 heads,63 sectors/track, 2610 cylinders
Units =cylinders of 16065 * 512 = 8225280 bytes
Sectorsize (logical/physical): 512 bytes / 512 bytes
I/O size(minimum/optimal): 512 bytes / 512 bytes
Diskidentifier: 0x262f7c1e
Device Boot Start End Blocks Id System
/dev/sdb1 1 2610 20964793+ 5 Extended
/dev/sdb5 1 262 2104452 fd Linux raid autodetect
/dev/sdb6 263 524 2104483+ fd Linux raid autodetect
/dev/sdb7 525 786 2104483+ fd Linux raid autodetect
/dev/sdb8 787 1048 2104483+ fd Linux raid autodetect
Command (m for help): w
3.所有分区都已建好,效果如下:
[root@claude~]#fdisk -l /dev/sdb
Disk/dev/sdb: 21.5 GB, 21474836480 bytes
255 heads,63 sectors/track, 2610 cylinders
Units =cylinders of 16065 * 512 = 8225280 bytes
Sectorsize (logical/physical): 512 bytes / 512 bytes
I/O size(minimum/optimal): 512 bytes / 512 bytes
Diskidentifier: 0x262f7c1e
Device Boot Start End Blocks Id System
/dev/sdb1 1 2610 20964793+ 5 Extended
/dev/sdb5 1 262 2104452 fd Linux raid autodetect
/dev/sdb6 263 524 2104483+ fd Linux raid autodetect
/dev/sdb7 525 786 2104483+ fd Linux raid autodetect
/dev/sdb8 787 1048 2104483+ fd Linux raid autodetect
4.对磁盘做RAID 5;
[root@claude~]#mdadm -C /dev/md0 -a yes -l 5-n 3 -x 1 /dev/sdb{5,6,7,8}
mdadm:Defaulting to version 1.2 metadata
mdadm:array /dev/md0 started.
5.查看md状态;
[root@claude~]#watch -n1 cat /proc/mdstat
Personalities: [raid6] [raid5] [raid4]
md0 :active raid5 sdb7[4] sdb8[3](S) sdb6[1] sdb5[0]
4204544 blocks super 1.2 level 5, 512kchunk, algorithm 2 [3/3] [UUU]
unuseddevices:
6.格式化磁盘;
[root@claude~]#mke2fs -t ext4 /dev/md0
mke2fs1.41.12 (17-May-2010)
Filesystemlabel=
OS type:Linux
Blocksize=4096 (log=2)
Fragmentsize=4096 (log=2)
Stride=128blocks, Stripe width=256 blocks
262944inodes, 1051136 blocks
52556blocks (5.00%) reserved for the super user
First datablock=0
Maximumfilesystem blocks=1077936128
33 blockgroups
32768blocks per group, 32768 fragments per group
7968inodes per group
Superblockbackups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200,884736
Writinginode tables: done
Creatingjournal (32768 blocks): done
Writingsuperblocks and filesystem accounting information: done
Thisfilesystem will be automatically checked every 30 mounts or
180 days,whichever comes first. Use tune2fs -c or-i to override.
7.挂载检验RAID是否成功创建
[root@claude~]#mkdir mydata#创建挂载点
[root@claude~]# ls
anaconda-ks.cfg Desktop Downloads install.log.syslog mydata Public Videos
bin Documents install.log Music Pictures Templates
[root@claude~]#mount /dev/md0 /mydata#挂载RAID
[root@claude~]# mount
/dev/sda2on / type ext4 (rw)
proc on/proc type proc (rw)
sysfs on/sys type sysfs (rw)
devpts on/dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shmtype tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
none on/proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/md0on /mydata type ext4 (rw)
[root@claude~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Aug 8 23:56:04 2017
Raid Level : raid5
Array Size : 4204544 (4.01 GiB 4.31 GB)
Used Dev Size : 2102272 (2.00 GiB 2.15 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Wed Aug 9 00:02:23 2017
State : clean
Active Devices : 3
WorkingDevices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : claude.amax:0 (local to host claude.amax)
UUID :31cf9e3b:5296ea45:b78b0df8:c0a5f09b
Events : 18
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
4 8 23 2 active sync /dev/sdb7
3 8 24 - spare /dev/sdb8
[root@claude~]#df -lh /mydata #查看磁盘容量
Filesystem Size Used Avail Use% Mounted on
/dev/md0 3.9G 8.1M 3.7G 1% /mydata
如果要让此文件系统自动挂载,需要在/etc/fstab中更改配置文件;
模拟RAID5其中一块磁盘损坏,空闲盘会自动补充到RAID5中去;
[root@claude~]#mdadm /dev/md0 -f /dev/sdb5 #模拟磁盘损坏
mdadm: set/dev/sdb5 faulty in /dev/md0
[root@claude~]#mdadm -D /dev/md0 #查看md0状态
/dev/md0:
Version : 1.2
Creation Time : Tue Aug 8 23:56:04 2017
Raid Level : raid5
Array Size : 4204544 (4.01 GiB 4.31 GB)
Used Dev Size : 2102272 (2.00 GiB 2.15 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Wed Aug 9 00:11:00 2017
State : clean
Active Devices : 3
WorkingDevices : 3
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : claude.amax:0 (local to host claude.amax)
UUID :31cf9e3b:5296ea45:b78b0df8:c0a5f09b
Events : 37
Number Major Minor RaidDevice State
3 8 24 0 active sync /dev/sdb8
1 8 22 1 active sync /dev/sdb6
4 8 23 2 active sync /dev/sdb7
0 8 21 - faulty /dev/sdb5
[root@claude~]#mdadm /dev/md0 -r /dev/sdb5 #移除磁盘
mdadm: hotremoved /dev/sdb5 from /dev/md0
[root@claude~]#mdadm /dev/md0 -a /dev/sdb5 #增加磁盘
mdadm:added /dev/sdb5
linux软raid阅读笔记,linux自学笔记——RAID级别特性以及软RAID的实现相关推荐
- linux自学笔记——RAID级别特性以及软RAID的实现
RAID,Redundant Arrays of Inexpensive Disks 廉价冗余磁盘阵列,又称为Redundant Arrays of Independent Disks,独立冗余磁盘阵 ...
- linux上namd使用教程,NAMD自学笔记 适用于初学者
你好,请问一个问题,我在周期边界条件下minimize开始两步的VDW都是无穷大,从第三步开始才开始降低,100步是降到5w多,其他一些值也有无穷大的.但是,log文件里面并没有报错,这个结果有问题吗 ...
- linux退出pdf阅读,Ubuntu/Linux 下pdf阅读器Zathura(类vim操作)
框架 Onboard-引导页样式制作库 设置背景图片或者背景movie,然后在它们之上生成数个ViewController,默认是顶部一张图片,下面是标题和详细介绍,最下面是按钮和pagegithub ...
- python自学笔记_Python 自学笔记
赘述 mac自带python2.7版本,但是最新版本和旧版本不兼容,所以还是决定重新下载新版本,并且新版本是可以和旧版本共存的. 在安装的时候还是会遇到一些小坑,特此记录一些命令行的使用,方便后期查找 ...
- java自学笔记_JAVA自学笔记(4)
发现JAVA的有趣 Day1 继承不是"继承" 1.0 继承的格式 public classFU {public voidmethod() { System.out.println ...
- linux软raid阅读笔记,linux_软RAID阅读笔记.pdf
linux_软RAID阅读笔记.pdf RAID 读笔记 前言 1 1 RAID 概述 1 1.1 RAID 在linux 内核中的位置 2 1.2 mdadm 3 1.3 参考文献 3 2 RAID ...
- [置顶] Linux协议栈代码阅读笔记(一)
Linux协议栈代码阅读笔记(一) (基于linux-2.6.21.7) (一)用户态通过诸如下面的C库函数访问协议栈服务 int socket(int domain, int type, int p ...
- linux 协议栈 位置,[置顶] Linux协议栈代码阅读笔记(一)
Linux协议栈代码阅读笔记(一) (基于linux-2.6.21.7) (一)用户态通过诸如下面的C库函数访问协议栈服务 int socket(int domain, int type, int p ...
- 我的Linux(ubuntu)自学笔记分享
** 我的Linux(ubuntu)自学笔记分享 本人自学Linux有了好长一段时间,从最开始的无从下手.一窍不通到现在已经有很大的进步了.所以分享一下学习方法,第一最好买一本Linux书系统的学一下 ...
最新文章
- 深入理解Spark Streaming执行模型
- 数据仓库经验小结(转)
- [转载] java提取字符串中的字母数字
- scanf 输入十六进制_在C语言中使用scanf()输入一个十六进制值
- wordpress常用插件打包 百度搜索推送插件+sitemap生成等
- 电脑注册表怎么清理_笔记本电脑维修|笔记本电脑屏幕怎么清理
- android 线程传递数据,Android Handle主线程向子线程发送数据
- cnn可视化 感受野(receptive field)可视化
- clock函数,计算程序运行时间
- 拓端tecdat|R语言混合时间模型预测对时间序列进行点估计
- DiskFileUpload类
- python做图像识别好还是c++好_用于图像识别的顶级编程语言
- linux远程桌面rdesktop,Linux下通过rdesktop连接Windows远程桌面
- 克里金插值算法java实现
- 国内外计算机视觉领域优秀研究团队汇总
- 教程篇(7.0) 06. FortiGate基础架构 单点登录(FSSO) ❀ Fortinet 网络安全专家 NSE 4
- 写一段wavefront_reader的代码
- gcore 获取程序core dump file 但程序不用退出,gdb 分析core
- 计算机历史博物馆观后感:阿达·洛芙莱斯生平1
- LoadRunner使用手册
热门文章
- 自动驾驶入门(十二):基于Opencv的车道线识别
- 记录利用ffmpeg对录制好的视频文件音量调整
- abaqus对应python版本_关于ABAQUS二次开发使用的Python版本?
- 在 Ubuntu 18.04 中配置静态 IP 地址及灵活切换IP的办法
- newduba首页怎么去掉_浏览器主页被篡改劫持为2345或duba 已解决!
- 解决Edge浏览器主页被篡改问题,或许可以帮你彻底解决
- Unity3D New Input System 鼠标左键单击、双击、长按配置及实现接口多态用法(一)
- CL210描述OPENSTACK控制平面--识别overclound控制平台服务+章节实验
- 关于云计算的不同定义
- 怎样设计淘宝天猫这种成功而有价值大数据可视化?