RAID是独立磁盘冗余陈列(redundant array of independent disks)简称磁盘阵列。
RAID第一种把多块独立的物理磁盘按不同的raid级别组合起来形成一个磁盘组,在逻辑上看起来是一块大的磁盘,可以提供比单个物理磁盘更大的存储容量或更高的存储性能,同时又能提供不同级别数据冗余备份的一种技术。
用RAID最直接的好处是:
1) 提升数据安全性
2) 提升数据读写性能
3) 提供更大的单一逻辑磁盘数据容量存储
运维生产环境常用RAID级别为RAID0,RAID1,RAID5,RAID10
raid 级别 |
关键优点 |
关键缺点 |
实际应用场景 |
RAID0 |
读写速度很快 |
没有任何冗余 |
mysql , slave ,集群的节点和 RS |
RAID1 |
100% 冗余,镜像 |
读写性能一般,成本高 |
单独的,数据重要,不能宕机的业务,系统盘,监控 |
RAID5 |
具备一定的性能和冗余,可以坏一块盘, 读性能不错 |
写入性能不高 |
一般的业务都可以用 |
RAID10 |
读写性能很快, 100% 冗余 |
成本高 |
性能和冗余要求很好的业务,数据库和主库存储的主节点 |
LVM(Logical Volume Manager),逻辑卷管理器,最大用途是可以灵活的管理磁盘的容量,让磁盘分区可以随意放大或缩小,便于更好的应用磁盘的剩余空间,如果过于强调性能与备份,还是应该使用RAID功能,而不是LVM。LVM是在硬盘的硬盘分区之上,又创建一个逻辑层,以方便系统管理硬盘分区系统。
区别:
LVM:灵活的管理磁盘的容量,有一定的冗余和性能功能,但很弱。
RAID:更侧重性能和数据安全。
RAID0又称为Stripe(条带化)或Striping(条带模式),它在所有RAID级别中具有最高的存储性能(磁盘容量不浪费,读写很快)
RAID0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。
关注点 |
描述 |
容量 |
是 5 块盘加载一起的容量,在所有 raid 级别中具有最高的存储性能,原理是把连续的数据分散到多个磁盘上存取 |
性能 |
理论上磁盘读写速度比单盘提升 5 倍,单由于总线带宽等多种因素的影响,实际的提升速率肯定会低于理论值,但是,大量数据并行传输与串行传输比较,提速效果显著显然毋庸置疑。磁盘越多倍数越小。 |
冗余 |
无任何冗余,坏 1 块盘,整个 raid 就都不能用了 |
场合 |
适合于大规模并发读写,但对数据安全性要求不高的情况 如: mysql slave (数据库从库),集群的节点 RS |
特点 |
速度快,无冗余,容量无损失 |
RAID1又称为Mirror或Mirroring(镜像),它的遵旨是最大限度的保证用户数据的可用性和可修复性。RAID1的操作方式是把用户写入硬盘的数据百分之百的自动复制到另外一个硬盘上,从而实现存储双份的数据。
要制作RAID1,只支持两块盘,整个RAID大小等于两个磁盘中最小的那块容量,因此,最好使用同样大小的磁盘。在存储时同时写入两块磁盘,实现数据完整备份,但相对降低了写入性能,但是读取数据时可以并发,相当于两块RAID0的读取效率。
关注点 |
描述 |
容量 |
损失 50% 的数据容量。例如 2 块 1T 的盘,做完 RAID1 后为 1T |
性能 |
Mirror 不能提高存储性能。理论上写性能和单盘相差不大 |
冗余 |
在所有的 RAID 级别中, RAID1 提供最高的数据安全保障,冗余度 100% |
场合 |
适合于存放重要数据,如服务器系统分区和对性能要求不高的数据存储等领域 |
特点 |
100% 冗余,容量损失一半 |
RAID5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。
RAID5需要三块或以上的物理磁盘,可以提供热备盘实现故障恢复,采用奇偶校验,可靠性强,只有同时损失2块盘时数据才会损坏,只损失1块盘时,系统会根据存储的奇偶校验位重建数据,临时提供服务,此时如果有热备盘,系统还会自动在热备盘上重建故障磁盘上的数据。
关注点 |
描述 |
容量 |
损失一块盘的数据容量 10*600G 9*600G |
性能 |
RAID5 具有和 raid 0 相近的数据读取速度,只是多累个奇偶校验信息,写入数据速度比单个磁盘写入操作稍慢 |
冗余 |
可损失一块盘, RAID5 数据安全保障比 RAID1 低而磁盘空间利用率要比 RAID1 高 |
场合 |
RAID5 可以理解为是 RAID0 和 RAID1 的折中方案。适合于对性能和冗余都有一定要求,又都不是十分高的情况。 mysql 的主从库都可以,存储也可以。普通的服务器为了减少维护成本,又保持一定冗余和读性能都可以做 raid5 |
特点 |
容量损失一块盘,写数据通过奇偶校验, RAID0 和 RAID1 的折中方案 |
使用5块盘实践RAID
RAID0 支持1块盘到多块盘,容量是所有盘之和
RAID1 只支持2块盘,容量损失一块盘
RAID5 最少三块盘,不管硬盘数量多少,只损失一块盘容量
RAID10 最少四块盘,必须偶数硬盘,不管硬盘多少,都损失一半的容量,不支持虚拟硬盘
RAID 级别 |
最少磁盘要求 |
关键优点 |
关键缺点 |
实际应用场景 |
RAID0 |
1 块 |
读写速度很快 |
没有任何冗余 |
mysql slave ,集群的节点 RS |
RAID1 |
2 块(只能) |
100% 冗余,镜像 |
读写性能一般,成本高 |
单独的,数据重要,且不能宕机的业务,监控,系统盘 |
RAID5 |
3 块 |
具备一定性能和冗余,可以坏一块盘,读性能不错 |
写入性能不高 |
一般的业务都可以用 |
RAID10 |
4 块 |
读写速度很快, 100% 冗余 |
成本高 |
性能和冗余要求很好的业务 数据库主库和存储的主节点 |
0磁头0磁道1扇区的前446字节512(mbr)
硬盘的0磁头0磁道1扇区,是硬盘上的一个非常重要的位置。在这个扇区中,存放有硬盘的主引导记录 mbr ( Master Boot Record)和硬盘的分区表DPT(Disk Partition Table).
dd命令详解
[root@dong ~]# dd if=/dev/sda of=/tmp/mbr.bin bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000159779 s, 3.2 MB/s
[root@dong-35 ~]#ll /tmp/mbr.bin
-rw-r--r--. 1 root root 512 Apr 11 12:10 /tmp/mbr.bin
[root@dong-35 ~]# file /tmp/mbr.bin ## 查看文件类型
/tmp/mbr.bin: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, boot drive 0x80, 1st sector stage2 0x6272, GRUB version 0.94; partition 1: ID=0x83, active, starthead 32, startsector 2048, 409600 sectors; partition 2: ID=0x82, starthead 159, startsector 411648, 1572864 sectors; partition 3: ID=0x83, starthead 135, startsector 1984512, 14792704 sectors, code offset 0x48
[root@dong5 ~]# od -xa /tmp/mbr.bin 如何###查看二进制文件的内容
0000000 48eb1090 d08e 00bcb8b0 0000 d88ec08e
kH dle dle so P< nul 0 8 nul nulso X so @
0000020 befb7c00 00bf b9060200 a4f3 21ea0006
1) 给磁盘分区的实质就是针对上述0刺头0磁道的前446字节后面接下来的64bytes的分区表进行设置,即主要是划分起始以及结束次头号、扇区号及柱面号(从哪里来到那里去,什么类型)
2) 给磁盘分区的工具有fdisk(适合给小于2T的磁盘分区,适合mbr分区表),parted(擅长给大2t的磁盘分区,可以对小于2t的磁盘分区 适合gpt格式分区表),首选fdisk,只有大于2t时采取选parted。
3) 一块磁盘的分区表仅有64个bytes大小,每个主分区/扩展分区的分区表要占用16个字节,因此一块磁盘仅支持四个分区表信息,即主分区+扩展分区的总量不超过4个。
4) 磁盘分区是按照柱面(cylinder)来划分的(从磁盘读写原理角度可以理解)。
5) 扩展分区不能直接使用,还需要在扩展分区的基础上创建逻辑分区才行。
6) 扩展分区有自己的分区表,因此扩展分区下面的逻辑分区可以有多个
在使用前一般需要进行分区,当然如果不分区直接格式化使用也是没问题的,但这不是常见情况。磁盘分区有主分区、扩展分区和逻辑分区之分。一块硬盘最多可以有4个分区表信息(磁盘本身限制),其中一个主分区的位置可以用一个扩展分区替换,且一块硬盘只能有一个扩展分区(操作系统限制),在这个扩展分区内可以划分多个逻辑分区(IDE磁盘逻辑分区大概编号可以是5-63)。SATA(编号5-15)下面我们分别说明。
主分区和扩展/dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4
逻辑分区 /dev/sda5
一般来说,主分区是磁盘上必须存在的分区,一般为磁盘的第一个分区,我们可以在这个主分区上面安装操作系统。在一个磁盘上最多只能有四个主分区,这是为什么呢?因为每个主分区都会在主引导扇区中生成分区表DPT,每个分区表需要占用大小16bytes,前文途中提到,当初的硬盘设计时,只给分区表留下了64bytes的存储空间,所以,就只能有四个主分区!生产环境中,四个主分区有可能不够使用,那么怎么来扩展呢?对,使用扩展分区来扩展!
严格来说,扩展分区不能算一个正常的分区,而是一个链接,起到一个指向的作用。我们可以再扩展分区内简历逻辑分区(logical),从上面逻辑结构图中我们可以看到,扩展分区就像一个虚拟出来的一个小硬盘一样,但是不同是,没有MBR,而只有扩展分区表,而且这个扩展分区表是没有64bytes的限制的,所以可以在扩展分区划分多个逻辑分区
一块硬盘只能存在一个扩展分区,并且扩展分区不能直接存放数据,扩展分区受限于操作系统。
不能在磁盘中单独直接划分逻辑分区(fdisk),逻辑分区必须存在于扩展分区内。在扩展分区内可以划分多个逻辑分区,逻辑分区的编号从数字5开始。在这个扩展分区内可以划分多个逻辑分区(IDE磁盘大概编号可以是5-63)。SATA(编号5-15)
实际应用:主分区和逻辑分区,都可以用。一般系统安装用主分区,存放数据都可以。
一块硬盘的分区方式只能为如下组合之一:
1) 任意多个主分区,但要求1<=主分区数量<=4
例如:一个硬盘可以分成4个主分区3个主分区2个主分区或1个主分区
2) 扩展分区可以和主分区组合,但要求2<=(主分区+扩展分区)数量<=4)
例如:3个主分区+一个扩展分区或2个主分区+1个扩展分区或1个主分区+1个扩展分区。当总分区的数量大于4个的时候,必须提前分一个扩展分区,扩展分区最多只能有1个。
3) 如果分成四个磁盘分区的话,那么最多就是可以:
P+P+P+P
P+P+P+E
其中的P为Primary,E为Extended。
特别说明:
由于MBR及磁盘分区表大小的限制,如果对磁盘分配了4P或3P+E后,即使磁盘还有剩余未分的空间,那么,这部分空间也无法分区使用了(因为五分区可分了,分区表空间已被占满)。因此,在做分区规划时,如果业务需要,在分区之前就已经明确要超过4个分区,那么可以选择3P+1E的分区方式,并且在最后个扩展分区要将所有的剩余空间都分配给这个扩展分区。当然,也可以采用1P+1E,2P+1E的分区方式,其实就是主分区不分完,保留不分。
门户大网站:
/boot 200M主分区
swap 1.5倍 主分区
/ 50-200g 主分区
不在进行分区,保留,将来那个把分用,就根据需求再分<==灵活 扩展分区
网站节点(不是很重要)
/boot 200M 主分区
swap 1.5倍 主分区
/ 给全部 主分区
数据很重要
/boot 200M 主分区
swap 1.5倍 主分区
/ 40-200g 主分区
/data 剩余所有
实例 1-1 假如我有一块 SAS 硬盘,我想要把磁盘分成 6 个可以使用的磁盘分区,那么每个磁盘分区在 Linux 系统下的数字编号是多少?
#3P+1E(3L)
# echo /dev/sda{1,2,3,5,6,7}
/dev/sda1 /dev/sda2 /dev/sda3 /dev/sda5 /dev/sda6 /dev/sda7
# #2P+1E(4L)
# echo /dev/sda{1,2,5,6,7,8}
/dev/sda1 /dev/sda2 /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8
#1P+1E(5L)
# echo /dev/sda{1,5,6,7,8,9}
/dev/sda1 /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8 /dev/sda9