Файловые хранилища
Файловое хранилище — система, отдающая данные в виде файлов и папок по протоколам NFS или SMB, в отличие от блочного и объектного хранения.
Что такое файловое хранилище
Файловое хранилище — способ хранить данные в привычной иерархии папок и файлов и отдавать их по сети через протоколы NFS или SMB. Клиент монтирует шару и работает с ней как с обычным диском: открывает файл, дописывает в середину, переименовывает, ставит права.
Слово «хранилище» в IT означает любую систему, которая хранит данные и отдаёт их по запросу. Отличаются такие системы тем, чем именно они оперируют — блоками, файлами или объектами.
Три модели хранения
| Блочное | Файловое | Объектное | |
|---|---|---|---|
| Единица | Блок диска | Файл в папке | Объект в бакете |
| Доступ | iSCSI, FC | NFS, SMB | HTTP, S3 API |
| Кто держит ФС | Сервер-клиент | Само хранилище | ФС нет вообще |
| Изменить кусок | Да | Да | Нет, только целиком |
| Совместный доступ | Нужна кластерная ФС | Из коробки | Из коробки |
| Масштаб | Ограничен массивом | Миллионы файлов | Миллиарды объектов |
| Типично для | БД, диски ВМ | Общие папки, домашние каталоги | Бэкапы, медиа, датасеты |
Практический выбор: под базу данных или диск виртуальной машины — блочное (СХД); под общие папки и legacy-приложения, которым нужен POSIX-доступ, — файловое (NAS); под всё, что пишется один раз и читается много, — object storage.
Как это выглядит
# NFS — стандарт в Unix-мире
sudo mount -t nfs 10.0.0.5:/export/shared /mnt/shared
# SMB — родной для Windows, работает и в Linux
sudo mount -t cifs //10.0.0.5/shared /mnt/shared -o username=user,vers=3.0
df -hT /mnt/shared
Что делает файловый доступ особенным — приложению не нужно ничего знать о сети. Оно вызывает обычный open() и write(), а сетевую работу берёт на себя ядро. Именно поэтому файловые шары до сих пор живы: под них написаны миллионы приложений, которые не умеют в S3.
Обратная сторона: сетевая ФС притворяется локальной, но ведёт себя иначе. Блокировки поверх NFS ненадёжны, задержка на порядки выше, а обрыв сети приложение видит не как ошибку сети, а как зависший write(). Отсюда правило: SQLite и любые БД на сетевой шаре — гарантированные повреждения данных.
Что такое файлообменник
Файлообменник — сервис для передачи файлов между людьми: загружаете файл, получаете ссылку, отправляете её адресату. От файлового хранилища отличается назначением: хранилище — рабочее место для данных, файлообменник — способ доставить файл тому, у кого нет доступа к вашей инфраструктуре.
Типовые сценарии — отправить макет заказчику, передать архив логов в поддержку, поделиться видео, которое не проходит по размеру через почту.
Свой файлообменник поднимают, когда файлы содержат персональные данные или коммерческую тайну и публичные сервисы неприемлемы. Практичные варианты self-hosted: Nextcloud (полноценное облако с синхронизацией и правами), PsiTransfer или Send (одноразовые ссылки со сроком жизни), либо просто MinIO с presigned-ссылками — временными URL, действующими заданное число часов.
Что важно, если поднимаете сами: срок жизни ссылок и автоудаление, лимит на размер, шифрование канала (TLS), защита от превращения сервиса в бесплатный хостинг для чужого контента. Публичный аплоад без ограничений находят и заполняют быстро.
Синхронизация и облачные диски
Отдельный класс — сервисы вроде Nextcloud, Dropbox, Яндекс.Диск: файлы лежат на сервере и синхронизируются с папками на устройствах. Технически это надстройка над object storage или файловым хранилищем, добавляющая версионирование, шаринг по ссылке и клиентов синхронизации.
Nextcloud — стандартный self-hosted вариант: ставится на VPS, хранит файлы на диске сервера или в S3-совместимом бэкенде, метаданные — в PostgreSQL или MySQL.
Практика
- Файловая шара — не бэкап. Удалённый файл удаляется у всех. Нужны снапшоты или отдельное резервное копирование.
- Сеть — узкое место. 1 GbE упирается примерно в 110 МБ/с независимо от скорости дисков.
- Права проверяются на стороне хранилища. Владелец файла на NFS определяется числовым UID, и одинаковый UID на разных машинах может означать разных людей.
- Миллионы мелких файлов — тяжёлый шаблон для файловых систем; там, где такое ожидается, объектное хранилище масштабируется лучше.
Связанные термины
- NAS — устройство, реализующее файловое хранилище
- СХД — блочное хранение и iSCSI
- object storage — объектная модель вместо файловой
- Облачное хранилище — файлы как облачный сервис
- Файловые системы — что лежит под файловым доступом
- Резервное копирование — то, чем шара не является
Готовы запустить GPU-задачу?
Запустить GPU-сервер