使用 Luks/LVM 实现 Linux SSD 性能

使用 Luks/LVM 实现 Linux SSD 性能

我最近买了一块三星 EVO 840 1TB SSD,作为我的笔记本电脑(联想 X220t、core-i5-2520m、8GB RAM)的硬盘替代品。到目前为止,我对最终的性能并不满意,并请求一些关于尝试的提示。

我已将驱动器格式化为具有 1GB 的启动分区和另一个占用其余部分的分区。

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
96 heads, 32 sectors/track, 635913 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf3e3717f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            3072     2101247     1049088   83  Linux
/dev/sda2         2101248  1953524735   975711744   83  Linux

第二个磁盘使用 luks 和 aes-xts-plain64 加密。

> cryptsetup status cryptoroot
/dev/mapper/cryptoroot is active and is in use.
  type:    LUKS1
  cipher:  aes-xts-plain64
  keysize: 512 bits
  device:  /dev/sda2
  offset:  6144 sectors
  size:    1951417344 sectors
  mode:    read/write
  flags:   discards

除此之外,还有带有逻辑分区的 LVM。

> vgs
  VG   #PV #LV #SN Attr   VSize   VFree  
  ssd    1   6   0 wz--n- 930.50g 639.00g
> pvs
  PV         VG   Fmt  Attr PSize   PFree  
  /dev/dm-0  ssd  lvm2 a--  930.50g 639.00g
> lvs
  LV   VG   Attr      LSize   Pool Origin Data%  Move Log Copy%  Convert
  home ssd  -wi-ao--- 250.00g                                           
  root ssd  -wi-ao---   2.50g                                           
  swap ssd  -wi-ao---  10.00g                                           
  tmp  ssd  -wi-ao---   4.50g                                           
  usr  ssd  -wi-ao---  20.00g                                           
  var  ssd  -wi-ao---   4.50g

AES-NI 处于活动状态并且“cryptsetup benchmark”为 aes-xts-512 在两个方向上提供 900-1000MB/s。

系统不是全新安装的,而是使用“cp -a”迁移了旧系统,因此没有旧文件系统的映像副本。现在一切都感觉快了一点,但到目前为止我并不觉得有什么特别。打开 iceweasel 仍然需要 4-5 秒,而启动一个相对较小的项目的 pycharm 大约需要 20 秒。

我正在运行 bonnie++ 来查看文件系统本身的原始性能,结果如下:

Version      1.97   ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
laptop       16000M   511  99 464061  50 212554  20  3191  99 646813  20 +++++ +++
Latency             39861us     688ms     647ms    3317us    2593us    2161us
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
laptop          128 81349  87 +++++ +++ 71014  63 83195  85 +++++ +++ 59378  56
Latency             81014us     505us     111ms   79458us      14us     114ms

块级读取和写入的值看起来不错,分别为 450MB/s 和 650MB/s。但是,每个字符的速度似乎真的很慢,只有 0.5MB/s 和 3MB/s。

但是,我缺乏真正判断这些值的参考。我见过其他装有 SSD 的机器,打开浏览器基本上是瞬间完成的,Eclipse 或 Pycharm 也发生了类似的事情,我想知道为什么我的系统没有像这样“飞”起来。我是不是在某个地方不小心引入了一个巨大的性能消耗?还是这些数字没问题,我的问题出在其他地方?

答案1

为了使 TRIM 在此特定设置下正常工作,您还需要做两件事。

  • 确保您已为文件系统discard设置了选项。/etc/fstab

  • 编辑/etc/lvm/lvm.conf并更改issue_discards = 0issue_discards = 1

完成此操作后,重新启动计算机并fstrim手动运行进行清理。


Firefox 的启动速度总是很慢,所以我不会太担心这一点。几乎所有足够大的东西都是如此,以至于它在启动时会在后台做很多工作。注意你的硬盘 LED。:)

相关内容