Формат ext2 что за формат
🗂️ Что такое Ext2, Ext3 и Ext4 и как создавать и конвертировать файловые системы Linux
После изучения этого руководства, любой может научиться грамотно преобразовать свои файловые системы, но, тем не менее, я хотел бы ПРЕДУПРЕДИТЬ вас, так как для выполнения этой задачи потребовались админиские действия и вы должны сделать резервную копию своих файлов, прежде чем начать делать это.
Если что-то пойдет не так, по крайней мере, вы можете вернуться на резервные данные.
В компьютере файловая система – это способ, благодаря которому файлы именуются и размещаются логически для хранения, извлечения и обновления данных, а также используются для управления пространством на доступных устройствах.
Как определить тип файловой системы?
Чтобы определить тип файловой системы Linux, выполните следующую команду в терминале от имени пользователя root.
Создание файловых систем Ext2, Ext3 или Ext4.
Как только вы создадите файловую систему с помощью команды fdisk или parted, используйте команду mke2fs для создания любой файловой системы и убедитесь, что вы заменили hdXX именем вашего устройства.
Создание файловой системы Ext2
Создание файловой системы Ext3
Создание файловой системы Ext4
Преобразование файловых систем Ext2, Ext3 или Ext4
Рекомендуется размонтировать файловую систему перед конвертированием.
Конвертирование может быть сделано и без размонтирования файловой системы. Снова замените hdXX на имя вашего устройства.
Конвертирование Ext2 в Ext3
Чтобы изменить файловую систему ext2 на ext3, включающую функцию журнала, используйте команду.
Конвертирование Ext2 в Ext4
Преобразуем старую файловою систему ext2 в новую файловую систему ext4 с новейшей функцией логов.
Запустите следующую команду.
Затем выполните полную проверку файловой системы с помощью команды e2fsck, чтобы исправить ошибки.
Конвертирование Ext3 в Ext4
Чтобы включить функции ext4 в существующей файловой системе ext3, используйте команду.
ВНИМАНИЕ: Вы не можете вернуться или смонтировать обратно в файловую систему ext3 после выполнения команды, показанной выше.
После выполнения этой команды мы ДОЛЖНЫ запустить fsck, чтобы исправить некоторые структуры на диске, которые изменил tune2fs.
Файловая система EXT2. Часть 1
Автор: uncle Bob
Дата: 22.12.2003
Раздел: Низкоуровневое программирование в Linux
ФАЙЛОВАЯ СИСТЕМА EXT2
В статье рассматривается процедура чтения файла c раздела жесткого диска с файловой системой ext2. С этой целью разработаем программный модуль, эмулирующий работу драйвера жесткого диска и драйвера файловой системы ext2 (далее модуль). Доступ к жесткому диску выполняется через пространство портов ввода-вывода ATA-контроллера (порядок доступа к диску через порты рассмотрен в [1]).
ЧАСТЬ 1
1. Структурная схема и алгоритм функционирования модуля
По сути, модуль является приложением пользователя, функционирующим под управлением операционной системы Linux. Структурная схема модуля показана на рис. 1.
В состав модуля входят следующие структурные элементы:
— эмулятор драйвера блочного устройства (жесткого диска) (далее драйвер жесткого диска);
— эмулятор драйвера файловой системы ext2 (далее драйвер файловой системы);
— подсистема ввода/вывода (I/O);
— таблица блочных устройств (ТБУ).
Адресное пространство процесса условно разделено на адресное пространство ядра и адресное пространство пользователя.
Как видно из схемы, все обращения к драйверу жесткого диска со стороны драйвера файловой системы выполняются через подсистему I/O.
В структуре драйвера блочного устройства определены следующие функции:
— функция инициализации и регистрации устройства в системе;
— функция, принимающая запросы подсистемы ввода/вывода (подсистема I/O) на чтение/запись данных (функция-диспетчер);
— функции чтения/записи данных
Перед обращением к драйверу выполняется его инициализацию. Команда инициализации поступает из подсистемы I/O. Во время инициализации драйвер выполняет следующие действия:
— опрашивает все каналы (их четыре) на предмет наличия АТА-устройств. Если устройство присутствует, драйвер считывает информацию о таблице разделов этого устройства и о самом устройстве (информацию идентификации устройства);
— выполняет процедуру регистрации в системе соответствующего блочного устройства путем заполнения таблицы блочных устройств (ТБУ). Каждая запись ТБУ содержит информацию об одном драйвере. Индексом в таблице является старший номер устройства.
После регистрации в системе драйвер готов к работе.
Для считывания (записи) данных с блочного устройства драйвер файловой системы обращается к подсистеме I/O. Одним из параметров, передаваемых подсистеме I/O, является старший номер устройства, для которого необходимо выполнить операцию считывания данных (записи данных). Используя старший номер в качестве индекса, подсистема I/O находит в ТБУ адрес функции-диспетчера соответствующего драйвера, и выполняет вызов данной функции, передав тем самым драйверу команду для выполнения, например, команду чтения. Функция-диспетчер драйвера принимает команду от подсистемы I/O, формирует запрос к устройству путем заполнения глобальной структуры ata_request, и вызывает функцию чтения с устройства. Считанные данные помещаются в буфер, адрес которого передается драйвером файловой системы через подсистему I/O. В случае, если поступила команда на запись, по этому адресу будут находяться данные, которые необходимо записать на устройство.
2. Таблица разделов жесткого диска
Упрощенно структура MBR представлена в таблице 1. Таблица разделов располагается в конце MBR, для описания раздела в таблице отводится 16 байт.
struct pt_struct <
u8 bootable; // флаг активности раздела
u8 start_part[3]; // координаты начала раздела
u8 type_part; // системный идентификатор
u8 end_part[3]; // координаты конца раздела
u32 sect_before; // число секторов перед разделом
u32 sect_total; // размер раздела в секторах (число секторов в разделе)
>;
Итак, все необходимые теоретические сведения у нас есть, можно приступить непосредственно к рассмотрению программной реализации модуля.
3. Структуры и переменные
Начнем с описания переменных и информационных структур, которые будут использованы при разработке.
Введем обозначение типов данных:
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;
typedef unsigned long long u64;
Системные ресурсы, выделенные каналам:
#define CH0 0x1f0 // Primary Master, канал 0
#define CH1 0x1E8 // Primary Slave, канал 1
#define CH2 0x170 // Secondary Master, канал 2
#define CH3 0x168 // Secondary Slave, канал 3
Биты основного регистра состояния ATA-устройства (назначение каждого бита рассмотрено в [1]):
#define BSY 0x80 // флаг занятости устройства
#define DRDY 0x40 // готовность устройства к восприятию команд
#define DF 0x20 // индикатор отказа устройства
#define DRQ 0x08 // индикатор готовности устройства к обмену данными
#define ERR 0x01 // индикатор ошибки выполнения операции
Получение номера устройства и номера раздела из младшего номера файла устройства выполняют макросы:
#define GET_DEV(X) ((X & 0x00000F00) >> 8);
#define GET_PART(X) (X & 0x000000FF);
Структура таблицы разделов (см. выше):
typedef struct pt_struct <
u8 bootable;
u8 start_part[3];
u8 type_part;
u8 end_part[3];
u32 sect_before;
u32 sect_total;
> pt_t;
Размер записи таблицы разделов (0x10):
#define PT_SIZE 0x10
Следующий массив структур заполняется драйвером диска в процессе инициализации ATA-устройств, подключенных к системе:
struct dev_status_struct <
u8 status;
struct hd_driveid hd;
pt_t pt[4];
> dev_status[4];
Для работы с полями данной структуры определим несколько макросов:
#define DEV_STAT(X) dev_status[X].status
#define DEV_ID(X) dev_status[X].hd
#define DEV_PT(X,Y) dev_status[X].pt[Y]
Размер блока на устройстве и размер одного сектора (в байтах):
#define BLK_SIZE 2048
#define BYTE_PER_SECT 512
Драйверу устройства можно послать три команды:
#define WRITE 0 // записать данные на устройство
#define READ 1 // прочитать данные с устройства
#define STAT 2 // получить характеристику раздела устройства
По команде STAT драйвер вернет о информацию о размере одного блока и число блоков на разделе устройстве. Данной информацией заполняется структура struct device_info_struct
Идентификатор ATA-устройства:
#define ATA 1
4. Драйвер ATA-устройства (жесткого диска)
Ресурсы, выделенные каналам, разместим в массиве:
Адресация к регистрам ATA-контроллера выполняется при помощи следующих макросов:
#define ATA_STATUS(x) (channels[x] + 7)
#define ATA_CURRENT(x) (channels[x] + 6)
#define ATA_HCYL(x) (channels[x] + 5)
#define ATA_LCYL(x) (channels[x] + 4)
#define ATA_SECTOR(x) (channels[x] + 3)
#define ATA_NSECTOR(x) (channels[x] + 2)
#define ATA_ERROR(x) (channels[x] + 1)
#define ATA_DATA(x) (channels[x])
Для работы с портами ввода/вывода определим несколько макросов.
Макросы OUT_P_B и OUT_P_W выполняют запись байта/слова в порт:
#define OUT_P_B(val,port) asm(«outb %%al, %%dx»::»a»(val),»d»(port))
#define OUT_P_W(val,port) asm(«outw %%ax, %%dx»::»a»(val),»d»(port))
Макросы IN_P_B и IN_P_W выполняют чтение байта/слова из порта:
#define IN_P_B(val,port) asm(«inb %%dx, %%al»:»=a»(val):»d»(port))
#define IN_P_W(val,port) asm(«inw %%dx, %%ax»:»=a»(val):»d»(port))
void (*handler)(void);
Назначение этого указателя будет рассмотрено далее.
Следующие функции были подробно рассмотрены в [1]:
— проверка занятости устройства:
int hd_busy(u8 dev)
<
int t = 0;
unsigned char status;
— проверка готовности устройства к восприятию команд:
int hd_ready(u8 dev)
<
int t = 0;
unsigned char status;
— проверка готовности устройства к обмену данными:
int hd_data_request(u8 dev)
<
unsigned char status;
IN_P_B(status, ATA_STATUS(dev));
if(status & DRQ) return 1;
return 0;
>
— фиксация ошибки выполнения команды:
int check_error(u8 dev)
<
unsigned char a;
/* Инициализация драйвера АТА */
int hd_init()
<
int i = 0, major = 0;
get_ata_info(); // опросить каналы на предмет наличия ATA-устройств
show_ata_info(); // отобразить информацию о найденых устройствах
get_pt_info(); // получить таблицу разделов с каждого устройства
major = reg_blkdev(MAJOR_ATA,»ATA»,&hd_request); // зарегистрировать драйвер устройства
При выполнении инициализации драйвер опрашивает все каналы на предмет наличия ATA-устройств, отображает информацию о найденых устройствах, получает от каждого найденого устройства таблицу разделов и регистрируется в системе.
Опрос каналов выполняет функция get_ata_info(). Вот как она выглядит:
void get_ata_info()
<
Для поиска устройств организуем цикл из четырех итераций:
while(dev_r.lock) continue;
dev_r.lock = 1;
Заполняем поля структуры запроса значениями:
dev_r.nlba = start_sect; /* стартовый сектор */
dev_r.nsect = 1; /* число cекторов для чтения/записи */
dev_r.buff = (unsigned short *)buff;
Определяем, какая команда поступила:
case STAT:
return stat_hd(part);
break;
case READ:
command = 0x20;
handler = &intr_read;
break;
case WRITE:
command = 0x30;
handler = &intr_write;
break;
Если приходит команда STAT, драйвер просто вернет подсистеме I/O информацию о характеристиках раздела устройства, такую как размер блока и число блоков на разделе устройстве, вызвав функцию stat_hd:
int stat_hd(u16 part)
<
device_info_t dev_i;
dev_i.block_size = BLK_SIZE;
dev_i.blocks_num = DEV_ID(CURRENT).lba_capacity/(BLK_SIZE/BYTE_PER_SECT);
dev_r.lock = 0;
return 0;
>
По окончании выполнения команды сбрасываем флаг «Операция завершена» и разблокируем буфер данных:
dev_r.complite = 0;
dev_r.lock = 0;
return 0;
>
Выполнение поступившей команды осуществляется путем вызова функции do_command:
int do_command(u32 count, u8 com)
<
for(;;) <
Посылаем устройству команду com и вызываем соответствующую функцию для чтения/записи, на которую настрооен указатель handler():
Ожидаем установки флага завершения операции и проверяем, нет ли ошибки:
count—;
if(!count) break;
dev_r.nlba++;
dev_r.buff += 0x100;
>
Команду чтения/записи данных устройству посылает функция send_command:
void send_command(u8 cmd)
<
hd_busy(CURRENT);
Выбираем устройства (ведущее/ведомое).
Ведущее устройство:
Чтение данных с устройства выполняет функция intr_read:
void intr_read()
<
int i = 0;
dev_r.complite = 0;
hd_busy(CURRENT);
if(check_error(CURRENT)) <
dev_r.err = 1;
return;
>
Перед тем, как приступить к рассмотрению драйвера файловой системы ext2, необходимо познакомиться с самой файловой системой, с её логической структурой. Об этом читайте во второй части статьи.
Исходники к статье
ЧАСТЬ 2
6. Структура файловой системы ext2
6.1. Основные компоненты файловой системы ext2
Как и в любой файловой системе UNIX, в составе файловой системы ext2 можно выделить следующие составляющие:
— блоки и группы блоков;
— информационный узел (information node);
— суперблок (superblock);
Блоки и группы блоков
Базовым понятием файловой системы является информационный узел, information node, или inode. Это специальная структура, которая содержит информацию об атрибутах и физическом расположении файла. Атрибутами файла являются его тип (обычный файл, каталог и т.д.), права доступа к нему, идентификатор владельца, размер, время создания. Информация о физическом расположении представляет собой последовательность абсолютных номеров блоков, содержащих данные файла.
От целосности суперблока напрямую зависит работоспособность файловой системы. Операционная система создает несколько резервных копий суперблока для возможности его восстановления в случае повреждения. Главная копия находится по смещению 1024 байт от начала раздела, на котором создана файловая система (первые 1024 байта зарезервированы для загрузчика операционной системы). Ранние версии файловой системы ext2 создавали копии суперблока в начале каждой группы блоков. Это приводило к большим потерям дискового пространства, поэтому позже количество резервных копий суперблока было уменьшено, и для их размещения были выделены группы блоков 0, 1, 3, 5 и 7.
6.2. Формат группы блоков
Обобщенная структурная схема файловой системы ext2 представлена на рис.3.
Практически все группы блоков имеют одинаковый формат. В каждой группе, помимо информационных блоков, хранится информация о занятости блоков и inode-ов группы в виде битовой карты. В состав группы блоков 0 входят также суперблок и таблица дескрипторов групп, которую мы рассмотрим ниже.
Inode-ы, находящиеся в пределах одной группы, собраны в таблицу. В битовой карте занятости inode-ов группы каждый бит характеризует состояние элемента в таблице inode-ов группы.
6.3. Алгоритм чтения файла
Каждый inode, как и блок, имеет порядковый номер, уникальный в пределах файловой системы, и содержит информацию только об одном файле. Таким образом, для получения доступа к содержимому файла необходимо знать порядковый номер соответствующего ему inode-а.
Имя файла в состав inode не входит, установление соответствия между именами файлов и порядковыми номерами inode-ов выполняется через каталоги.
Каталог, также как и файл, описывается при помощи inode. Содержимое каталога представляет собой массив записей, каждая из которых содержит информацию о файле, который находятся «внутри» текущего каталога.
Запись каталога имеет следующий формат:
— порядковый номер inode файла
— длина записи в байтах
— имя файла
— длина имени файла
Поиск номера inode файла всегда начинается с корневого каталога. Например, чтобы получить порядковый номер inode файла, находящегося в корневом каталоге, операционная система должна получить содержимое корневого каталога, найти в нем запись с именем этого файла, и извлечь из этой записи порядковый номер inode-a файла.
/*
* Special inode numbers
*/
#define EXT2_BAD_INO 1 /* Bad blocks inode */
#define EXT2_ROOT_INO 2 /* Root inode */
#define EXT2_ACL_IDX_INO 3 /* ACL inode */
#define EXT2_ACL_DATA_INO 4 /* ACL inode */
#define EXT2_BOOT_LOADER_INO 5 /* Boot loader inode */
#define EXT2_UNDEL_DIR_INO 6 /* Undelete directory inode */
Для записи корневого каталога зарезервирован inode под номером 2 (root inode). Этот inode находится в группе блоков 0 и занимает вторую позицию в таблице inode-ов этой группы. Номер первого незарезервированного inode хранится в суперблоке.
Определив порядковый номер inode файла, ядро вычисляет номер группы, в которой этот inode расположен, и его позицию в таблице inode-ов группы. Считав из этой позиции inode, операционная система получает полную информацию о файле, включая адреса блоков, в которых хранится содержимое файла.
Номер группы блоков, в которой расположен inode, вычисляется по формуле:
Позиция inode-а в таблице inode-ов группы определяется по формуле:
Рассмотрим пример получения содержимого файла test.file, находящегося в корневом каталоге. Для чтения файла /test.file необходимо:
— в массиве записей корневого каталога найти запись об этом файле
— извлечь порядковый номер inode файла, вычислить номер группы, в которой этот inode расположен
— из дескриптора данной группы извлечь адрес таблицы inode-ов группы
— вычислить позицию inode-а в этой таблице
— считать inode файла
— из inode-а извлечь адреса информационных блоков и осуществить чтение информации, находящейся в этих блоках
На рис. 4 подробно показаны этапы чтения файла /test.file.
1. Из группы блоков 0 считывается таблица дескрипторов групп
2. Из таблицы дескрипторов групп извлекается дескриптор группы блоков 0 и из него считывается адрес таблицы inode-ов группы 0
3. Из группы блоков 0 считывается таблица inode-ов
4. Порядковый номер inode корневого каталога фиксирован и равен 2, поэтому из таблицы inode-ов группы 0 считывается второй элемент, который содержит адрес блока с содержимым корневого каталога. Предположим, что этот блок расположен в группе блоков A
5. Из группы блоков A считывается блок, содержащий записи корневого каталога.
6. Выполняется поиск записи с именем «test.file». Если такая запись найдена, из нее извлекается порядковый номер inode файла «test.file».
Определив номер inode, можно получить доступ к информационным блокам файла (этапы 7-11):
1. Структура суперблока struct ext2_super_block
Если все в порядке, приступаем непосредственно к чтению файла.
В целом, алгоритм считывания данных из файла аналогичен алгоритму считывания данных с жесткого диска. Поэтому за комментариями обратитесь к п. 5 (функция read_blkdev()).
cache_buff = (u8 *)malloc(num_block * BLKSIZE);
memset(cache_buff, 0, num_block * BLKSIZE);
Считываем информационные блоки файла в буферный кеш:
Файловая система EXT (Ext2, Ext3, Ext 4)
Каждая файловая система Linux обладает своими преимуществами и недостатками. В этой статье мы детально рассмотрим особенности файловой системы EXT (Ext 2, Ext3, Ext4).
Содержание:
Что являет собой файловая система EXT?
Файловая система EXT (Extended File System) была разработана специально для операционной системы Linux. Главной целью, которую преследовали создатели EXT было преодоление максимального размера записываемых файлов, который в то время составлял всего лишь 64 МБ. Благодаря созданию новой структуры метаданных – максимально возможный размер файла увеличился до 2 ГБ. В то же время максимальная длина имен файлов увеличилась о 255 байт.
Главный разработчик файловой системы EXT Реми Кард восхищался файловой системой UFS, поэтому некоторые ее возможности перекочевали и в EXT.
Несмотря на то, что Linux поддерживает достаточно большое количество файловых систем, именно EXT является наиболее предпочтительной, поскольку она изначально построена на ядре Linux.
Хоть EXT и преодолела основные недостатки файловой системы Minix (которая использовалась в то время в Linux) ее главным недостатком были временные метки. В EXT разрешалось использовать только одну временную метку для каждого файла. Поэтому разработка EXT не прекратилась и в последующих версиях она постоянно развивалась и обрастала новыми возможностями.
Это сделало ее очень популярной не только среди пользователей Linux, но и среди владельцев смартфонов на Android, так как по умолчанию Android использует файловую систему Ext4.
Развитие файловой системы EXT. История изменений в версиях
Как уже упоминалось выше – хоть EXT и преодолела ограничения файловой системы Minix, у нее все же оставалась масса недостатков. Поэтому развитие EXT не остановилось и в будущем у нее появилось еще три версии.
Ext2
Так же, как и предыдущую, Ext2 создал Реми Кард. Эта файловая система увидела свет январе 1993 года.
Среди главных нововведений наиболее важным стало то, что теперь данные записывались в блоки одинаковой длины. Это позволило значительно повысить скорость работы c данными. Помимо этого, использование блоков данных позволило увеличить максимальный размер хранимых файлов. Теперь он составлял 2 Тб вместо прежних 2 ГБ. Длина имени файлов по-прежнему составляла 255 байт.
Но и недостатков у Ext2 было немало. Наибольшей проблемой было отсутствие журналирования. Если во время записи файлов на диск случались сбои питания – файловая система повреждалась и восстановить ее было достаточно сложно.
В некоторых случаях отсутствие журналирования было явным плюсом. К примеру, Ext2 обгоняет Ext3 по производительности. Поэтому в некоторых случаях Ext2 используется до сих пор. Кроме того, отсутствие журналирования снижает нагрузку на SSD накопители. Именно поэтому, некоторые компании используют Ext2, а в качестве защиты данных использую технологию RAID.
Более детально о RAID массивах вы можете прочесть в статье «RAID – что это такое и как использовать?»
Еще одним недостатком файловой системы Ext2 была большая фрагментация данных, из-за которой снижалась производительность. То есть, во время записи файл разбивался на несколько частей, затем они записывались на разные участки жесткого диска. Соответственно процесс чтения занимал больше времени. Чем больше информации хранилось на диске – тем ниже была скорость чтения/записи данных.
Поэтому, развитие файловой системы EXT не остановилось на этой версии и в ноябре 2001 года появилась следующая версия – Ext3.
Ext3
Файловая система Ext3 – являет собой доработанную версию Ext2. Информация все также записываются в блоки данных одинаковой длины, а максимальный размер файла остался на прежнем уровне – 2ТБ.
Однако добавилось журналирование – технология, которая позволяет значительно снизить риск потери информации.
Суть заключается в следующем — файловая система отмечает все планируемые изменения в структуре данных. В случае потери питания система мгновенно считает информацию с «журнала» и файлы не будут утеряны.
Ext3 поддерживает три уровня журналирования:
Файловая система Ext3 стала достаточно популярной и использовалась вплоть до появления следующей версии – Ext4.
Ext4
Ext4 – была представлена в 2008 году и на сегодняшний день является последней версией файловой системы EXT. Она использует базовые принципы Ext3, однако скорость работы была значительно увеличена (она даже выше чем в Ext2), увеличен максимальный размер файла до 16 ГБ, добавлена поддержка накопителей объемом до 1 Экзабайта и многое другое.
Нововведений достаточно много. Чтобы в них разобраться – перейдите к следующему пункту этой статьи.
Возможности файловой системы Ext4
Несмотря на то, что файловая система Ext4 использует основные концепции Ext3 — в ней присутствует большое количество нововведений, которые сделали ее столь популярной.
Начать стоит с пространственной записи файлов, которая используется для увеличения быстродействия файловой системы. Перед тем, как записать файл на диск – система выделяет нужную область на диске и после этого данные записываются в конец этой области.
В файловой системе Ext4 впервые была добавлена обратная совместимость с Ext2 и Ext3. К примеру, вы автоматически можете смонтировать Ext3 при помощи драйвера Ext4.
Следующим пунктом можно отметить появление экстентов. Дело в том, что в старых версиях отображение блоков данных файла реализовано старым способом – то есть, отображаются все блоки, относящиеся к конкретному файлу. Это накладывает некоторые ограничения при работе с файлами большого размера. К примеру, падает производительность.
Внедрение экстентов позволяет выводить большое количество последовательных блоков информации при помощи одного дескриптора. Такой подход увеличивает производительность файловой системы в несколько раз. Система сохраняет только адрес первого и последнего блока данных, которые соответствуют большому файлу.
Уменьшение фрагментации файлов за счет более рационального выделения блоков памяти является еще одним нововведением. Перед тем, как записать файл Ext4 выделяет блоки, которые находятся поблизости, чтобы сократить время поиска нужного блока во время чтения данных.
В Ext4 появилась функция отложенного выделения, которая выделяет блоки памяти непосредственно пере записью файлов на диск. Такой подход позволяет снизить нагрузку на кэш-память и соответственно увеличить производительность.
Новой для Ext4 стала возможность создавать неограниченное количество подкаталогов без потери производительности. Все дело в том, что Ext4 использует структуру данных HTree, которая является версией B-дерева, адаптированной специально для Ext4.
Нововведением, которое повышает уровень производительности и безопасности одновременно является внедрение контрольных сумм журналов. Этот метод постоянно проверяет блоки данных на наличие повреждений. В свою очередь это сокращает время журналирования, что увеличивает производительность.
Появилась быстрая проверка файловой системы. Реализована она следующим образом: в Ext4 таблицы inodes и свободные группы блоков помечены. Благодаря этому во время проверки файловой системы проверяются только блоки с данными.
Новой функцией стала e4defrag, которая позволяет дефрагментировать как весь диск, так и отдельные файлы. Снижение уровня фрагментации не только делает систему быстрее, но и снижает нагрузку на процессор и т.д.
Как видите нововведений достаточно много, и они позволяют сильно повысить уровень безопасности и производительности. В свою очередь, это именно то, что нужно пользователям. Поэтому Ext4 на сегодняшний день столь популярна.
Плюсы и минусы файловой системы Ext4
Несмотря на внедрение новых возможностей и увеличения производительности, минусов у файловой системы Ext4 тоже немало. Поэтому, перед тем, как начать использовать эту файловую на своем диске мы предлагаем пользователю сравнить ее плюсы и минусы.
К плюсам Ext4 можно отнести следующие:
К сожалению, минусов у файловой системы, Ext4 тоже хватает. Среди наиболее значимых можно выделить:
Теперь вы можете сравнить преимущества и недостатки файловой системы Ext4 и самостоятельно решить стоит ее использовать или нет.
Структура файловой системы EXT
Структура файловой системы EXT такая же, как и большинства файловых систем UNIX. Схематически структуру файловой системы EXT можно отобразить так:
То есть в структуре EXT можно выделить несколько основных составляющих:
Структура файловой системы для Ext2, Ext3 и Ext4 примерно одна и та же. Различаются только функциональные возможности каждой версии файловой системы EXT.
Стоит ли отключать журналирование
Главным предназначением журналирования является обеспечение возможности восстановления структуры файловой системы в случае сбоев или резкого отключения питания. В то же время процесс журналирования требует определенного времени и ресурсов. Поэтому некоторые пользователи решают отключить журналирование чтобы получить еще большую производительность.
Тут все несколько субъективно, поскольку отключать журналирование имеет смысл только в том случае, если у вас есть дополнительные средства защиты данных (к примеру, вы используете RAID 5).
Если же таковой защиты нет – лучше не отключать журналирование, поскольку прирост производительности будет очень небольшим, в то время как риск потери важных данных возрастет в несколько раз.
Однако, если вы все же захотите отключить журналирование позаботьтесь в первую очередь о дополнительной защите важных данных в виде резервных копий, использования RAID массивов или хотя бы об источнике бесперебойного питания.
Как открыть EXT накопитель в Windows?
Операционная система Windows в качестве нативной использует файловую систему NTFS. Поэтому, как только вы подключите накопитель, отформатированный в EXT, Ext2, Ext3, Ext4 – вы сразу же получите уведомление что файловая система накопителя не поддерживается.
Первый (и наилучший) способ заключается в использовании программы RS Partition Recovery. Программа проста в использовании. Вам достаточно просто установить ее на компьютер и можете сразу же подключать Ext2,3,4 накопитель и работать с данными. Даже перезагружать компьютер не нужно.
Но самое главное – RS Partition Recovery позволяет восстанавливать утерянные данные если что-то случится как с файловой системой, так и с самим файлом. К примеру, вы случайно удалили файл – не беда. Отформатировали накопитель, а не нем была важная информация – тоже не страшно. RS Partition Recovery восстановит ваши данные.
Также хотелось бы отметить поддержку ВСЕХ современных файловых систем, что делает RS Partition Recovery неким универсальным инструментом, который должен быть в арсенале каждого, что работает с данными.
Второй способ заключается в установке драйвера EXT2FSD, который добавляет поддержку файловой системы Ext 2, 3 или 4 в ОС Windows.
Главным недостатком этого способа является то, что драйвер EXT2FSD иногда конфликтует с драйверами устройств Windows и вместо обещанной поддержки EXT вы можете получить нерабочую операционную систему. Также нередко попытки восстановить работоспособность Windows могут привести к потере важных данных. Причем не только на диске С:\ но и на накопителе (если во время сбоя он был подключен к компьютеру).
Третий способ заключается в установке специального плагина для программы Total Commander под названием ext4tc. В этом способе также есть подводные камни. Во-первых, вам нужно будет приобрести сам Total Commander и уже потом дополнительно установить плагин ext4tc.
Кроме того, иногда после установки плагина ext4tc случаются сбои в работе файлового менеджера. Поэтому вам следует быть осторожными во время манипуляций с важными данными.
Мы же настоятельно не рекомендуем рисковать важной информацией, так как иногда она стоит дороже всего компьютера вместе с программами. Поэтому лучше всего использовать первый из вышеописанных способов.
Лучшие альтернативы файловой системы EXT
В сети все чаще появляется информация, что поскольку Ext4 не поддерживает функции следующего поколения – операционная система Linux в ближайшее время перейдёт на Btrfs. Поэтому, многие пользователи задаются вопросом стоит ли использовать Ext4 или лучше сразу же установить альтернативу в виде Btrfs или какой-то другой файловой системы?
Тут каждый принимает решение сам, однако, как не крути Ext4 не поддерживает многие современные функции. Поэтому, если вы хотите использовать файловую систему, проверенную временем, но готовы отказаться от многих современных возможностей – ваш выбор Ext4. Она стабильна, широко поддерживается и отлично работает.
Если для вас важно иметь современную файловую систему, которая будет поддерживать все новые функции и в то же время не боитесь иметь дело с несколько менее зрелой экосистемой — ваш выбор Btrfs. Кроме того, вы будете на шаг впереди, поскольку в ближайшее время большинство дистрибутивов Linux будет по умолчанию ее использовать.
Если же вы выбираете лучшую файловую систему для сервера, для вас важна надежность и минимальный риск потери данных – лучшей альтернативой будет файловая система ZFS. Тут есть один момент – чтобы максимально эффективно ее использовать – вам нужно будет прочесть много информации и изучить большое количество команд.
Использовать или не использовать файловую систему EXT – это личное дело каждого. Мы же надеемся, что после прочтения этой статьи вы сможете сделать выбор который максимально подходит под ваши нужды.