В этой части хочется рассказать про то что требуется и что предлагает наш "вендор".
Часть вторая: Реализуем сервис файлового сервера на Astra Linux.

Дисклеймер

Данная статья представляет собой личное мнение автора о требованиях и работе файловых серверов. Предназначена в первую очередь чтобы поделится собственным опытом. Информация, изложенная в статье, основана на собственных исследованиях и опыте работы, и может не отражать общепринятые мнения или практики. Автор не стремится выставить кого-либо в плохом свете и призывает к конструктивному обсуждению. Рекомендуется дополнительно изучать источники для более глубокого понимания темы.

И вот пришла задача заменить Windows Server на что-то «Российского» производства

Берясь за задачу казалось что всё будет довольно "просто" т.к. файловые сервера на базе GNU/Linux существуют давно и в целом всем всё давно реализовано, и должно пройти по классической для импортозамещённых продуктов схеме затраты на лицензирование 2-4 раза больше Winodws, затраты на последующее администрирование в 3-10 раз выше. Но даже тут отечественный производитель смогу удивить....
В моём случае был взят стек Astra Linux 1.7.5 + ALDPro 2.3.0.

Хочу напомнить о том что файловый сервер это один из базовых инфраструктурных сервисов, моё мнение о требуемом функционале и то что предоставляет решение от Астры ниже в таблице.

Что требуется

Наличие

примечание

Доступ по протоколам

NFSv4

+/-

Можно поднять но ALDPro им управлять не может. А это условно нативный протокол для стека на Linux.

SMB (CIFS)

+

WebDAV

+/-

Реализуемо за рамками ALDPro

Администрирование

Предоставление доступа к шаре на базе прав из каталога LDAP (Active Directory, FreeIPA, Samba)

+

Почти не подвели, могут но только свой домен т.е. ALDPro, пользователей из доверенных не добавить.

Разграничение доступа к файлам и папкам в рамках шары для пользователей из каталога пользователей т.е. настройка файловых прав по модели NFSv4:
Полный доступ,
Траверс папок/выполнение файлов,
Содержание папки/ чтение данных,
Чтение атрибутов,
Чтение дополнительных атрибутов,
Создание файлов/ запись данных,
Создание папок/ дозапись данных,
Запись атрибутов,
Запись дополнительных атрибутов,
Удаление подпапок и файлов,
Удаление,
Чтение разрешений,
Смена разрешений,
Смена владельца.

-

Хоть шаром покати функционал отсутствует полностью (мандатный контроль простите, но это не то)

Разграничение доступа в сложной доменной структуре (когда к одному серверу ходят с нескольких доменов)

-

Вообще технически всё есть но в GUI Astra и ALDPro Функционал отсутствует права можно добавить только через консоль

Создание и управление снапшотами данных (Теневые копии)

-

Функционал отсутствует

Создания квот и управление квотами

+/-

Частично функционал есть только в Astra Linux управление в рамках ALDPro отсутствует.

Настройка времени хранения в папках с сроками хранения

-

Функционал отсутствует

«Базовый» функционал

Шифрование данных

+/-

Можно реализовать в ОС но не в рамках ALDPro

Дедупликация данных

-

Функционал отсутствует

Сжатие данных

-

Функционал отсутствует

Отказоустойчивая конфигурация

-

Функционал отсутствует

Создание единой точки входа для нескольких серверов (DFS)

-

Функционал отсутствует

Удобный GUI для администрирования
(Хотя бы сравнимый с тем что есть в коммерческих продуктах)

+/-

GUI есть, но функционал даже не базовый для 2024.

Анализатор использования пространства

-

Функционал отсутствует

Анализатор прав доступа на файлы и папки

-

Функционал отсутствует

В подтверждение своих слов приведу пару скриншотов из имеющейся под рукой ALDPro 2.3.0

Собственно можно ещё было бы забить скриншотами самой ОС Астра Linux, но функциональных элементов управления файловым сервером, что нас могут интересовать там нет. Более элементов управления файловым сервером в ALDPro 2.3.0 нет (в дорожной карте разработки, доработки функционала тоже нет)

Почему всё так?

Каждый раз смотря на подобное в продукте от российского вендора хочется плакать или всё бросить, можно долго гадать, но за последние два года общения с различными представителями вендора у меня сложилось впечатление, что наверное основное - это не понимание менеджмента какие функции и как выполняет сервис (не только описываемый). Возможно нехватка разработчиков, настоящих, а не тех которыми пытаются наводнить рынок. Возможно эта уверенность «…Дело не во владении кодом…». Ну и конечно существует ряд подводных камней во всех OpenSource решениях т.к. они всегда писались энтузиастами у которых чуть иной круг задач. И чтобы сделать сервис надлежащим образом нужно хотеть и уметь программировать, а не только комуниздить «компилировать» OpenSource решения для получения нечто похожего на решение.

Про подводные камни в GNU/Linux

(эти вопросы я задавал представителям вендора и они считают что это не проблемы)

Длина имени файлов: она ограничена условно 128 символами кириллицы т.к. в наших «отечественных» операционных системах используются компоненты которые писались для англоязычного пользователя.

Максимальная длинна имени файла ограничена 255 байтами кажется что это стандартная длинна имени файла к которой мы привыкли 255 символов, один символ=один байт? Но нет это не так, в Linux используется кодировка UTF8 а это значит что буквы латинского алфавита равны одному байту, а вот буквы кириллицы равны двум байтам отсюда длина имени файла и становится ограниченной. Тут без вмешательства в файловую систему никак....

Или наши производители соберутся и соберут свою файловую систему, объективно у столпов рынка это обычно занимает 5-10 лет, или смогут закоммитить в Linux такие правки в одну из файловых систем.
Про права доступа: В GNU/Linux базово есть права только RWX (Чтение, Запись, Исполнение) для хозяина, группы и для остальных, а требуется для нормального разграничения доступа чуть больше, если мы говорим про корпоративный сектор. Разработчики ядра Linux считают что RWX вполне достаточно. Также существует расширенные атрибуты xattr которые позволяют расширить функционал и добавлять права доступа RWX но уже большему количеству пользователей и групп. Почему ALDPro при разворачивании сервиса отказываются их использовать для меня загадка.

В Астра Linux есть «киллер фича» мандатный контроль всего. Но он поддерживается только Астрой и никем больше, т.е. его не применить для общедоступного сервиса который работает на этапе развёртывания с инфраструктурой MS AD+ ALDPro c 90+% рабочих станций на Windows.

Как можно решить задачу?

Есть понимание, пусть и не полностью но силами рядового админа задача частично/костыльное решаемая т.к. в целом Astra Linux это на 99% Debian Linux а Astra Linux 1.8 это довольно актуальный Debian 12.
Если заменить файловую систему с ext4, что штатно использует Astra Linux, на ZFS многие задачи можно закрыть. (Так сказать начать процесс импортозамещения без существенных травм в психике рядового Админа.)

Это решит проблемы:

  • Чувствительность к регистру в файловой системе.

  • Наследование прав в файловой системе

  • Создание Snapshot`ов

  • Дедупликация

  • Сжатие данных

Останутся проблемы:

  • Длина имени файлов,

  • Права доступа,

  • Отсутствует необходимый функционал в графическом интерфейсе.

    Часть интерфейса, хотя бы в ОС можно «вернуть» установив недостающие библиотеки, что Astra при автоматическом развёртывании сервиса через ALDPro не делает.

Про проблемы ZFS

1 – ZFS очевидно медленнее ext4 при сравнении в лоб. Но в ZFS есть минимум 2 уровня кэша (ОЗУ и SSD), возможность построения RAID массивов в результате при желании система на ZFS даст больше чистой производительности и надёжности в пересчёте на деньги в неё вложенные.

2 – ZFS Умеет в полноценные права, но не в Linux, а в FreeBSD. Проблема на уровне ядра Linux и в результате ZFS не может работать с правами по модели NFSv4. Разработчики из iXsystems уже внедрили поддержку в модуль ядра по модели NFSv4 в ZFS, которую собирают для своего продукта TrueNAS Scale, построенного поверх Debian 12.

Также насколько я понял разработчики ZFS приняли правки от iXsystems в состав основной ветки ZFS и в релизе ZFS 2.3 можно ожидать работающие NFSv4 права поверх Linux благодаря xattr, а не только FreeBSD.

И вот вооружившись этими знаниями во второй части я расскажу, с конкретной инструкцией, про разворачиванию сервиса простого файлового сервера на базе Astra Linux 1.8 с доменами, самбой, и прочим.

Комментарии (13)


  1. xanto
    10.11.2024 16:41

    Но нет это не так, в Linux используется кодировка UTF8 а это значит что буквы латинского алфавита равны одному байту, а вот буквы кириллицы равны двум байтам отсюда длина имени файла и становится ограниченной. Тут без вмешательства в файловую систему никак....

    Не ясно, что Вы имеете ввиду под "вмешательством в файловую систему"? Технически, нет проблем иметь:
    unix charset = cp1251
    в настройках самбы. Могут быть вопросы, если Вы соберётесь эти файлы/каталоги куда-то ещё отдать, но в целом - это рабочий вариант.


  1. RoasterToaster
    10.11.2024 16:41

    Интересно, в каком проценте импортазамещенных linux решений для файловой помойки просто спрятан Windows server


    1. Copernicus
      10.11.2024 16:41

      Думаю нуль. Пройти аккредитацию минпромторга не так просто. Надо буквально наизнанку порой вывернуться.


      1. RoasterToaster
        10.11.2024 16:41

        А как они проверят то?) запустил samba , аккредитовался, потом палёный 2012 r2 какой нибудь


        1. Copernicus
          10.11.2024 16:41

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


        1. mshewzov
          10.11.2024 16:41

          При включении в реестр российского ПО специалисты Минцифры запрашивают исходный код ПО для анализа и рутовый доступ к тестовому стенду или дистрибутив для установки на тестовой машине. Если обнаружат что-то, то откажут в регистрации. А если закамуфлировать, то могут обнаружить позже при внеплановой проверке и исключить ПО из реестра. Как это на практике работает - не скажу. Я пока только включал в реестр, а обжаловать принудительное исключение пока не доводилось.


  1. oller
    10.11.2024 16:41

    Кодировка в Linux боль

    Спец символы Аля скобок -боль

    Acl работает криво

    Любой файловый сервер это уже прошлое, но мы упорно используем на равне с ftp, не удивлюсь если факсы ещё где-то есть

    Сейчас все веб должно быть, Аля гугл докс, owncloud, да даже в vk и yandex biz используют онлайн офисы

    Городить огороды с файловыми помойками уже не имеет смысла имхо, только редкие задачи

    Легаси....


    1. nApoBo3
      10.11.2024 16:41

      Ни одна из предложенных вами систем не поддерживает сколько нибудь значимые механизмы централизованного управления доступом.

      Я согласен, файловый доступ к информации безнадёжно устарел, но альтернатив под общее применение я не видел.


    1. SamDurak Автор
      10.11.2024 16:41

      Все предложенные вами механизмы на чём-то базируются. Простой файловый сервер, FTP, это одно из тех на чём описанное вами базируется и работать без базовых вещей не может.


  1. KNT
    10.11.2024 16:41

    Зачем поднимать целый контроллер домена ради шары? Или наши ещё не "доработали" ни одного опенсорсного sds?


  1. nnstepan
    10.11.2024 16:41

    Я уже лет 6 назад на базе Gentoo себе собрал ядро и окружение, которое на btrfs поддерживает длину имени 4096 символов, всё прекрасно работает. Там несколько мизерных патчей. Эту систему ввожу в эктив директори и вперед. Btrfs поддерживает acl на файловой системе.


    1. SamDurak Автор
      10.11.2024 16:41

      А разве btrfs умеет в что то кроме RWX по правам? ZFS манит правами NFSv4, т.е. write_owner, write_acl, write_attributes ,write_data , write_xattr , synchronize , read_xattr ,read_data ,read_attributes , read_acl , list_directory ,execute ,delete_child ,delete ,append_data ,add_subdirectory , add_file


  1. xanto
    10.11.2024 16:41

    Кстати, поддержка "long names" (up to 1023 bytes) уже в OpenZFS 2.3.0.
    Ждём релиза.