Avamar: Backup do SQL concluído com erros ou exceções.
Summary: Backup do Avamar usando plug-in SQL concluído com exceções ou erros. 995 A operação de E/S foi anulada devido a uma saída de thread, solicitação de aplicativo ou 0x8007000e de erro do sistema operacional. (Não há armazenamento suficiente disponível para concluir esta operação.) ...
Symptoms
- Logs de aplicativos do Windows para SQL Server.
10/9/2013 10:33:24 PM MSSQLSERVER Error Backup 3041 NT AUTHORITY\SYSTEM RFSQL03 BACKUP failed to complete the command BACKUP DATABASE ASAP. Check the backup application log for detailed messages. 10/9/2013 10:33:24 PM MSSQLSERVER Error Server 18210 NT AUTHORITY\SYSTEM RFSQL03 BackupVirtualDeviceSet::SetBufferParms: Request large buffers failure on backup device '(local)_ASAP_db_sched-sql_backup-1381372200061#12-3006-SQL'. Operating system error 0x8007000e(Not enough storage is available to complete this operation.).
- Logs SQL do Avamar
2013-12-17 22:08:23 avsql Error <9072>: sqlconnectimpl_smo::execute Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or batch. ---> System.Data.SqlClient.SqlException: Write on "(local)_TMEngine_8PM-BACKUP-SQL-1387332000116#1-3006-SQL" failed: 112 (There is not enough space on the disk.)
- Ocorreu um erro de E/S irrecuperável no arquivo listado abaixo.
"(local)_TMEngine_8PM-DATACAPAPP01-SQL-1387332000116#1-3006-SQL:" 995(The I/O operation has been aborted because of either a thread exit or an application request.).
BACKUP DATABASE is terminating abnormally.
Cause
Durante o processo de backup, foi observado um alto uso de memória e da CPU. A falha acima ocorre porque o avsql está tentando usar a API de interface SQLVDI (uma biblioteca, compartilhada ou estática) para ler dados do SQL Server. Em condições normais, esse processo pressupõe que a alocação de memória para o compartilhamento de segmentos durante a transferência seja bem-sucedida. A transferência de dados na interface SQLVDI falha, avsql registra uma mensagem e quebra o pipe para avtar durante o processo de desligamento do plug-in. A primeira etapa é validar a memória disponível do SQL executando as seguintes consultas Transact-SQL (TSQL):
Seguinte consulta TSQL para verificar a memória total do sistema operacional e a memória disponível:
SELECT
(total_physical_memory_kb/1024) AS Total_OS_Memory_MB,
(available_physical_memory_kb/1024) AS Available_OS_Memory_MB
FROM sys.dm_os_sys_memory;
Esta é a consulta para verificar a memória consumida pelo SQL Server durante a execução do backup do Avamar:
SELECT
(physical_memory_in_use_kb/1024) AS Memory_used_by_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_by_Sqlserver_MB,
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,
process_physical_memory_low,
process_virtual_memory_low
FROM sys.dm_os_process_memory;
Deve haver pelo menos 20% ou mais de memória livre para que os backups do Avamar sejam executados corretamente. Por padrão, o SQL Server consome a maioria dos recursos de memória disponíveis. Ele deve ser configurado para limitar a quantidade de memória alocada para operações SQL a fim de garantir o desempenho ideal.
Os outros motivos conhecidos para essas falhas são:
- MAXTRANSFERSIZE foi alterado para 4 MB no Avamar 7.0, e vemos essa falha mesmo onde maxtransfer era de 64 KB:
- Esse erro geralmente indica espaço em disco insuficiente, especialmente durante as operações de restauração. Por exemplo, uma falha registrada pode mostrar:
2024/05/01-18:25:39.60800 [avsql_t0] ===> avsql_avtarpipe_ctl::wait
2024/05/01-18:25:39.60899 [sqlcommand restore(FxCentral)] Caught Exception : Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or batch. ---> System.Data.SqlClient.SqlException: There is insufficient free space on disk volume 'H:\' to create the database. The database requires 870622363648 additional free bytes, while only 140103278592 bytes are available
- Segundo Pinal Dave (https://blog.sqlauthority.com/2016/04/14/sql-server-backup-randomly-failing-error-112-not-enough-space-disk/) (Site Externo)
- O tamanho do backup SQL de um banco de dados compactado seria diferente no início e no final, e essa discrepância pode levar a essa falha
- Ao alterar o MAXTRANSFERSIZE definindo o indicador avsql abaixo, conforme mostrado, especialmente para grandes backups de banco de dados
avsql flag : —max-transfer-size=65536
- Falha observada depois que o avsql relatou falha de conectividade, conforme visto no trecho abaixo:
2020-11-03 15:32:36 avsql Info <10684>: Setting ctl message version to 3 (from 1)
2020-11-03 15:32:36 avsql Info <16136>: Setting ctl max message size to 268435456
2020-11-03 15:32:38 avsql Info <6688>: Process 9540 (C:\Program Files\avs\bin\avtar) finished (code 536870920: cannot establish connection with server (possible network or DNS failure))
2020-11-03 15:32:38 avsql Warning <6690>: CTL workorder "NAH-1604435554526#1" non-zero exit status 'code 536870920: cannot establish connection with server (possible network or DNS failure)'
2020-11-03 15:32:38 avsql Info <7732>: Waiting for avtar to finish
2020-11-03 15:32:38 avsql Info <6444>: Plugin exited with 'code 536870920: cannot establish connection with server (possible network or DNS failure)'
2020-11-03 15:32:38 avsql Error <18491>: SQL plug-in will now terminate due to the following avtar error: 'code 536870920: cannot establish connection with server (possible network or DNS failure)'
2020-11-03 15:32:38 avsql Info <6446>: SQL VDI transfer of 'sql_111\spd/SPMonitoring/f-0.SPMonitoring' to 'sql_111_spd_SPMonitoring_NAH-1604435554526-3006-SQL' successful
2020-11-03 15:32:38 avsql Error <40258>: sqlconnectimpl_smo::execute Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or batch. ---> System.Data.SqlClient.SqlException: Write on "lfosat993_csotspd_SPMonitoring_NAH-1604435554526-3006-SQL" failed: 112(There is not enough space on the disk.)
-
- Além de atenuar esses sintomas, definir "vditransfertimeoutsecs" como um valor grande evitaria o tempo limite da conexão do tubo avtar
Resolution
Use um dos seguintes métodos para adicionar indicadores no conjunto de dados MCGUI ou no arquivo avsql.cmd:
- Método #1 - Adicionando ao conjunto de dados
- Adicione os seguintes indicadores em um conjunto Dataset para plug-in SQL.
-
Nota: Ambos os indicadores devem ter "[avsql]" à esquerda
[avsql]max-transfer-size=65536
[avsql]vditransfertimeoutsecs=10800
- Método #2 - Adicionado ao arquivo avsql.cmd
- Adicione os seguintes sinalizadores ao arquivo C:\Program Files\avs\var\avsql.cmd
--max-transfer-size=65536
--vditransfertimeoutsecs=10800
-
-
Nota: Em algumas circunstâncias, máquinas virtuais grandes podem exigir um valor maior para o indicador de tempo de espera excedido:
-
- Método #3 - Desative e reative os protocolos "Memória compartilhada", "Pipes nomeados" e "TCP/IP" do Config Manager (opção Enabled). Isso exigiria uma reinicialização do SQL Server:
