= SSD installation checklist = '''IMPORTANT NOTE''': This document was initially written around November 2010 when SSD support was still considered recent in GNU/Linux distributions and Ubuntu in general. Be careful when deciding to apply any of the information it contains. A few assumptions are made in this list: * '''/dev/sda''' is your SSD device * Performance is preferred to reliability. Therefore, you backup regularly or use this for non-critical (even expendable) data. * You already have a backup of any important data (can't stress this enough). If you contribute something to this list, please make sure whatever it is has a justification, explanation, reference, or all three. == Ubuntu 10.10 == * Check for firmware upgrades for your drive and apply any pending.<
>`$ sudo hdparm -I /dev/sda | grep Firmware`<
>`Firmware Revision: 2CV102M3`<
> Bugs [[https://bugs.launchpad.net/ubuntu/+source/lshw/+bug/663349|#663349]] and [[https://bugs.launchpad.net/ubuntu/+source/udev/+bug/672764|#672764]] have been filed about lshw and udev, mark those as affecting you if you wish so. Once you know your firmware version, go to your manufacturer's site: * [[http://www.intel.com/go/ssdfirmware/|Intel SSD firmware updates]] * [[http://www.runcore.com/content/support/|RunCore SSD firmware updates]] & [[http://www.corsair.com/support/faq/solid-state-drives/#answer1 Corsair FAQ on firmware updates]] * ... * Boot from a Live CD * Find out your hard disk information with '''sudo fdisk -l /dev/sda | grep sectors'''. Example output:<
>`255 heads, 63 sectors/track, 4865 cylinders` * Partition & format your disk aligning the partition blocksize to the SSD erase block size, with the above information (1 partition, no swap, no journaling ext4):<
>`sudo fdisk -H 255 -S 63 /dev/sda`<
>`sudo mke2fs -t ext4 -O ^has_journal /dev/sda1`<
> ''Warning: formatting without journaling will increase chances of data loss. Use with caution''. Omit the `-O ^has_journal` option otherwise. The Linux Documentation Project has complete information about [[http://tldp.org/HOWTO/Partition/fdisk_partitioning.html|fdisk partitioning]]. * Make sure SATA AHCI mode is enabled in BIOS. See [[http://www.techmetica.com/howto/sata-ahci-mode-bios-setting.-what-does-it-do/|SATA AHCI Mode Bios Setting. What Does it do?]] * Reboot the the Alternate Ubuntu installer CD, install normally - use manual partitioning though, mounting / to your single partition, accepting warnings about swap not being present. * Kernel boot options: * Change the I/O scheduler to NOOP: * If you only have one disk and it is SSD, and don't use external storage often, just add '''elevator=noop''' to your kernel boot parameters in /etc/default/grub (append to GRUB_CMDLINE_LINUX_DEFAULT). This is also OK if you occasionally use USB sticks. * If you have several disks or a mix of SSD and mechanical disks, install the '''sysfsutils''' package and add the following line at the end of '''/etc/sysfs.conf''':<
>`block/sda/queue/scheduler = noop` * To change the scheduler without rebooting:<
>`sudo echo noop > /sys/block/sda/queue/scheduler` * Disk mounting options (in /etc/fstab): * Example mounting line:<
>`UUID=41b6b187-be76-4447-b18b-d39cc744b184 / ext4 noatime,discard,data=writeback,errors=remount-ro 0 1` * Add the '''noatime''' mounting option. The default is '''relatime''' which adds write operations to set the Last Accessed Time attribute to files. * Add the '''discard''' mounting option. This controls whether ext4 should issue discard/TRIM commands to the underlying block device when blocks are freed. This is useful for SSD devices and sparse/thinly-provisioned LUNs, but it is off by default until sufficient testing has been done. * Add the '''data=writeback''' mounting option ''if you formatted the disk without journaling''. Otherwise add '''data=ordered''' which sould be a good compromise between full journaling and none at all. See [[http://www.mjmwired.net/kernel/Documentation/filesystems/ext4.txt|Ext4 Filesystem]] documentation for more details. = Other considerations: = * Mount /tmp in ram * Use the following line in /etc/fstab and reboot:<
>{{{tmpfs /tmp tmpfs nodev,nosuid,noexec,mode=1777 0 0}}}<
>'''Rationale:''' In the past when SSD controllers had bad wear leveling and limited amounts of writes, mounting anything that was often wrote to (like /tmp) was a good idea. Nowadays it helps with performance but also as some caveats. * Put the Firefox cache in /tmp (which is in RAM) * Type '''about:config''' in the location bar * Find/create this key: '''browser.cache.disk.parent_directory'''. Set it to {{{/tmp}}} * Verify the cache location information in '''about:cache''' * '''Pros:''' * Placing your browser cache in /tmp, and mounting /tmp in RAM is a sure boost to page rendering. * '''Cons:''' * Do only with at least 4Gb of RAM * Watch for GUI apps (disc burners etc) writing large files to /tmp * In multi-user systems if other users are logged in they will have access to your temporary files in /tmp = Reference links = * http://ubuntuforums.org/showthread.php?t=1041524 * http://www.zdnet.com/blog/perlow/geek-sheet-a-tweakers-guide-to-solid-state-drives-ssds-and-linux/9190 * http://www.linuxhowtos.org/System/iosched.htm - including information on how to change the I/O scheduler at runtime