Forum Linux.général Forcer les écritures synchrones sur iSCSI

Posté par  (site web personnel, Mastodon) . Licence CC By‑SA.
Étiquettes :
1
23
jan.
2023

Hello,

Je ne suis pas un as en stockage et c'est la première fois que je touche à iSCSI.

Je voulais faire un peu mumuse et je me suis fait un petit lab pour tester iSCSI sur un réseau pas très performant (en Gbps uniquement pour l'instant) et je m'attends donc à des performances très faibles, mais c'est sans importance.

J'ai donc partagé un disque en iSCSI et je l'ai monté sur une autre machine, ça fonctionne. J'en ai fait un PV pour LVM et j'ai créé un petit LV de 8 Go dessus. Pour tester la vitesse j'ai fait ceci :

root@initiator:~# dd if=/dev/zero of=/dev/iscsiVG/toto bs=1M status=progress
7624196096 octets (7,6 GB, 7,1 GiB) copiés, 4 s, 1,9 GB/s

Ça a été très rapide pour m'afficher ça puis ça a freeze pendant quelques minutes. Sur la target, j'ai constaté que le transfert se faisait bien mais beaucoup plus lentement qu'annoncé par dd, ce qui est normal vu que c'est un réseau uniquement Gbps.

Ce qui s'est donc passé, c'est que dd a fièrement annoncé avoir fait le taf alors que la syncro n'était as encore faite. J'aimerais faire en sorte que ça ne se produise pas et que dd (ou autres outils) ne fassent que des transferts synchrones afin que ce lag ne se produise pas. Est-ce que ça peut se régler au moment ou je connecte l'initiator avec iscsiadm ou est-ce au moment de la création du LUN sur la target avec targetcli ? Ou autre chose encore ?

  • # Forcer un sync

    Posté par  (Mastodon) . Évalué à 3. Dernière modification le 23 janvier 2023 à 10:43.

    Il te faut forcer dd à effectuer un sync : ajoute-lui comme option conv=fsync

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

  • # /proc/diskstats

    Posté par  . Évalué à 4. Dernière modification le 23 janvier 2023 à 11:49.

    Bonjour

    Il y a ce que la commande dd peut faire, et il y a tout au bout, ce que le périphérique va être capable de faire. Et entre les deux, il y a des tampons DMA et toute la gestion qui va avec.

    Pour savoir exactement ce qui est écrit sur le périphérique cible,
    je surveille l'évolution du dixième champ de la ligne concernant ce périphérique dans le fichier /proc/diskstats

    En utilisant la commande watch et awk dans la ligne de commande suivante,
    je fais s'afficher 5 fois par seconde la quantité de données réellement écrite sur le périphérique /dev/sdb

    watch -tn.2 "awk -v mavar=\"sdb \" '\$0 ~ mavar {print \"Écrits sur /dev/\"mavar\" : \"  (\$10 / 2048)\" MiB\"}' /proc/diskstats"
    

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.