磁盘体系知识汇总
磁盘体系知识: ① 机械磁盘 速度更快: 1.主轴转速:5400/7200/10000/15000 2.接口:sata/sas/scsi/ide 3.读写更灵敏的磁头 体积更小、容量更大: 存储密度高 free -m 1)linux系统的特性是将系统不用的物理内存作为缓存区或缓冲区使用 2)buffers为写入缓存区,sync将缓冲区数据写入磁盘 3)cache为读写数据的缓存区 4)硬盘是机械的,无论是写入还是读取都太慢了,所以读取和写入都是用了缓冲和缓存技术 5)门户架构网站架构都会用缓存技术,来让用户写入读取尽可能不接触磁盘 磁盘的内部结构: 磁盘和磁头 比喻: scsi 驴 sata 马 sas 骡子 企业生产环境主流磁盘的相关信息对比: 企业生产场景普及程度:sas>sata>ssd 单位容量对比性能和价格:ssd>sas>sata 单位价格购买磁盘容量:sata>sas>ssd 固态硬盘:速度快、体积小重量轻、成本高、容量低、寿命有限、数据难以恢复 磁盘选购小结: 1)线上业务,用sas磁盘 2)线下业务,用sata磁盘,磁带库 3)线上高并发、小容量的业务,ssd磁盘 4)思想:根据数据的访问热度,智能分析分层存储。sata+ssd 特别注意: 千万不要用sata磁盘来做在线高并发服务的数据存储或数据库业务 某公司采用sata做数据库的存储盘,结果导致数据库连续宕机1个月 5台sata盘raid5 解决:重新买5台,把磁盘从sata(raid5)换成sas(raid10),6个月内没事 磁盘相关名词翻译: Disk 磁盘 Head 磁头 Sector 扇区 Track 磁道 Cylinder 柱面 Units 单元块(一个柱面的大小) Block 数据块 Inode 索引节点 磁盘大小计算: 1、磁盘大小=盘片大小*磁头数 盘片大小=磁道大小*磁道数 磁道大小=512*扇区数 磁盘大小=512*扇区数*磁道数*磁头数 2、磁盘大小=柱面大小*磁道数 柱面大小=磁道大小*磁头数 磁道大小=512*扇区数 磁盘大小=512*扇区数*磁头数*磁道数 raid介绍: 1.什么是raid raid是廉价冗余磁盘阵列(Redundant Array of Inexpensive Disk)的简称,有时也简称磁盘阵列(Disk Array) raid是一种吧多块独立的物理磁盘按不同的技术方式组合起来形成一个磁盘组,在逻辑上(做完raid,装系统后)看起来就是一块大的磁盘,可以提供比单块物理磁盘更大的存储容量或更高的存储性能,同时又能提供不同级别数据冗余备份的一种技术 2.raid级别介绍 raid级别一般有:raid0、raid1、raid2、raid4、raid5、raid6、raid7、raid0+1(raid)、raid53等 生产环境常用raid的级别:raid0、raid1、raid5、raid10 优缺点: raid级别 关键优点 关键缺点 应用场景 raid0 读写速度最快 没有任何冗余 MySQL Slave,集群的节点RS raid1 100%冗余,镜像 读写性能一般,成本高 单独的,数据重要,且不能宕机的业务。监控,系统盘等 raid5 具备一定性能和冗余,可\ 写入性能不高 一般的业务都可以用 坏1块盘,读性能不错 raid10 读写速度很快,100%冗余 成本高 性能和冗余要求都很好的业务,数据库主库和存储的主节点 3.raid技术分类 ① 软raid技术: 在linux下安装系统过程中或者安装系统后通过自带的软件就能实现软raid功能,使用软raid可省去购买昂贵的硬件raid控制器和附件就能极大的增强磁盘的io性能和可靠性。由于用软件去实现的raid功能,所以它配置灵活、管理方便。同时使用软件raid,还可以实现将几个物理磁盘合并成一个更大的虚拟设备,从而达到性能改进和数据冗余的目的 ② 硬raid技术: 基于硬件的raid解决方案比基于软件raid技术在使用性能和服务性能上会更胜一筹,具体表现在检测和修复多位错误的能力、错误磁盘自动检测和阵列重建等方面。从安全性上考虑,基于硬件的raid解决方案也是更安全的,因此,在实际的生产场景中,基于硬件的raid解决方案应该是我们的首选。互联网公司常用的生产dell服务器,默认的就会支持raid0,1,如果raid5,10就需要购买raid卡 4.raid和LVM的区别 LVM全称(Logic Volume Management<Manager>)逻辑卷管理,他的最大用途是可以灵活的管理磁盘的容量,让磁盘分区可以随意放大或缩小,便于更好的应用磁盘的剩余空间 如果过于强调性能与备份,那么还是应该使用raid功能,而不是LVM 一般情况下,虚拟化技术时使用LVM LVM:灵活的管理磁盘容量,有一定的冗余和性能功能,但很弱 RAID:更侧重性能和数据安全 5.为什么需要磁盘阵列? 1)提升数据安全性 2)提升数据读写性能 3)提供更大的单一逻辑磁盘数据容量存储 6.raid级别细节 raid0 raid0又称为Stripe(条带化)或Striping(条带模式),它在所有raid级别中具有最高的存储性能 raid0提高存储性能的原理是把连续的数据分散到多个物理磁盘上存取。这样,系统有数据读写请求就可以在多个磁盘并行的执行,每个磁盘读写属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能 要制作raid0要求至少是1块物理磁盘,一般用来做raid的不同磁盘大小最好一样(可以充分发挥并行优势),而数据分散存储于不同的磁盘上,在读写的时候可以实现并发,所以,raid0读写性能最好。但是没有容错功能,即任何一个磁盘的损坏会导致整个raid的数据全部丢失,生产中使用单盘,要做成raid0,否则可能无法使用 生产应用场景: 1)负载均衡集群下面的多个相同RS节点服务器 2)分布式文件存储下面的主节点或CHUNK SERVER 3)MySQL主从复制的多个Slave服务器 4)对性能要求很高,对冗余要求很低的相关业务 小结: 以4块盘做raid0为例: 容量:是4块盘加在一起的容量,在raid级别中具备最高的存储性能,原理是把连续的数据分散到多个磁盘上存取 性能:理论上磁盘读写速度比单盘提升4倍,磁盘越多倍数会越小 冗余:无任何冗余,坏1块盘,整个raid就都不能用了 场合:适合于大规模并发读写,但对数据安全性要求不高的情况。如:集群中的RS,做虚拟机的实体机、负载均衡集群下面的多个相同RS节点服务器,如分布式文件存储下面的CHUNK SERVER,以及MySQL主从复制的多个Slave服务器 特点:速度快、无冗余,容量无损失 raid1 raid1又称为Mirror或Mirroring(镜像),它的宗旨是最大限度的保证用户数据的可用性和可修复性。raid1的操作方式是把用户写入一个物理磁盘的数据100%地自动复制到另外一块物理磁盘上,从而实现存储双份的数据 要制作raid1,要求至少是两块磁盘,整个raid大小等于两个磁盘中最小的那块物理磁盘的容量(当然,最好使用相同大小的物理磁盘),数据有100%的冗余,在存储时同时写入两块磁盘,实现了数据完整备份。但相对降低了写入性能,读写时可能可以并发读取 小结: 以2块盘做raid1为例: 容量:损失50%的磁盘容量。例如:2块1T盘,做raid1后,容量为1T 性能:Mirror不能提高存储性能,理论上写性能和单盘相差不大。有人说读取效率是2倍,有待测试 冗余:在所有raid级别中,raid1提供最高的数据安全保障。冗余度100% 场合:适合于存放重要数据,如服务器系统分区和对性能要求不高的数据库存储等领域 特点:100%冗余,容量损失一半 raid5 raid5是一种存储性能、数据安全和存储成本兼顾的存储解决方案 raid5需要三块或以上的物理磁盘,可以提供热备盘实现故障的恢复,采用奇偶校验,可靠性强,且只有同时损坏两块或以上硬盘时数据才会完全破坏,只损坏一块硬盘时,系统会根据存储的奇偶校验位重建数据,临时提供服务。此时如果有热备盘,系统还会自动在热备盘上重建故障磁盘上的数据 以4个磁盘组成的raid5为例,raid5不对存储的数据进行备份,而是把数据和对应的奇偶检验信息存储到raid5的各个物理磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当raid5的一个物理磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据 raid5可以理解为raid0和raid1的折中方案。raid5可以为系统提供数据安全保障,但保障程度比Mirror底而磁盘空间利用率要比Mirror高。raid5具有和raid0相似接近的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,raid5的磁盘空间利用率要比raid1高,存储成本相对较低 小结: 容量:损失一块盘的数据容量 性能:raid5具有和raid0相近似的读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢 冗余:可损失一块盘,raid5数据安全保障程度比raid1底而磁盘空间利用率要比raid1高 场合:raid5可以理解为raid0和raid1的折中方案,适合对性能和冗余都有一定要求,又都不是十分高的情况。MySQL的主从库都可以,存储也可以。普通的服务器为了减少维护成本,又保持一定冗余和读性能都可以做raid 特点:容量损失一块盘,写数据通过奇偶校验,raid0和raid1的折中方案 优点 缺点 很高读取效率 硬盘的故障会对吞吐量造成中等影响 中等写入效率 控制器的设计较为复杂 很低ECC硬盘数量占用率,ECC效率高 相对于raid1来说,因磁盘故障而重新构建raid体系比较麻烦 良好的集合数据传输率 个别数据库的传输率与单个硬盘相当 适用领域: 文件和应用服务器 数据库服务器 web、e-mail以及新闻服务器 raid10 小结: raid10系统要比raid01冗余度要高。 分区知识: 分区 磁盘主引导记录:0磁头0磁道1扇区(512bytes) 446bytes 主引导记录,MBR所在地 64bytes 分区表(16bytes为1个分区表) 1bytes State:分区状态,0=未激活,0x80=激活 1bytes StartHead:分区起始磁头号 2bytes StartSC:分区起始扇区和柱面号,低字节的底6位为扇区号,高2位为柱面号的第9、10位,高字节为柱面号的底8位 1bytes Type:分区类型,如0x0B=FAT32,0x83=Linux等,00表示未用 1bytes EndHead:分区结束磁头号 2bytes EndSC:分区结束扇区和柱面号,定义同前 4bytes Relative:线性寻址方式下分区相对扇区地址 4bytes Sectors:分区大小(总扇区数) 说明:这就是一个磁盘分区的分区表,fdisk,parted分区工具分区实质就是改变上述64字节的分区表信息 ①号主分区 引导分区信息 数据(data) ②号主分区 引导分区信息 数据(data) ③号主分区 引导分区信息 数据(data) ④扩展分区 扩展的分区表 55AA 引导分区信息 数据(data) 主引导记录: 磁盘的0磁头0磁道1扇区,是硬盘上一个非常重要的位置。在这个扇区中\ 存放有磁盘的主引导记录MBR(Master Boot Record)和硬盘的分区表 \ DPT(Disk Partition Table) dd if=/dev/sda of=mbr.bin bs=512 count=1 od -xa mbr.bin 磁盘分区的重点: 1.给磁盘分区的实质就是针对0磁头0磁道1扇区的后64bytes的分区表\ 进行设置,即主要是划分磁头号、扇区号和柱面号 2.给磁盘分区的工具有fdisk(适合给小于2T的磁盘分区),parted \ (擅长给大于2T的磁盘分区,也可以对小于2T的磁盘分区)。 \ 首选fdisk,大于2T是选parted 企业面试题:一台服务器6块600G的磁盘,raid5后,总大小3T,此时 \ 无法装系统,请问为什么?(默认大于2T不能装系统) 解决办法: 方法1:做raid5后,不要重启装系统,而是在raid界面,继续分1个小的虚拟磁盘vd 200G,用这个200G的虚拟磁盘装系统,装完系统后再把剩余的2.8T分区通过parted分区使用 方法2:先拿1块盘raid0,剩下5块再做raid5,在raid0装系统 方法3:装系统时,选gpt分区格式进行系统安装 3.一块磁盘的分区表仅有64个bytes大小,每个分区表要占用16个字节,因此1块盘仅支持4个分区表信息 4.磁盘分区是按照柱面(cylinder)来划分的 5.扩展分区不能直接使用的,还需要在扩展分区的基础上创建逻辑分区才行 6.扩展分区有自己的分区表,因此,扩展分区下面的逻辑分区可以有多个 1.fdisk分区工具介绍 a.fdisk - Partition table manipulator for Linux b.linux下最常用的分区工具,一般是装完系统后进行分区。装系统之前的分区,多数都是系统ISO里面的工具分,或者raid里分小磁盘 c.fdisk只能root权限用户管理 d.fdisk适合于对装系统后的剩余空间进行分区,例如:安装系统时没有全部分区,或者安装系统后添加磁盘等 e.fdisk分区的实质就是修改磁盘0磁头0磁道1扇区的后64字节的分区表信息 f.fdisk分区,磁盘大小要小于2T,大于2T时,我们可以使用parted(gpt) 格式化(创建ext4文件系统,初始化inode和block): 1.什么是文件系统? 在计算机系统中,简单地说,文件系统就是一种存储和组织计算机数据文件的机制或者方法,它使得对计算机文件系统内数据的访问和查找变得更容易、简单,如ext2、ext3(Centos5.x)、ext4(Centos6.x)、xfs(Centos7.x)、zfs和Reiserfs或FAT、NTFS等都是文件系统 2.分区与文件系统的关系 我们通过fdisk命令对一个磁盘进行分区后,并不能直接挂载目录存放数据实体,还需要格式化操作,才可以进行挂载并存放数据 3.ext2文件系统细节 除了inode和block信息外,操作系统还会记录文件系统的整体信息于superblock中,这个superblock包括整个文件系统的inode和block的总的数量,已经使用的数量,剩余数量等(称之metadata元数据) 相关操作系统使用的文件系统: SUSE linux的默认文件系统ReiserFS文件系统 IBM的AIX使用的jfs日志文件系统 Sun OS所用的文件系统ufs Centos7采用的是XFS Centos6采用的是ext4 Centos5采用的事ext3 系统选择小结: a.Centos默认的文件系统都是比较优秀的 b.xfs、reiserfs需要单独安装,默认不支持。海量服务器使用多种文件系统维护可能不方便 c.大并发优化,做磁盘系统的优化是一方面,但更多的还是在网站前端增加缓存服务器(squid、varnish),存储数据库的前端增加缓存(memcache、redis),这是架构师的能力 /lib/modules/ /kernel/fs 安装xfs文件系统: modprobe xfs lsmod|grep xfs 超级块:记录文件系统的控制与管理信息 ① block和inode的个数和大小及其使用情况 ② 文件系统的载入时间、最近一次写入数据时间、最近一次执行fsck进行磁盘检查的时间等等 ③ 有效位:为0则已载入,为1则未载入 组描述:记录本块组从何处开始 块位示图:使用位示图记录那些块已用哪些块未用 inode位示图:使用位示图记录inode使用情况 inode 区:各inode组成的区域,每个inode都有一个唯一编号 数据块区:各block组成的区域,用于存放文件数据
静静的学习一阵子儿...