Estou criando um NAS ZFS usando um HBA Adaptec ASA-71605H a> no Ubuntu 12.04.4.
Os kernels modernos do Linux são fornecidos com a versão de código-fonte aberto do módulo de kernel pm80xx necessário. A Adaptec fornece um driver para o Ubuntu 12.04 e eu testei os dois com o mesmo efeito.
O sintoma que vejo é que, de tempos em tempos, após a inicialização, apenas 14 das 16 unidades estão disponíveis.
O total dmesg
log está disponível aqui , sendo as partes interessantes
[ 3.591035] pm80xx 0000:01:00.0: driver version 0.1.37 / 1.0.15-1
[ 50.749419] sas: Enter sas_scsi_recover_host busy: 0 failed: 0
[ 50.749424] sas: ata1: end_device-1:0: dev error handler
[ 50.749430] sas: ata2: end_device-1:1: dev error handler
[ 50.749433] sas: ata3: end_device-1:2: dev error handler
[ 55.900826] ata3.00: qc timeout (cmd 0xec)
[ 55.900899] pm80xx:: mpi_sata_completion 2049: SATA IO STATUS 0x1 task ffff8807ee8cc000
[ 55.900900] pm80xx:: mpi_sata_completion 2085: status:0x1, tag:0x2, task::0xffff8807ee8cc000
[ 55.900831] pm80xx:: pm8001_chip_abort_task 4889: cmd_tag = 0x3, abort task tag = 0x2
[ 55.900902] pm80xx:: mpi_sata_completion 2118: SAS Address of IO Failure Drive:50000d1106c76219<6>
[ 55.900903] pm80xx:: mpi_sata_completion 2493: task 0xffff8807ee8cc000 done with io_status 0x1 resp 0x0 stat 0x8d but aborted by upper layer!
[ 55.900906] pm80xx:: pm8001_mpi_task_abort_resp 3840: ABORT status = 0x0 task ffff8807ee8cc1c0
[ 55.900907] pm80xx:: pm8001_mpi_task_abort_resp 3856: ABORT IO_SUCCESS for tag 3 ,task ffff8807ee8cc1c0
[ 55.900911] ata3.00: failed to IDENTIFY (I/O error, err_mask=0x4)
[ 66.049020] ata3.00: qc timeout (cmd 0xec)
[ 66.049087] pm80xx:: mpi_sata_completion 2049: SATA IO STATUS 0x1 task ffff8807ee8cc000
[ 66.049088] pm80xx:: mpi_sata_completion 2085: status:0x1, tag:0x2, task::0xffff8807ee8cc000
[ 66.049025] pm80xx:: pm8001_chip_abort_task 4889: cmd_tag = 0x3, abort task tag = 0x2
[ 66.049089] pm80xx:: mpi_sata_completion 2118: SAS Address of IO Failure Drive:50000d1106c76219<6>
[ 66.049091] pm80xx:: mpi_sata_completion 2493: task 0xffff8807ee8cc000 done with io_status 0x1 resp 0x0 stat 0x8d but aborted by upper layer!
[ 66.049093] pm80xx:: pm8001_mpi_task_abort_resp 3840: ABORT status = 0x0 task ffff8807ee8cc1c0
[ 66.049094] pm80xx:: pm8001_mpi_task_abort_resp 3856: ABORT IO_SUCCESS for tag 3 ,task ffff8807ee8cc1c0
[ 66.049098] ata3.00: failed to IDENTIFY (I/O error, err_mask=0x4)
[ 96.181921] ata3.00: qc timeout (cmd 0xec)
[ 96.182001] pm80xx:: mpi_sata_completion 2049: SATA IO STATUS 0x1 task ffff8807ee8cc000
[ 96.182009] pm80xx:: mpi_sata_completion 2085: status:0x1, tag:0x2, task::0xffff8807ee8cc000
[ 96.181934] pm80xx:: pm8001_chip_abort_task 4889: cmd_tag = 0x3, abort task tag = 0x2
[ 96.182014] pm80xx:: mpi_sata_completion 2118: SAS Address of IO Failure Drive:50000d1106c76219<6>
[ 96.182020] pm80xx:: mpi_sata_completion 2493: task 0xffff8807ee8cc000 done with io_status 0x1 resp 0x0 stat 0x8d but aborted by upper layer!
[ 96.182025] pm80xx:: pm8001_mpi_task_abort_resp 3840: ABORT status = 0x0 task ffff8807ee8121c0
[ 96.182029] pm80xx:: pm8001_mpi_task_abort_resp 3856: ABORT IO_SUCCESS for tag 3 ,task ffff8807ee8121c0
[ 96.182043] ata3.00: failed to IDENTIFY (I/O error, err_mask=0x4)
[ 96.337817] sas: --- Exit sas_scsi_recover_host: busy: 0 failed: 0
[ 96.354159] sas: Enter sas_scsi_recover_host busy: 0 failed: 0
[ 96.354177] sas: ata1: end_device-1:0: dev error handler
[ 96.354194] sas: ata2: end_device-1:1: dev error handler
[ 96.354204] sas: ata3: end_device-1:2: dev error handler
[ 96.354210] sas: ata4: end_device-1:3: dev error handler
[ 96.510401] ata4.00: ATA-9: ST4000VN000-1H4168, SC43, max UDMA/133
[ 96.510409] ata4.00: 7814037168 sectors, multi 0: LBA48 NCQ (depth 31/32)
[ 96.511106] ata4.00: configured for UDMA/133
[ 96.511134] sas: --- Exit sas_scsi_recover_host: busy: 0 failed: 0
[ 96.526013] scsi 1:0:3:0: Direct-Access ATA ST4000VN000-1H41 SC43 PQ: 0 ANSI: 5
O primeiro grande bloco mostra como é uma falha na detecção de uma unidade, o segundo que se parece com uma detecção bem-sucedida.
Todos os discos rígidos foram testados várias vezes sem erros antes de serem colocados na construção completa. Nem sempre são as mesmas unidades que saem, parece completamente aleatório.
Outra questão sugere que o erro emerge de uma compartilhada IRQ 16 e, de fato, às vezes estou tendo logs de erro apontando para IRQ 16. Infelizmente eu não sei se é possível usar outro IRQ como o BIOS não permite tal coisa para mim e usar outro slot PCIe não é um opção velocidade de ligação sábia.
Qualquer ajuda é muito bem vinda. Estou perto de pedir um controlador LSI para ver se isso ajuda, mas espero fazê-lo funcionar com o Adaptec. Só tenho grandes preocupações em confiar meus dados a esse controlador.
Atualização : Os problemas continuam. Mesmo se todas as unidades forem encontradas, haverá pânico no kernel no libsas e no módulo do kernel pm80xx aleatoriamente. Não utilizável na produção também. Pensando em obter um LSI 9201-16i…