Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро CSP 3.6
»
засорение директории /var/opt/cprocsp/tmp/
Статус: Новичок
Группы: Участники
Зарегистрирован: 16.10.2015(UTC) Сообщений: 4 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Moscow
|
используется CryptoPro Summary: CSP (Type:75) v3.6.5365 KC1 Release Ver:3.6.7777 OS:Linux CPU:AMD64 FastCode:READY:SSSE3
в процессе эксплуатации криптопро выявился неприятный момент: в директории /var/opt/cprocsp/tmp/ накапливаются файлы нулевого размера вида .имя_файла_который_обрабатывался_криптопро; на занимаемом пространстве не сказывается, но таких файлов быстро становится очень много - исчерпываются inode на разделе с /var/opt/cprocsp/tmp/; вопрос - существует ли способ избежать этого засорения? (ini-настройки либо какие-то другие внутренние средства криптопро)
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,367
Сказал(а) «Спасибо»: 27 раз Поблагодарили: 530 раз в 371 постах
|
Это неожиданное явление: в ночных тестах на наших стендах создаётся не больше пары десятков файлов и большая часть удаляется в процессе работы. А какое у вас ограничение на inode? Какие приложения используют CSP? Можете прислать список созданных файлов? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 16.10.2015(UTC) Сообщений: 4 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Moscow
|
ограничение на inode - 363600 (дефолтное значение при форматировании раздела в ext4); CSP главным образом используется апачем, создаваемые файлы выглядят примерно так: -rwxrwxrwx 1 apache apache 0 Окт 12 11:17 .store_lock_file_sign_4N1dZ9 -rwxrwxrwx 1 apache apache 0 Окт 6 14:35 .store_lock_file_sign_4n2Jnj -rwxrwxrwx 1 apache apache 0 Окт 13 06:10 .store_lock_file_sign_4N33b3 -rwxrwxrwx 1 apache apache 0 Окт 26 06:52 .store_lock_file_sign_4n3jHz -rwxrwxrwx 1 apache apache 0 Окт 23 10:00 .store_lock_file_sign_4n49r0 -rwxrwxrwx 1 apache apache 0 Окт 23 15:29 .store_lock_file_sign_4n4mPR -rwxrwxrwx 1 apache apache 0 Окт 23 12:37 .store_lock_file_sign_4N4p4G
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 22.10.2014(UTC) Сообщений: 9
Сказал(а) «Спасибо»: 2 раз
|
Такая же проблема возникает. Для чего вообще создаются lock-файлы? Это регулируемое поведение?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,367
Сказал(а) «Спасибо»: 27 раз Поблагодарили: 530 раз в 371 постах
|
Посмотрел внимательней: * в ночных тестах файлы удаляются при рестарте провайдера Код:/etc/init.d/cprocsp restart
* файлы от файловых блокировок не удаляются никогда - это штатное поведение и пока не может быть изменено Мы подумаем, как можно решить задачу со стороны провайдера. Пока могу предложить самостоятельно удалять файлы, когда провайдер их не использует. Определить этот момент можно по успешному взятию lockf() на файл. Набросал пример (будет ждать залоченные файлы, потом продолжать удалять): /tmp/locked_unlink.c Код:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <stdlib.h>
void locked_unlink(char *path)
{
int fd;
int error;
fd = open(path, O_RDWR, 0664);
if (fd < 0) {
perror("open");
exit(EXIT_FAILURE);
}
// if len is zero, lock all bytes
error = lockf(fd, F_LOCK, 0);
if (error == 0)
printf("%#x: lock succeeds!\n", getpid());
else
perror("lockf failed");
error = unlink(path);
if (error == 0)
printf("%#x: unlink succeeds!\n", getpid());
else
perror("unlink failed");
lockf(fd, F_ULOCK, 0);
close(fd);
}
int main(int argc, char *argv[])
{
setlinebuf(stdout);
if (argc > 1)
locked_unlink(argv[1]);
else
printf("USAGE: locked_unlink <path>\n");
return 0;
}
Код:cc /tmp/locked_unlink.c -o /tmp/locked_unlink
Код:for fl in `find /var/opt/cprocsp/tmp/ -type f -name ".*"`; do /tmp/locked_unlink $fl; done
Отредактировано пользователем 30 октября 2015 г. 19:18:22(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,367
Сказал(а) «Спасибо»: 27 раз Поблагодарили: 530 раз в 371 постах
|
Отбой: удаление под блокировкой может быть некорректным: для корректного удаления надо убеждаться, что ни одно приложение не держит открытым файл блокировки. Это можно с помощью lsof, но за время от "успеха lsof" до вызова "rm" кто-то может успеть открыть файл и снова будет некорректное удаление. Именно поэтому в провайдере мы решили удалять эти файлы только на рестарте cprocsp. Подумаю ещё, что можно сделать. |
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,367
Сказал(а) «Спасибо»: 27 раз Поблагодарили: 530 раз в 371 постах
|
Почти всегда верным будет предположение, что не бывает ситуации, когда процесс создаёт файл-лок, а использует (блокирует/разблокирует) его через длительное время (исключение - registry_lock). Тогда можно удалять файлы, которые не менялись очень давно. Удаляем файлы, не менявшиеся 2 дня (консервативно - только локи хранилищ): Код:find /var/opt/cprocsp/tmp/ -type f ! -mtime -2 -name "._*_store_lock_file_*"|xargs rm -f
На платформах, где find умеет минуты, можно разделять более тонко: удаляем файлы, не менявшиеся 25 часов: Код:find /var/opt/cprocsp/tmp/ -type f ! -mmin -1500 -name "._*_store_lock_file_*"|xargs rm -f
Для защиты от случайной ошибки при формулировании условий find-а можно дополнительно проверить себя lsof-ом на системах, где он есть: Код:if type lsof; then for fl in `find /var/opt/cprocsp/tmp/ -type f -not -mmin -1500 -name "._*"`; do lsof $fl || rm -f $fl; done; fi
|
|
![thanks](/forum2/Themes/soclean/heart_small.png) 2 пользователей поблагодарили Русев Андрей за этот пост.
|
Андрей * оставлено 02.11.2015(UTC), grep оставлено 12.01.2016(UTC)
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 22.10.2014(UTC) Сообщений: 9
Сказал(а) «Спасибо»: 2 раз
|
Вообще планируется реализовать в криптопро механизм уборки за собой в темповой директории?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,367
Сказал(а) «Спасибо»: 27 раз Поблагодарили: 530 раз в 371 постах
|
В дистрибутиве 2015-12-29 КриптоПро CSP 4.0.9680 Markov эта проблема решена. Также она будет решена в планируемом дистрибутиве КриптоПро CSP 3.9 R2. Сертификация более старых версий провайдера пока не планируется, поэтому для них надо использовать представленные здесь скрипты. |
|
![thanks](/forum2/Themes/soclean/heart_small.png) 1 пользователь поблагодарил Русев Андрей за этот пост.
|
grep оставлено 19.01.2016(UTC)
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 11.02.2019(UTC) Сообщений: 1
|
Реанимирую тему
КриптоПро CSP 4v4 - версия последняя, самая-самая - проблема сохраняется. При рестарте службы - файлы не удаляются.
Вышеуказанную правку откатили? или что?
Спасибо
|
|
|
|
Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро CSP 3.6
»
засорение директории /var/opt/cprocsp/tmp/
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close