Avamar. Резервное копирование SQL завершено с ошибкой или исключениями.
Summary: Резервное копирование Avamar с помощью подключаемого модуля SQL завершено с исключениями или ошибками. 995 Операция ввода-вывода была прервана из-за выхода из потока, запроса приложения или ошибки операционной системы 0x8007000e. (Для выполнения этой операции недостаточно места в хранилище.) ...
Symptoms
- Журналы приложений Windows для 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.).
- Журналы 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.)
- В указанном ниже файле произошла неустранимая ошибка ввода-вывода.
"(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
Во время процесса резервного копирования наблюдается высокая загрузка памяти и ЦП. Указанный выше сбой возникает из-за того, что avsql пытается использовать API интерфейса SQLVDI (библиотеку, общую или статическую) для чтения данных с сервера SQL. В нормальных условиях этот процесс предполагает, что выделение памяти для совместного использования сегментов во время передачи выполнено успешно. Передача данных через интерфейс SQLVDI завершается сбоем, avsql записывает сообщение в журнал и разрывает канал в avtar во время процесса завершения работы подключаемого модуля. Первым шагом является проверка доступности памяти SQL путем выполнения следующих запросов Transact-SQL (TSQL):
Выполните следующий запрос TSQL для проверки общего объема памяти ОС и доступной памяти:
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;
Ниже приведен запрос для проверки памяти, используемой SQL Server во время выполнения резервного копирования 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;
Для правильной работы резервных копий Avamar должно быть не менее 20% свободной памяти. По умолчанию SQL Server потребляет большую часть доступных ресурсов памяти. Необходимо настроить ограничение объема памяти, выделяемой для операций SQL, чтобы обеспечить оптимальную производительность.
Другие известные причины этих сбоев:
- Значение MAXTRANSFERSIZE было изменено на 4 МБ в Avamar 7.0, и мы видим эту ошибку даже там, где maxtransfer имеет размер 64 КБ:
- Эта ошибка часто указывает на нехватку дискового пространства, особенно во время операций восстановления. Например, зарегистрированный в журнале сбой может отображать:
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
- По словам Пинала Дэйва (https://blog.sqlauthority.com/2016/04/14/sql-server-backup-randomly-failing-error-112-not-enough-space-disk/) (внешний сайт)
- Размер резервной копии SQL сжатой базы данных будет разным в начале и в конце, и это несоответствие может привести к сбою
- При изменении MAXTRANSFERSIZE путем установки приведенного ниже флага avsql, как показано, особенно для больших резервных копий базы данных
avsql flag : —max-transfer-size=65536
- Сбой наблюдался после того, как avsql сообщил о сбое подключения, как показано на фрагменте ниже:
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.)
-
- В дополнение к устранению этих симптомов, установка большого значения для «vditransfertimeoutsecs» позволит избежать тайм-аута подключения трубки avtar
Resolution
Используйте один из следующих методов для добавления флагов в набор данных MCGUI или в avsql.cmd файл:
- Способ #1 - Добавление в датасет
- Добавьте следующие флаги вподключаемый модуль D ataset for SQL.
-
ПРИМЕЧАНИЕ. Оба флага должны начинаться с символа "[avsql]"
[avsql]max-transfer-size=65536
[avsql]vditransfertimeoutsecs=10800
- Способ #2 - Добавлен в файл avsql.cmd
- Добавьте следующие флаги в файл C:\Program Files\avs\var\avsql.cmd
--max-transfer-size=65536
--vditransfertimeoutsecs=10800
-
-
ПРИМЕЧАНИЕ. В некоторых случаях для больших виртуальных машин может потребоваться большее значение флага тайм-аута:
-
- Способ #3 - Отключите и повторно включите протоколы «Shared Memory», «Named Pipes» и «TCP/IP» в Config Manager (включенный параметр). Для этого потребуется перезапуск SQL Server:
