Table des matières

Disk SSD

NOTA: il s'agit d'une suite de prise de note.

Pour le dire simplement:

~~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