Qual é a maneira correta de desconectar o disco rígido SATA hot-swap?

2

Estou usando uma baia de troca a quente SATA e tenho na BIOS essa porta específica configurada especificamente para "Hot-Swap".

Este compartimento possui o conveniente botão "POWER ON / OFF", de modo que não ocorram interrupções durante os cabos de conexão / saída.

Quando estou ligando uma unidade, estou recebendo imediatamente alguns erros do kernel, antes de montá-los:

[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)

E quando eu estou desmontando (como qualquer outra unidade) e desligando a baia, estou recebendo uma saída mais estranha do kernel (as últimas partes ocorrem cerca de 10 segundos depois de desligar - o sistema ainda acha que a unidade está conectada por um tempo até o tempo limite):

[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

No entanto, a unidade funciona bem, sem problemas ou erros de dados, mas tenho a sensação de que pode ter sido feito de uma maneira melhor / mais segura, sem esse tempo limite.

Existe uma maneira mais adequada de desconectar o SATA hot-swap?

Estou tentando enviar um comando udisksctl power-off -b /dev/sdd , mas, embora funcione bem para unidades USB, ele não faz nada com o SATA. A melhor coisa que percebi é suspender uma unidade antes de desligar, mas a saída do kernel é a mesma, de qualquer maneira.

$ 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
    
por GreggD 25.12.2017 / 15:55

2 respostas

2

Aqui está o comando mais estranho que realmente faz o truque que eu estava procurando:

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

... e depois disso:

[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

... e agora eu posso desligar e vai:

[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

Pouco chatice de que ele precisa de privilégio root, mas parece muito mais satisfatório:)

    
por GreggD 25.12.2017 / 21:57
1

Quando você desmonta todas as partições com sistemas de arquivos na unidade (e desliga todas as partições de troca ativas), você pode desligar a energia sem nenhum risco para os sistemas de arquivos (e talvez armazenamento de dados de um estado hibernado), e depois disso você pode desconectar a unidade.

Eu tenho usado esse método há anos com drives eSATA, que eu uso para backup, e não tive problemas.

O processo de desmontagem inicia com a liberação dos buffers (conclui a gravação de dados nos sistemas de arquivos montados, que também podem ser feitos separadamente com o comando sync ) e depois disso o processo de desmontagem é concluído (e os sistemas de arquivos não são mais disponível).

Os links a seguir podem ajudar a descrever a desmontagem e a ejeção de pendrives USB, (ejetar = desmontar e desligar a energia),

  • mais sobre desmontar: Desmonte meu Unidade dedicada do Windows no Ubuntu pendrive

  • desmontar versus ejetar: Como desmontar Dispositivo USB MTP da linha de comando

      

    Isso é desmontar . Os buffers são liberados, portanto, é seguro desconectar   o dispositivo. O dispositivo ainda está ligado, por isso pode ser visto no   desktop 'e pode ser montado novamente. Isso é diferente de    ejetar . Um pendrive ejetado será desligado e deve ser desconectado e conectado novamente se você quiser montá-lo.

    Eu não uso nenhum método de ejeção automática geral para drives [e] SATA no linux, mas você pode usar a seguinte sequência de ações,

    • desmontar
    • desligue a energia
    • desconectar

Você pode encontrar métodos via hdparm para desativar uma unidade SATA, mas eu não os usei e não acho que eles sejam necessários.

    
por sudodus 25.12.2017 / 19:29