Назад в библиотеку

Источник (англ.): Dani A. et al. Next4: Snapshots in Ext4 File System //arXiv preprint arXiv:2403.06790. – 2024.

УДК 004.632.4

NEXT4: РЕАЛИЗАЦИЯ МОМЕНТАЛЬНЫХ СНИМКОВ В ФАЙЛОВОЙ СИСТЕМЕ EXT4

Адитья Дани¹, Шардул Мангаде², Пиюш Нимбалкар³, Харшад Ширвадкар⁴
Институт компьютерных технологий, Пуна-411043, Махараштра, Индия
¹aditya.dani@gmail.com, ²shardul.mangade@gmail.com, ³piyushmnimbalkar@gmail.com, ⁴harshadshirwadkar@gmail.com
Аннотация:
Next4: Реализация моментальных снимков в файловой системе Ext4. Растущая ценность данных как стратегического актива вызвала необходимость внедрения надежных решений для резервного копирования и восстановления наиболее эффективным и экономичным способом. Методы резервного копирования данных, доступные сегодня в Linux, не достаточно эффективны, поскольку во время работы большинство из них блокируют ввод-вывод операционной системы, чтобы гарантировать целостность данных. Мы предлагаем и внедряем Next4 - функцию моментального снимка на основе файловой системы в Ext4, которая создает мгновенный образ файловой системы для предоставления инкрементных версий данных, обеспечивая надежное резервное копирование и восстановление данных. В нашем проекте функция моментального снимка реализована за счет эффективного внедрения стратегии копирования при записи в файловую систему Ext4 с возможностью записи на месте на основе Extent, не затрагивая ее базовую структуру. Каждый моментальный снимок представляет собой инкрементную резервную копию данных в системе. Что отличает Next4, так это способ резервного копирования данных, улучшающий как использование пространства, так и производительность.
Ключевые слова:
Ext4, моментальный снимок, копирование при записи, резервное копирование.
Annotation:
Next4: Implementation of Snapshots in the Ext4 File System. The growing value of data as a strategic asset has necessitated the implementation of robust backup and recovery solutions in the most efficient and cost-effective way. Data backup methods available today in Linux are not efficient enough, as most of them block operating system I/O during operation to ensure data integrity. We propose and implement Next4 - a filesystem-based snapshot feature in Ext4 that creates an instant image of the filesystem to provide incremental data versions, ensuring reliable data backup and recovery. In our project, the snapshot feature is implemented by efficiently implementing a copy-on-write strategy in the Ext4 filesystem with extent-based in-place write capability without affecting its underlying structure. Each snapshot is an incremental backup of data in the system. What distinguishes Next4 is the way of backing up data, improving both space utilization and performance.
Keywords:
Ext4, snapshot, copy-on-write, backup.

Введение

Моментальные снимки также могут быть реализованы на уровне тома с помощью диспетчера томов, такого как LVM/LVM2 [1]. Диспетчер логических томов (LVM)/LVM2 - это диспетчер томов, расположенный между файловой системой и драйвером устройства. Моментальный снимок в LVM достигается с помощью копирования при записи на уровне блока (COW) и выполняется на единице логического тома в группе томов.

Однако возможности моментального снимка на уровне LVM имеют некоторые оговорки, как показано ниже:

Мотивация

В любой системе хранения функция, которая имеет первостепенное значение для пользователя, является защита данных. В то время как пользователь принимает как должное, что данные не будут потеряны из-за сбоя системы или ошибки дизайна, пользователь также ожидает, что система хранения данных защитит его или ее от непреднамеренных удалений, нежелательных модификаций, вредоносных агентов и т.д. Различные решения были предложены индустрией хранения данных, и были адаптированы в различной степени. Одним из очень распространенных методов является регулярное создание резервных копий либо в самой системе хранения, либо на магнитные ленты. Этот метод имеет основной недостаток, заключающийся в том, что требуется большая емкость хранилища и, кроме того, вызывает существенные сбои в обслуживании во время создания резервной копии. Кроме того, из-за этих недостатков невозможно создавать резервные копии чаще, чем примерно раз в день, что приводит к большому периоду потери данных при необходимости восстановления.

Концепция моментального снимка

Моментальный снимок - это копия тома на определенный момент времени, аналогичная тому, как делается снимок данных в данный момент. Моментальные копии выглядят и ведут себя как полные резервные копии - их можно монтировать как тома, считывать одновременно, не затрагивая том, для которого они являются моментальными снимками, при необходимости выполнять откат на том и удалять, чтобы освободить место. Простота и гибкость, с которыми могут выполняться эти операции, способствовали ускорению внедрения технологии snapshot в ИТ-индустрии.

Некоторые из этих предостережений могут быть устранены изменениями в реализации моментального снимка LVM, но некоторые из них являются фундаментальными для подхода к моментальному снимку уровня громкости. По этой причине имеет смысл попытаться достичь целей проектирования путем реализации моментальных снимков на уровне файловой системы.

Снимки Next4

Next4 занимается реализацией функции моментальных снимков на основе файловой системы в файловой системе Ext4, не нарушая базовой структуры и функций Ext4. Ext4 является преемником популярной и наиболее широко используемой файловой системы Ext3. Next4 позволит создавать инкрементный моментальный снимок файловой системы, доступный только для чтения, который может быть восстановлен обратно путем монтирования файла моментального снимка на устройство обратной связи. Моментальные снимки Next4 обеспечивают простоту моментальных снимков LVM при высокой производительности и масштабируемости. Возможности управления моментальными снимками включают в себя создание любого количества моментальных снимков по желанию и удаление всех прошлых снимков, чтобы освободить место в файловой системе.

Сведения о дизайне

Файл моментального снимка

Каждый сделанный снимок сохраняется в файле моментального снимка, который представляет собой обычный разреженный файл. Разреженный файл - это тип компьютерного файла, который пытается более эффективно использовать пространство файловой системы, когда блоки, выделенные для файла, в основном пусты. Это достигается за счет записи краткой информации (метаданных), представляющей пустые блоки на диск вместо фактического "пустого" пространства, из которого состоит блок, используя меньший объем дискового пространства.

Рисунок 2.1 — Разреженный файл

Файл моментального снимка имеет размер, такой же, как у всей файловой системы, и представляет состояние файловой системы на момент создания снимка. Каждое смещение логического блока в файле моментального снимка представляет собой физический блок в базовом блочном устройстве. Сопоставленный блок в файле моментального снимка содержит копию данных физического блока на момент создания моментального снимка. "Дыра" в файле моментального снимка означает, что версия этого блока моментального снимка идентична более поздней версии моментального снимка в файловой системе. Файлы моментальных снимков помечаются флагом файла моментального снимка, который наследуется от их родительского каталога и не может быть иным образом установлен для обычных файлов.

Экстент

Ext4 - это файловая система на основе экстентов, в которой файлы с отображением экстентов могут использоваться вместо традиционных файлов с отображением блоков. Экстент - это комбинация двух целых чисел, первое из которых указывает блок смещения, а второе обозначает длину, т.е. количество смежных блоков после смещения, которые свободны или выделены. Это таким образом повышает производительность больших файлов и уменьшает фрагментацию. Один экстент в ext4 может отображать до 128 МБ непрерывного пространства с размером блока 4 КБ [2]. В индексе может храниться 4 экстента. Если в файле больше 4 экстентов, остальные экстенты индексируются в Htree.

Рисунок 2.2 — Экстент

Копирование при записи (COW)

Копирование при записи - это стратегия, при которой перед записью выполняется копия данных, которые должны быть изменены. В этом методе данные из исходного физического блока копируются в новое физическое местоположение. Затем старые данные в исходном физическом блоке перезаписываются новыми данными. В случае перезаписи, после создания моментального снимка, исходные данные сохраняются в файле моментального снимка с помощью операции COW. Таким образом, логическое смещение в файле моментального снимка, соответствующее смещению исходного физического блока, сопоставляется с новым физическим местоположением, содержащим исходные данные.

Продолжайте писать (MOW)

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

Растровое изображение COW

Cow bitmap отслеживает блоки, над которыми должна выполняться операция COW или MOW, таким же образом, как block bitmap отслеживает блоки, используемые файловой системой. Растровое изображение COW по сути является копией растрового изображения блока на момент создания моментального снимка и, таким образом, сохраняет отслеживание блоков, которые присутствовали в файловой системе на тот момент. Бит "set" в COW bitmap указывает, что соответствующий блок используется моментальным снимком.

Исключить Bitmap

Exclude Bitmap отслеживает блоки, которые должны быть пропущены при выполнении любой операции COW или MOWING, по сути, файловую систему.

Работа

Давайте проиллюстрируем работу следующим примером: предположим, что изначально файловая система состоит из файла, который содержит данные "HEADSHOT". Как показано на рисунке 3.1, файл состоит из двух экстентов данных (40-43) "HEAD" и (50-53) "SHOT", на которые ссылается его индекс в блоке под номером 10.

Рисунок 3.1 — Исходное состояние файловой системы

Теперь, на этом этапе, если мы сделаем снимок S1, то будет создан новый разреженный файл для снимка с его индексом в блоке под номером 90, как показано на рисунке 3.2. Этот снимок является "активным" снимком, поскольку он единственный, который изменяется. Изначально файл моментального снимка пуст и состоит из отверстий для соответствующих блоков данных. Таким образом, логические смещения (L) 10, 40-43, 50-53 сопоставляются физическим смещениям (P) '0', что представляет "дыру".

Рисунок 3.2 — Снимок S1

Предположим, у нас есть запрос на повторную запись данных в экстенте 40-43 с "HEAD" на "SNAP". Таким образом, теперь мы выполняем операцию MOW для данных и операцию COW для метаданных (inode). Как объяснялось ранее, "ПРИВЯЗКА" данных записывается в новое местоположение 60-63 (MOW), а копия индекса в местоположении 10 создается в местоположении 20 (COW). Метаданные в местоположении 10 затем изменяются для определения экстентов "SNAP" (60-63) и "SHOT" (50-53). Логические смещения в 10 и 40-43 в файле моментального снимка затем сопоставляются блокам 20 и 40-43 вместо "отверстий". Таким образом, файл ссылается на данные "SNAPSHOT" в файловой системе, и тот же файл ссылается на данные "HEADSHOT" в snapshot S1.

Рисунок 3.3 — Перезапись данных

Теперь мы создадим еще один снимок S2, таким образом, будет создан пустой файл снимок, состоящий из всех отверстий, сопоставленных блокам данных на диске (показано на рисунке 3.4). Теперь S2 - это "активный" снимок, как объяснялось ранее.

Рисунок 3.4 — Снимок S2

Предположим, у нас есть запрос на повторную запись данных из "SH" в "FS" в местоположении 50-51. Данные "FS" записываются в новое местоположение 70-71 (MOW), а копия индекса в местоположении 10 переносится в местоположение 30 (COW). Метаданные в местоположении 10 затем изменяются до точечных экстентов "SNAP" (60-63), "FS" (70-71) и "OT" (52-53). Логические смещения в 10 и 50-51 в файле моментального снимка S2 затем сопоставляются блокам 30 и 50-51 вместо "отверстий". Таким образом, файл ссылается на данные "SNAPFSOT" в файловой системе, и тот же файл ссылается на данные "SNAPSHOT" в файловой системе snapshot S2.

Рисунок 3.5 — Перезапись данных - разрыв экстента

Предположим, теперь есть запрос на удаление данных "OT". Таким образом, запись для индекса экстента 70-71 в строке 10 удаляется, и индекс указывает только на "SNAP" 60-63 и "FS" 50-51. Экстент, содержащий данные "OT", не освобождается, но защищается в активном моментальном снимке S2 с помощью операции MOW. В файле моментального снимка индекс отображает логическое смещение 52-53 в блоки 52-53 вместо отверстия.

Рисунок 3.6 — Удаление данных

Теперь мы хотим удалить снимок S2, затем данные блоки под S2 проверяются на наличие ссылок на какие-либо предыдущие снимки. В этом случае (как показано на рисунке 3.6) на данные "СНИМОК" (50-53) ссылается S1. Логические смещения 50-53 в файле моментального снимка S1 затем сопоставляются блокам 50-53 вместо "отверстий". Блоки индексных индексов в местоположениях 80 (S2) и 30 (Файл под S2) затем нераспределяются, и пространство возвращается файловой системе (как показано на рисунке 3.7).

Рисунок 3.7 — Удаление снимка

Преимущества

Заключение

В этой статье мы представляем дизайн моментального снимка на уровне файловой системы, подходящий для восстановления и резервного копирования. Технология моментальных снимков представляет собой одно из наиболее значительных усовершенствований системы хранения данных за последние годы, которое обещает изменить будущие решения для резервного копирования и восстановления данных. Помимо систем резервного копирования, snapshot также может оказаться полезным в таких приложениях, как тестирование программного обеспечения и инструменты восстановления системы. Мы реализуем snapshot в файловой системе Ext4 на основе экстентов. Ext4 является преемником Ext3, наиболее широко используемой файловой системы, и поставляется в качестве базовой файловой системы в большинстве современных дистрибутивов Linux. Таким образом, внедрение функции моментальных снимков в Ext4 удовлетворит огромное количество пользователей ее преимуществами.

Список литературы

  1. Д. Тейгланд, Х. Мауэльсхаген, 2001, "Менеджеры томов в Linux", Техническая конференция USENIX.
  2. Новая файловая система ext4: текущее состояние и планы на будущее Авика Матхур, Мингминг Као, Супарна Бхаттачарья в материалах Оттавского симпозиума по Linux 2007.
  3. "Улучшения в блоке Ext4 и распределителе индексных дескрипторов" Аниша Кумара К.В., Мингминга Као, Хосе Р. Сантоса, Андреаса Дилгера в материалах Оттавского симпозиума по Linux 2008 года.
  4. Морис Дж. Бах, Дизайн операционной системы Unix, Прентис Холл.
  5. "Android 2.3 Gingerbread для использования файловой системы Ext4". H Открыто. 14 Декабря 2010.
  6. "Google переключается на Ext4". Phoronix. 14 Января 2010.
  7. Ext4 wiki: http://en.wikipedia.org/wiki/ext4.
s