Хранение данных в Linux: от жёстких дисков до файловых систем

स्रोत
ru-orig
Jun 8, 2025 Aug 30, 2026
Video preview
शेयर करें:

Докладчик Рома, SRE в команде единого хранилища данных, подробно разбирает устройство HDD и SSD, файловые системы, RAID и утилиты для управления хранением в Linux, включая практическую демонстрацию.

Обзор и классификация накопителей ⏱ 4:18

  • •Докладчик Рома, SRE в команде единого хранилища данных; команда отвечает за хранение данных для картинок, рекламы, музыки и будильников Алисы.
  • •Накопители классифицируются по энергозависимости: энергозависимые (ОЗУ, кэш процессора) и энергонезависимые (HDD, SSD, магнитные ленты, CD, перфокарты).
  • •Энергонезависимые хранят данные без питания; в докладе рассматриваются энергонезависимые накопители, начиная с HDD.
  • Жёсткие диски: устройство и принцип работы ⏱ 6:27

  • •HDD — сложное механическое устройство. Основные части: плата (контроллер) и гермоблок; внутри — ферромагнитные пластины, головки, шпиндель, коромысло.
  • •Данные хранятся на пластинах в виде доменов, намагниченных влево/вправо (бит 0/1). Головка записывает данные, создавая магнитное поле.
  • •Удаление через ОС не стирает данные физически — диск помечает место как свободное и перезаписывает позже.
  • •Сектор — минимальная единица хранения (до 4 КБ). Число секторов на дорожке зависит от радиуса; внешние дорожки дают больше данных и быстрее чтение/запись.
  • •Головка парит в воздухе на расстоянии 1 нанометра; при отключении питания контроллер использует энергию шпинделя для парковки головок, предотвращая повреждение.
  • Ёмкость и типы записи ⏱ 12:40

  • •Максимальная ёмкость HDD: 24 ТБ (10 пластин по 2,4 ТБ). Компания Toshiba (?) смогла уместить 11 пластин, но обычно предел — 10.
  • •Для увеличения ёмкости пластины заполняют гелием (меньшая плотность), но этого недостаточно; увеличение размера диска непрактично.
  • •Типы записи: LMR (продольная, до 2000-х) — низкая плотность; PMR (перпендикулярная) — выше плотность, но есть предел; SMR (черепичная) — наложение дорожек, +30% ёмкости, но медленная случайная запись, используется для холодных данных.
  • •HAMR (Seagate): нагрев лазером до 400°C для увеличения плотности; MAMR: микроволновое излучение, аналогичный эффект без нагрева.
  • Итоги по HDD и переход к SSD ⏱ 20:00

  • •Технологии HAMR и MAMR позволяют уменьшить магнитные домены, увеличивая плотность записи (до 15% объёма) без потери стабильности.
  • •Минусы HDD: механическая природа (чувствительны к вибрациям), шум, сильная вибрация при большом количестве дисков (например, 90 дисков на полке).
  • •Плюсы HDD: теоретически вечное хранение данных, низкая стоимость за 1 ТБ, но низкая скорость: ~150-200 МБ/с при последовательном и случайном чтении.
  • SSD: форм-факторы, интерфейсы и классификация ⏱ 23:05

  • •Форм-факторы: mSATA (для ноутбуков), U.2 (серверный), 2,5 дюйма (обычный), M.2 (распространённый).
  • •Интерфейсы: SATA (один канал, до 600 МБ/с или 6 Гбит/с) и NVMe (использует PCIe, до 16 каналов, ~1 ГБ/с на канал, например 4 ГБ/с при 4 каналах).
  • •M.2 не всегда быстрее 2,5" — зависит от интерфейса; NVMe обычно быстрее SATA.
  • •Типы флеш-памяти: SLC (1 бит на ячейку), MLC (4 уровня напряжения, 2 бита), TLC (9 уровней, 3 бита), QLC (16 уровней, 4 бита). Больше бит на ячейку — больше ёмкость и скорость чтения, но быстрее износ.
  • •TRIM: сигнал от ОС для очистки неиспользуемых страниц; сборщик мусора перемещает данные, равномерно изнашивая ячейки.
  • •Метрики: DWPD (перезапись всего объёма в день) и TBW (общее количество записанных терабайт). Пример: SSD 1 ТБ, гарантия 3 года, DWPD=1, TBW≈1100 ТБ. При постоянной записи 400 МБ/с диск выйдет из строя за ~30 дней вместо 3 лет.
  • •Плюсы SSD: высокая скорость, компактность, низкое энергопотребление; минус — высокая стоимость за 1 ТБ.
  • Файловые системы и управление данными ⏱ 40:02

  • •Обсуждается выбор между SSD и HDD: SSD имеет лимит на перезапись и износ чипов, HDD может прожить долго, но вопрос открытый и зависит от ситуации.
  • •Файловые системы хранятся на разделах диска; начинаются с MBR (главная загрузочная запись) и таблицы разделов GPT.
  • •Суперблок содержит ключевые параметры файловой системы, его резервные копии создаются для восстановления (пример: утилита mkfs для ext4).
  • •Инода хранит метаданные о файле: размер, права доступа, владельца, временные метки, тип, но не имя файла — имена хранят каталоги.
  • Задачи файловых систем и виртуальная файловая система ⏱ 45:09

  • •Файловая система решает задачи: эффективное управление пространством, индексация и поиск данных (используются деревья), поддержка множества устройств, оптимизация производительности (кэширование, дефрагментация).
  • •Пример дефрагментации: после удаления файлов и записи нового файла (например, 8 КБ) блоки могут быть разбросаны, что замедляет доступ; дефрагментация группирует блоки.
  • •Контроль доступа и прав (чтение, запись, исполнение), управление выделением места (отложенная аллокация).
  • •Виртуальная файловая система (VFS) — абстрактный слой между ядром и файловыми системами, предоставляет единый интерфейс (read, write, close, open, lseek).
  • Рассмотрение конкретных файловых систем ⏱ 49:21

  • •ext4: популярная, стабильная, производительная; использует экстенты (непрерывные диапазоны блоков) для уменьшения метаданных; имеет фиксированное количество инод, что может быть проблемой; журналируемая.
  • •XFS: хорошо работает с большими данными, максимальный размер файла 8 ЭБ (у ext4 — 16 ТБ); поддерживает динамическое расширение инод; использует B-деревья; журналируемая.
  • •Btrfs: заявлена хорошая работа с SSD, команда TRIM впервые реализована именно в Btrfs.
  • Журналирование и восстановление данных ⏱ 56:08

  • •Журналирование предотвращает потерю данных при сбоях: операции записываются в журнал, при монтировании проверяется его целостность.
  • •Пример операции удаления файла: удаление из каталога, освобождение иноды, пометка блоков свободными — если питание пропало, журнал завершит операцию.
  • •Журнал можно просмотреть утилитой debugfs: видны номер блока, транзакции, дескрипторный блок (Type 1) и блок подтверждения (Type 2).
  • •Журналирование не гарантирует восстановление данных, если они не были записаны на диск (например, в оперативной памяти).
  • Btrfs: особенности и технологии ⏱ 60:03

  • •Btrfs — молодая файловая система (разработка началась в 2006 году), поддерживает сублокацию (tail packing), которая позволяет хранить мелкие файлы в одном кластере эффективно.
  • •Copy-on-Write: новые данные записываются в новый блок, старые удаляются только после записи. Это основа снапшотов.
  • •Снапшоты хранят ссылки на старые данные, позволяя вернуться к предыдущим версиям, но занимают больше места.
  • Выбор файловой системы и утилиты ⏱ 64:38

  • •Нет идеальной файловой системы: XFS хороша для больших файлов (до 8 EB), XFS подходит для большинства случаев. Для больших данных XFS, для универсальности — X4.
  • •Утилиты: mkfs (создание ФС), debugfs (изучение и модификация структуры), tune2fs (изменение параметров, например, зарезервированного места для root, по умолчанию 5%), fsck (проверка и исправление ошибок).
  • •Пример: на диске 24 ТБ 5% — это 1.2 ТБ, можно уменьшить до 200 ГБ. fsck вызывается при загрузке и проходит через иноды и блоки.
  • Отказ от файловых систем и планировщики ⏱ 69:18

  • •Иногда файловые системы не нужны: запись сырых данных повышает производительность, так как нет лишнего слоя абстракции и метаданных. Некоторые компании пишут собственные решения.
  • •Планировщики ввода-вывода: BFQ (гарантированное разделение пропускной способности, квоты для cgroups), MQ Deadline (минимальное время отклика, несколько очередей), NOOP (FIFO, подходит для SSD). NCQ — планировщик на уровне контроллера устройства.
  • Монтирование и udev ⏱ 75:26

  • •Перед монтированием устройство должно быть обнаружено. Ядро загружает модули, udev управляет устройствами: при подключении создает файл в /dev (например, /dev/sdb).
  • •Команда mount используется для монтирования, umount — для отмонтирования. Ключи: -a (все), --bind (зеркалирование), -f (принудительное), -o remount (перемонтирование в ro).
  • •Файл /etc/fstab автоматизирует монтирование.
  • Ключевые моменты сегмента ⏱ 80:05

  • •В /etc/fstab поле File System указывает на устройство (например, /dev/sda), но лучше использовать UUID, так как имена дисков могут меняться (например, при сбое SDB, SDC становится SDB), что может привести к записи данных на неправильный диск.
  • •Опции монтирования: atime/noatime/relatime влияют на обновление времени последнего доступа; noatime повышает производительность, но теряет информацию о времени доступа, relatime — компромисс (обновляет раз в 24 часа).
  • •Опция defaults включает стандартные настройки, подходит по умолчанию.
  • •Поле Dump (dumpe2fs) управляет созданием бэкапов (не автоматически).
  • •Поле Pass (fsck) задает порядок проверки файловых систем: 0 — не проверять, 1 — корневая, выше — приоритет.
  • •Аналог /etc/fstab — systemd.mount, но fstab считывается автоматически при загрузке.
  • •Утилиты для работы с дисками: lsblk, fdisk, gdisk, parted (разбивка), df (свободное место).
  • •Инструменты для анализа и тестирования: smartctl, iostat, fio, dd.
  • •На примере: lsblk -d -o NAME,ROTA показывает, что диск sda (ROTA=0) является SSD.
  • •iostat (iostat -dx 5) показывает статистику по диску: r/s, w/s, rkB/s, wkB/s, await и др.
  • •fio используется для тестирования производительности: конфиг включает async I/O, прямой ввод (direct=1), размер блока (bs), размер файла (size), количество потоков (numjobs=1), время выполнения (runtime).
  • •Демонстрация: при чтении файла с включенным atime должна происходить запись (обновление времени доступа), но при использовании noatime запись не видна.
  • •В сегменте проведен эксперимент с перемонтированием файловой системы и проверкой через iostat и fio, но из-за ошибок конфигурации не удалось показать запись при atime.
  • Демонстрация монтирования и проверка realtime-записи ⏱ 100:09

  • •В ходе демонстрации возникла проблема с монтированием: команда mount не сработала как ожидалось, потребовалось перемонтирование без опций.
  • •Попытки отмонтировать диск не удавались; возникло подозрение, что systemd вмешивается в поведение монтирования.
  • •Использование strace (или strace -f) для отслеживания записи показало, что запись realtime (обновление времени последнего доступа) не отображается в iostat; вместо этого записываются метаданные в журнал.
  • •Было подтверждено, что запись обновления времени последнего доступа происходит, но не отображается в iostat из-за особенностей опций монтирования (например, noatime).
  • Утилита smartctl и её атрибуты ⏱ 103:46

  • •smartctl — утилита для проверки ошибок дисков, полезна для HDD и SSD.
  • •Атрибут 170: количество резервных блоков памяти (в основном для SSD); падение до нуля свидетельствует об износе.
  • •Атрибут 171: число ошибок при записи; большое количество указывает на проблемы с диском.
  • •Атрибут 172: счётчик неудачных попыток стирания блоков (для флэш-памяти).
  • •Атрибут 183: число случаев снижения скорости передачи по SATA; может контролироваться пользователем.
  • •Атрибут 184: контроль целостности передачи данных контроллера.
  • •Атрибут 199: число ошибок CRC на интерфейсе (обычно SATA), вызванных плохими кабелями, разъёмами или сбоями питания; в дата-центрах помогает инженерам выявлять проблемы с кабелями.
  • RAID: анализ надёжности различных уровней ⏱ 108:24

  • •Рассмотрены программные RAID (через mdadm). RAID 0 используется для производительности, но не имеет избыточности: выход из строя одного диска ломает массив. При вероятности отказа диска 5% в год, вероятность отказа RAID 0 из двух дисков ≈ 10%. Реальная вероятность отказа диска ~1.5% в год.
  • •RAID 1 обеспечивает отказоустойчивость: для двух дисков вероятность отказа обоих ≈ 0.25%, вероятность отказа массива ≈ 99.75%.
  • •RAID 10 (зеркало+полоса) — для четырёх дисков уникальных пар дисков 6, вероятность отказа массива при двух отказах ≈ 33% (при 5% отказе диска). Для шести дисков вероятность отказа ≈ 20% (при 5% отказе). Учтено, что при восстановлении RAID 1 существует вероятность отказа второго диска.
  • •RAID 5 (минимум 3 диска): вероятность отказа при отказе двух любых дисков ≈ 0.725% (при 5% отказе). Менее надёжен, чем RAID 1, так как при восстановлении идёт считывание с двух дисков, увеличивая риск отказа.
  • •RAID 6 (минимум 4 диска): выходит из строя при отказе двух любых дисков или более; домашнее задание — посчитать вероятность отказа при 1.5% отказе дисков.
  • Ответы на вопросы из интернета и завершение ⏱ 118:11

  • •Вопрос: как delay alloc и журналирование в XFS влияют на риск потери данных при внезапном отключении питания? Ответ: если данные находятся в оперативной памяти и не записаны на диск, они теряются при отключении питания, так как RAM энергозависима.
  • •Вопрос о fsync: при использовании fsync все данные принудительно записываются на диск, снижая риск потери.
  • •Благодарность зрителям и завершение трансляции.
  • Ключевые выводы

  • •Максимальная ёмкость HDD достигает 24 ТБ при 10 пластинах, Toshiba удалось разместить 11 пластин, но обычно предел — 10.
  • •SSD имеет лимит на перезапись и износ чипов, в то время как HDD может работать долго, но выбор зависит от ситуации.
  • •Файловая система решает задачи управления пространством, индексации данных, поддержки множества устройств и оптимизации.
  • •ext4 использует экстенты для уменьшения метаданных и имеет фиксированное количество инод.
  • •Btrfs поддерживает сублокацию (tail packing), позволяющую хранить мелкие файлы в одном кластере.
  • •Для больших файлов рекомендуется XFS, так как поддерживает до 8 EB, в большинстве случаев подходит XFS.
  • •Иногда файловые системы не нужны: запись сырых данных повышает производительность, так как нет лишнего слоя абстракции и метаданных.
  • •smartctl — утилита для проверки ошибок дисков; атрибут 170 показывает количество резервных блоков памяти, падение до нуля может указывать на проблемы.
  • Заключение

    В докладе были рассмотрены типы накопителей, их устройство и характеристики, а также файловые системы, RAID и утилиты управления. Докладчик подчеркнул, что нет идеальной файловой системы, и выбор зависит от конкретных задач.

    ✨

    AI Perspective

    В видео представлен технический обзор, где фактические утверждения чередуются с упрощениями, но без сатирического подтекста.

    УтверждениеВердиктКомментарий
    HDD паркует головки при отключении питания, используя энергию вращения шпинделя✅ ПодтвержденоСтандартная технология автоматической парковки головок.
    Максимальная ёмкость HDD — 24 ТБ (10 пластин по 2,4 ТБ)⚠️ ПриблизительноКрупнейшие коммерческие модели достигают 30+ ТБ (Seagate).
    Тип записи SMR даёт прирост ёмкости на 30%⚠️ ПриблизительноВерное направление, реальный прирост обычно составляет 15-25%.
    NVMe использует линии PCIe, обеспечивая около 1 ГБ/с на канал✅ ПодтвержденоПропускная способность PCIe 4.0 x1 приблизительно равна 2 ГБ/с.
    При постоянной записи 400 МБ/с диск с DWPD=1 выйдет из строя за ~30 дней✅ ПодтвержденоМатематически верно при объёме 1 ТБ и TBW около 1100 ТБ.
    Ext4 имеет фиксированное количество инод, создаваемых при форматировании✅ ПодтвержденоКоличество индексных дескрипторов задаётся на этапе создания ФС.
    XFS поддерживает максимальный размер файла до 8 ЭБ✅ ПодтвержденоТеоретический лимит, подтверждённый документацией XFS.
    Файловая система Btrfs первой реализовала поддержку команды TRIM✅ ПодтвержденоПоддержка TRIM в Btrfs появилась раньше, чем в Ext4.
    Атрибут SMART 170 показывает количество резервных блоков памяти SSD✅ ПодтвержденоВендороспецифичный атрибут (Available Reserved Space).
    Атрибут SMART 199 указывает на ошибки CRC интерфейса из-за плохих кабелей✅ ПодтвержденоСтандартная индикация проблем с SATA-кабелем или разъёмом.
    В /etc/fstab для идентификации раздела надёжнее указывать UUID вместо имени✅ ПодтвержденоUUID гарантирует уникальность и независимость от физического порядка подключения.

    इस वीडियो के बारे में पूछें