自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (7)
  • 收藏
  • 关注

原创 3.3 ZNS协议

前阵子刚介绍NVMe v2.0发布的ZNS 在企业级SSD上的支持,想着手机上要进展慢一些,谁想Mobile上的标准这么快就发布了,看来先进技术在Mobile的实现进度加快了。看来ZNS的优先级我得调整下尽快的更新。

2023-11-28 16:01:21 448

原创 4.3 F2FS/ZNS+Copy+FBO 最佳拍档

2021年NVMe 发布10周年之际,NVMe 2.0 Spec对协议进行的重新架构,也发布了很多有意思的特性优化存储性能。F2FS文件系统在一定程度上缓解了逻辑碎片化问题,但随着手机的使用和threaded logging随机写,还是有严重的逻辑碎片化。NVMe 的很多功能,一样也可以用到UFS应用层协议。2. UFS 固件检查这些LBA对应的PBA是否连续,以及不连续的程度。1. 系统空闲时,手机通过文件系统把需要性能优化的文件的LBA信息告诉UFS。3. 手机根据反馈,确定优化等级,发起优化指令。

2023-10-30 17:35:44 419

原创 4.3 F2FS

基于LFS(Log-structured File System)类型,使用copy-on-write策略直接写到新的数据块上,避免等待block擦除的开销,解决了需要先擦后写的问题;:在设备的第一个Segment (2MB)内。考虑到冗余,有2个f2fs_super_block结构,包括整个磁盘的segment数量、各个管理区域的起始地址、支持的特性。append-only的日志写策略,将随机写转化成顺序写。为了保证数据一致性,分为CP #0和CP #1,每个CP占一个Segment(2MB)

2023-09-27 14:54:46 509

原创 4.2 ext4

ext4 结构 TBD。

2023-09-26 14:24:09 485

原创 3.2 NVMe协议

背景:SATA/SAS带宽演进缓慢以及瓶颈,AHCI/SCSI协议低效。2009年Intel牵头Samsung,美光,DELL,Marvell,NetAPP,EMC等90多企业成立NVMe工作组制定新的标准。

2023-09-07 16:51:28 468

原创 3.1 PCIe协议

PCIe 5.0。

2023-09-07 16:19:47 280

原创 5.6 SPDK

英特尔开发的SPDK(Storage Performance Development Kit),提供了一整套工具、库、驱动程序,以实现高性能、扩展性强、全用户态的存储应用框架,大幅缩减存储IO栈的软件开销,从而提升存储性能。spdk的基石是用户态(user space)、轮询(polled-mode)、异步(asynchronous)、无锁(lockless)。

2023-09-04 17:09:30 120

原创 5.5 Ceph

Ceph的核心组件包括OSD、Monitor和MSD。

2023-09-04 16:19:24 94 1

原创 5.4 TiDB

负责接受客户端的连接,执行SQL解析和优化,将实际的数据读取请求转发给底层的存储节点 TiKV。TiDB是无状态的,可以部署多个实例,前端通过负载均衡组件对外提供统一接入地址。TiDB 是由PingCAP 公司研发设计的开源分布式数据库,兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用等特性。TiDB主要包括三个核心组件:TiDB Server,PD Server和TiKV Server。负责存储数据,是一个分布式的提供事务的 Key-Value 存储引擎,底层实现是Rocksdb。

2023-09-04 16:03:59 99 1

原创 2.12 企业级SSD之性能测试工具fio

写一个文件时,每次执行完一个job后,fio可以检验文件内容.允许的校验算法是:md5,crc64,crc32c,crc32c-intel,crc32,crc16,crc7,sha512,sha256,sha1,meta,null。如果refilee_buffers成本太高的话,但是负载要求不使用重复数据块,设置这个选项的话,可以轻微的改动IO buffer内容,这种方法骗不过聪明的块压缩算法,但是可以骗过一些简单的算法。负载,配置生成器的种子,使得路径是可以预估的,使得每次重复执行生成的序列是一样的。

2023-07-13 00:30:38 589 1

原创 5.1 Rocksdb

MySQL默认存储引擎是B+ tree 结构的InnorDB,也可以把存储引擎切换成Rocksdb称为MyRocks。Write首先写WAL日志文件,再写Memtable。当系统崩溃时,WAL 日志可以完整恢复 Memtable 中的数据。DBOptions::max_total_wal_size # WAL最大size。,是硬盘中持久化数据,有序键值对集合,因此可以通过二分法查找指定的key或范围。来提升写性能,数据有序存储,缺点是读性能的损失和写放大的增加。

2023-05-31 00:37:06 334

原创 5 数据库

5.3 MySQL5.4 Tidb5.5 Ceph。

2023-05-30 22:45:28 99

原创 4 文件系统

4.1 文件系统4.2 ext44.3 F2FS。

2023-05-30 22:40:52 88

原创 3 SSD协议

3.1 PCIe 协议。3.2 NVMe 协议。3.3 ZNS 协议。3.4 CXL 协议。3.5 SATA 协议。3.6 SCSI 协议。

2023-05-30 22:37:33 121

原创 2.2 SSD之地址映射

为了向前兼容,LBA是以sector(512B)为单位顺序排列,LBA不能直接映射到PBA,需要通过中间的转换HAFA找到PBA。LBA计算出HA,HA根据映射表找到FA,FA根据位置计算出PBA。在HDD时代,数据可以覆盖写,LBA和PBA直接对应不会更改。但是SSD时代,由于NAND特性,LBA所对应的PBA映射关系是不断修改着的。LBA(Logical Block Address),表示用户操作(读写)数据的位置。H2F表格的索引是FA,存放的值是FA。F2H表格的索引是FA,存放的值是HA。

2023-04-10 23:21:52 2464

原创 2.8 企业级SSD之掉电保护

突然掉电时,钽电容反向放电支持到DDR中的数据刷到NAND。重新上电后SSD需要10秒左右重新建立地址转换表。图有点复杂,有时间画好了再详细讲。

2023-04-02 22:45:54 1152

原创 2.9 企业级SSD之namespace管理

–flbas=, -f ] — FLBA size 用LBA模式0,size和capacity的单位都是逻辑块的大小512B。-c , -controllers= 就是前面命令获取到的id。[ –ncap=, -c ] — capacity of ns 单位512B, 所以最大是totalnvm/512。[ –nsze=, -s ] — size of ns 单位512B, 所以最大是totalnvm/512。7. 验证能否读取数据。

2023-04-02 22:25:04 1351

原创 2.10 企业级SSD之nvme log分析

Host从Controller读的千个512B(3 -> 2001~3000),不含meta。Controller检测到数据完整性错误次数(SCT:2h, SC:81~84h),Controller总共收到的err_log数量。剩余的坏块替换占比,Spare占OP约70%Host从Controller读的命令数。过Warning 温度时间,单位:秒。过Critical温度时间,单位:秒。过警告温度时间,单位:分钟。过临界温度时间,单位:分钟。过Warning 温度的次数。主控忙于I/O命令的分钟数。

2023-04-01 23:34:45 956

原创 2.11 企业级SSD之nvme-cli使用

其实nvme-cli的族谱里除了reset,rescan等几个命令,其他都是admin-passthru,IO-passthru衍生出来的。比如nvme-admin-passthru衍生出get-log等一堆admin命令,get-log又衍生出很多具体的log命令。nvme SSD用的最多的是开源工具nvme-cli,大部分代码就是拼命令字段然后通过ioctl发给内核,可以github下载源码看下具体实现。nvme -h 可以获取所支持的命令,nvme smart-log -h能更具体获得参数介绍。

2023-04-01 23:05:49 2684

原创 2.4 SSD之磨损均衡(WL-wear leveling)

是在缓存处理数据,就是说有Write操作时,从空闲block链表里拿ECT最小的block写入,这个block从空闲链表加入到数据块链表,并建立地址映射关系。NAND寿命受限于擦除次数,对相同的block进行改写和擦除很容易就造成永久性伤害,因此引入WL平均地擦除所有block,以延长SSD寿命。NAND中也有很多坏块,包括出厂时的硬坏块,还有使用过程中产生的软坏块,在状态寄存器标示后倒出数据,并加入到坏块表里,这些会另外文章里介绍。相减,超过阈值就把数据挪到空间快最大ECT这个block。

2023-04-01 22:09:03 1528

原创 2.6 SSD之ECC/LDPC

如果有2个bit发生反转,假如在同一行,通过CP能找到在哪2列,但是RP是完全相同找不到在哪行。2011年做手机memory时,2D NAND检错和纠错算法是ECC,一个page 2k,每256 bytes做ecc,纠1检2。刚才的图再拿过来用下,还是从列先讲原理,比如bit2的列里存在1个bit反转,从最外层往里二分法比较。bit 0/bit 1/bit 4/bit 5 这。bit 0/bit 2/bit 4/bit 6 这。bit 0/bit 1/bit 2/bit 3 这。时怎么用它来纠错和检错呢?

2023-04-01 21:22:55 1242

原创 2.5 SSD 之写放大

比如要写一个page H的数据,这时如果没有干净的block,需要做垃圾回收,把block x的3个有效page搬出来,擦除block x,再写入新数据。,比如冷热数据的分离处理,冷数据挪到EC(erase count)值最大的block中,这样也较少了GC对冷数据的搬移次数。数据区比例小了,每个block中的有效数据占比也减少,做GC操作时搬移数据也就相应减少。假如是覆盖写,比如修改page B,有效数据和新的page b写入到新的block里,WA就是3。,比如随机的数据整合成顺序写。

2023-04-01 16:21:38 1144

原创 2.3 SSD之垃圾回收(GC)

数据删除时之前的映射关系解除,数据覆写时找干净的位置写入并建立新的映射关系。GC流程就是把几个block中的有效数据读取到新的block上,原来的块就全部是无效数据,可以擦除后加入干净block链表,用于写入新数据。这样也就带来了写放大。或者说空闲时的后台垃圾回收(background GC),在没有IO操作时,controller利用这个空闲时间来做GC,利于保持SSD的性能。GC的一个优化就是根据块中无效page多少,从无效page最多的块,依次选择block去做GC,这样也能减小写放大。

2023-04-01 15:44:22 2078

原创 2.1 SSD介绍

本来是标配,主要用来存放地址映射表,每4bytes的地址映射4k数据,所以需要ssd容量的千分之一。SSD一直以来都是外企的天下,samsung从16年追上intel后到现在占了基本一半的市场份额,其他的有铠侠(东芝)美光也有机械盘大佬的西数希捷等等,fw里有温度控制相关的算法,比如超过warning 温度开始减少IO,达到critical温度停止IO,有的企业是阶梯型的调整,有些抛物线型的调整。所以国内的SSD企业知道的不多。SSD上一般有3个,监控NAND温度,主控温度,及板子温度。

2023-04-01 13:59:04 512

原创 2.7 SSD data path

Read 时,如果数据出现在电压分布的重叠区域,LDPC首先进行重读(Read Retry),也就是用硬判决,不断调整判决电压值,来读取正确数据。如果硬判决依旧无法准确判断出准确数据,就需要通过一些“软信息”(这些软信息能反应所要读取的数据处于哪个电压分布区域的概率),能更准确的判断出真正的数值,这种纠错方式也称作 “软判决译码”。ECRC是可以选择加或不加,一般为4 bytes。32bit,把逻辑块数据与一个地址关联起来,防止被误用或者乱序逻辑块传输,用来检测数据是否写入错误的 LBA 地址)。

2023-03-30 22:29:56 502 2

原创 1.2 NAND操作

3D NAND 读写擦

2023-03-30 11:53:40 535

原创 1.1 NAND介绍

NAND,3D NAND

2023-03-30 11:31:41 2846 1

PMP 第六版 ITTO.jpg

PMP第六版ITTO,五大过程组,十大知识领域,49个过程。项目管理过程组和知识领域。对于500多页的书来说,这是整本书的知识梳理,对理解书本来说非常非常有用。

2020-05-07

PMP项目管理-习题及答案.docx

PMP项目管理考试中的一些题及答案,看完书之后要做大量习题,有助于理解书本中的知识点。对于PMP考试也很有帮助。

2020-05-07

Linux内核及驱动开发

嵌入式Linux内核及驱动开发教程,可以看看

2014-07-13

4G Android游戏与应用开发高级架构师课程

现在非常流行的Android游戏与应用开发教程

2014-07-13

计算机体系结构 学习计算机的很好指导

计算机体系结构 学习计算机的很好指导,大家快来下载吧。

2010-02-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除