常见的硬盘:SATA一般pc机主流的硬盘。SCSI一般服务器应用广泛。IDE比较老,二者均可。
RAID 的意思是廉价磁盘冗余阵。是一些列放在一起,成为一个逻辑卷的磁盘集合。
软件RAID和硬件RAID
软件RAID的性能低,使用主机资源,加载RAID软件,从软件RAID卷中读取数据。无需物理硬件,成本低。
硬件RAID性能高,使用pciexpress 卡物理的提供专有RAID控制器。不使用主机资源。有NVRAM用于缓存的读取和写入。缓存用于RAID重建,即使出现电源故障,也会使用后背电池电源保持缓存,但十分昂贵。
几个概念:
1条带化:将切片数据随机存储到多个磁盘。至少要用两块磁盘。
2镜像:镜像用来自动备份数据。保存相同的内容到其他磁盘。
3热备份:自动更换发生故障的驱动器。
4块:每次读写数据的最小单位。
5校验:用于重新生成丢失的内容。
首先,raid级别代表的是种类不同,在不同的场合有不同的应用。
raid0是条带化
好处是读写速度快。
坏处是零容错。
raid1是镜像化
好处是当一个坏掉可以完全回复。
坏处是磁盘利用率变为原来的1/2,写性能也会变慢
raid4是奇偶校验
一块磁盘做校验,好处是如果坏了一块磁盘的话可以恢复数据,利用率为n-1/n。坏处是每次存储数据都要访问校验磁盘
raid5是分布式奇偶校验
校验码分布在不同磁盘快。好处是如果坏了一块磁盘的话可以恢复数据,利用率为n-1/n。
但坏两块就不行了
raid6是双分布式奇偶校验
利用率为n-2/n
坏三块内都可以恢复
raid0+1或1+0
先镜像再条带或先条带再镜像。
1/2利用率,可重建。可用于数据库存储
mdadm:将任何块设备做成raid
模式化命令:
创建模式-c
-l:级别
-n:设备个数
-a:设备文件
-c:数据块大小
-x #:指定空闲盘个数
管理模式
mdadm/dev/md# --fail /dev/sda#
mdadm/dev/md# --remove /dev/sda#
监控模式-f
增长模式-g
装配模式-a
-d --detail 查看设备文件详情
第一步fdisk -l
先查看一下磁盘的分区大小情况
fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes----------------------磁盘21.5G
255 heads, 63 sectors/track, 2610 cylinders-----------------------磁头,扇区,柱面
Units = cylinders of 16065 * 512 = 8225280 bytes---------------柱面大小
Sector size (logical/physical): 512 bytes / 512 bytes-------------扇区512
I/O size (minimum/optimal): 512 bytes / 512 bytes-------------i/o大小
Disk identifier: 0x0006a64d
Device Boot Start End Blocks Id System
/dev/sda1 * 1 39 307200 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 39 2489 19680256 83 Linux
/dev/sda3 2489 2611 983040 82 Linux swap / Solaris
这里已经把2610个柱面全部使用了。因此需要重新划分一下。
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
sdb是新加的磁盘,还未使用。
第二步:磁盘分区。fdisk /dev/sdb
Command (m for help):
这一行后面输入 n,代表创建分区。如果不知道命令的话输入m会弹出所有命令的列表。
Command action
e extended
p primary partition (1-4)
输入n后会出现这个选项。选e还是选p。这里需要普及一下。linux的磁盘文件,最多有四个主分区,如果有扩展分区的,扩展分析必须是小于等于第四个的位置,也就是扩展分区之前的设置为主分区。扩展分区的主要作用是用来划分逻辑分区的。逻辑分区的个数不限制,但不能超过15号,只要磁盘够大就可以。
因此,我们可以先创建3个主分区。输入命令p
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): +400
上面涉及三个操作。第一个是选择主分区号,我们选1.第二个是选择主分区的开始柱面号,默认是1,我们直接回车,使用默认1,作为主分区1的第一个柱面。第三个是选择最后一个柱面号,也就是设置第一主分区的结尾。我们使用+400,意思是在主分区1的大小为400的柱面。
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (402-2610, default 402):
Using default value 402
Last cylinder, +cylinders or +size{K,M,G}(402-2610, default 2610): +400
继续重复这个过程,直到创建3个主分区。我们可以看到,使用的柱面号是被自动识别的。因此,我们可以可以根据提示,选择默认的第二个主分区的初始柱面号,依然使用+400的操作来设置大小。
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Selected partition 4
First cylinder (1204-2610, default 1204):
Using default value 1204
Last cylinder, +cylinders or +size{K,M,G}(1204-2610, default 2610): +1200
当创建最后一个时候,我们选择e,输入4,然后将扩展分区设置大小为1200个柱面。
接下来是设置逻辑分区。
Command (m for help): n
First cylinder (1204-2404, default 1204):
Using default value 1204
Last cylinder, +cylinders or +size{K,M,G}(1204-2404, default 2404): +200
Command (m for help): n
First cylinder (1405-2404, default 1405):
Using default value 1405
Last cylinder, +cylinders or +size{K,M,G}(1405-2404, default 2404): +200
Command (m for help): n
First cylinder (1606-2404, default 1606):
Using default value 1606
Last cylinder, +cylinders or +size{K,M,G}(1606-2404, default 2404): +200
Command (m for help): n
First cylinder (1807-2404, default 1807):
Using default value 1807
Last cylinder, +cylinders or +size{K,M,G}(1807-2404, default 2404): +200
逻辑分区创建是递增的,不用你选号码,大小还是要设置的,我们依然使用默认的初始柱面,大小设置为200
Command (m for help): t
Partition number (1-8): 5
Hex code (type L to list codes): fd
Changed system type of partition 5 to fd(Linux raid autodetect)
t命令是设置划分的分区的类别的,这里我们把5-8都设置为fd,fd就是linux raidautodetect
点一下w,别用q,不保存就退出的话,就完了。
partprobe /dev/sda ---让系统识别分区。只要是fdisk -l 有显示就说明成功了。
第三步:创建raid
mdadm -C /dev/md0 -a yes -l 0 -n 2/dev/sda{5,8}
-a yes 选项是默认的,不加也是这个参数。自动扩展
-l指定等级,raid0,可以raid1等等
-n 指定设备,raid0使用两个就可以条带了。
后面指定用那些设备,sda5,sda8。当然可以分开写,/dev/sda5 /dev/sda6
第四步:查看一下
cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdb8[1] sdb5[0]
3226624 blocks super 1.2 512k chunks
第五步:格式化md0,格式化是为了稍后的挂载。
mke2fs -j /dev/md0
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
202000 inodes, 806656 blocks
40332 blocks (5.00%) reserved for the superuser
First data block=0
Maximum filesystem blocks=826277888
25 block groups
32768 blocks per group, 32768 fragments pergroup
8080 inodes per group
Superblock backups stored on blocks:
32768,98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystemaccounting information: done
This filesystem will be automaticallychecked every 35 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
第六步:挂载md0
mount /dev/md0 /mnt
第七步:查看md0详情
mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Oct 12 00:41:09 2016
Raid Level : raid0
Array Size : 3226624 (3.08 GiB 3.30 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Wed Oct 12 00:41:09 2016
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Name : slave-01:0 (local to hostslave-01)
UUID : 01dc4e54:2db8007e:48a85eed:575bf4ba
Events : 0
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 24 1 active sync /dev/sdb8