AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 750764
Accepted
user121391
user121391
Asked: 2016-01-22 05:41:15 +0800 CST2016-01-22 05:41:15 +0800 CST 2016-01-22 05:41:15 +0800 CST

Como detectar automaticamente o disco SATA inserido no Solaris se o status do cfgadm estiver desconectado?

  • 772

Meu objetivo é automatizar uma rotina de backup em um pequeno NAS OpenSolaris (executando OmniOS + napp-it em um HP Microserver N54L) em combinação com discos SATA.

Fundo:

Eu instalei uma daquelas bandejas de HDD sem portadora de 5,25" -> 3,5" que contêm um backplane SATA ou SAS/SATA simples com uma porta, um botão liga/desliga e alguns LEDs (energia e atividade do HDD). Para fazer backup de vários HDDs (um a cada semana em rotação, armazenado fora do local), escrevi um script que usa zfs send/recvpara despejar o pool principal completo, incluindo todos os instantâneos (atualizando apenas novos blocos). Este script funciona bem quando eu o inicio manualmente.

Eu gostaria de automatizar ainda mais esse processo, porque o NAS não tem VGA direto ou console serial conectado e é tedioso inserir o disco, voltar para o sistema de desktop, fazer login na interface da web ou SSH e iniciar o script manualmente . O início cronometrado via cron job não é uma opção, pois os dias de backup podem variar um pouco (esqueci o disco, feriados, etc.). Portanto, o backup deve começar logo após a inserção do disco.

Problema:

No script que uso cfgadmpara conectar + configurar e depois desconfigurar + desconectar os discos. Se eu apenas inserir o disco e ele girar, não tenho como saber que o disco está lá. Possíveis soluções que já considerei:

  1. Sondagem de um novo disco e zpool a cada x minutos continuamente usando cfgadm -f -c connecte verificando resultados de erro. Não muito elegante.
  2. Verificando /var/adm/messagesa cada x minutos e procurando o caminho do dispositivo ou AHCI. Não é possível, pois as mensagens só são gravadas se o dispositivo for conectado manualmente.
  3. Usando iostat -En. Exibe os discos, mas preciso obter os números de série exatos, porque não lista as informações da porta. Também precisa ser feito a cada x minutos.
  4. Usando cfgadmcom a sintaxe SELECT para filtrar o status do receptáculo. Não funciona, porque a inserção não aciona nada (talvez o backplane seja muito barato para isso).
  5. Reconhecendo o ligar/desligar do gabinete. Estaria tudo bem, mas eu não conseguia descobrir como fazer isso.
  6. Remapear o botão liga/desliga ou adicionar outro botão à máquina. Poderia funcionar, mas também não sei como fazer isso.

Acho que precisaria de duas coisas:

  • uma maneira confiável de identificar o status do disco e da porta em combinação (para que apenas o disco correto no slot correto seja detectado)
  • uma maneira de registrar essa detecção e acionar um evento (iniciar shell script)

Isso é possível? Se não, o que você sugeriria como alternativas?

Solução final (atualizada em 26/01/2015):

Para qualquer pessoa com problemas semelhantes no futuro:

  1. Habilite o hotswap AHCI no OmniOS conforme detalhado na resposta aceita por gea.
  2. Use syseventadmconforme detalhado em minha própria resposta para acionar o script de backup quando o disco ficar online.
  3. Certifique-se de que seus cabos, controlador e discos estejam livres de falhas e funcionem bem juntos (tive problemas com os discos WD SE 4TB e o controlador AHCI SATA integrado, o que resultou em WARNING: ahci0: ahci_port_reset port 5 the device hardware has been initialized and the power-up diagnostics failedmensagens aleatórias nos logs do sistema).
hard-drive
  • 3 3 respostas
  • 1660 Views

3 respostas

  • Voted
  1. Best Answer
    gea
    2016-01-23T02:05:58+08:002016-01-23T02:05:58+08:00

    Onboard Sata/AHCI é compatível com hotplug, mas está desativado no OmniOS por padrão: Para ativar, adicione a seguinte linha a /etc/system

    definir sata:sata_auto_online=1

    • 3
  2. ewwhite
    2016-01-22T05:51:08+08:002016-01-22T05:51:08+08:00

    Pergunta interessante... um pouco como um experimento científico, já que provavelmente usaria apenas USB ou enviaria remotamente ou agendaria isso...

    Mas, no seu caso, eu não tentaria "procurar" o disco de cfgadmmaneira alguma ou de análise de log. Isso não é escalável.

    Eu simplesmente nomearia o disco removível com um nome de pool ZFS exclusivo e lógica de script em torno de um arquivo zpool import. No ZFS no Linux, o processo de importação do pool é um serviço/daemon do sistema. Mas não há custo para executá-lo periodicamente. Ele detectará a unidade e o pool associado.

    Espero que você esteja exportando o pool quando terminar o backup também. Isso cobriria situações em que a unidade permanece no servidor por vários ciclos de backup. Como deixar uma fita de backup em sua unidade.

    • 1
  3. user121391
    2016-01-23T05:36:09+08:002016-01-23T05:36:09+08:00

    Vou adicionar esta resposta para documentar o que descobri sobre o monitoramento de eventos (também pode ser útil em outros casos):

    Ao tentar fazer a pergunta no unix/linux.SE, notei um tópico útil sobre o uso udevno Linux para monitorar eventos do kernel. Como uma ferramenta equivalente para o Solaris, me deparei com a sugestão de usar o syseventadmwhich watchs for sysevens e acionar ações/scripts definidos.


    A princípio, não encontrei muito, exceto cópias da página do manual e algumas discussões sobre um problema com o Xen Hypervisor, mas os eventos suportados estão listados em /usr/include/sys/sysevent/eventdefs.h(ou online /usr/src/uts/common/sys/sysevent/eventdefs.hem vários repositórios) e outros arquivos nesse diretório.

    Usando o primeiro exemplo da página de manual syseventadm add -c EC_zfs -s ESC_ZFS_scrub_start /path/to/script.sh \$pool_name, testei com sucesso um evento de amostra que é acionado toda vez que um scrub é iniciado e retorna o nome do pool como primeiro argumento.


    Depois de algumas tentativas e erros, encontrei a maneira correta de monitorar discos recém-adicionados:

    syseventadm add -c EC_dev_add -s disk /path/to/script.sh \$version \$dev_name \$phys_path \$driver_name \$instance
    syseventadm restart
    

    Tudo depois diské opcional e passado diretamente para o script como argumentos $1para $5.

    Agora, assim que o disco recém-adicionado ficar online, o script será acionado e o script poderá verificar se o ID do dispositivo está correto (opcional) e então importar o pool por nome.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve