Differences between revisions 11 and 14 (spanning 3 versions)
Revision 11 as of 2012-09-30 17:07:02
Size: 4220
Editor: GuoYixuan
Comment: fixed typo
Revision 14 as of 2012-11-24 11:03:04
Size: 5349
Comment:
Deletions are marked like this. Additions are marked like this.
Line 10: Line 10:
/!\ An important aspect in optimizing SSD performance is the file system and partition layout. This wiki page does not cover these issues. /!\ An important aspect in optimizing SSD performance is the file system and partition layout. This wiki page does not yet cover these issues.
Line 12: Line 12:
== Optimization of solid state drive ==

== Reducing writes to solid state disks (SSDs) or laptop hard disk drives (HDDs) ==

 * Disable or reduce disk writes during disk read access.
   * Set "noatime" or "relatime" mount option in /etc/fstab.
 * set RAMTMP, RAMRUN and RAMLOCK to "yes" in /etc/default/tmpfs (since wheezy)
  /!\ RAMTMP will keep /tmp in RAM only, causing its content to be discarded on shutdown! Using increasing the commit interval or using sync scripts (see below) shall reduce disk writes significantly without regularly discarding data.
 * Make system flush data to the disk every 10 minutes for laptop PCs.
 /!\ Attention: Changing the flushing interval from default 5 seconds to 10 minutes (or until proper shutdown) makes your data more vulnerable in case of lock-ups or power failures.
  * Manually set "commit=600" mount option in /etc/fstab. See mount(8).
  * Or better, set up pm-utils ([[http://bugs.debian.org/659260|Debian BTS #659260]]) or laptop-mode-tools to enable laptop-mode even under AC operation.
  * Alternatively, and more selective than changing the global commit interval:
   * have the browser database and cache copied into RAM during uptime (http://ubuntuforums.org/showthread.php?t=1921800 https://github.com/graysky2/profile-sync-daemon)
   * consider having logs copied into RAM with http://www.debian-administration.org/articles/661, http://www.tremende.com/ramlog or https://github.com/graysky2/anything-sync-daemon

== Optimizations for solid state disks (SSDs) ==
Line 16: Line 32:
 * Reduce disk writes for read disk accesses.
   * Set "noatime" or "relatime" mount option in /etc/fstab.
Line 20: Line 35:
   * Alternativly, set up an offline-trim cronjob that runs {{{time fstrim -v }}} on the ssd mountpoints periodically (enabling online-trim in fstab may slow down some SSDs).
Line 21: Line 37:
  * Set "discard" option in /etc/crypttab for dm-crypt. '''Note that this has drawbacks with respect to security/cryptography!''' See crypttab(5).
 * Enable the SSD optimized disk space allocation scheme.
  * Set "ssd" mount option in /etc/fstab for the Btrfs.
 * Make system flush data to the disk every 10 minutes for laptop PCs.
  * Set "commit=600" mount option in /etc/fstab. See mount(8).
  * Set pm-utils to use laptop-mode even under AC operation. See [[http://bugs.debian.org/659260|Debian BTS #659260]].
  * Set "discard" option in /etc/crypttab for dm-crypt.
'''Note that using discard with on-disk-cryptogrpahy (like dm-crypt) has drawbacks with respect to security/cryptography!''' See crypttab(5).
Line 28: Line 40:
/!\ Changing flushing interval from normal 5 seconds to 10 minutes makes your data vulnerable to the power failure. dm-crypt: /etc/crypttab
{{{
#<target name> <source device> <key file> <options>
var UUID=01234567-89ab-cdef-0123-456789abcdef none luks,discard
}}}
 You'll also need to update your initramfs: `update-initramfs -u -k all`
 * With btrfs, enable the SSD optimized disk space allocation scheme.
  * Set "ssd" mount option in /etc/fstab.
Line 31: Line 50:
/!\ I used to use mount /tmp and similar on tmpfs to avoid disk wear. With laptop-mode as above, i do not do this any more since laptop-mode etc. shall reduce disk writes significantly. More: http://siduction.org/index.php?module=news&func=display&sid=78 http://forums.debian.net/viewtopic.php?f=16&t=76921 https://wiki.archlinux.org/index.php/SSD

Line 78: Line 99:
== dm-crypt: /etc/crypttab ==
'''Note that using discard with on-disk-cryptogrpahy (like dm-crypt) has drawbacks with respect to security/cryptography!'''
Line 81: Line 100:
{{{
#<target name> <source device> <key file> <options>
var UUID=01234567-89ab-cdef-0123-456789abcdef none luks,discard
}}}

Translation(s): none


This describe SDD optimization with system having encrypted root and swap.

/!\ An important aspect in optimizing SSD performance is the file system and partition layout. This wiki page does not yet cover these issues.

Reducing writes to solid state disks (SSDs) or laptop hard disk drives (HDDs)

  • Disable or reduce disk writes during disk read access.
    • Set "noatime" or "relatime" mount option in /etc/fstab.
  • set RAMTMP, RAMRUN and RAMLOCK to "yes" in /etc/default/tmpfs (since wheezy)
    • /!\ RAMTMP will keep /tmp in RAM only, causing its content to be discarded on shutdown! Using increasing the commit interval or using sync scripts (see below) shall reduce disk writes significantly without regularly discarding data.

  • Make system flush data to the disk every 10 minutes for laptop PCs.

    /!\ Attention: Changing the flushing interval from default 5 seconds to 10 minutes (or until proper shutdown) makes your data more vulnerable in case of lock-ups or power failures.

Optimizations for solid state disks (SSDs)

Performance and disk wear of the solid state drive (SSD) can be optimized as follows.

  • Use the latest Linux kernel. (>3.2)

  • Enable the TRIM command.
    • Set "discard" mount option in /etc/fstab for the ext4 filesystem, swap partition, Btrfs, etc. See mount(8).
      • Alternativly, set up an offline-trim cronjob that runs time fstrim -v  on the ssd mountpoints periodically (enabling online-trim in fstab may slow down some SSDs).

    • Set "discard" option in /etc/lvm/lvm.conf for LVM. See lvm.conf(5).
    • Set "discard" option in /etc/crypttab for dm-crypt.

Note that using discard with on-disk-cryptogrpahy (like dm-crypt) has drawbacks with respect to security/cryptography! See crypttab(5).

dm-crypt: /etc/crypttab

#<target name>    <source device>            <key file>  <options>
var  UUID=01234567-89ab-cdef-0123-456789abcdef  none  luks,discard
  • You'll also need to update your initramfs: update-initramfs -u -k all

  • With btrfs, enable the SSD optimized disk space allocation scheme.
    • Set "ssd" mount option in /etc/fstab.

More: http://siduction.org/index.php?module=news&func=display&sid=78 http://forums.debian.net/viewtopic.php?f=16&t=76921 https://wiki.archlinux.org/index.php/SSD

/etc/fstab

# /etc/fstab: static file system information.
#
# Use 'vol_id --uuid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
### SSD: discard,noatime
### match battery operation default for commit JOURNAL_COMMIT_TIME_AC in Add files in /etc/pm/config.d/*
/dev/mapper/goofy-root /               ext4    discard,noatime,commit=600,errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=709cbe4a-80c1-46cb-8bb1-dbce3059d1f7 /boot           ext4    discard,noatime,commit=600,defaults        0       2
### SSD: discard
/dev/mapper/goofy-swap none            swap    sw,discard              0       0
/dev/mapper/goofy-chroot /srv/chroot         btrfs    ssd,discard,noatime 0       2
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0

/etc/lvm/lvm.conf

...
# This section allows you to configure which block devices should
# be used by the LVM system.
devices {
...
    # Issue discards to a logical volumes's underlying physical volume(s) when
    # the logical volume is no longer using the physical volumes' space (e.g.
    # lvremove, lvreduce, etc).  Discards inform the storage that a region is
    # no longer in use.  Storage that supports discards advertise the protocol
    # specific way discards should be issued by the kernel (TRIM, UNMAP, or
    # WRITE SAME with UNMAP bit set).  Not all storage will support or benefit
    # from discards but SSDs and thinly provisioned LUNs generally do.  If set
    # to 1, discards will only be issued if both the storage and kernel provide
    # support.
    # 1 enables; 0 disables.
    #issue_discards = 0
    issue_discards = 1
}
...

Smaller system with SSD

See