1 磁盘的内部结构

图片.png

2 磁盘的接口类型

IDESATASCSIFCSASSCSI的新一代技术)

企业生产环境主流磁盘的相关信息对比

普及程度:SAS>SATA>SSD

单位容量对比性能和价格:SSD>SAS>SATA(一块SSD和一块SATA

单位价格购买磁盘容量:SATA>SAS>SSD

 

3 磁盘内部相关名词

磁盘的磁头(盘面个数)

磁盘的盘面,盘面号又叫磁头号

磁盘的磁道

磁盘的柱面 柱面是所有盘面相同半径的不同磁道的集合,柱面数=盘面的磁道数

磁盘的扇区,每个扇区大小是512字节,每个扇区的大小都是512个字节,一个扇区主要有两部分内容:存储数据地点的标识符和存储数据的数据段

 

磁道柱面扇区总括

1、一块磁盘有2-14个盘片,每个盘片有两个面,每个面对应一个读写磁头,用磁头号来区分盘面,即盘面数就是磁头数,盘片数*2=磁头数(盘面数)

2、不同盘面的磁道被划分为多个扇形区域,每个区域就是一个扇区

3、同一个盘面,以盘片中心为圆心,每个不同半径的圆形轨迹就是一个磁道

4、不同盘面相同半径的磁道组成一个圆柱面就是柱面

5、一个柱面包含多个磁道,一个磁道包含多个扇区

6、数据信息记录可以表示为:某磁头,某磁道(柱面),某扇区

4 磁盘容量的计算算法

磁盘容量计算方法

方法1512B*扇区数=每个磁道的大小   *磁道数=每个盘面的大小   *磁头数(盘面个数)=磁盘容量

方法2:柱面数(磁道数)*柱面大小(磁道大小*磁头数)=磁盘容量


[root@nfs-server ~]# fdisk –l
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 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
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         131     1048575+  83  Linux
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(0, 0, 1) logical=(0, 0, 2)
Partition 1 has different physical/logical endings:
     phys=(1023, 254, 63) logical=(130, 138, 8)
[root@nfs-server ~]# echo "(63*512*255*130)/1000/1000"|bc
1069
[root@nfs-server ~]# echo "scale=2;(63*512*255*130)/1000/1000"|bc
1069.28          《========  用scale来保留小数


机械磁盘读写磁盘数据的原理小结:

磁盘是按照柱面为单位读写数据的

不同磁头间切换是电子切换,而寻道是机械的切换

5 磁盘分区

图片.png

5.1 主引导扇区

图片.png

16字节分区表内容

字节数

说明

1Bytes

State       :分区状态,0=未激活,0x80=激活

1Bytes

StartHead   :分区起始磁头号

2Bytes

StartSC     :分区起始扇区和柱面号。低字节的低6位为扇区号,高2位为柱面号的第910位;高字节为柱面号的低8

1Bytes

Type      :分区类型,如0x0B=FAT320x83=linux00表示未用

1Bytes

EndHead :分区结束磁头号

2Bytes

EndSC     :分区结束扇区和柱面号,定义同前

4Bytes

Relative    :线性寻址方式下分区相对扇区地址

4Bytes

Sectors     :分区大小(总扇区数)

硬盘的0磁头0磁道1扇区,是硬盘的一个非常重要的位置,在这个扇区中存放硬盘的主引导记录MBR和硬盘的分区表DPT

MBR备份:dd if=/dev/sda of=mbr.bin bs=512 count=1

MBR恢复:dd if=mbr.bin of =/dev/sda bs=512 count=1

od –xa mar.bin   可以读取MBR信息

5.2 磁盘分区的重点

1、磁盘分区的实质就是针对0磁头0磁道1扇区的前446字节后面接下来的64bytes的分区表进行设置,即主要是划分起始以及结束磁头号,及扇区号和柱面号。因此,理论上,调整分区大小,不会删除分区内的数据。

2、分区工具有fdisk(适合小于2T的磁盘分区),parted(适合大于2T的磁盘分区,可以对小于2T的磁盘分区),fdisk首选,只有大于2T时才去选parted

3、一块磁盘的分区表仅有64bytes大小,每个分区表要占用16个字节,因此一块磁盘仅支持四个分区表信息,即主分区+扩展分区的总量不超过4

4、磁盘分区是按照柱面来划分的

5、扩展分区不能直接使用的,还需要在扩展分区的基础上创建逻辑分区

6、扩展分区有自己的分区表,因此,扩展分区下面的逻辑分区可以有多个

5.3 磁盘分区注意事项要点

1、任意多个主分区,但要求1≤主分区数量≤4

2、扩展分区可以和主分区组合,2≤(主分区+扩展分区)数量≤4

3、扩展分区最多只能有一个

如果分成四个磁盘分区的话,那么最多就只有以下两种

P + P + P + P

P + P+ P + E

特别说明:由于MBR及磁盘分区表大小的限制,如果对磁盘分配了4P3P+E后,即使磁盘还有剩余未分的空间,那么这部分空间也无法分区使用了。因此在做分4个分区的时候,在最后一个分区要将所有的剩余空间都分配给这个分区

4、分区数字编号1~4留给主分区和扩展分区使用,逻辑分区只能从5开始

5、主分区和逻辑分区在一般的数据存储使用上没有区别(对于大多数的数据存储),在安装操作系统时第一个分区要选主分区

5.4 磁盘分区实战

fdisk分区

fdisk -cu /dev/sdb  -c DOS模式切换到c模式    -u从按照柱面分区改成按照扇区来分区

partprobe /dev/sdb  通知操作系统分区表的变化

[root@nfs-server ~]# man partprobe
PARTPROBE(8)                   GNU Parted Manual                  PARTPROBE(8)
 
NAME
       partprobe - inform the OS of partition table changes

 

[root@nfs-server ~]# fdisk -cu /dev/sdb
 
Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition                     删除分区
   l   list known partition types              列出分区类型
   m   print this menu                      打印菜单            
   n   add a new partition                   创建分区
   o   create a new empty DOS partition table
   p   print the partition table                打印分区表
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id           改变分区系统类型
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit             写入分区表
   x   extra functionality (experts only)

 

实验分6个区:

2P+1E4L)的方式

[root@nfs-server ~]# fdisk -cu /dev/sdb
 
Command (m for help): p
 
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 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
Disk identifier: 0x00025080
 
   Device Boot      Start         End      Blocks   Id  System
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +100M
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First sector (206848-2097151, default 206848):
Using default value 206848
Last sector, +sectors or +size{K,M,G} (206848-2097151, default 2097151): +100M
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 3
First sector (411648-2097151, default 411648):
Using default value 411648
Last sector, +sectors or +size{K,M,G} (411648-2097151, default 2097151):
Using default value 2097151
 
Command (m for help): p
 
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 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
Disk identifier: 0x00025080
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      206847      102400   83  Linux
/dev/sdb2          206848      411647      102400   83  Linux
/dev/sdb3          411648     2097151      842752    5  Extended
 
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First sector (413696-2097151, default 413696):
Using default value 413696
Last sector, +sectors or +size{K,M,G} (413696-2097151, default 2097151): +100M
 
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First sector (620544-2097151, default 620544):
Using default value 620544
Last sector, +sectors or +size{K,M,G} (620544-2097151, default 2097151): +100M
 
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First sector (827392-2097151, default 827392):
Using default value 827392
Last sector, +sectors or +size{K,M,G} (827392-2097151, default 2097151): +100M
 
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First sector (1034240-2097151, default 1034240):
Using default value 1034240
Last sector, +sectors or +size{K,M,G} (1034240-2097151, default 2097151):
Using default value 2097151
 
Command (m for help): p
 
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 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
Disk identifier: 0x00025080
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      206847      102400   83  Linux
/dev/sdb2          206848      411647      102400   83  Linux
/dev/sdb3          411648     2097151      842752    5  Extended
/dev/sdb5          413696      618495      102400   83  Linux
/dev/sdb6          620544      825343      102400   83  Linux
/dev/sdb7          827392     1032191      102400   83  Linux
/dev/sdb8         1034240     2097151      531456   83  Linux
 
Command (m for help): t
Partition number (1-8): 8
Hex code (type L to list codes): L
 
 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris       
 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx        
 5  Extended        42  SFS             86  NTFS volume set da  Non-FS data   
 6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility  
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt        
 9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access    
 a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O       
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor     
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs       
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT           
 f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor     
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor     
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary 
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS   
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep       
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT           
1e  Hidden W95 FAT1
Hex code (type L to list codes): 8e
Changed system type of partition 8 to 8e (Linux LVM)
 
Command (m for help): p
 
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 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
Disk identifier: 0x00025080
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      206847      102400   83  Linux
/dev/sdb2          206848      411647      102400   83  Linux
/dev/sdb3          411648     2097151      842752    5  Extended
/dev/sdb5          413696      618495      102400   83  Linux
/dev/sdb6          620544      825343      102400   83  Linux
/dev/sdb7          827392     1032191      102400   83  Linux
/dev/sdb8         1034240     2097151      531456   8e  Linux LVM

将分区保存,并且将分区表变化通知操作系统

Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
Syncing disks.
[root@nfs-server ~]# partprobe /dev/sdb
parted分区

parted磁盘分区管理工具,它比fdisk更加灵活丰富,同时支持GUID分区。GUID磁盘分割表(GPT

parted分区场景:一般大于2T的分区

GPT是指全局唯一标识磁盘分区表格式

由于MBR分区表的最大可寻址的存储空间只有2Tb,因此,在大硬盘出现的现在,MBR分区方式和逐渐被GUID分区表取代

 

分区的命令帮助栏
[root@nfs-server ~]# parted /dev/sdb
GNU Parted 2.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help                                                            
  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  check NUMBER                             do a simple check on the file system
  cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another partition
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on partition NUMBER
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file system
  move NUMBER START END                    move partition NUMBER
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table, available devices, free
        space, all found partitions, or a particular partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  resize NUMBER START END                  resize partition NUMBER and its file system
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information
        of GNU Parted
修改分区表类型
(parted) p                                                               
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos        <==========改前
 
Number  Start  End  Size  Type  File system  标志
 
(parted) mklabel gpt
警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost.
Do you want to continue?
是/Yes/否/No? yes                                                        
(parted) p                                                               
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt           <==========改后
 
Number  Start  End  Size  File system  Name  标志
分区的增加和删除
(parted) mkpart primary 0 100
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? Ignore
(parted) p                                                               
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
 
Number  Start   End    Size   File system  Name     标志
 1      17.4kB  100MB  100MB               primary
 
(parted) rm 1
(parted) p                                                               
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
 
Number  Start  End  Size  File system  Name  标志


 

 

非交互分区忽略提示实例:

parted /dev/sdb  mklabel gpt yes
parted /dev/sdb  mkpart primary ext4 0 100 ignore
parted /dev/sdb  mkpart primary linux-swap 101 8192 ignore
parted /dev/sdb  mkpart logical ext4 8193 100GB ignore
parted /dev/sdb  mkpart logical ext4 101GB 3000GB ignore
parted /dev/sdb  quit

PSparted分区是实时生效的,与fdisk不同

6 磁盘的格式化

[root@nfs-server ~]# ll /dev/sdb*

brw-rw---- 1 root disk 8, 16 7   9 22:04 /dev/sdb

brw-rw---- 1 root disk 8, 17 7   9 22:04 /dev/sdb1

brw-rw---- 1 root disk 8, 18 7   9 22:04 /dev/sdb2

brw-rw---- 1 root disk 8, 21 7   9 22:04 /dev/sdb5

格式化的实质:创建文件系统

mkfs -t ext4 /dev/sdb1 
tune2fs -c -1 /dev/sdb   使用负值设置某一设备永远不要自检。
[root@nfs-server ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729
 
正在写入inode表: 完成                           
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
 
This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override

 

[root@nfs-server ~]# tune2fs -c -1 /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1

 

7 磁盘的挂载

挂载的实质:为文件系统指定访问入口

mount -t ext4 /dev/sdb1 /mnt


开机自动挂载:/etc/fstab

/dev/sdb1     /mnt     ext4      defaults     0   0

mount -a fstab进行挂载测试

mount查看挂载

 

检查挂载:

     df -hdf -i

     cat /proc/mountsmount

[root@nfs-server ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       9.2G  1.8G  7.0G  20% /
tmpfs           491M     0  491M   0% /dev/shm
/dev/sda1       194M   29M  155M  16% /boot
/dev/sdb1        97M  5.6M   87M   7% /mnt

 

[root@nfs-server ~]# mount
/dev/sda3 on / 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/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
/dev/sdb1 on /mnt type ext4 (rw)

8 free查看系统内存

[root@localhost ~]# free -m

             total       used       free     shared    buffers     cached

Mem:           980        441        539          0         85        154

-/+ buffers/cache:        201        779  <====真正剩余的内存

Swap:          511          0        511

1linux的特性是将系统不用的物理内存缓存起来,因此539不是系统的真实内存,779才是真正可用的内存

2buffers为写入缓冲区,sync将缓冲区数据写入磁盘

3cache为读取数据的缓存区

4)硬盘是机械的,无论是写入还是读取都太慢了,所以读取和写入都是用了缓存技术

5)门户架构网站架构都会用缓存技术,来让用户写入读取尽可能不接触磁盘


9 企业生产工作中磁盘的选型

主流服务器公司:DELL,HP,IBM

1)企业级SAS硬盘 15000/分主轴转数

用途:用于提供生产线上的普通对外提供服务的业务服务器,没有特殊业务需求,SAS首选

2)企业级SATA硬盘 7200-10000/

线下不提供服务的数据存储或者并发业务访问不是很大的业务应用,比如站点程序及数据库、图片的线下备份等

选购小结:

1)线上的业务,用SAS磁盘

2)线下的业务,用SATA

3)线上高并发,小容量的业务,SSD磁盘

4)选择思想:根据数据的访问热度,智能分析分层存储

特别注意:

千万不要用SATA磁盘来做在线高并发服务的数据存储或数据库业务

3SSD固态电子盘:

容量小,价格贵,速度快。一般用于数据量小并且有超大规模高并发的业务

10 Raid

10.1 什么是Raid

磁盘阵列(Redundant Arrays of Independent DisksRAID),有“独立磁盘构成的具有冗余能力的阵列”之意。

磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。可以提供比单个物理磁盘更大的存储容量或更高的存储性能,同时又能提供不同级别的数据冗余备份。

 

10.2 Raid级别介绍

Raid级别一般有:Raid0Raid1Raid3Raid4Raid5Raid7Raid10

生产环境常用的Raid级别:Raid0Raid1Raid5Raid10

RAID级别

优点

缺点

实际应用场景

RAID0

读写速度最快

没有任何冗余

Mysql Slave,集群的节点

RAID1

100%冗余,镜像

读写性能一般,成本高

单独的,数据重要,且不能宕机的业务。监控,系统盘

RAID5

具备一定的性能和冗余,可以坏一块盘,读性能不错

写入性能不高

一般的业务都可以用

RAID10

读写速度很快,100%冗余

成本高

性能和冗余要求都很高的业务,数据库和存储的主节点

 

10.3 Raid技术分类

RAID技术(性能不好,操作系统坏了,RAID受影响,一般不用)

RAID技术

基于硬件的RAID技术,在生产场景中,首选

10.4 RaidLVM的区别

LVM Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制

如果过于强调性能和备份,那么还是使用RAID功能,而不是LVM

RaidLVM的区别

LVM:灵活的管理磁盘的容量,有一定的冗余和性能功能,但很弱。

RAID:更侧重性能和数据安全

 

10.5 为什么需要Raid

RAID最直接的好处:

1、提升数据安全性

2、提升数据读写性能

3、提供更大的单一逻辑磁盘数据容量存储

 

10.6 Raid级别详细说明

Raid 0

在所有RAID级别中具有最高的存储性能

要制作RAID0,要求至少是1块物理磁盘

 图片.png

关注点

描述

容量

3块盘加在一起的容量,在RAID级别中具备最高的存储性能,原理是把连续的数据分散到多个磁盘上存取。

性能

理论上磁盘读写速度比单盘提升3倍,磁盘越多倍数会越小

冗余

无任何冗余,坏1块盘,整个RAID就不能用了

场合

特点

速度快,无冗余,容量无损失

生产应用场景:

1、负载均衡集群下面的多个相同RS节点服务器。

2、分布式文件存储下面的主节点或CHUNK SERVER

3、Mysql主从复制的多个Slave服务器

4、对性能要求很高,对冗余要求很低的相关业务

Raid 1

又称为MirrorMirroring,最大限度的保证用户数据的可用性和可修复性。

要求至少是两块磁盘,整个RAID大小等于两个磁盘中最小的那块磁盘的容量(最好使用同样大小的磁盘),数据有100%的冗余,在存储时同时写入两块磁盘,实现了磁盘的完整备份

图片.png

关注点

描述

容量

损失50%的数据容量。例如:21T的盘,做RAID1,容量1T

性能

Mirror不能提高存储性能,理论上写性能和单盘相差不大

冗余

在所有RAID级别中,RAID1安全保障最高,冗余度100%

场合

适用于存放重要数据,如服务器系统分区和对性能要求不高的数据库存储等领域

特点

100%冗余,容量损失一半

 

Raid 5

是一种存储性能、数据安全和存储成本兼顾的存储解决方案。

RAID 5需要三块或以上的物理磁盘,RAID5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。

图片.png

关注点

描述

容量

损失一块盘的数据容量

性能

具有和RAID0相近似的数据读取速度,知识多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入稍慢

冗余

可损失一块盘,数据安全保障程度比RAID1低,而磁盘空间利用率比RAID1

场合

RIAD0RIAD1的折中方案,适合对性能和冗余都有一定要求,又都不是十分高的情况。Mysql的主从库都可以,存储也可以。普通的服务器为了减少成本,又保持一定冗余和读写性能都行

特点

容量损失一块盘,写数据通过奇偶校验

 

Raid 10

Raid0Raid1的组合形式,也称Raid10

存储和性能兼顾的方案

最低磁盘数量

4

优点/特点

缺点

RAID10RAID0为执行阵列,以RAID1为数据保护阵列

存储容量利用率较低,单位成本昂贵

RAID10拥有与RAID1一样的容错能力

磁盘并行工作使用相应磁轨持续性能被减弱

RAID10用于容错处理的系统开销与单独镜像操作基本一样

由于成本的原因造成非常有限的可扩展性

由于使用RAID0作为执行登记,因此具有较高的I/O带宽

对于想在RAID1基础上大幅度提高性能的用户,它是一个完美的解决方案

适用领域

数据库存储服务器等需要高性能、高容错但对容量要求不大的场合

 

RAID10RAID01

图片.png

RAID10系统要比RAID01系统冗余度高,安全性高。