Avamar: Zálohování SQL bylo dokončeno s chybou nebo výjimkami.
Summary: Zálohování systému Avamar pomocí doplňku SQL bylo dokončeno s výjimkami nebo chybami. 995 Operace I/O byla přerušena z důvodu ukončení vlákna, požadavku aplikace nebo chybové 0x8007000e operačního systému. (K dokončení této operace není k dispozici dostatek místa.) ...
Symptoms
- Protokoly aplikací systému Windows pro 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.).
- Protokoly Avamar SQL
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.)
- V níže uvedeném souboru došlo k neobnovitelné chybě I/O.
"(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
Během procesu zálohování bylo pozorováno vysoké využití paměti a procesoru. K výše uvedené chybě dochází, protože se nástroj avsql pokouší použít rozhraní SQLVDI API (knihovnu, sdílenou nebo statickou) ke čtení dat ze serveru SQL. Za normálních podmínek tento proces předpokládá, že přidělení paměti pro sdílení segmentů během přenosu proběhne úspěšně. Přenos dat v rozhraní SQLVDI se nezdaří, protokol avsql zaznamená zprávu a během procesu vypnutí modulu plug-in přeruší kanál na službu avtar. Prvním krokem je ověření dostupné paměti SQL spuštěním následujících dotazů Transact-SQL (TSQL):
Pomocí dotazu TSQL zkontrolujte celkovou a dostupnou paměť operačního systému:
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;
Zde je dotaz na kontrolu paměti spotřebované systémem SQL Server během spuštění zálohy 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;
Aby zálohy Avamar fungovaly správně, mělo by být k dispozici alespoň 20 % nebo více volné paměti. Ve výchozím nastavení SQL Server spotřebovává většinu dostupných paměťových prostředků. Musí být nakonfigurován tak, aby omezoval velikost paměti přidělené pro operace SQL, aby byl zajištěn optimální výkon.
Další známé důvody těchto selhání jsou:
- Velikost MAXTRANSFERSIZE byla v softwaru Avamar 7.0 změněna na 4 MB a k tomuto selhání dochází i v případě, že maxtransfer měl 64 kB:
- Tato chyba často znamená nedostatek místa na disku, zejména během operací obnovení. Zaprotokolovaná chyba může například zobrazit:
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
- Podle Pinala Davea (https://blog.sqlauthority.com/2016/04/14/sql-server-backup-randomly-failing-error-112-not-enough-space-disk/) (externí stránka)
- Velikost zálohy SQL komprimované databáze by se na začátku a na konci lišila a tato nesrovnalost může vést k tomuto selhání
- Při změně MAXTRANSFERSIZE nastavením níže uvedeného příznaku avsql, jak je znázorněno na obrázku, zejména u velkých záloh databází
avsql flag : —max-transfer-size=65536
- Došlo k selhání poté, co nástroj avsql nahlásil závadu připojení, jak je vidět v následujícím výstřižku:
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.)
-
- Kromě zmírnění těchto příznaků by nastavení "vditransfertimeoutsecs" na velkou hodnotu zabránilo vypršení časového limitu připojení kanálu avtar
Resolution
K přidání příznaků do datové sady MCGUI nebo do souboru avsql.cmd použijte jednu z následujících metod:
- Metoda #1 – Přidání do datové sady
- Přidejte následující příznaky dosady D ataset pro modul plug-in SQL.
-
POZNÁMKA: Oba příznaky musí mít na začátku "[avsql]".
[avsql]max-transfer-size=65536
[avsql]vditransfertimeoutsecs=10800
- Metoda #2 – Přidáno do souboru avsql.cmd
- Do souboru C:\Program Files\avs\var\avsql.cmd přidejte následující příznaky
--max-transfer-size=65536
--vditransfertimeoutsecs=10800
-
-
POZNÁMKA: V některých případech můžou velké Virtual Machines vyžadovat větší hodnotu příznaku časového limitu:
-
- Metoda #3 - Ve Správci konfigurace zakažte a znovu povolte protokoly "Shared Memory", "Named Pipes" a "TCP/IP" (možnost Enabled). To by vyžadovalo restartování SQL Serveru:
