软raid
- 计算机核心部件:CPU、内存 IDE: 133Mbps SATA: 300Mbps,600Mbps,6Gbps USB 3.0: 480Mbps SCSI: Small Computer System Interface 早期,硬盘容量很小,还没有现在的U盘空间大,性能并不稳定,这是大多数,当然也有相对比较好 的,但价格非常的昂贵,所以人们就在想办法,我能不能有多个硬盘绑定成一块,让系统认为只是一块 硬盘,1987年Raid技术兴起。美国的一个大学开发出的,当时叫做廉价冗余磁盘阵列,后来改名叫做独 立冗余磁盘阵列。 Raid 发展到现在,已经不是简单的条带化了,还生出了其他的类型,那么这里叫做Raid level(级 别),这个级别仅代表磁盘组织方式不同,没有上下之分。不仅有速度,还要考虑数据可用性。
- Raid 0(条带): 读写速度得到提升,但不具备数据冗余,不推荐 最少2块硬盘
- Raid 1(镜像): 写性能下降,读性能提升,相反冗余能力提升。但磁盘利用率是1/2,最少2块硬盘
- Raid 1+0: 同组不能都坏掉,目前主流的方案。最少4块
- Raid 0+1: 同组都可以坏,不能是不同组的相同标号。最少4块硬盘 Raid 0+1 和Raid1+0的空间利用率都是1/2
- Raid 5(校验码机制):读写都提升,冗余有,空间利用率(n-1)/n 只能坏一块。最少3块硬盘
- Raid 6 可以看做是raid5的升级版,它支持同时损坏2块磁盘。最少是4块盘
- Raid 7 可以看做是raid5的升级版,它支持同时损坏3块磁盘。最少是5块盘
- Raid 50 拓展 那么到底怎么实现软raid? md: 内核模块。 mdadm:将任何块设备做成RAID,意味着分区也可以做,但没有意义,为什么那?做实验而已。
- 模式化的命令:
创建模式: -C
管理模式:--add,--del mdadm /dev/* --fail /dev/sd*
监控模式: -F
增长模式: -G
装配模式: -A
- 题目:环境要求: 新添加一块磁盘,大小为10G。并且分区,先分2个分区,每个分区大小为1G.
[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host0/scan
[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host1/scan
[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host2/scan
[root@localhost ~]# fdisk -l
...
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
...
[root@bash ~]# gdisk /dev/sdb
...
Number Start (sector) End (sector) Size Code Name
1 2048 2099199 1024.0 MiB FD00 Linux RAID
2 2099200 4196351 1024.0 MiB FD00 Linux RAID
[root@localhost ~]# partprobe /dev/sdb
[root@localhost ~]# partprobe /dev/sdb
[root@localhost ~]# cat /proc/partitions
major minor #blocks name
...
8 17 1048576 sdb1
8 18 1048576 sdb2
扫描用echo "- - -" >> /sys/class/scsi_host/host0/scan 命令有几个扫描几次
partprobe /dev/sdb 这个命令是同步刚创建好的磁盘,可以多用几次,不会出错
-
Raid0
创建一个2G的Raid 0
专用选项:
-l: 指定级别
-n: 设备个数
-a: {yes|no} 自动为其创建设备文件
-c: chunk大小,默 认为64k,(数据块) 2的N次方
-x: 指定空闲盘的个数
[root@localhost ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
使用 cat /proc/mdstat 命令查看当前系统上所有启动了Raid的设备
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdb2[1] sdb1[0]
2093056 blocks super 1.2 512k chunks
unused devices: <none>
格式化raid硬盘
[root@localhost ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=8, agsize=65408 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=523264, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
这里可以查看到我们刚才创建的硬盘信息,我们也格式化过了,然后就可以直接挂在使用了
[root@localhost~]# mkdir /mnt/Raid0
[root@localhost~]# mount /dev/md0 /mnt/Raid0/
[root@localhost~]# mount | tail -1
/dev/md0 on /mnt/Raid0 type xfs (rw,relatime,seclabel,attr2,inode64,sunit=1024,swidth=2048,noquota)
[root@localhost~]# df -hT /mnt/Raid0/
Filesystem Type Size Used Avail Use% Mounted on
/dev/md0 xfs 2.0G 33M 2.0G 2% /mnt/Raid0
当然这个是临时挂载,也可以加入开机自动挂载,编辑/etc/fstab文件即可,这里不再赘述。
Raid1
创建一个2G的Raid1(有效存储空间)
思路:想要创建2个一个2G的Raid1,那么假设说用两块硬盘来实现,那么每一块大小应该是多大的那? 对了,就是2G,而且它实际空间使用率只有2G。那么就再创建2个2G的分区。
[root@localhost~]# gdisk /dev/sdb
...
Number Start (sector) End (sector) Size Code Name
1 2048 2099199 1024.0 MiB FD00 Linux RAID
2 2099200 4196351 1024.0 MiB FD00 Linux RAID
3 4196352 8390655 2.0 GiB FD00 Linux RAID
4 8390656 12584959 2.0 GiB FD00 Linux RAID
[root@bash ~]# partprobe /dev/sdb
[root@bash ~]# partprobe /dev/sdb
[root@bash ~]# partprobe /dev/sdb
[root@bash ~]# cat /proc/partitions
...
8 17 1048576 sdb1
8 18 1048576 sdb2
8 19 2097152 sdb3
8 20 2097152 sdb4
直接用命令创建
[root@localhost~]# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb{3,4}
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@localhost~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdb4[1] sdb3[0]
2094080 blocks super 1.2 [2/2] [UU]
[==>..................] resync = 14.5% (305536/2094080) finish=0.2min speed=101845K/sec
md0 : active raid0 sdb2[1] sdb1[0]
2093056 blocks super 1.2 512k chunks
unused devices: <none>
[root@localhost~]# mkdir /mnt/Raid1
[root@localhost~]# mkfs.xfs /dev/md1
meta-data=/dev/md1 isize=512 agcount=4, agsize=130880 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=523520, imaxpct=25
....
[root@localhost~]# mount /dev/md1 /mnt/Raid1/
[root@localhost~]# mount | tail -1
/dev/md1 on /mnt/Raid1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
[root@localhost~]# df -hT /mnt/Raid1/
Filesystem Type Size Used Avail Use% Mounted on
/dev/md1 xfs 2.0G 33M 2.0G 2% /mnt/Raid1
到这里都好了!