web-dev-qa-db-fra.com

Quelle est la bonne façon de déconnecter un disque dur SATA remplaçable à chaud?

J'utilise une baie remplaçable à chaud SATA et j'ai dans le BIOS ce port spécifique configuré spécialement pour "Hot-Swap".

Cette baie possède un bouton pratique "POWER ON/OFF", qui évite les interruptions lors de la connexion/déconnexion des câbles.

Lorsque j'allume un lecteur, j'obtiens immédiatement des erreurs de noyau, avant qu'il ne monte:

[1263413.036674] ata6: exception Emask 0x10 SAct 0x0 SErr 0x4040000 action 0xe frozen
[1263413.036680] ata6: irq_stat 0x00000040, connection status changed
[1263413.036683] ata6: SError: { CommWake DevExch }
[1263413.036698] ata6: hard resetting link
[1263418.796687] ata6: link is slow to respond, please be patient (ready=0)
[1263423.052529] ata6: COMRESET failed (errno=-16)
[1263423.052547] ata6: hard resetting link
[1263428.032390] ata6: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[1263428.032836] ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359)
[1263428.032846] ACPI Error: Method parse/execution failed [\_SB.PCI0.SAT0.SPT5._GTF] (Node ffff88040e0c5780), AE_NOT_FOUND (20150930/psparse-542)
[1263428.159582] ata6.00: ATA-9: HGST HDN726040ALE614, APGNW7JH, max UDMA/133
[1263428.159588] ata6.00: 7814037168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA
[1263428.161980] ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359)
[1263428.161988] ACPI Error: Method parse/execution failed [\_SB.PCI0.SAT0.SPT5._GTF] (Node ffff88040e0c5780), AE_NOT_FOUND (20150930/psparse-542)
[1263428.164472] ata6.00: configured for UDMA/133
[1263428.164483] ata6: EH complete
[1263428.164650] scsi 5:0:0:0: Direct-Access     ATA      HGST HDN726040AL W7JH PQ: 0 ANSI: 5
[1263428.165064] sd 5:0:0:0: Attached scsi generic sg4 type 0
[1263428.165502] sd 5:0:0:0: [sdd] 7814037168 512-byte logical blocks: (4.00 TB/3.64 TiB)
[1263428.165508] sd 5:0:0:0: [sdd] 4096-byte physical blocks
[1263428.165582] sd 5:0:0:0: [sdd] Write Protect is off
[1263428.165587] sd 5:0:0:0: [sdd] Mode Sense: 00 3a 00 00
[1263428.165618] sd 5:0:0:0: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[1263428.213630]  sdd: sdd1
[1263428.214062] sd 5:0:0:0: [sdd] Attached SCSI disk
[1263534.534238] EXT4-fs (dm-5): mounted filesystem with ordered data mode. Opts: (null)

Et lorsque je le démonte (comme tout autre lecteur) et que j'éteins ensuite la baie, le résultat du noyau est encore plus étrange (les dernières parties surviennent environ 10 secondes après la mise hors tension - le système pense toujours que le lecteur est connecté pendant un certain temps. jusqu'à expiration du délai):

[1263588.964461] ata6: exception Emask 0x10 SAct 0x0 SErr 0x4090000 action 0xe frozen
[1263588.964467] ata6: irq_stat 0x00400040, connection status changed
[1263588.964478] ata6: SError: { PHYRdyChg 10B8B DevExch }
[1263588.964483] ata6: hard resetting link
[1263589.687000] ata6: SATA link down (SStatus 0 SControl 300)
[1263594.686806] ata6: hard resetting link
[1263595.006827] ata6: SATA link down (SStatus 0 SControl 300)
[1263595.006837] ata6: limiting SATA link speed to 1.5 Gbps
[1263600.006678] ata6: hard resetting link
[1263600.330626] ata6: SATA link down (SStatus 0 SControl 310)
[1263600.330634] ata6.00: disabled
[1263600.330645] ata6: EH complete
[1263600.330653] ata6.00: detaching (SCSI 5:0:0:0)
[1263600.334909] sd 5:0:0:0: [sdd] Synchronizing SCSI cache
[1263600.334943] sd 5:0:0:0: [sdd] Synchronize Cache(10) failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[1263600.334946] sd 5:0:0:0: [sdd] Stopping disk
[1263600.334955] sd 5:0:0:0: [sdd] Start/Stop Unit failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK

Cependant, le lecteur fonctionne bien, aucun problème ni aucune erreur de données, mais j'ai le sentiment que cela aurait pu être fait de manière meilleure/plus sûre, sans un tel délai.

Existe-t-il un moyen plus approprié de déconnecter le SATA remplaçable à chaud?


J'ai essayé d'envoyer une commande udisksctl power-off -b /dev/sdd, mais bien que cela fonctionne correctement pour les lecteurs USB, il ne fait rien avec SATA. La meilleure chose que j’ai pensé est de suspendre un lecteur avant de l’éteindre, mais la sortie du noyau reste la même.


$ uname -a
Linux dev 4.4.0-93-generic #116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
2
GreggD

Voici la commande la plus étrange qui fait le tour que je cherchais:

Sudo sh -c 'echo 1 > /sys/block/sdd/device/delete'

... et après ça va:

[1285227.129329] sd 5:0:0:0: [sde] Synchronizing SCSI cache
[1285227.129566] sd 5:0:0:0: [sde] Stopping disk
[1285228.209095] ata6.00: disabled

... et maintenant je peux ÉTEINDRE et ça continue:

[1285259.491044] ata6: exception Emask 0x10 SAct 0x0 SErr 0x4090000 action 0xe frozen
[1285259.491049] ata6: irq_stat 0x00400040, connection status changed
[1285259.491052] ata6: SError: { PHYRdyChg 10B8B DevExch }
[1285259.491058] ata6: hard resetting link
[1285260.211923] ata6: SATA link down (SStatus 0 SControl 300)
[1285260.211934] ata6: EH complete

Petit bémol ça a besoin de privilège racine, mais ça a l'air beaucoup plus satisfaisant :)

2
GreggD

Lorsque vous avez démonté toutes les partitions contenant des systèmes de fichiers dans le lecteur (et échangé les partitions de swap actives), vous pouvez éteindre le système sans risque pour les systèmes de fichiers (et peut-être le stockage de données dans un état de veille prolongée), puis vous pouvez déconnecter le lecteur.

J'ai utilisé cette méthode pendant des années avec des disques eSATA, que j'utilise pour la sauvegarde, et je n'ai eu aucun problème.


Le processus de démontage commence par vider les mémoires tampons (termine l'écriture des données sur les systèmes de fichiers montés, ce qui peut également être effectué séparément avec la commande sync), puis le processus de démontage est terminé (et les systèmes de fichiers ne sont plus utilisés). disponible).

Les liens suivants peuvent aider à décrire le démontage et l’éjection des clés USB, (éjecter = démonter et mettre hors tension),

  • plus sur démonter: Démonter mon disque dédié Windows sur Ubuntu pendrive

  • démonter ou éjecter: Comment démonter un périphérique USB MTP à partir de la ligne de commande

    Ceci est démonté . Les tampons sont vidés, il est donc prudent de débrancher le périphérique. L'appareil est toujours sous tension, vous pouvez donc le voir sur le bureau et le remonter. Ceci est différent de eject . Une clé USB éjectée sera mise hors tension et doit être débranchée et rebranchée si vous souhaitez la monter.

    Je n'utilise aucune méthode d'éjection automatique générale pour les lecteurs [e] SATA sous Linux, mais vous pouvez utiliser la séquence d'actions suivante,

    • démonter
    • éteindre le pouvoir
    • déconnecter

Vous pouvez trouver des méthodes via hdparm pour éteindre un disque SATA, mais je ne les ai pas utilisées et je ne pense pas qu'elles soient nécessaires.

1
sudodus