Abend при бэкапе с помощью Legato Networker

Обсуждение технических вопросов по продуктам Novell

Abend при бэкапе с помощью Legato Networker

Сообщение Константин Ошмян » 22 июл 2009, 16:17

Делюсь проблемой.

Имеется система корпоративного бэкапа Legato Networker (да, я знаю, что ныне Legato куплено и является подразделением компании EMC). Отдельный навороченный бэкапный сервер со своей ленточной библиотекой, дисковым хранилищем и т.д., но речь не об этом. Важно то, что в состав системы корпоратичного бэкапа входят агенты под разные операционные системы, в том числе под NetWare. И при переезде с NetWare 5.1 (где у нас использовались традиционные тома) на NetWare 6.5 (с томами NSS) неожиданно выяснилось, что во время бэкапа сервер достаточно стабильно абендится. Хотя используются самые что ни на есть распоследние версии агента (SAVE.NLM/SAVEFS.NLM/NETWORKR.NLM), операционки (NW6.5sp8) и постфиксы на операционку.

Методом последовательных приближений удалось вычислить, что абенды происходят примерно в одном и том же месте, а именно - во время бэкапа определённых файлов. Если их исключить из бэкапа, то он проходит дальше (и, возможно, абендится уже на других файлах). Все проблемные файлы не имеют ничего примечательного внутри, но обладают общим свойством: они имеют достаточно длинный полный путь (считая все промежуточные каталоги) и содержат, кроме английских, буквы национальных алфавитов (в нашем случае - русские или латышские).

В результате выяснилось следующее. Тома NSS имеют ограничение на полный путь имени файла (считая все промежуточные директории, имена тома и сервера, а также символы-разделители между ними) - не более 255 символов. Это документировано, например, здесь и здесь. Однако, разработчики легатовского софта, видимо, посчитали, что символ - это всегда байт, и выделили у себя какой-то буфер из расчёта, что полный путь не будет превышать 255 байтов. NetWare и в самом деле не позволяет создать на томе файл с полным путём длиннее 255 символов; но проблема в том, что имена файлов хранятся в UTF-8, а в этой кодировке кириллица (русские) и европейские не-ASCII (в том числе латышские) символы кодируются двумя байтами каждый. В результате происходит элементарное переполнение буфера (как нам ответил инженер из Novell, прислав анализ коредампа), и как результат - абенд.

Отправились теперь за поддержкой к тем, кто нам продал Legato (договор на техподдержку есть). Но они нам честно ответили, что разработчик уже давно прекратил дальнейшее развитие агента для NetWare (оно, кстати, и заметно - внутри модулей все копирайты за 2005-й год, хотя сами файлы датированы апрелем 2008-го). Поэтому надежды на то, что что-то поправят (хотя баг - налицо) весьма призрачны. :?
Аватара пользователя
Константин Ошмян
 
Сообщения: 991
Зарегистрирован: 13 авг 2002, 21:36
Откуда: Рига

Re: Abend при бэкапе с помощью Legato Networker

Сообщение Константин Ошмян » 31 май 2010, 18:55

Ну вот, за прошедший год почти ничего не поменялось. Legato (оригинальный разработчик софта) куплен компанией EMC, Sun (который OEM-ил этот софт у Legato для своего "железа") куплен Ораклом, основная поддержка NetWare остановлена, и в связи со всем этим исправлять ошибки в агенте для NetWare никто не будет. Разругались с поставщиком, который деньги за техподдержку взял, но исправление ошибки не обеспечил.

Зато нашли аналогичный баг ещё в одном месте: сервер валится при бэкапе и в том случае, когда отдельно взятое имя файла (без путей) в байтах превышает определённую длину. Длина эта находится в районе 180 (плюс-минус 10, пока ещё более точно опытным путём не вычислили). Пока что в качестве полумеры используем самописанный скрипт на AutoIt3, который сканирует тома на подозрительные имена файлов и составляет их список. Но решением это назвать трудно, т.к. работает оно долго (один том, на котором 800-900 тыс. файлов, сканируется около часа) и не гарантирует от того, что кто-нибудь из пользователей снова не положит на сетевой диск, например, закладку следующего вида (реальные примеры из жизни):
Код: Выделить всё
"Гражданский кодекс Российской Федерации (часть первая) от 30.11.1994 N 51-ФЗ (принят ГД ФС РФ 21.10.1994) (ред. от 27.12.url"
"Договор аренды и его элементы » Sfif Юридические консультации по законодательству Республики Беларусь.url"
"инструкции по эксплуатации к китайским мобильным сотовым телефонам на две сим карты iphone i9 nokia e71 c1000 tv чтение книг.URL"
Аватара пользователя
Константин Ошмян
 
Сообщения: 991
Зарегистрирован: 13 авг 2002, 21:36
Откуда: Рига

Re: Abend при бэкапе с помощью Legato Networker

Сообщение skoltogyan » 01 июн 2010, 09:54

день добрый.
а что это скрипт делает , пример можете выложить ?
skoltogyan
 
Сообщения: 2047
Зарегистрирован: 12 июл 2002, 19:39
Откуда: Украина, Донецк

Re: Abend при бэкапе с помощью Legato Networker

Сообщение Константин Ошмян » 01 июн 2010, 11:55

Пока что этот скрипт не делает ничего "разрушающего", а лишь сканирует указанную ему сетевую папку (рекурсивно) и составляет отчёт в виде текстового файла (с именем как у папки + расширение ".TXT"). Отчёт пишется в CSV-файл в кодировке UTF-8 (нормально открывается, например, Notepad-ом или Wordpad-ом, при желании можно сымпортировать Excel-ем; в UTF - потому что у нас параллельно используются русские и латышские буквы):
Код: Выделить всё
F,247,202,2010/04/26 17:18:26,"\\NWCLHOME\HOME\HOME\User010203\My Documents\Согласно правилам Гражданского процессуального закона Латвии суд прекращает производство по делу в случае.doc"
F,226,176,2009/11/05 03:42:34,"\\NWCLHOME\HOME\HOME\UserNN\My Documents\UserN\MJ\Майкл Джексон – человек страшной судьбы Интервью и речи Майкла Джексона Статьи Майкл Джексон.URL"
P,263,210,2010/05/27 00:20:18,"\\NWCLHOME\HOME\HOME\UserNN\My Documents\UserN\Phone\инструкции по эксплуатации к китайским мобильным сотовым телефонам на две сим карты iphone i9 nokia e71 c1000 tv чтение книг.URL"
P,274,216,2010/05/30 02:55:48,"\\NWCLHOME\HOME\HOME\UserNN\My Documents\UserN\Phone\GPRS\Как автоматически отключить GPRS, если он не используется определенное время - HTC Support - Форум о мобильных устройствах H.URL"
Здесь второе поле - длина в байтах полного имени файла со всеми путями (начиная с "\\"), третье поле - длина только имени файла (без путей), четвёртое поле - дата/время последней модификации файла, пятое - имя файла в кавычках. В первом поле признак - буква "P" в случае, если полное имя файла с путями превышает 250 байтов, и буква "F" в противном случае, но если имя файла (без путей) превышает 170 байтов. Если превышений нет, то в отчёт файл не попадает.

Есть мысль доработать скрипт, чтобы запускать его перед бэкапом и тупо переносить проблемные файлы в отдельную папку, которая не бэкапится. А потом уже её содержимое по логу разгребать вручную (с переименованием файлов, возвратом в исходное место и разъяснениями пользователям, что впредь так именовать файлы не надо). К сожалению, пользователей довольно много и они сильно разные (это я к тому, что просто "приказом по гарнизону" проблему вряд ли решишь, хотя очень хочется).
Аватара пользователя
Константин Ошмян
 
Сообщения: 991
Зарегистрирован: 13 авг 2002, 21:36
Откуда: Рига


Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15