Disk SSD
NOTA: il s'agit d'une suite de prise de note.
Pour le dire simplement:
- Noyau 3.2 minimum
- ext4 (et oublié le RAID et LVM)
- ça marche
~~READMORE~~
Liens:
RAID
Le raid logiciel sur “ssd” n'est pas recommande: https://docs.fedoraproject.org/en-US/Fedora/14/html/Storage_ Administration_Guide/newmds-ssdtuning.html
J'ai pourtant rêvé dans disk hybrid… tant pis!
De toute façon, il y a patch de Mars 2012 (j'ai plus le lien) qui n'est pas encore dans les noyaux 3.2…
On ne trouve aucune reference equivalente avec “REQ_DISCARD” dans les sources de “md”, par exemple:
/usr/src/linux-source-3.2/drivers/md/raid1.c
Conclusion: oublier le RAID1 avec le SSD.
TRIM
Le disk SSD supporte TRIM ?
# hdparm -I /dev/sda | grep TRIM * Data Set Management TRIM supported (limit 8 blocks) * Deterministic read data after TRIM
On dirait que oui.
optimiser
Soit un disk SSD en /dev/sda
backports
Installer au moins la version 2.6.36 du noyau.
Sur le “backports” Debian, ou trouvera la version 3.2 qui va bien.
Mon /etc/apt/sources.list
:
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free deb http://security.debian.org/ squeeze/updates main contrib non-free deb-src http://security.debian.org/ squeeze/updates main contrib non-free # squeeze-updates, previously known as 'volatile' deb http://ftp.debian.org/debian/ squeeze-updates main contrib non-free deb-src http://ftp.debian.org/debian/ squeeze-updates main contrib non-free # Backports deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
# aptitude update # aptitude -t squeeze-backports install linux-image-3.2.0-0.bpo.2-amd64
Redemarrer avec ce noyau. (Normalement, c'est sans danger…)
rotation
Il parait que “cfq” fait trés bien l'affaire de nos jours: pas besoin de changer le “scheduler”, laissez “cfq” |
A l'origine, le “scheduler” dit ça:
# cat /sys/block/sda/queue/scheduler noop deadline [cfq]
Dans /etc/rc.local
, ajouter ça :
# TJ ------------- if [ "x$( cat /sys/block/sda/queue/rotational )" = "x0" ]; then echo deadline > /sys/block/sda/queue/scheduler echo 1 > /sys/block/sdX/queue/iosched/fifo_batch fi # -----------------
Ce qui test que c'est un disk “SSD” (sans rotation de disk) et force le scheduler “deadline” et pas de fifo.
Aprés reboot, vérifier qu'on a bien:
# cat /sys/block/sda/queue/scheduler noop [deadline] cfq
tmp
Mettre “tmp” en RAM, mais en tout cas pas sur le SSD.
Dans /etc/fstab
:
methode 1
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
(je préfère)
Mais aussi:
tmpfs /var/lock tmpfs defaults,noatime,mode=1777 0 0 tmpfs /var/run tmpfs defaults,noatime,mode=1777 0 0
methode 2
none /tmp tmpfs size=10% 0 0
fstab
Pour le montage de sda:
/dev/sda / ext4 discard,noatime,data=writeback,errors=remount-ro 0 1
grub
En fait, il faut (surtout) que “discard” et/ou “data=writeback” soit spécifié dés le boot.
Donc, dans /etc/default/grub
, ajouter/modifier pour avoir:
# TJ ----------- #GRUB_CMDLINE_LINUX_DEFAULT="quiet" GRUB_CMDLINE_LINUX_DEFAULT="rootflags=discard,noatime,data=writeback quiet" # --------------
UPDATE Il semblerait qu'il faut aussi faire: tune2fs -o journal_data_writeback /dev/sdaX |
Sources:
Et puis:
# update-grub
Et reboot.
swap
TRIM est reconnu et appliqué automatiquement par une partition swap. Parfait ?
Toutefois, on affiner la conf du swap ainsi, dans /etc/sysctl.d/local.conf
, faire en sorte d'avoir :
vm.swappiness=1 vm.vfs_cache_pressure=50
Appliquer:
# sysctl -p /etc/sysctl.d/local.conf
fstrim
fstrim
existe ( http://dev.man-online.org/man8/fstrim/ ).
On notera que ça fonctionne sous xfs: http://blog.taz.net.au/category/geek/debian-geek/
On peut l'utiliser pour forcer le TRIM sur les partitions a certains moments plus opportuns…
Debian !
Télécharger les sources là:
# aptitude install make gcc # make cc -std=c99 -Wall -pedantic -D_GNU_SOURCE fstrim.c -o fstrim
Tester:
# ./fstrim -v / 8036347904 Bytes was trimmed
Encore:
# ./fstrim -v / 0 Bytes was trimmed
La partition “/boot” en ext3 aussi:
# ./fstrim -v /boot 208379904 Bytes was trimmed