SSD和传统的磁盘在组织形式上不一样,磁盘有扇区,柱面,盘面的概念。而SSD flash存储完全不同,ssd由page,block,plane,die组成。

linux内核把ssd当做一个块设备,和磁盘模型一样的块设备。SSD内部的FTL隐藏ssd page,block,plane,die的关系,使得OS无法专门进行优化。

1. 调整ssd暴漏给OS的扇区、磁道等信息是合适的

fdisk -H 224 -S 56 /dev/sdd

这里的-H参数指的是“磁头”数量,-S参数指的是每磁道的扇区数量,fdisk总是把任何硬盘当作旋转机械硬盘对待,因此有些参数对SSD硬盘来说是没有任何意义的

使用下面的命令创建了一个ext4文件系统:

[root@test64 ~]# mke2fs -t ext4 -E stripe-width=32 resize=500G /dev/sdd1

“stripe-width=32”是Theodore推荐的,据说对性能有帮助,“resize=500G”将文件系统大小限制在500GB以内

2. 在Linux的不同层面对于SSD的使用做适当的调整

Block Layer

     scheduler

         修改调度器为noop

     Partition alignment

        可以从1M处开始分区,保证都是分区对齐。(block对齐?)

Filesystem

    ext4 on ssd

        1. 关闭日志 tune2fs -O ^has_journal /dev/

        2. 不关闭日志时,把日志分区和单独放一个分区 

            mke2fs -O journal_dev /dev/external_device

            mkfs.ext4 -J journal=/dev/external_device /dev/dev_data

        3. noatime,nodiratime,discard

            也就是减少元数据更新,enable trim

    Btrfs

        Btrfs is a copy-on-write filesystem for Linux released under the GPL.


Applocation

    调整app相应的配置,是app设计内部机制调整。