Bonsoir à toutes et tous, vous vous souvenez que j’ai acheté il y maintenant un bon moment un disque PCIe pour y installer douillettement mon système, et un disque SSD de 1To pour les données.
Dans ce post :
https://forums.fedora-fr.org/viewtopic.php?id=67441 il était surtout question de vitesse, alors j’ai commandé une carte adaptatrice pour installer le disque en question sur le port PCIe X4, j’y ai largement gagné en vitesse, surtout pour un coût très raisonnable d’environ 10€ puisque maintenant j’affiche des taux de transferts de :
[root@localhost ~]# hdparm -Tt --direct /dev/nvme0n1
/dev/nvme0n1:
Timing O_DIRECT cached reads: 1820 MB in 2.00 seconds = 910.42 MB/sec
Timing O_DIRECT disk reads: 3500 MB in 3.00 seconds = 1166.53 MB/sec
Mais l’objet de ce post est différent.
À l’époque je n’avais pas plus creusé la chose, mais je n’avais pas réglé le problème du trim, ce qui n’est pas une bonne idée, me contentant de faire (assez) régulièrement un :
fstrim -av
Mais ça reste une solution «boiteuse», j’ai donc voulu changer les choses.
Pour rappel, voici ma configuration maintenant :
sur le disque Samsung en NVMe PCIExpress de 250 Go en GPT j’ai les partitions suivantes :
• 210 mo en fat16 pour le boot/efi
• 1 Go en ext4 pour le /boot
• 54 Go en ext4 pour / (cryptée LUKS)
• 161 Go en ext4 pour /home (cryptée LUKS)
• 17 Go en ext4 pour /tmp (crypée LUKS)
• 17 Go de SWAP (crypée LUKS)
Tous mes dossiers Documents, Vidéos, Musique, Images et autre dossiers pouvant contenir des grosses données sont déportées sur un disque SSD de 1To en SDA, et liés sur mon home par des liens symboliques.
Pour configurer les disques (NVMe et SSD) je me suis référé au tuto qui est ici :
https://doc.fedora-fr.org/wiki/Les_SSD_sous_fedora
J’ai suivi le tuto pas à pas, mais il n’y a rien pour les disques en NVMe sur PCIExpress…
Dans un terminal je me suis logué en root par
su -
Toutes les commandes suivantes ont donc été faites en Super Utilisateur (je suis passé de Fedora 27 à Fedora 28 par dnf upgrade)
Pour le SSD (SDA) j’ai fais comme indiqué sur le tuto :
cat /sys/block/sda/queue/scheduler
ce qui m’a donné :
noop deadline [cfq]
Pour le NVMe j’ai fais un :
cat /sys/block/nvme0n1/queue/scheduler
et j’ai obtenu un :
[none] mq-deadline
Ensuite j’ai créé un fichier dans /etc/rc.d/ un fichier rc.local
Je l’ai garni avec :
[quote]#!/bin/bash
echo 'noop' > /sys/block/sda/queue/scheduler
Je l’ai «activé» avec un :
chmod +x /etc/rc.d/rc.local[/quote]
Quand j’ai lancé le service par un :
systemctl enable rc-local.service
j’ai obtenu ce message d’erreur :
[root@localhost ~]# systemctl enable rc-local.service
The unit files have no installation config (WantedBy, RequiredBy, Also, Alias
settings in the [Install] section, and DefaultInstance for template units).
This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
4) In case of template units, the unit is meant to be enabled with some
instance name specified.
J’ai donc créé un fichier rc-local.service dans etc/systemd/system
dans lequel j’ai mis ceci :
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
GuessMainPID=no
[Install]
WantedBy=multi-user.target
Après relance du service j’ai obtenu :
[root@localhost ~]# systemctl enable rc-local.service
Created symlink /etc/systemd/system/multi-user.target.wants/rc-local.service → /etc/systemd/system/rc-local.service.
Ensuite j’ai fais un :
systemctl start rc-local.service
Retour au prompt sans erreur.
Et quand je fais un :
cat /sys/block/sda/queue/scheduler
j’obtiens :
[noop] deadline cfq
Donc normalement je suis bon là ???
Sauf que pour le NVMe un :
cat /sys/block/nvme0n1/queue/scheduler
Donne toujours ceci :
[none] mq-deadline
J’ai donc ajouté la ligne suivante dans rc.local :
echo 'noop' > /sys/block/nvme0n1/queue/scheduler
Seulement, après avoir fait :
systemctl enable rc-local.service
et :
systemctl start rc-local.service
quand je refais un :
cat /sys/block/nvme0n1/queue/scheduler
j’obtiens toujours le :
[none] mq-deadline
Du coup, là je cale, et je n’ai rien trouvé de probant sur le Net, en fait on ne trouve pas grand-chose à ce sujet pour les disques NVMe en PCIExpress…
Est-ce que
mq-deadline
est la norme pour un NVMe ???
Dans cas est-ce bon de modifier mon rc.local en ajoutant une ligne :
echo 'mq-deadline' > /sys/block/nvme0n1/queue/scheduler
???
Je n’ai pas suffisamment de connaissances en informatique pour voir ce qui m’échappe, et j’ai certainement aussi mal orienté mes recherches. Alors j’avoue que votre aide me sera précieuse et même salvatrice.
Merci par avance à vous tous et veuillez m’excuser pour la longueur de ce post.