前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据可靠性之磁盘

数据可靠性之磁盘

作者头像
SRE运维实践
发布2019-07-08 13:08:18
1K0
发布2019-07-08 13:08:18
举报
文章被收录于专栏:SRE运维实践SRE运维实践

序言

可靠性,你有多可靠?

在进行数据存储的时候,最担心的莫过于数据丢失了,而数据丢失可以从很多层面来进行保障,但是最终数据都是存储在磁盘当中。

SATA,便宜,容量大,7200转,写入速度慢;SAS,相对便宜,容量大,用的少,10000转,写入速度一般;SSD,贵,容量小,主要负责热点数据,随机读速度很快,15000转。。。这种东西无意义,除非你要采购。。。so boring。。。

如何保障数据可靠性

有的时候使用文件来保存数据,有的时候使用内存来保存数据,有的时候使用磁盘来保存数据,持久化,也就是将数据转换成字节流,然后把01010010写入到磁盘的扇区当中。

在存储数据的时候,是否需要做RAID?

在分布式存储中,基本上是不做RAID的,因为需要保存大量的数据,使用什么类型的磁盘来存储数据?是SATA?还是SAS?还是SSD呢?

分布式存储,追求的是容量,从而基本上是使用SATA存储,一个盘多大?8T。。。一个服务器总共12块硬盘,那就是存储容量为96T,在做一个分布式系统的集群的时候,一般服务器本身的操作系统盘也是占据部分空间,再加上分区的时候,保留的空间,大量的元数据占用的空间,其实真正的空间也就80多个T。

分布式存储,不需要太多的核心的数,56core就够了,那么内存多大,一般使用的也就是128G内存,那么网卡都是万兆网卡。

在分布式存储中,由于没有从底层的硬件做RAID,那么在各种硬盘损坏之后,基本上就是数据丢失,那么需要重新将副本数据迁移到好的机器当中,从而在分布式存储中,分片是保证数据可靠性的唯一手段,这也就是为什么在使用分布式存储的时候,一般都设置分片数为3,为什么是奇数?因为可能这个分布式存储需要选主对外提供服务,奇数只是为了保证不脑裂而已。

那么如果在写入数据的时候,需要缓存怎么办?可以使用PCI-E扩展接口,然后外接两个SSD磁盘,专门用来做缓存,毕竟SSD是适合于随机读写的。。。

当不是使用分布式存储的时候,那么如何来保证数据的可靠性,靠的就是RAID,其实使用RAID更加简单,在服务器级别,一般使用RAID10来进行存储,使用四快盘,从而可以冗余一块盘,硬盘坏了一块怎么办,直接替换就好了,在硬件级别会自动进行数据同步,当你替换硬盘后,会发现磁盘灯哗啦哗啦的转个半小时,然后就好了。

服务器掉电怎么办?分布式存储是在应用层进行冗余,而其他的则是在硬件层冗余,当使用RAID的时候,都会有掉电机制,也就是即使服务器掉电了,数据也会可靠的写入到磁盘当中。

IO链路

有了RAID的机制,是不是就高枕无忧?有了分布式存储,是不是就是普天大吉?

数据存储,有些人写入数据的时候调用一个方法,write就写入了,返回成功就是成功了,返回失败就认为失败了。。。。真的是这样吗?

调用写入的方法,分为两种,一种是同步写入,一种是异步写入,同步写入的时候,是将数据写入到磁盘,然后应用到内存,返回客户端成功;而大部分的操作系统自带缓存,也就是在使用命令free的时候看到的buffer,这个里面存储的就是你要写入的数据,也就是传言中的脏数据。。。why call it dirty?异步,就是将数据写入到buffer中,就返回客户端成功,其实这个时候,并没有真正将数据持久化到磁盘上,服务器后端有进程叫啥flush会定时的将脏数据写入到磁盘中,为了最大化的性能,一般都是批量写入,例如大小512K的时候,写入磁盘,或者指定时间,10ms写入一次。。。这个时候掉电。。。哼哼。。。你认为成功了的操作,其实并没有写入成功。。

掉电可能会丢失数据,看你运气的好坏咯。。。

数据强一致性,你可以禁用缓存,使用同步写入,但是如果一旦有故障,那么会阻塞写操作,最终超时报错,可用性和一致性之间一直是一种权衡的关系。。。毕竟有CAP理论撑腰。。。

写入数据?当写入数据的时候,其实又分为两个部分,一个部分是元数据,一个部分才是真正的数据,如果block数据写入了,而metadata没有写入,从客户端看起来还是丢失数据,虽然磁盘上存了真正的内容,但是元数据没有,客户端是读取不到的,相当于你删除了你电脑上的小电影,其实内容依旧在电脑上,只不过将元数据进行删除,就找不到了,但是依旧是可以恢复的。。。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SRE运维实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档