「HDD」- 性能调优

cat /sys/block/sda/queue/max_sectors_kb
为什么会变成 512KB 的I/O ,你可以去使用 Google 去查一下内核参数 max_sectors_kb 的意义和使用方法。[……]

READ MORE

「STORAGE」- SSD,固态硬盘(1978)

问题描述
研究对象
SSD
研究工具
培训机构: 书籍文档: 博客文章:
学习方法:Top-Down
该部分笔记是我们对《大话存储, 终极版, 存储系统底层架构原理极限剖析》《固态硬盘火力全开:超高速 SSD 应用详解与技巧》《深入浅出 SSD:固态存储核心技术、原理与实战》等等书籍的学习与整理,仅包含我们感兴趣的内容。如果想要构建更加完整的知识体系,建议阅读原书。
研究目标
熟悉 SSD 工作原理,并且能够指导日常工作,完成存储优化以及相关问题排查;
该笔记将记录:我们将在该部分学习 SSD 相关的内容,以及相关问题的解决办法。
解决方案
SSD,Solid-state drive,固态硬盘,是基于内存为核心的永久性存储设备。在当前计算机中,只剩下硬盘是个“机械式”配件,所以常常拖累整个计算机“以电子运行”的速度。SSD 拥有传统硬盘 50-100 倍的访问速度,但价格也比较昂贵,所以早期一直是大型主机或专业存储设备专有的。
现在 SSD 已经很便宜,几百元就能拥有,安装固态硬盘的笔记本电脑更是比比皆是。
特性特征
有写入次数的寿命限制、损坏时数据几乎无法挽回、电子结构(非机械)、早些时间仅用于系统盘(价格昂贵)、多种设备都可使用、使用内存类组件永久存储数据、摔落时不会丢失数据、发热低、耗电低、长期使用会出现性能下降、多为标准硬盘接口(SATA IDE SCSI,或 PCIe)、有些 SSD 可以使用现有内存模块(RAM Disk)、有些 SSD 需要外置电池在关机时存储数据、混合硬盘(SSD+HDD)来提速、尺寸众多(1.8 2.5 3.5)、可以没有外壳、返修率已经有所下降;
速度快:不管是数据读取还是数据写入,都快于传统的机械硬盘;使得电脑可以快速启动,相较机械硬盘,效果非常明显;
价格高(通过每 G 费用来比较,售价/容量):但是现在(12/06/2022)已经很便宜,完全可以接受;
SSD 具有不同的种类的芯片,其速度不同,价格也不同。在 2010 后, SSD 多使用 NAND 为主的 Flash 内存(无需额外供电即可存储数据);[……]

READ MORE

「SSD」- 概述介绍

固态硬盘历史
参考 Wikipedia/Solid-state drive/1 Development and history 内容,以了解关于 SSD 的历史;
“固态”的含义
What are ‘solid-state drives’ and why are they named solid-state drives? Is the ‘solid state’ in ‘solid state physics’ and ‘solid state drive’ the same ‘solid state’?
固态,指完全由半导体制成的电子电路的术语;
读写速度对比
在传输速度上,SSD 有很大的优势,最高可达 500M/秒,其中: 1)读取速度达到 400-600M 每秒; 2)写入速度同样可以高达 200M 每秒;
固态硬盘寿命
读取,无寿命限制
其实以 SSD 来说,读取并不涉及读写寿命,即从 SSD 中读数据足不影响寿命;
说“足不影响”的原因是:就算我们从 SSD 中复制文件时,虽然我们认为单纯读取的操作,还是有些写入动作的(校验、校正、或文件系统更新访问时间),但是这些写入很少,能够直接忽略;
写入,会影响寿命
How to Estimate the Remaining Lifespan of Your SSD
结论先说:总之,即使是数据读取,SSD 的寿命已经很长,商家可以能够提供长期的质保(通常,质保期之后就是出现故障的时间,所以能够借助商家提供的质保期来估算 SSD 寿命)。
不像机械硬盘,鉴于 SSD 没有活动部件,因此非常可靠。事实上,大多数 SSD 可以使用 5 年以上,而最耐用的单元超过 10 年;
“写入”其实更重要,因为会影响寿命。SSD 能够使用多长时间取决于向其中写入数据的频率,可以以此来估算寿命;
事实上,在 SSD 中并不是每存储一笔数据就算一次写入,这个问题要站在 SSD 内部来看。SSD 的最小存储单位为 Page,即数据写入的对小单元,每个 Page 大小约 2KB(也可能是 4K,取决于具体产品),每写入一个 Page 时,要先清除其上的数据(Erase/Write cycle)。虽然每次写入一个 Page,但是擦除却是以 Block 为单位。
假如,SSD 的写入清除以 64 个 Page 构成的 128KB 的 Block 为单位。以 256G 的 MLC SSD 为例,每天写入 16G 数据,其产品支持一万次读写(读写一万次表示每个 Block 可 以分别独立写人一万次)。写满整个 SSD 需要 16 天(256G/16G),即 16 天才能将所有的 Block 都写一编。产品总计一万次读写,需要[……]

READ MORE

「SSD」- 概念术语、原理简述

问题描述
该笔记将记录:与 SSD 有关的概念及术语,对 SSD 存储进行简单认识,以及与 SSD 有关的杂记;
解决方案

在该部分中,我们将关注重点放在以下部分: 1)NAND Flash:其为数据存储的单元,专用于数据存储; 2)Flash Memory Controller:控制器就是个内置的处理器,运行可刷新的固件; 3)DRAM:用作 SSD 和外部设备之间的缓存存储器; 4)Interface:设备接口,当前以 SATA、SAS 为主;
BBT – Bad Block Table
Bad block table support
坏块表,该表中保存了闪存中坏块的位置;
写入放大(Write Amplification)
旧数据的擦除,以及垃圾回收而导致数据的不断移动,将导致 P/E Cycle 比主机系统请求的周期多得多,这种情况称为 Write Amplification(写入放大);
磨损均衡(WL,Wear Leveling)
What is wear leveling? | Definition from TechTarget
固态存储由以块形式存储数据的微芯片组成。每个块在变得不可靠之前可以容忍有限数量的 P/E Cycle。例如,单级单元 (SLC) NAND 闪存通常额定为 50000 到 100000 次。MLC 的每个 Block 有一万次的限制,最坏的情况下,数据持续写入同个 Block,那么坏了之后,整个 SSD 不就少了一个 Block 的存储量?
其实这一点已经被考虑了,因此在设计时会考虑 Wear Leveling(磨损均衡)技术, 如三星 的 Wear-levelng,就会平衡计算 Block 的写人次数,不会有容量越来越小的情形。通常一个 Block 写人超 过 10000 次,大部分其他 Block 也差不多了,也是整个 SSD 报销的时候(;
WL 是种旨在延长 SSD 寿命的过程。WL 负责均衡安排数据,以便 P/E Cycle 在设备中的所有 Block 间均匀分布,使得每个 Block 写入数据的次数大致均等;[……]

READ MORE

「SSD」- NAND Flash(存储单元)

问题描述
SSD 的内存和硬盘是完全不同的,但我们使用 SSD 的主要目的是替换传统硬盘的某些功能,所以理解两者间的差异性是非常必要的;
解决方案
NAND Flash,一种存储设备,比硬盘驱动器更好。在 SSD 中,数据都存储在 NAND Flash 中;

结构概览

换算关系
1 * Package = 2 * Die 1 * Die = 2 * Plane 1 * Plane = 2048 Block 1 * Block = 256 Page 1 * Page = 4 K(最小的存储单位)
补充说明:该换算关系仅用作展示 Die Plane Block Page 间的关系,具体的换算关系取决于产品;
补充说明:该图示并未包含 Package(拆开固态硬盘,板上用于存储的黑色芯片就是 Package,也就是 NAND Flash)
特性特征
读取、写入,擦拭
HDD 仅存在读取与写入两种操作,即便擦除也只是写入 0 或特殊数据;
但在 SSD 的内存中,有读取、写入、擦拭三种操作:读取,对于 SSD 来说并不难,也不会影响其寿命,因此我们通常不在意;写入、擦拭,则和 SSD 的性能及寿命有巨大的关系;
在写入前,要先擦拭
针对 SSD 的写入,必须写入空白单位: 1)空白或未标注的单位,能够直接写入。全新 SSD 的所有单位均为空白; 2)未擦拭的单位,是无法写入的,所以要先擦拭后才能写入;
当 SSD 第一次使用时(全新),因为每个 NAND 都已经被标为干净,因此可以直接以 Page 为单位写入,速度也快。当幵始使用之后,每一次写入都必须先经过擦拭的动作,因此速度会越来越慢。鉴于每次写入 Page 前必须擦除 Page,所以 SSD 性能就会降低,SSD 颗粒厂家都在致力解决这个问题;
而写入和擦拭间还要完成其他动作,这也是影响 SSD 性能的一个参数;
补充说明:写前擦除,是指“在更新数据时,要先对旧数据进行擦除,然后再写入新数据”。现在 SSD 为了提高性能,一般会把数据写在空白块中,然后标记原块,擦除动作将单独进行;
写入,以页表为单位;擦拭,以块为单位;
在 SSD 中:
1)通常以 Page 为单位进行写入,为 4K 大小;

2)在单个 Block 中有 128 – 256 个 Page,数据要以 Block 为单位进行擦除。为了保护 Block 中包含有效数据的 Page,需要先将这些 Page 复制出来,然后再进行 Block 擦除(道理如此,但实现并非如此);

Q:擦除 Block 时,是如何保护 Block 中包含有效数据的 Page?或着说 Bloc[……]

READ MORE

「SSD」- 闪存控制器(Flash Memory Controller)

主要任务
类似传统机械硬盘,固态硬盘也有控制器,功能大同小异,就是在 NAND Flash 内存和计算机内存间传送数据; 而 HDD 则更加注重提高转,但是 SSD 的物理结构与 HDD 存在很大的相同,所以 SSD 的控制芯片还多延长寿命的功能;
1)误区校正(Error Correction,ECC):确保数据的正确性; 2)平衡技术(Wear Levelng):让每一个 SSD 中的组件都能被平均使用到,以延长寿命; 3)坏块标注:当有坏单元出现时,可以标注并对应到正常的区块; 4)读取涤净(Read scrubbing):使用比如 ECC 来良探更正错误的功能; 5)读取干扰:读取时让临近比特不被干扰的技术; 6)读取缓存:这和传统硬盘一样; 7)垃圾回收:不被使用又没标注的区块必须回收使用; 8)数据加密:数据传输时必须先加密(安全、速度及兼容性);
特性特征
需要靠 FTL 变换才能用在计算机上
计算机一直用传统硬盘,因此习惯上是用磁道来表示数据大小的。但 SSD 没有轨的概念,都是 Block/Page,因此在使用时,必须有一个变换机制,这个机制就称之为 Flash Translation Layer(FTL);
FTL 映像表通常存在 SRAM/DRAM、NAND 内部或计算机的内存中方便操作。其介于文件系统和物理存储内存之间;
当操作系统以磁道的方式访问 SSD 的数据时,FTL 会将这个访问的地址转换成 SSD 的物理内存颗粒位置;
变换动作原理: 1)发现要与人数据,从 FTL 中找一块空白的 Block,从 Page n 幵始写入; 2)写入第 1 笔,Page n 写满,铺垫写第 2 笔人 Page n+1 3)写入第 2 笔,发现 Page n+1 已被标注无效(之前有东西还没擦拭),写入 Page n+2; 4)以此类推…… 5)一个 Block 写满,写入下一个 Block;
垃圾回收(Garbage Collection)
在使用一段时间后,我们会发现,该 Block 会充满有效、无效标注的 Page,此时就会幵始逬行垃圾回收 动作;
1)找到空白的 Block,并将前个 Block 的有效 Page 复制到该空白 Block; 2)擦拭刚才 Block; 3)在 FTL 映像表中,更新 Block 的位置,以将数据指向新 Block 所在位置;
所这个 Block 之间复制的动作,正是决定 SSD 速度的重要因素之一;
数据压缩
大部分的 SSD 控制芯片会对数据进行压缩, 在 Sandforce 上称之为 Dura Write, Marvell 上也有相应的算法。这些芯片厂家的如意算盘是,大部分的数据都是没压缩的,如果将数据在芯[……]

READ MORE

「SSD」- Garbage Collection

垃圾回收(Garbage Collection)
在 SSD 的 Block 中,数据的存放是以页表(Page)为单位。当页表被使用了,会标注使用中。当用户删除 数据时,只是将文件系统上的索引删掉,页表仍然没有空出来,此时就需要 SSD 的垃圾回收机制来进行 Page 的回收;
注意,这个描述是不准确的,SSD 在硬件层面工作,其无法感知文件系统的文件删除,所以无法得知哪些 Page 是空闲的。这需要操作系统通过 TRIM 等方式来通过 SSD 驱动,以将某些 Page 标注为空闲。除此之外,数据更新也会产生空闲 Page,其也会被 GC 处理;
在每个 Block 中,被占用的页表称之为“无效页”,而没被占用的则称之为“有效页”。垃圾回收的动作, 就是找出另一个新的 Block,然后将要处理的 Block 中的有效页复制到这个新的 Block 中,标示为可用。换句 话说,需要被复制的有效页越少,整体性能就会越高,这也是控制芯片好坏的区别;
需注意;回收没有数据的块——影响 SSD 的性能
原理简述
SSD 将存储划分为 Block,Block 又进一步划分为 Page;
在写入数据时,SSD 必须先擦除不需要的数据块,然后才能写入新数据;
但是,数据是在 Page-Level 读取和写入,但必须在 Block-Level 擦除。原因是:在擦除数据时,需要大量的电压,并且很难在不对相邻单元产生负面影响的情况下将电压定为更细粒度的水平;
GC 的目的是通过保留尽可能多的空块来提高效率,这样当 SSD 需要写入数据时,就不必等待块被擦除;
SSD 无法在 Page 级别覆盖数据或擦除数据,所以 SSD 需要使用与 HDD 截然不同的方式处理数据更新和删除;
当引入 GC 机制后,如果用户更新数据,如下为数据写入过程: 1)更新的数据写入 Free-Page(有时是在不同的 Block 的 Page 中); 2)包含原始数据的 Page 随后被标记为 Stale-Page,而 Stale-Page 在其数据被擦除前无法使用;
此时 Block 通常包括包含 Used-Page 以及 Stale-Page。要回收具 Stale-Page,GC 过程: 1)识别出 Stale-Page; 2)然后,将 Good-Page 移动到另一个 Block; 3)然后,以便 GC 擦除原始 Block;
注意:Block 通常包含 64, 128, 256 个 Page,这里仅作演示;
1)假如现在有两个 Block:Block-A(其 Page 1-5 包含数据)、Block-B(其无数据); 2)当用户更新 Page 1-5 的数据时,将被写入新的 Page 中,而原[……]

READ MORE

「SSD」- 安全擦除(SE,Secure Earse)

ATA S.E.cure Earse,该命令旨删除从 SSD 中的所有用户数据;
针对没有集成加密的 SSD,该命令将使驱动器恢复到其原始状态。这最初会将其性能恢复到可能的最高水平和最佳(最低数量)可能的 WA,但是一旦 SSD 再次开始 GC,那么性能和 WA 将开始恢复到以前的水平;
许多工具使用 ATA S.E. 命令来重置驱动器并提供用户界面。诸如 HDDerase 等等。部分 GParted 和 Ubuntu live CD 提供一个可引导的 Linux 磁盘实用程序系统,其包括 ATA S.E. 命令;
针对动态加密所有写入的驱动器,可以以另一种方式实施 ATA S.E.。每次完成安全擦除时,它们都会简单地归零,并生成一个新的随机加密密钥。这样就无法再读取旧数据,因为它无法解密。一些具有集成加密功能的驱动器之后也会物理清除所有块,而其他驱动器可能需要将 TRIM 命令发送到驱动器以将驱动器恢复到其原始的开箱状态(否则它们的性能可能会不能最大化);
ATA S.E. 数据擦除失败:某些驱动器可能部分(或完全)无法使用 ATA S.E. 来擦除数据,并且数据仍可从此类驱动器恢复。这可能是设备控制器的问题(Beware – When SECURE ERASE doesn’t erase at all)
实施安全擦除
Solid state drive/Memory cell clearing – ArchWiki ATA S.E.cure Erase (SE) and hdparm
接下来,我们将针对 SSD 进行磁盘擦除操作。
第一步、检查 ATA S.E. 启动
某些 BIOS 通过发出 SECURITY FREEZE 命令,以在启动操作系统前“冻结”驱动器,来阻止 ATA S.E. 命令:

# hdparm -I /dev/sdb | grep frozen
frozen —————- // frozon 表示 ATA SE 被禁用

解锁 frozen 的方法如下: 1)或,将系统休眠,再唤醒,而后 frozen 将自动被解除;(通过该方法,我们得以解决 frozen 问题) 2)或,磁盘热插拔。如果内核崩溃,则主板开启 AHCI 允许插拔,而不会导致内核崩溃; 3)或,使用 USB 转 SATA 来实现实现热插拔;

# hdparm -I /dev/sdb | grep frozen
not frozen

第二步、配置安全密码

# hdparm -I /dev/sdb | grep -[……]

READ MORE

「SSD」- TRIM

TRIM vs. Secure Earse
blkdiscard vs hdparm for erasing a SSD? Triming as alternative to securely erasing a SSD
blkdiscard 发送 ATA TRIM 命令,而 Secure Earse 发送 ATA SECURITY ERASE 命令。在底层中,两者的具体行为,仍旧取决于厂商的实现。
另外,某些设备对 TRIM 操作有所要求,当满足要求之后,数据才能被清零。否则,blkdiscard 不见得会将磁盘清理干净(Triming as alternative to securely erasing a SSD)
实施 TRIM 操作(for Linux)
ext4 – How do I check TRIM? – Unix & Linux Stack Exchange Solid state drives in Linux: Enabling TRIM for SSDs | Opensource.com Proxmox with LVM-thin and why we should use Trim-Discard.MD
实践环境总是复杂的,我们需要针对多种环境(裸机、虚拟化)进行讨论。
检查是否支持 TRIM 操作

// 留意 DISC-MAX 字段,若其 !=0,则支持 TRIM 操作;

# lsblk -D
NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda 0 4K 1G 0
sdb 0 0B 0B 0

针对 Linux 裸机

// ——————————————————– // 针对 SSD 进行 TRIM 操作;

# fstrim / -v

// ——————————————————– // 开启 TRIM 支持;

# mount -t ext4 -o discard /dev/sda2 /mnt

blkdircard Linux manual page/blkdiscard(8)
Linux as Guest
Note that Discard on VirtIO Block drives is only supported on guests using Linux Kernel 5.0 or hi[……]

READ MORE

「SSD」- 坏块

问题描述
该笔记将记录:与 SSD 坏块有关的内容,以及相关问题的解决方案;
什么是坏块?
在计算机中,坏块是指永久损坏的磁盘存储或磁盘扇区单元。坏块是机械损坏的结果;
在受损后,存储在该扇区上的信息将丢失。当发现坏块后,会被标记,操作系统将跳过坏块;
!在 Wikipedia 中,「Bad block」与「Bad sector」指向相同页面;
坏块带来的影响
(1)数据丢失; (2)影响硬盘的性能;
坏块产生原因
1、出厂坏块,或初始坏块,即出厂时因不符合厂商标准或厂商抽测过无法达到厂商公布标准的块,在出厂时已经被厂商标识为坏块;有些出厂坏块可以被擦除,有些不可以被擦除。在出厂时,固态硬盘 NAND 里的坏块会被屏蔽替换,坏块率不超过 2%;
2、在使用过程中,因为磨损造成的新增坏块或使用坏块;
3、因异常掉电等原因被主控误判的假性坏块。瑞耐斯在测试多家不同主控 SSD 后发现因异常掉电而产生新增坏块的问题非常普遍。在这种情况下,我们可以对 SSD 进行一次正确的全盘安全擦除即可修复这些错误;
坏块的发现与管理
与机械硬盘不同,通常机械硬盘的坏道如果少的话,都是可以通过擦除、重映射、再生 / 修复等方法解决的。而在固态硬盘中,如果发现坏块,那基本就报废了;
# 坏块的检测
操作系统与磁盘控制器都可以进行坏块检测;
在大多数文件系统中,都包含“对被标记为坏的扇区的”规定,因此操作系统之后可以避开坏块。有些应用程序 CHKDSK、badblock 可以用于主动发现坏块;
当磁盘控制器的固件发现坏块时,磁盘驱动器会将逻辑扇区重新映射到物理扇区。通常,重新映射发生在扇区写入时。在使用时,固态硬盘主控仍在对 NAND Flash 执行着坏块管理、坏块替换,以保证固态硬盘的寿命和性能;
# 谁来管理坏块
对于专门的闪存文件系统来说,通过专门的闪存文件系统来或驱动来管理坏块。(软件管理)
对于没有专门闪存文件系统的主控来说,坏块可以通过 SSD controller 的固件来管理。(固件管理)

# 坏块管理策略
固态硬盘坏块替换策略,一般有两种策略:

(1)替换策略,用固定的预留空间中的好块替换。当坏块太多,可替换的空间用完,固态硬盘就意味着报废了,这是较老的主控或个别主控的策略

(2)跳过策略,对于初始坏块,坏块跳过会通过 BBT 将对应的坏块跳过,直接将数据存入下一个好块。对于新增的坏块,将此坏块更新到 BBT 中,将坏块中的有效数据转存到下一个好块中;

最后总结
固态硬盘耐用与否,使用时性能下降严重与否,很大程度取决于闪存的好坏,以及固[……]

READ MORE

「SSD」- 硬件特征、物理结构

控制器(Controller)
是最重要的组件; 控制器,其作用类似于 PC 中的 CPU,
存储用内存(Memory)
负责数据存储,以颗粒为单位,主要是 NAND 闪存;
若能买到 控制器芯片 和 闪存芯片 这两样东西,那么我们就能自己生产固态硬盘,所以市面上会有各种品牌的固态硬盘,但是其中的内存和控制器的早上却寥寥无几;
DRAM
DRAM 用作 SSD 和外部设备之间的缓存存储器。
物理接口
SSD 的接口和一般传统硬盘一模一样(兼容目的),有 IDE、SCSI、SAS,也有专属接口,或使用标准 PCIe Adapter 等;
当然当前商用 SSD 都是走标准接口 SATA,而也只有最快速的 SATA 3 才能发挥 SDD 的实力,在购买时必须明确;
参考文献
The key components of an SSD | Samsung Semiconductor USA[……]

READ MORE

「SSD」- 控制器(Controller)

控制器的呈现形式

控制器就是个内置的处理器,运行可刷新的固件(刷机,就像主板刷入 BIOS 程序),控制器用来将存储的数据和计算机之间沟通,所以控制器的优劣,就是处理器的优劣再加上固件程序的优劣;
内存颗粒的低级初始化
针对内存颗粒的低级初始化,其将标出坏块(将影响 SSD 寿命): 1)格式化的目的就是要让内存颗粒能匹配数码设备的读写,并且标注出坏掉的单元(Bad Cel),并重新映射到 正常的颗粒上; 2)此外也会将树状目录创建实现,并且将颗粒式的内存和具体数据对应上; 3)当 SSD 生产完成时,就会进行这个动作。鉴于颗粒质量的不同,SSD 出厂时很可能就有坏块(传统硬盘也是如此),所以控制芯片必须标注出这些区域,以免用户的数据丢失。无法通过计算机软件识别这些坏块,或许需要借助厂商的专用软件;
写入平衡(Wear Leveling)
SSD 中的每个存储以 Block 为单位,而每个 Block 能写入的次数是有寿命的。如果某个 Block 一直写人, 那么当其寿命达到之后,这个 Block 就不能用了(Worn out,磨损了)。如果这个 Block 是目录索引或引导区,那么其上的数据就无法访问;
写入平衡技术,就是确保 SSD 在写入 时,能将写入数据分配到每个 Block 上,防止上述情况发生,这就是芯片组必须做的事情;

针对颗粒写入平衡技术,其将平衡 SSD 的使用(将影响 SSD 寿命)。Wear Leveling 的技术实现很复杂,但主要还是让块之间的写入尽量平均;
寿命对比
假如以 MLC 为例,加入其有 4096 个 Block,且其写寿命为 10000 次的话,如果每小时读写 300 个块,那么:
如果仅有 200 个块参与读写,那么这些块的寿命就是:(10000 次 X 200 个块)/(300 块 / 每小时 X 24 小时)= 278 天
如果支持单区域 WL 写入平衡技术,系统可能会保留 25% 的区域作为平衡,那么这些块的寿命就是:(10000 ×4096*25%)/(300*24)=1422 天
如果 SSD 支援多区域的 WL,那么就会平均使用到所有的块,整个读写寿命就会分布在所有块上:(10000 ×4096)/(300*24)=5689 天

控制器芯片厂家对比
控制器制造商列表:Engineering:List of flash memory controller manufacturers
质量对比
针对质量对比,我们无法给出确切的答案,并且随着时间的推进,各厂商也会发生变化。
建议参照社区测评,来选择合适的产品: https://bbs.pceva.com.cn/ htt[……]

READ MORE

「SSD」- 存储用内存(Memory)

问题描述
固态硬盘的内存分成两种:
使用挥发性内存的 SSD
如 DRAM d 等。但,挥发性的内存需要有额外的电力在关机时维持数据,因此会有一个电池。通常此类 SSD 都要和传统硬盘混用。在计算机故障时,要有足够的时间将 SSD 中的数据转到传统硬盘上。从故障恢复时,再将数据从传统硬盘转回 SSD,因此这一类 SSD 的速度快,但容量小,数据的风险较高。该类性的存储并非我们要讨论的内容;

使用 NAND Flash 的 SSD
自 2010 年之后,市场绝大部分的 SSD 都是这种。NAND Flash 内存最大的特色就是不需要额外电池来维 持写人后的数据,虽然速度没有使用传统内存的 SSD 快,但方便维护目成本较低,因此已经成为 SSD 的主流。NAND Flash 这种内存常见于 USB 随身盘,因此你会见到无控制芯片的同容量 USB 和 SSD 的价钱存在差异;

制程工艺
真正存储数据的却是内存颗粒,而内存颗粒的制造视工艺而定;
早期(2010-2013),主流的 NAND Flash 产品是以 34、25 或 19nm 的工艺生产,因此大部分的 SSD 也是这一类的内存产品;
当 2017 年,已经开始使用 12nm 制程;
Wikipedia/Flash memory
颗粒类型
SLC(Single-Level Cell,单层存储)
SLC,由 Samsung、Hynix、Micron、Toshiba 主导及生产;
SLC 颗粒的特点是:仅存储 0 和 1 两种值,在写人数据时通过对 Floating Gate 的电荷加电压,再经过来源极将所存储的电荷消除。每个存储单元只会存储 1-bit(0 或 1 两个状态),所以写人速度会较快,但单位容量较小、成本较高;
MLC(Multi-Level Cell,多层存储)
What is single-level cell (SLC) flash?
MLC,由 ntel 主导,Samsung、Toshiba、Renesas 生产;
每个存储单元可以存储多个电平状态,如 2-bit MLC 能够放 00、01、10、11 四个状态,两个单位的数据压人一个 Floating Gate,再采用不同电平的电荷,使用电压控制读写;
由于是多层式的构架,存储密度优于 SLC,容量也大,但写人速度会较慢。由于 SLC 的生产方式较先进, MLC 可使用日有设备生产,所以 MLC 的生产成本也较 SLC 低廉,总体成本更低。鉴于成本低廉,也是大多数 SSD 使用 MLC 颗粒;
虽然 MLC 的性能看起来输给 SLC,但 MLC 的构架方面较优良 ,在控制器上如果设计得[……]

READ MORE

「SSD」- 选购技巧(How to Buy the Right SSD)

[……]

READ MORE

「SSD」- 购买固态硬盘的检查清单

问题描述
以往我们购买 SSD 时,仅看价格。我们选购电子产品的法则是:在预算内,买价格最贵的;
现在,我们具备一定的背景知识,所以在选择 SSD 存储时将进一步查看其参数,以选择正确的设备;
该笔记将记录:选购 SSD 的方法,以及常见问题的解决办法;
解决方案
当选择 SSD 设备时,我们的快捷检查清单包括芯片、颗粒、容量、接口、品牌、用途等等,但实际需要查看更多指标;
接口(Interface)
SATA
选购指南:一定要买最快的 SATA 接口,即要使用新的接口,有 SATA3 就不要用 SATA2;
针对 SSD 接口:通常都是 SATA 接口,就算主板没有支持 SATA 3(6Gbps),也可以买 SATA3 SSD,因为 SATA 3 不管是主板或是 SSD 都是向下兼容的,只是速度较慢。不同 SATA 的速度,参考 Wikipedia/SATA/Revisions 文档(SATA 3:6Gbps;SATA 2:3Gbps;SATA 1.5Gbps)
针对主板接口:将较高级的 SSD SATA3,接上较低级的 SATA2 主板,最大速度也不会超过 SATA2 的速度。但是,直接采用最高级的 SATA3 SSD,就算现在用 SATA2 的主板,以后一升级主板,速度就上去了;
该 STAT 接口的速度为“最大”速度,如果 SSD 自身不够快,也不会到达这个最高速;
SAS
另外要注意的地方,就是大部分的 SATA 和 SAS(串行 SCSI、Serial Attached SCSI)是完全兼容的,所以大部分的 SATA3 SSD 是可以接上 SAS 的。高级的服务器会有 SAS 规格的接口;
PCIe
如果想要最高速度,使用 PCIe 接口的 SSD
由于 SATA3 的总线宽度最高为 6GB,对很多高性能的 SSD 来说已经不够了,许多厂商就使用主板上的 PCIe 接口。PCIe 接口的速度随主板支持程度而有所不同,就如同显卡一样,视主板提供的总线速度而定。通常,至少要买到支持 PCIe 4x 的 SSD,此时的 SSD 和传统的硬盘长相不同,会比较像一块适配器,但也还是货真价实的 SSD 硬盘;
如果是 PCIe 4x 以上,速度可以达 10GB(单向)或 20GB (双向),速度更是快到 SATA3 的两倍以上,但单价也较高;
购买 PCIe SSD 的注意事项: 1)要买到 PCIE 4X 以上的接口 2)注意主板是否支持 PCIE 4X 3)是否可幵机(有些 PCIE 接口的 SSD 无法启动) 4)是否可插多个装置来组件 RAID(这样速度还可再增加一倍) 5)本身是否支持 RAID 功能(这一类的 SSD 其上就有[……]

READ MORE

「SSD」- 安装及使用

硬件安装
BIOS 使用 AHCI,并确定能够识别到 SSD 设备;
系统识别
早期,不光 Windows XP,即使 Windows 7 也可能无法识别 SSD 设备,其主要原因是缺少 SATA 驱动;
现在,基本不会再遇到这个问题(至少我们未遇到)。若遇到该问题,我们再具体问题具体分析;
容量规划
在我们的环境中,操作系统 120G 起步(随着使用时间增多,Windows 占用的磁盘空间也将增加);
分区划分
注意分区对齐问题;[……]

READ MORE

「SSD」- 将数据迁移到固态硬盘

[……]

READ MORE

「SSD」- 信息查看

hard disk – Harddisk serial number from terminal? – Unix & Linux Stack Exchange 序列号:udevadm info –query=all –name=/dev/sda | grep ID_SERIAL
How to see disk details like manufacturer in Linux – Unix & Linux Stack Exchange 硬件信息:lshw -class disk;hwinfo –disk;[……]

READ MORE

「SSD」- 性能测试、性能优化

测试维度
标准的测试分为四大类,分别是:基本测试、随机读写、连续读写、稳定状态测试
基本测试
一般使用 HD Tune Pro 和 ATTO Disk 两个产品;
连续访问
一般使用 CrystalDiskMark 和 AS SSD Benchmark 两个;
随机访问
才是最贴近 SSD 的访问方式,业界通常使用的测试软件是 Intel 开发的 IOMeter;
稳定状态测试
在使用过一段时间之后,SSD 的性能下降不可以超过 40%
新买的 SSD 的颗粒都是全新的,并没有经过擦拭、与人垃圾回收等动作,因此速度当然快。随着时间推进,当 SSD 的每一个颗粒都被使用过之后(即标注、擦拭),即会幵始 TRIM 及 GC 等动作,此 SSD 即进入所谓的“稳定状态”。一个 SSD 的生命周期中有 99% 是在稳定状态,因此稳定状态的测试才是最真实的;
稳定状态会占用主控器资源,因此会严重影响性能,但较好的 SSD 产品可以维持性能,而 Sandforce 芯片系列在一幵始测试时会很快,但当逬人稳定状态时,竟然只能维持原来 60% 左右的性能,做好心里准备;
稳定状态后的测试 很多测试软件都能够将 SSD 直接拉入稳定状态,而在稳定状态后,测试出来的结果很可能有巨大的差异: 1)某些产品在进入稳定状态后,性能最多可以掉一半, 2)而某些产品,由于戒持特殊的“实际环境性能”功能,可维持不变;
稳定状态的还原 只要知道校调的方式,SSD 还是可以还原到最初的性能状态; 一般 SSD 进入稳定状态后,要还原必须重新分区,也就是使用 TRIM 和垃圾回收动作来处理。但如果你的 SSD 的空间还够,甚至可以还原到原始的状态
自动还原机制 众多品牌的 SSD 具有一些特殊的算法及机制,可以让整个 SSD 持续保持在高效状态(如 Plextor M2P 就支持“实际环境性能“),即使长时间使用,仍然保持极高的性能,这就避免手工还原;
相关连接
SAMSUNG 870 QVO SSD 2T 这性能,谁敢来一较高下?三星 870 QVO 固态 2TB 评测 三星 860 QVO SSD 性能测试,某些表现还不如 HDD[……]

READ MORE

「SSD」- 附录:硬件规格

SAMSUNG PM883 2.5” 960G SSD (SATA 6.0Gbps)

Model: MZ7LH960HAJR-00005
深圳道通存储技术有限公司/三星PM883 MZ7LH960HAJR-00005 960G固态硬盘
产品定位企业级 存储容量 960GB 接口类型 SATA3(6Gbps) 硬盘尺寸 2.5 英寸 闪存架构 MLC 多层单元 缓存 512MB 主控芯片三星 MARU 控制器
性能参数 读取 Seq. 550MB/s Rdm. 98KIOPS 写入 Seq. 520MB/s Rdm. 28KIOPS
其它参数 TRIM 功能支持 TRIM 外形尺寸 100×69.85×6.8mm 工作温度 0-70℃ 质保期限 3 年
SAMSUNG 870 QVO SATA III 2.5″ SSD 2TB MZ-77Q2T0
560MB/s Seq. Read | 530MB/s Seq. Write
General Feature Product Type 870 QVO SATA III 2.5″ SSD 2TB Family Line 870 QVO SATA III 2.5″ SSD Capacity 2TB Interface SATA 6 Gbps Interface, compatible with SATA 3 Gbps & 1.5 Gbps interfaces Compatibility Windows10/Windows 8/Windows 7/Windows Server 2003 (32 bit and 64 bit), Vista (SP1 and above), XP (SP2 and above), MAC OSX and Linux
Performance Speed Read/write speeds of up to 560/530 MB/s Encryption AES 256-bit Full Disk Encryption, TCG/Opal V2.0, Encrypted Drive (IEEE1667)
Type Product Type SATA SSD Storage Type Internal Interface SATA 6 Gbps Interface Read/Write Speeds up to 560/530 MB/s Usage Application Client PCs
Storage Capacity 2TB
Key Features Compatibility Compatible with SATA 3 Gbps & 1.5 Gbps interfac[……]

READ MORE

「nil」- faspeed

faspeed H5-30G

# lshw -class disk

*-disk:1
description: ATA Disk
product: faspeed H5-30G
physical id: 1
bus info: scsi@7:0.0.0
logical name: /dev/sdc
version: 1A
serial: SCRW18040208B0230
size: 27GiB (30GB)
configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512

Faspeed H5 Sata3 – Nonotree Capacities : 30G Read : 134MB/s Write : 59MB/s Interface : SATA Revision 3.0 (6 GB/s) Controller : SMI NAND Flash : MLC Warranty : Provide warranty replacement service within 36 months. Operating Voltage: DC 5V/1A Product ID : H2AS95300MXL12030 Firmware Version : Q0111A[……]

READ MORE

「Linux」- 如何识别USB设备?

首先要确保设备已经加电,并且是可用的,即正常设备.
通常一个USB设备是通过一对16进制数表示。例如0a5c:5800,第一个0a5c是Vendor ID(设备商ID),第二个5800是DeviceID(设备ID)
可用的工具及方法
使用lsusb(8)命令
使用USB Utils软件包中的lsusb命令。
KDE: KInfoCenter
在KDE中有KInfoCenter软件。
GNOME: hardinfo
在GNOME桌面系统中,有hardinfo软件。
使用discover(1)命令
在Debian中,还可以使用discover软件包。
手动查询USB设备信息
/sys/kernel/debug/usb/devices 旧系统中:/proc/bus/usb/device
参考文献
How To Identify A Device USB Table of USB device supported by debian[……]

READ MORE

「Linux」- 通过「网卡别名wlanX」查找对应的「无线USB网卡」

# find /sys/devices -name wlxc83a35c802f2 /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/net/wlxc83a35c802f2
# cat ‘/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/uevent DEVTYPE=usb_interface DRIVER=rt2800usb PRODUCT=148f/5370/101 TYPE=0/0/0 INTERFACE=255/255/255 MODALIAS=usb:v148Fp5370d0101dc00dsc00dp00icFFiscFFipFFin00
# lsusb -d ‘148f:5370’ Bus 002 Device 003: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
通过「无线USB网卡」查找对应的「网卡别名wlanX」[……]

READ MORE

「Storage」- 概念术语

Queue Depth
What is queue depth and how does it work? Understanding Storage Performance 《大话存储, 终极版, 存储系统底层架构原理极限剖析》 Where is the ‘SATA controller’ on a motherboard? – Quora Call sequence of a write operation on the hard drive.
用户数据写入存储设备的大致图示:
控制器向存储设备发起的指令,不是一条一条顺序发送的,而是一批一批地发送,存储目标设备批量执行 IO,然后将数据和结果返回控制器。也就是说,只要存储设备肚量和消化能力足够,在 IO 比较少的时候,处理一条指令和同时处理多条指令将会耗费几乎相同的时间。
控制器所发出的批量指令的最大条数,由控制器上的 Queue Depth(队列深度)决定。在存储中,队列深度是存储资源在任何时候可以处理的待处理输入/输出 (I/O) 请求的数量。
补充说明:这里的“控制器”是指主板芯片中的控制器,例如 SATA Controller 等等,而非存储设备的控制器。
SAN
在 SAN 中,Queue Depth 需要在 HBA 中进行配置,以避免超过 LUN 能够支持的并发 IO 请求数;
iodepth
iodepth 是操作系统的概念,而非存储设备相关的概念;
Block Size vs. Disk Sector Size
Block 是文件系统的概念。在 Linux 中,dd/blocksize fio/blocksize 通常是指单次 read()/write() 系统调用的块大小。
小文件的 IOPS 高 大文件的 Throughput 高;[……]

READ MORE

「Storage」- 碎片整理(Defragmentation)

for SSD
针对 SSD 存储,大可不必进行碎片整理。并且,鉴于 P/E Cycle 特征,碎片整理反而会影响 SSD 寿命;[……]

READ MORE

「Storage」- 分区对齐(Partition Alignment)

问题描述
我们将学习分区对齐的概念,这并非是遇到相关问题,而是接触到该概念,需要作为知识储备;
该笔记将记录:我们将了解分区对齐相关的部分内容,以及相关问题的解决办法;
解决方案
在 Wikipedia/Partition alignment 中,有针对分区对齐的很多解释。我们这里仅做部分记录,目的是理解分区对齐的概念(错误再所难免,但我们将仅能量避免错误);
对齐的基本概念
数据是以文件的方式保存在设备上,而文件系统则是放在 SSD 的保存单元上。当没有分区对齐时,就算访问一个小文件,此时小文件的位置在 SSD 上会生成跨区的情况,就会动到 SSD 上的很多个 Block, 动到多个 Block 最大的坏处,最明显的就是访问时的速度会有很大的差别;
所示如图,针对 Cluster(红色)的访问,底层需要访问两个 Block 单元。而在更底层中,访问这两个 Block 则需要访问三个 Chunk 单元:
所示如图,当对齐后,访问 Cluster 仅需要访问一个 Chunk 单元:
分区不齐的成因
HDD 基本保存单位是扇区(Sector,512-BYTE),但读写及逻辑单位称为簇(Cluster) 。一个 Cluster 包括一个以上的扇区,如 NTFS 格式化时默认为 8 个扇区,即 4096-BYTE 即 4K。而 SSD 的物理基本读写单位称为 Page,大小为 4KB;
Windows XP 文件系统虽然不以扇区为访问配置单位,但分区时却会用扇区(0.5K)为最小单位来赋予分区开始的地址,SSD 为了与 BIOS 及操作系统兼容,要将每个 page 模拟成以 0.5K 为单元的扇区(512 emulation,512e)。而硬盘分区时,每一个分区的位置可从任一扇区开始。若分区的开头位置没和 SSD Page 的开头位置叠加,这时 0.5K 就有可能落入 4K 的内部,就会生成“没对齐”的问题;

+——-+——-+——-+——-+——-+——-+——-+——-+——-+
| 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | …
+——-+——-+—————+—————+—————+—————+
| Page | Page | Page | Page | Page | …
+–[……]

READ MORE

「Storage」- 顺序读写 vs. 随机读写

Sequential disks access
http://bbs.chinaunix.net/thread-585605-1-1.html https://en.wikipedia.org/wiki/Sequential_access https://www.zhihu.com/question/48794778/answer/222945257[……]

READ MORE

「Storage」- 存储接口

从整体的角度上,接口分为 IDE、SATA、SCSI、Fibre Channel 四种: 1)IDE 接口硬盘多用于家用产品中,也部分应用于服务器; 2)SCSI 接口的硬盘则主要应用于服务器市场; 3)Fibre Channel(光纤通道)只在高端服务器上,价格昂贵; 4)SATA 是目前比较流行的的硬盘接口类型,目前市场上最普及的接口类型
在 IDE 和 SCSI 的大类别下,又可以分出多种具体的接口类型,又各自拥有不同的技术规范。具备不同的传输速度,比如 ATA100 和 SATA;Ultra160 SCSI 和 Ultra320 SCSI 都代表着一种具体的硬盘接口,各自的速度差异也较大;
现在还有什么 M.2 PCIe、M.2 SATA、mSATA、AIC 接口,参考「Solid-state drive/Host interface」部分
参考文献
Wikipedia/Solid-state drive Wikipedia/Hard disk drive HDD (硬盘驱动器(Hard Disk Drive)) 固态硬盘和机械硬盘的区别? 百度百科/硬盘类型 Disk Drive Types[……]

READ MORE

「PATA」- Parallel ATA (IDE)

IDE is also called Parallel ATA or PATA.

参考文献
IDE vs SATA – Difference and Comparison | Diffen In computer hard drives, what were master and slave all about? – Quora[……]

READ MORE

「Storage」- FC, FCP, FCoE

问题描述
前段时间在弄存储,我碰到以前没有遇到过的技术: 1)在存储设备管理界面中配置壹下, 2)然后将存储与物理机用光纤连接(插上光纤卡), 3)在物理机上使用multipath扫一扫,然后就能看到磁盘。
我特别好奇这个东西是怎么实现的,内部是如何工作的,以及自己能不能搭建个简单的出来玩玩。
解决方案
FC – Fibre Channel
高速数据传输协议,提供原始块数据有序、无损分发。它主要用于连接在存储区域网络中的“数据存储”与“服务器”
Fibre Channel started in 1988, with ANSI standard approval in 1994
FCP – Fibre Channel Protocol
是利用底层光纤信道连接的SCSI接口协议。
FCoE – Fibre Channel over Ethernet
计算机网络技术,将光线通道(FC)帧封装到以太网之上。这允许光线通道(FC)使用以太网来提供光线通道协议(FCP)。
相关链接
REDHAT/Fibre Channel over Ethernet (FCoE) Configuration Overview on Red Hat Enterprise Linux
Beginners guide to Device Mapper (DM) multipathing How to create partitions and file systems on DM-Multipath devices
参考文献
360doc/FC协议详解 360doc/存储网络 – 了解FCoE的八个技术细节 Wikipedia/Fibre Channel Wikipedia/Fibre Channel Protocol Wikipedia/Fibre Channel over Ethernet[……]

READ MORE