Я пытаюсь создать программное обеспечение, которое будет использовать быстрый SSD диски как дополнительный контейнер для архивов, расположенных на медленных запоминающих устройствах (HDD, магнитные ленты,...)
К сожалению, я не нашел подсистему, которая была бы достаточно проста в использовании и гибка.
Существующие (например, bcache) не являются легко настраиваются (обычно их необходимо инициализировать вместе с диском) и работают только с одним выделенным диском.
Остальные тесно связаны с файловыми системами (ZFS, LVM, ...)
Я хотел создать более гибкое программное обеспечение:
- может работать с несколькими дисками одновременно (со смешанными типами файловых систем)
- можно активировать/деактивировать в любое время
- работает только как кэш только для чтения (измененные файлы удаляются из кэша)
- кэш постоянный (продолжает работать после перезагрузки системы)
Клиент отправляет большие файлы (несколько ГБ), которые для этого Причина не может быть сохранена в системном кеше (ОЗУ).
Поскольку в результате мои диски (несколько HDD) постоянно "дребезжат" во время работы, обрабатывая случайные запросы на перенос.
У меня в системе быстрый SSD диск (512 ГБ) почти полностью свободен и он должен выполнять роль второго уровня кэш.
А теперь моя проблема. У меня есть рабочий скелет такой программы, но в ограниченной версии. Кэш является «приватным», т.е. доступ к нему имеют только назначенные пользователи (из-за прав доступа к файлам).
Я хотел распространить его работу на любых пользователей, но для этого мне нужно предоставить доступ для каждого файла в кешировать только пользователям и группам, имеющим доступ к исходному файлу.
В настоящее время я использую для этой цели ACL, который предоставляет соответствующие разрешения файлам, сохраненным в кеше. Теоретически это просто. Для каждого исходного файла и всех его подкаталогов на пути вам необходимо собрать пользователей и группы, которые могут получить к нему доступ.
И установить разрешения на чтение файла кэша только для этих отфильтрованных пользователей и групп.
Кто-нибудь знает, где в ядре Linux (или в системной программе) я могу найти алгоритм (модуль?), который выполняет подобную фильтрацию?
Может быть, «rsync»? 'cp'?
Я начал программировать такой модуль, но меня беспокоит его качество (не эффективность).
Пока я использую системные программы getfacl и setfacl.
С точки зрения производительности эти программы достаточно быстрые, поскольку предоставление разрешений происходит только один раз при создании нового файла в кэше.
ТИА
Подробнее здесь: https://stackoverflow.com/questions/793 ... -given-its
Мобильная версия