Day21-磁盘管理之raid及分区
- 1 Raid技术
- 1.1 什么是Raid?
- 1.2 为什么服务器需要Raid?
- 1.3 什么是Raid级别?
- 1.4 Raid有哪些实现方式?
- 1.5 什么是RAID0?(图)
- 1.6 什么是RAID1?(图)
- 1.7 什么是RAID5?(图)
- 1.8 什么是RAID01或Raid10?(图)
- 1.9 Raid10综合总结(企业面试题)
- 1.11 Raid和Lvm区别?
- 1.12 作业案例:
- 2. 磁盘分区知识
- 2.1 磁盘为什么要分区?
- 2.2 磁盘设备及分区命名知识
- 2.3 磁盘分区类型和各自特点
- 2.3.1 主分区(Primary)
- 2.3.2 扩展分区(Extend)
- 2.3.3 逻辑分区(logical)
- 2.3.4 磁盘分区要点总结
- 2.3.5 几个思考题?
- 2.3.6 磁盘分区原理
- 2.3.7 磁盘存储逻辑结构原理图解
- 2.3.8 fdisk分区命令精讲与实践
1 Raid技术
1.1 什么是Raid?
中文全称:廉价冗余磁盘阵列
英文全称:Redundant Array of Inexpensive Disk
简称:Raid
Raid是一种把【一块及多块独立的物理磁盘】按不同的技术方式组合起来形成一个磁盘组,在逻辑上看起来就是一块大的磁盘,可以提供比单个物理磁盘更大的存储容量或更高的存储性能,同时又能提供不同级别数据冗余备份的一种技术。
1.2 为什么服务器需要Raid?
服务器运行痛点:
1)单块盘容量不够大。
2)磁盘损坏数据丢失。
3)磁盘速度不够快。
磁盘阵列可以把多个磁盘驱动器通过不同的连接方式连接在一起协同工作,大大提高了读取速度,同时把磁盘系统的可靠性提高到接近无错的境界,使其可靠性极高。
用RAID最直接的好处是:
1)提升数据安全性。
2)提升数据读写性能。
3)提供更大的单一逻辑磁盘数据容量存储。
1.3 什么是Raid级别?
把多个物理磁盘通过【不同技术方式】组成的磁盘阵列,这个不同的技术方式就被称为RAID级别。
Raid级别一般有:
Raid 0、1、2、3、4、5、6、7、0+1(也称Raid 10)、53等。
生产环境常用Raid级别:0、1、5、10。(核心面试点)
1.4 Raid有哪些实现方式?
RAID的实现方式:
1.独立扩展卡。
速度快、支持read级别更多0、1、5、10。
2.内置主板集成RIAD控制器。
速度还行,只支持0,1。
3.通过os系统软件实现。
软raid,软件实现,性能差,操作系统损坏数据容易丢失。
1.5 什么是RAID0?(图)
0)上图讲解Raid0原理
1)Raid0动画展示
2)Raid0关键特点总结
raid0可以单盘做
1.读写性能 提高了三倍
2.容量是单盘的三倍,没有损失
3.没有【冗余】
4.web服务、应用服务(集群)
缺点:维护稍微麻烦
生产应用场景:
1)负载均衡集群下面的多个相同RS节点服务器。
2)分布式文件存储下面的主节点或CHUNK SERVER。
3)MySQL主从复制的多个Slave服务器。
4)对性能要求很高,对冗余要求很低的相关业务。
RAID0综合情况图表说明
以4块盘做 RAIDO 为例说明
关注点 | 描述 |
---|---|
容量 | 是4块盘加在一起的容量,在raid 级别中具备最高的存储性能,原理是把连续的数据分散到多个磁盘上存取。 |
性能 | 理论上磁盘读写速度比单盘提升4倍,磁盘越多倍数会越小。 |
冗余 | 无任何冗余,坏1块盘,整个RAID 就都不能用了。 |
场合 | 适合于大规模并发读写,但对数据安全性要求不高的情况。如:集群中的RS,做虚拟机的实体机、负载均衡集群下面的多个相同RS 节点服务器,如分布式文件存储下面的 CHUNK SERVER,以及 MySQL 主从复制的多个Slave服务器。 |
特点 | 速度快,无冗余,容量无损失。 |
iops
input output
1.6 什么是RAID1?(图)
0)上图讲解Raid1原理
1)Raid1动画展示
2)Raid1关键特点总结
1.只能两块盘,镜像盘(mirror)
2.两块盘,以容量小的为基准
3.冗余100%
4.容量减半
5.读性能,提高的
写性能,单盘性能
6.数据安全要求极高,性能要求不高,成本预算较多
7.操作系统盘 数据库服务器(传统)
RAIDI综合情况图表说明
以两块盘为例说明
关注点 | 描述 |
---|---|
容量 | 损失 50%的数据容量。例如:2块1T的盘,做RAID1后,容量为1T. |
性能 | Mirror 不能提高存储性能。理论上写性能和单盘相差不大。有人说读取效率是2倍,到底如何呢?请有测试环境的同学帮忙测试?暂且按照只读单盘说明。 |
冗余 | 在所有 RAID 级别中,RAID1提供最高的数据安全保障。冗余度 100%. |
场合 | 适用于存放重要数据,如服务器系统分区和对性能要求很高的数据库存储等领域。 |
特点 | 100%冗余,容量损失一半,只能两块盘,两盘大小可以不一致。 |
1.7 什么是RAID5?(图)
0)上图讲解Raid5原理
1)Raid5动画展示
2)Raid5关键特点总结
1.至少3块盘
2.2块盘写数据,第三块写奇偶校验数据
3.容量n-1
4.冗余只能坏一块
5.读性能n-1倍
写性能 不太高
6.场合 中庸方案
大多数公司选择raid5
RAID5综合情况图表说明
关注点 | 描述 |
---|---|
容量 | 只损失一块盘的数据容量 |
性能 | RAID5 具有和 RAID0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度较慢 |
冗余 | 可损失一块盘。RAID5数据安全保障程度比 RAID1低,而磁盘空间利用率要比RAID1 高 |
场合 | RAID5可以理解为是RAIDO和RAID1的折衷方案。适合对性能和冗余都有一定要求,又都不是十分高的情况。MySQL的主从库都可以,存储也可以。普通的服务器为了减少维护成本,又保持一定冗余和读性能都可以做RAID5 |
特点 | 容量损失一块盘,写数据通过奇偶校验,RAID0和RAID1的折衷方案追求速度和安全的不要选RAID5 |
最低硬盘数量3
优点 | 缺点 |
---|---|
很高读取效率 | 硬盘的故障会对吞吐最造成中等的影响。 |
中等写入效率 | 控制器的设计较为复杂。 |
很低的ECC 硬盘数量占用率,ECC效率高 | 相对于RAID-1来说,因硬盘故障而重新构建RAID体系比较麻烦 |
良好的集合数据传输率 | 个别数据块的传输率与单个硬盘相当 |
适用领域:
文件与应用服务器
数据库服务器
Web、E-Mail 以及新闻服务器
RAID-5 是适用领域最多的 RAID 等级
1.8 什么是RAID01或Raid10?(图)
0)上图讲解原理
1)动画展示
2)关键特点总结
01
1.容量减半
2.冗余:损失2块盘(单边坏)
3.读性能快
写 可以
4.没有场合
10
1.容量减半 成本特别高
2.冗余:损失2块盘
3.读写 性能都不错
4.主数据库 主存储服务器
RAID10
关注点 | 描述 |
---|---|
容量 | 损失一半盘的数据容量。 |
性能 | 大于 RAID1 和 RAID5,小于 RAID0。 |
冗余 | 可损失 2块,冗余大于RAID5 和 RAID0,小于 RAID1 |
场合 | 高并发存储和数据库系统 |
10.RAID选择成本/性能/可靠性对比图
DELL R710使用6块盘实践RAID制作结论
Raid0支持1块盘到多块盘,容量是所有盘之和。
Raid1只支持2块盘,容量损失一块盘。
Raid5最少三块盘,不管硬盘数量多少,只损失一块盘容量。
Raid6最少4块盘,5块盘也可以,损失2块盘,不管硬盘多少,只损失两块盘容量。
Raid10最少4块盘,必须偶数硬盘,不管硬盘多少,都损失一半容量,不支持虚拟磁盘。
到底能不能同时坏两块盘?可以
1.9 Raid10综合总结(企业面试题)
例如:请说出 Raid0、Raid1、Raid5、Raid10 的特点和区别?
1.11 Raid和Lvm区别?
什么是LVM(逻辑卷管理)
动态扩容的工具。
1)分区动态扩容(1.事先规划好。2.尽量少分区)。
2)性能差(10%)。
应用场景:测试服务器
1.12 作业案例:
案例:
背景:公司内部最近要上新的ERP系统,公司内部旧的服务器已经无法满足需求。公司新上马的ERP系统,因为要满足各个分公司,各办事处,销售人员和后勤人员,服务人员甚至客户的协同的大量的24小时不间断的远程高负荷的数据操作,在数据储存方面需要采用更高级别的RAID磁盘阵列容错系统。
服务器R730 DELL型号已经确认,但是在raid存储方面还没定夺。你给领导RAID方案。
2. 磁盘分区知识
2.1 磁盘为什么要分区?
和买房一样,厨房,厕所,客厅,卧室。
磁盘也是分成不同的空间,干不同的事情,所以需要分区。
磁盘可以不分区。
2.2 磁盘设备及分区命名知识
/dev
IDE:
/dev/hda,第一块盘
/dev/hdb,第二块盘
SCSI(SAS,SATA):
/dev/sda,第一块盘
/dev/sdb,第一块盘
分区命名:
/dev/sda1
/dev/sda2
/dev/hda1
/dev/hda2
[root@oldboy ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2
查看UUID
[root@oldboy ~]# blkid
/dev/sda1: UUID="99f122a2-ed9f-4841-ab89-391fd95f47a0" TYPE="xfs"
/dev/sda2: UUID="Y07uSZ-ymkt-yOqg-0JwZ-d5Uc-EowH-E0ZvBb" TYPE="LVM2_member"
/dev/mapper/centos-root: UUID="b5edd8bb-5ea5-4657-b543-52a128433bca" TYPE="xfs"
/dev/mapper/centos-swap: UUID="edf78ada-a45d-47c6-ba1d-e1bd3b4d9101" TYPE="swap"
可以使用UUID代表/dev/sda1这样的分区
[root@oldboy ~]# egrep -v "^#|^$" /etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
UUID=99f122a2-ed9f-4841-ab89-391fd95f47a0 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
2.3 磁盘分区类型和各自特点
DOS分区表:只能用于小于2T的硬盘(常用)。
GPT分区表:万能分区表(小于2T,大于2T都可以)。
DOS分区表分区类型:
2.3.1 主分区(Primary)
a.必须存在的分区。
b.装系统(第一个主分区)
c.主分区数量不能超过4个。
d.分区编号,只能是1-4
想分超过4个分区,怎么办? 答:还需要扩展分区和逻辑分区
2.3.2 扩展分区(Extend)
a.独立小磁盘,有独立分区表,不能直接放数据。
b.占用主分区分区编号(2-4)。
c.最多只能有1个。
d.必须在其下划分逻辑分区。
e.主分区+扩展分区最多4个。
2.3.3 逻辑分区(logical)
a.不能独立存在,必须在扩展分区之上。
b.编号最小是5,及以上。
c.存放数据。
2.3.4 磁盘分区要点总结
一块磁盘的分区方式只能为如下组合之一:
(1)任意多个主分区,但要求1≤主分区数量≤4。
(2)扩展分区可以和主分区组合,但要求2≤(主分区+扩展分区)数量≤4)。
(3)如果要分成四个磁盘分区的话,那么最多就是可以:P + P + P + P或P + P + P + E,其中的 P为Primary,E为Extend。
(4)扩展分区不是一个真正的可用分区,建立完扩展分区后,还需要在扩展分区上面建立逻辑分区才可以使用。
(5)对于主分区和逻辑分区在一般的数据存储使用上是没有区别的(对于大多数的数据存储),在安装操作系统时第一个分区要选主分区。
(6)分区数字编号1~4留给主分区或扩展分区使用,逻辑分区编号只能从5开始,即使1-4分区号即使有剩余,也不会分配给逻辑分区。
(7)对磁盘分区,实际上就是在修改磁盘的分区表 ( Partition table ),并没有涉及磁盘数据。
2.3.5 几个思考题?
例1:如果要将一块大磁盘暂时分成四个分区,同时还希望有其它的空间可
以让未来需要的时候再进行分区,那么该如何分区?
3P+1E(1L)
1P+1E(3L)
2P+1E(2L)
例2:假如有一块SAS磁盘,想要把磁盘分成6个可以使用的磁盘分区,
有几种方式,每个磁盘分区在Linux系统下的数字编号分别是多少?
3P+1E(3L):
sda1,sda2,sda3,sda5,sda6,sda7
1P+1E(5L):
sda1,sda5,sda6,sda7,sda8,sda9
2P+1E(4L):
sda1,sda2,sda5,sda6,sda7,sda8
(实践)
2.3.6 磁盘分区原理
a.修改的就是分区表,没有动磁盘数据。
b.分区表的位置,0磁道0柱面1扇区的512字节的前446字节接下的64字节。
c.fdisk分区本质就是修改这64字节分区表。
磁盘存储逻辑结构原理图
磁盘分区表
字节分区表的内容
字节数 | 说明 |
---|---|
1 Bytes | State:分区状态,0=未激活,0x80=激活。 |
1 Bytes | StartHead:分区起始磁头号。 |
2 Bytes | StartSC:分区起始扇区和柱面号。低字节的低6位为扇区号,高2位为柱面号的第9,10位;高字节为柱面号的低8位。 |
1 Bytes | Type:分区类型,如0x0B=FAT32,0x83=Linux等,00 表示此项未用 |
1 Bytes | EndHead:分区结束磁头号。 |
2 Bytes | EndSC:分区结束扇区和柱面号,定义同前。 |
4 Bytes | Relative:线性寻址方式下分区相对扇区地址(对于基本分区即为绝对地址) |
4 Bytes | Sectors:分区大小(总扇区数) |
说明:这就是一个磁盘分区的分区表,例如:/dev/sda1,使用fdisk分区工具分区的实质就是改变上述64字节的分区表信息。
1)给磁盘分区的实质就是针对上述0磁头0磁道1扇区的前446字节后面接下来的64bytes的分区表进行设置,即主要是划分起始以及结束磁头号、扇区号及柱面号。
2)给磁盘分区的工具有fdisk(适合给小于2T的磁盘分区,适合mbr分区表、DOS分区表),
3)gpt格式分区表分区,有parted,gdisk。
小于2T用常规fdisk分区工具,大于2Tparted,gdisk来分区。
2.3.7 磁盘存储逻辑结构原理图解
0)0磁道1扇区讲解
(前446字节 是引导程序所在地,称为MBR)
接下来的64字节是分区表
最后2个字节是分区结束标志
读者可以用dd命令或者相关工具获得上述1扇区内容:
dd if=/dev/sda of=mbr.bin bs=512 count=1 #<==读取0磁头0磁道1扇区内容。
od -xa mbr.bin #<==以16进制解析1扇区内容。
od - dump files in octal and other formats
2.3.8 fdisk分区命令精讲与实践
1)准备环境添加一块盘,并重启(早期kudzu不重启)
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
2)
fdisk 分区命令
-l 查看分区信息
[root@oldboy ~]# fdisk /dev/sdb #开始分区
Command action
d delete a partition #删除分区
m print this menu #打印帮助
n add a new partition #添加新分区
p print the partition table #打印分区表
q quit without saving changes #退出不保存
w write table to disk and exit #保存并退出
例2:假如有一块SAS磁盘,想要把磁盘分成6个可以使用的磁盘分区,
有几种方式,每个磁盘分区在Linux系统下的数字编号分别是多少?
1P+1E(5L):
sda1,sda5,sda6,sda7,sda8,sda9
3P+1E(3L):
sda1,sda2,sda3,sda5,sda6,sda7
2P+1E(4L):
sda1,sda2,sda5,sda6,sda7,sda8
还没保存:查不到磁盘上对应的分区:
[root@oldboy ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
|-sda1 8:1 0 1G 0 part /boot
`-sda2 8:2 0 19G 0 part
|-centos-root 253:0 0 17G 0 lvm /
`-centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
sr0 11:0 1 1024M 0 rom
[root@oldboy ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb
[root@oldboy ~]# blkid
/dev/sda1: UUID="50250354-e0e5-414a-8a88-90f3aa6f1d2b" TYPE="xfs"
/dev/sda2: UUID="wBHG88-pAqb-lgmI-Kl1i-GEM1-ObxV-yLojkd" TYPE="LVM2_member"
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="ce92b21a-a733-45b7-b9e4-c3ddd074ad1a" TYPE="xfs"
/dev/mapper/centos-swap: UUID="232e9efb-2a4e-4de2-8d20-7c9d60f97f2f" TYPE="swap"
保存以后:
[root@oldboy ~]# ls /dev/sd*
/dev/sda /dev/sda2 /dev/sdb1 /dev/sdb5 /dev/sdb7 /dev/sdb9
/dev/sda1 /dev/sdb /dev/sdb2 /dev/sdb6 /dev/sdb8
[root@oldboy ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
|-sda1 8:1 0 1G 0 part /boot
`-sda2 8:2 0 19G 0 part
|-centos-root 253:0 0 17G 0 lvm /
`-centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk
|-sdb1 8:17 0 100M 0 part
|-sdb2 8:18 0 1K 0 part
|-sdb5 8:21 0 100M 0 part
|-sdb6 8:22 0 100M 0 part
|-sdb7 8:23 0 100M 0 part
|-sdb8 8:24 0 100M 0 part
`-sdb9 8:25 0 100M 0 part
sr0 11:0 1 1024M 0 rom
通知内核分区表已经修改。
[root@oldboy ~]# partprobe /dev/sdb