Короткий ответ
Блочное хранилище подключается к одной ВМ как диск и используется для ОС и баз данных; файловое хранилище монтируется одновременно к нескольким серверам как общая файловая система; объектное хранилище хранит файлы как объекты через HTTP API и подходит для больших объёмов неструктурированных данных.
Как это работает подробнее
блочное хранилище даёт низкую задержку и работу на уровне файловой системы, но обычно подключено к одной ВМ одновременно; файловое — разделяемый доступ по сетевому протоколу; объектное — доступ по HTTP(S) к объектам с метаданными, без прямого монтирования как диска.
Пример кода
example.txt
aws s3 cp ./report.csv s3://company-reports/2024/report.csv
aws s3 ls s3://company-reports/2024/Что использовать на практике
- Рекомендация. диск БД — блочное хранилище; общие конфиги для нескольких воркеров — файловое; бэкапы, логи, статические файлы, дата-лейк — объектное хранилище из-за цены и масштабируемости.
- Проверка. файл становится доступен по ключу в bucket сразу после успешной загрузки, без необходимости монтировать том.
Подводные камни
- Риск. пытаться хранить миллионы мелких файлов приложения на блочном диске одной ВМ как «общее хранилище» для кластера
- Риск. использовать объектное хранилище там, где нужна низкая задержка случайного чтения/записи как у диска
- Риск. не учитывать разницу в консистентности и семантике доступа.