Докладчик Рома, 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 и утилиты управления. Докладчик подчеркнул, что нет идеальной файловой системы, и выбор зависит от конкретных задач.