现在的位置: 首页 > 综合 > 正文

固态硬盘(SSD)原理简介

2017年08月11日 ⁄ 综合 ⁄ 共 2429字 ⁄ 字号 评论关闭

ssd原理简介

 

SSD硬盘之所以需要特别优化系统配置,主要是由其特性决定的:

写入方式
向SSD硬盘写入数据时,不能像写入普通硬盘那样直接覆盖,而是要先擦除、再写入。不幸的是,由于设计的原因,
虽然写入操作可以以页(page,常为 4KB)为单位,擦除操作的最小单位一般是块(block,常为512KB)。[1]如果
想保留块中的其它数据,需要在擦除前要先读出该块的数据,并在修改后写回。所以每一次写操作实际写到硬盘上
的数据很可能原来计划比要写的数据多,这就是所谓的 Write amplification效应。这是SSD的读取比写入快得多的原
因之一。

存储单元损耗 (Wearing)
SSD的每一个存储单元被擦除、写入的次数是有限的。市面上常见的使用 MLC (Multi-Level Cell) 技术的SSD,单个存储单元只能被擦除、重写几千次,而采用相对昂贵的 SLC (Single-Level Cell) 的SSD也有几万到几十万次的擦除寿命[2]。这是很多人对 SSD 硬盘不放心的因素之一,但实际上得益于耗损平均技术,该问题对普通用户的影响并不显著。
 
耗损平均技术 (Wear Leveling)
虽然每个存储单元的寿命有限,但每个物理存储单元对应的逻辑地址没必要是一成不变的。通过将要写入的数据动态地映射到不同的物理存储单元,SSD的寿命可以得到明显的提升[3]。如一个 64GB 的 SSD 设备,如果每个单元可被擦除、重写3000次,而某桌面用户每天写入 10GB 的数据,该设备出现有存储单元报废需要约 64 * 3000 / 10 / 365 = 52年 。 由于一般来讲桌面应用的写入并没有这么多,所以因为擦除、写入次数过多而导致SSD丢失数据的顾虑是没有什么必要的。

 

针对以上特性,在软件方面优化SSD的性能应主要集中在以下几个方面:

提高物理写入的效率,减缓Write amplification。 
充分利用SSD随机访问快的特性。 
减少不必要的硬盘写操作。

 
与此相关的,涉及到如下两个术语:

分区对齐 (Partition Alignment)
由于SSD向一个块写入数据前要先擦除整个块,如果要写入的一个逻辑块分布在两个物理块中,那么涉及到的两个物理块都要被擦除重写。而如果将分区表和文件系统向物理块对齐,就可以减少这种情况,延长硬盘的寿命。一般SSD的块大小都能整除 512KiB [6],所以将分区的启始逻辑位置设为 512KiB 或 1MiB 的整数倍通常是比较合理的。

TRIM
TRIM 本身是一个 SATA 指令。在删除文件时,文件系统一般只做必要的标记而不真正抹去存储介质上的数据。对于普通磁盘,这就足够了,被标记的部分以后在需要时会被覆盖。而对于 SSD 硬盘,告知硬盘有些块不再被需要是很有意义的,硬盘可以据此优化其垃圾回收过程,加快以后写入数据的速度。[1]。


ssd优化
1.分区对齐
使用多数现代分区工具分区的硬盘,一般是已经对齐的。如在较新的GParted中,新建分区的默认对齐方式就是 MiB

[root@detaildb01 ~]# fdisk -l

Disk /dev/sda: 299.4 GB, 299439751168 bytes
255 heads, 63 sectors/track, 36404 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        5112    40957717+  82  Linux swap / Solaris
/dev/sda3            5113       36404   251352990   83  Linux

Disk /dev/sdb: 598.3 GB, 598342631424 bytes
255 heads, 63 sectors/track, 72744 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       72744   584316148+  83  Linux


2.挂载选项

在很多教程中出现的选项是-o discard,该选项可用于 ext4 和 btrfs 文件系统,作用是在删除文件时实时发出 TRIM 指令,以期加快以后写数据的速度。值得注意的是,该指令的效果是受到严重怀疑的。2011年中旬的数据表明, discard 选项非但没有提升SSD的效率,反而使其变慢了。Btrfs的-o ssd选项也不会启用discard。相比之下,定时发送 TRIM 指令可能是更好的选择。

定时 TRIM
虽然实时TRIM选项-o discard效果并不好,但定期对已删除的文件做TRIM还是有意义的[12],如:

# 告知硬盘分区"/"中的哪些块已不再被使用
fstrim -v /


noatime(或relatime), nodiratime是另外两个可以考虑的挂载选项,它们防止在读文件时更改文件的“最近访问”时间戳,
减少写入硬盘的次数。采用noatime选项后,在编译Linux内核的过程中,硬盘写入量比没使用时少了约13% 。请依照数据自

行权衡利弊。

转载自:http://blog.csdn.net/wyzxg/article/details/8090863

参考:http://tagche.blog.51cto.com/649757/191290

http://blog.csdn.net/Anstinus/article/details/7713518

http://ssd.zol.com.cn/233/2337579.html

抱歉!评论已关闭.