4 утилиты для устранения проблем файловых систем ext2, ext3 и ext4 в linux

Драйвер поддержки Ext2Fsd

https://sourceforge.net/projects/ext2fsd/files/Ext2fsd/0.69/

Программа Ext2Fsd – это драйвер Ext2/3/4, он реализует поддержку этих файловых систем на уровне операционной системы. С разделами диска и накопителями, форматированными в эти файловые системы, можно работать как с обычными, поддерживаемыми Windows устройствами информации в окне проводника или сторонних программ. Драйвер позволяет и считывать, и записывать данные.

Скачиваем последнюю актуальную версию Ext2Fsd.

При установке активируем (если для длительной работы) три предлагаемых чекбокса:

•1 — Автозапуск драйвера вместе с Windows;•2 — Поддержка записи для Ext2;•3 — Поддержка форматирования для Ext3.

На предфинишном этапе активируем опцию запуска окошка диспетчера драйвера — Volume Manager — с попутным присвоением устройствам информации с Ext2/3/4 буквы диска.

В окошке открывшегося Volume Manager увидим носитель с уже присвоенной буквой. Например, в нашем случае носителю с Ext4 задана первая свободная буква F.

Теперь можем работать с диском F в окне проводника.

Присвоить букву новым подключаемым устройствам с Ext2/3/4 можно с помощью контекстного меню, вызываемого на каждом из отображаемых в окне Volume Manager устройств. Но просто при присвоении буквы диска такое устройство не будет отображаться после перезагрузки Windows, это решение только для одного сеанса работы с компьютером. Чтобы сделать новое устройство с Ext2/3/4 постоянно видимым в среде Windows, необходимо двойным кликом по нему открыть настроечное окошко и установить постоянные параметры подключения. Во второй графе нужно:

• Для съёмных носителей активировать чекбокс, обозначенный на скриншоте цифрой 1, и указать букву диска;• Для внутренних дисков и разделов активировать чекбокс, обозначенный на скриншоте ниже цифрой 2, и также указать букву диска.

Далее применяем всё только что настроенное: нажимаем внизу «Apply».

В этой статье рассказывается о том, как вы можете получить доступ к разделам файловой системы Linux Ext2, Ext3 и Ext4 в Windows 10 и автоматически сохранить их в проводнике, как все другие разделы NTFS или FAT32. Вы даже можете копировать файлы и записывать новый файлы на эти разделы.

Хотя Windows использует файловую систему NTFS и FAT32, Linux (например, Ubuntu) использует расширенные архитектуры файловой системы Ext 3, Ext4 и т. д. Самое интересное то, что Linux может получать доступ, читать и записывать файлы в файловые системы Windows, а Windows не может получить доступ к файлу Linux — системы. Я имею в виду, что Windows не имеет поддержки для чтения или доступа к разделам Ext3 или Ext4.

Таким образом, если у вас есть система с двойной загрузкой или более, в которой вы можете переключаться между Windows и Linux из меню загрузчика, иногда вам может понадобиться доступ к Linux-дискам / разделам. Или предположим, что вы находитесь в Windows, и у вас есть съемный / жесткий диск, который отформатирован в Ext3, и теперь вам нужно открыть файл внутри него. Или ваша система Linux «зависла», и вам необходимо восстановить важные файлы с помощью Windows. В таких случаях вам необходимо прочитать эти файловые системы без переключения с Windows.

Хотя Windows никогда не интересовалась файловыми системами Linux, к счастью, существуют сторонние диски и инструменты для открытия и чтения разделов Linux из Windows. Мы рассмотрим несколько инструментов в этой статье. Однако здесь мы будем использовать драйвер файловой системы Linux с открытым исходным кодом под названием Ext2Fsd, который предназначен исключительно для поддержки Ext2 / 3/4 в Microsoft Windows. При этом вы можете автоматически монтировать разделы Ext при загрузке диска, когда вам нужно.

  • Размонтируйте разделы Linux Ext4 / 3/2 в проводнике Windows с помощью Ext2Fsd
  • Загрузите Ex2Fsd из sourceforge.net/projects/ext2fsd/.

Монтирование файловой системы

Чтобы вручную смонтировать файловую систему, расположенную на устройстве (например, раздел) к каталогу, используйте . В этом примере монтируется в .

# mount /dev/sda1 /mnt

Это прикрепляет файловую систему раздела в каталог , делая содержимое файловой системы видимым. Любые данные, существовавшие в перед этим действием, становятся невидимыми до тех пор, пока устройство не будет размонтировано.

fstab содержит информацию о том, как устройства должны автоматически монтироваться, если они присутствуют. Для получения дополнительной информации о том, как изменить это поведение, смотрите статью fstab.

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

# mount /dev/sda1

Или

# mount /mnt

mount содержит несколько параметров, многие из которых зависят от указанной файловой системы.
Параметры могут быть изменены:

  • использование флагов в командной строке с mount
  • редактирование fstab
  • создание правил udev
  • самостоятельно компилировать ядро
  • или используя скрипты монтирования файловой системы (расположенные по адресу ).

Более подробную информацию смотрите в связанных статьях и статье интересующей файловой системы.

Список смонтированных файловых систем

Чтобы просмотреть все смонтированные файловые системы, используйте :

$ findmnt

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

$ findmnt /dev/sda1

findmnt собирает информацию из , и .

Размонтирование файловой системы

Чтобы размонтировать файловую систему, используйте . Можно указать либо устройство, содержащее файловую систему (например, ), либо точку монтирования (например, ):

# umount /dev/sda1

Или

# umount /mnt

Отличия файловых систем Linux и Windows

В файловых системах Linux отсутствуют папки Windows, Program Files, Users (хотя каталог /home/ очень похож на папку Users в Windows).

Структура каталогов Linux не просто использует разные имена для папок и файлов. В ней применяется в целом иной принцип их расположения. Например, приложение в Windows может хранить все свои файлы в папке C:\Program Files\Имя_приложения, в то время как в Linux данные файлы будут разделены между несколькими расположениями: двоичные файлы будут помещены в /usr/bin, библиотеки — в /usr/lib, а конфигурационные файлы — в /etc/.

Структура каталогов в Debian Linux

Чувствительность к регистру

В Windows вы не можете в одной папке одновременно иметь файлы file и FILE. Файловая система Windows не чувствительна к регистру, поэтому она обрабатывает их имена как один и тот же файл.

В Linux же файловая система является чувствительной к регистру букв. Это означает, что у вас в одной папке могут находиться файлы с именами file, File и FILE соответственно. При этом они будут отличаться своим содержимым, т.к. Linux рассматривает заглавные и строчные буквы как разные символы.

Косая черта vs. Обратная косая черта

Windows, как и DOS, использует обратную косую черту. Например, путь к каталогу пользователя в Windows имеет следующий вид:

В Linux же путь к домашнему каталогу пользователя представлен в виде:

Примечание: Также не трудно заметить, что URL-адрес в вашем веб-браузере — даже в Windows — использует символ прямой косой черты, например, .

Символ «/» вместо буквы диска

Каждому разделу или целому диску в Windows назначается соответствующая буква. Независимо от того, имеется ли у вас несколько жестких дисков, несколько разделов на одном жестком диске или подключены съемные устройства, каждая файловая система будет доступна под своей собственной буквой:

В Linux же дела обстоят совсем иначе: вместо букв здесь применяются пути к различным каталогам (в Windows такое тоже возможно, но требуется дополнительная настройка).

В Linux все файлы находятся в — корневом каталоге. Вне корневого каталога файлов нет. Когда вы подключаете к компьютеру какое-нибудь устройство, оно монтируется (подключается) в разделе /media/. При этом содержимое каталога будет отображать содержимое смонтированного раздела:

Если у вас несколько жестких дисков или разделов жесткого диска, вы можете смонтировать их в любом месте вашей файловой системы. Например, разместить свои домашние каталоги в отдельном разделе, смонтировав его в /home или в любой другой каталог, даже в /myBackupDrive.

Everything is a File

Точно так же, как каждая смонтированная файловая система является каталогом внутри корневого каталога , всё в Linux является файлом. Например, ваш первый жесткий диск в системе представлен каталогом /dev/sda, CD-привод доступен в /dev/cdrom, а ваша мышь — в /dev/mouse.

Примечание: Детально о принципе «Everything is a File» в Linux-системах мы расскажем в отдельной статье.

Вы можете удалять или изменять открытые файлы

В Linux и других UNIX-подобных операционных системах приложения не блокируют доступ к файлам так, как это делает Windows. Например, предположим, что вы смотрите фильм через медиаплеер VLC в Windows. Идут титры, вы закончили его смотреть и поэтому пытаетесь удалить. Система выдаст сообщение об ошибке — вам нужно прекратить просмотр файла в VLC, прежде чем вы сможете удалить его (переименовать или сделать с ним что-либо еще).

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

Создание файловой системы

Файловые системы обычно создаются на разделе, внутри логических контейнеров, таких как LVM, RAID и dm-crypt, или в обычном файле (смотрите w:Loop device). В этом разделе описывается случай раздела.

Важно:

  • После создания новой файловой системы данные, ранее сохраненные на этом разделе, вряд ли можно будет восстановить. Создайте резервную копию любых данных, которые вы хотите сохранить.
  • Цель данного раздела может ограничить выбор файловой системы. Например, системный раздел EFI должен содержать файловую систему FAT32 (), а файловая система, содержащая каталог , должна поддерживаться с помощью загрузчика.

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

$ lsblk -f
NAME   FSTYPE   LABEL       UUID                                 MOUNTPOINT
sda
├─sda1                      C4DA-2C4D                            
├─sda2 ext4                 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 /mnt
└─sda3                      56adc99b-a61e-46af-aab7-a6d07e504652 

Перед продолжением необходимо файловые системы. В приведенном выше примере существующая файловая система находится на и монтируется в . Он будет размонтирован командой:

# umount /dev/sda2

Чтобы найти только смонтированные файловые системы, смотрите .

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

Например, чтобы создать новую файловую систему типа ext4 (обычно для разделов данных Linux) на , запустите:

# mkfs.ext4 /dev/sda1

Совет:

  • Используйте флаг mkfs.ext4, чтобы указать . e2label можно использовать для изменения метки в существующей файловой системе.
  • Файловые системы могут быть изменены после создания с определенными ограничениями. Например, размер файловой системы XFS может быть увеличен, но он не может быть уменьшен. Для получения допольнительной информации смотрите и соответствующую документацию файловой системы.

Новая файловая система теперь может быть смонтирована в выбранный каталог.

С высоты птичьего полёта

Эта диаграмма — картина файловой системы в целом:

На данной диаграмме каждый слой следует рассматривать как отдельную полноценную файловую систему с иерархией директорий от самого »/» (корня). Эти слои расположены друг над другом, и это достигается с применением файловой системы UnionFS. Довольно просто представить, как эта конструкция работает. Например, пусть на «розовом» уровне расположен файл . Он также будет виден и на «синем» уровне. Однако если синий уровень уже сам содержит файл с точно таким же названием, то он виден уже не будет, так как на него «наслоился» тот же самый файл с более верхнего («розового») уровня.

Вот описание каждого из уровней:

ramdisk
Это файловая система типа tmpfs, существующая в оперативной памяти, в которой создаются и изменяются файлы.
pup_save.3fs
Этот файл — постоянное хранилище, где все ваши данные, настройки, email, установленные пакеты и т.д. сохранены на постоянной основе. ».3fs» означает, что файл содержит файловую систему типа ext3.
pup_xxx.sfs
Этот файл и есть Puppy. Встроенные приложения, оконный менеджер, скрипты — всё это. Здесь ».sfs» означает, что данный файл содержит сжатую файловую систему типа squashfs, а «xxx» — номер версии Puppy. Например, для Puppy 3.01 «ххх» будет «301».
*_xxx.sfs
Эти файлы содержат дополнительные файловые системы типе squashfs. Здесь «*» может быть чем угодно. Например, devx_xxx.sfs — полная среда программирования С/С++.

Вот, что, однако, тут следует отметить. Всё это хозяйство находится «под ковром». Когда мы работаем с Puppy, то всё, что мы видим (с нашего верхнего уровня) — это единая файловая система. Таким образом, в нашем примере, мы видим файл /usr/lib/libgdkxft.so, и для нас не будет иметь значения, на каком уровне он находится на самом деле.

Заманчивая альтернатива уже существующей файловой системе squashfs — использовать какой-нибудь существующий дистрибутив линукса (underdog.lnx) как нижний уровень для неё:

Что приведенная выше диаграмма скрывает — это то, что самый нижний уровень в данном случае — раздел диска, а не сам файл underdog.lnx. Сам файл underdog.lnx — это просто текстовый файл, содержащий название этого раздела, например, «hda1».

При загрузке, Puppy прочитает файл underdog.lnx и смонтирует упомянутый в нём раздел как самый нижний уровень. Если окажется, что этот раздел содержит установленный на него дистрибутив линукса, то он целиком будет «просвечивать» через верхние уровни unionfs в Puppy.

При этом, мы будем видеть, как мы запускаем JWM и/или что-то ещё, будем видеть наш рабочий стол, и одновременно целый дистрибутив (из нижнего уровня) будет также доступен нам для работы: все приложения, среды программирования, менеджеры пакетов, и т.д.

Из первых двух диаграмм вы увидели, что уровни unionfs могут быть очень разными. В связи с этим (и еще с кое-чем другим), у Puppy появилась «переменная состояния» — PUPMODE, которая показывает в каком состоянии (конфигурации слоёв) Puppy в настоящий момент запущен. Эта переменная определена в файле как целое число. Например, «12». Каждое значение PUPMODE требует отдельного описания.

Использование Ext4

Я уже подробно рассказывал как создавать разделы Ext3 и Ext4 в отдельной статье. Сегодня я упомяну об этом только кратко. Чтобы создать раздел Ext4 выполните:

Здесь /dev/sdb1 — имя вашего раздела, на котором надо создать файловую систему. Куда интереснее разобраться с опциями монтирования Ext4:

  • atime/noatime — обновлять или не обновлять временную метку последнего доступа к файлам;
  • journal_checksum/nojournal_checksum — добавляет контрольные суммы для записей журнала, это позволяет лучше находить повреждения;
  • barrier/nobarier — сбрасывать данные на диск, прежде, чем применять изменения для метаданных файловой системы. По умолчанию включено;
  • min_batch_time — время между сбросами данных на жесткий диск. По умолчанию 0 миллисекунд. Увеличение этого параметра улучшит пропускную способность файловой системы, но увеличит задержки;
  • discard/nodiscard — определяет надо ли выполнять команду discard/trim для диска при освобождении блоков, полезно для SSD, выключено по умолчанию;
  • max_dir_size_kb — максимальный размер одной папки в килобайтах;
  • data — определяет режим журналирования, о котором мы говорили выше: journal, ordered, writeback. По умолчанию используется ordered;
  • acl/noacl — включает или отключает поддержку ACL списков
  • quota — включает поддержку управления квотами в файловой системе, для управления используются специальные утилиты;
  • commit — записывать изменения сохраненные в журнале в файловую систему каждые n секунд. По умолчанию — каждые 5 секунд;
  • errors — указывает что надо делать при ошибке. Доступные значения: ontinue, remount-ro, panic.

Здесь перечислены далеко не все опции, а только самые интересные. Более подробное описание опций монтирования смотрите выполнив команду:

Монтирование Ext4 выполняется с помощью команды mount:

Во время монтирования можно указать желаемые опции, например:

Например, здесь мы включили максимальный уровень журналирования, увеличили время между записями данных в файловую систему из журнала до 60 секунд, а также отключили обновление метки atime. Аналогично, опции можно задать в /etc/fstab. Для этого добавьте их в четвертую колонку строки монтирования диска:

Параметр defaults удалять не следует, просто добавляйте нужные вам опции после него.

Разработка Ext4

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

Разработчики хотят научить файловую систему считать контрольные суммы для метаданных. Это позволит выявлять повреждённые суперблоки и использовать вместо них альтернативные. Сейчас это можно сделать только вручную. Ещё один момент, который хотят улучшить разработчики — это квоты. Сейчас они находятся в пространстве пользователя, но их надо перенести в ядро чтобы улучшить производительность. Кроме того надо увеличить максимальный размер блока. В наше время SSD уже используют размер блока в 8 килобайт, а Ext4 все ещё может выделять блоки до 4 килобайт. Это ещё больше уменьшит фрагментацию и улучшит производительность.

Примеры

По умолчанию раздел TMPFS имеет максимальный размер устанавленный от половины всей вашей оперативной памяти, но это можно настроить

Обратите внимание, что фактическое потребление памяти/подкачки зависит от того, на сколько вы заполните её, так как разделы TMPFS не потребляют память до тех пор, пока это будет на самом деле необходимо.. Чтобы точно установить максимальный размер, в данном примере, чтобы переопределить значение по умолчанию для монтирования , используем опцию монтирования :

Чтобы точно установить максимальный размер, в данном примере, чтобы переопределить значение по умолчанию для монтирования , используем опцию монтирования :

/etc/fstab
tmpfs   /tmp         tmpfs   nodev,nosuid,size=2G          0  0
Limiting the size, and specifying uid and gid + mode is very secure. For more information on this subject, follow the links listed in the  section.

Вот более сложный пример, показывающий, как добавить монтирование TMPFS для пользователей. Это полезно для веб-сайтов, MySQL TMP файлов, , и многое другое

Очень важно, попытаться получить идеальные параметры монтирования для того, что вы пытаетесь достичь. Цель состоит в том, чтобы получить безопасные параметры, насколько это возможно, чтобы предотвратить повышенное использование

Будет безопасным ограничить размер, указать Uid и GID + mode. Для получения дополнительной информации по этому вопросу, пройдите по ссылкам перечисленным в секции .

/etc/fstab
tmpfs   /www/cache    tmpfs  rw,size=1G,nr_inodes=5k,noexec,nodev,nosuid,uid=648,gid=648,mode=1700   0  0

Смотрите справочную страницу для получения дополнительной информации. Полезная опция монтирования из справочной страницы является опция . По крайней мере понятная.

Перезагрузитесь, для того чтобы изменения вступили в силу

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

После применения изменений, вы можете убедиться в том, что они вступили в силу, посмотрев в и используя :

$ findmnt --target /tmp
TARGET SOURCE FSTYPE OPTIONS
/tmp   tmpfs  tmpfs  rw,nosuid,nodev,relatime

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

# mount -o remount,size=4G,noatime /tmp

Что такое XFS?

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

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

Зачем так делать?

У каждого из разделов своя задача. Разбивка диска для linux между несколькими разделами изолирует их один от другого. Если на одном разделе, например, домашнем закончится место, то система все еще сможет нормально работать, потому что это никак не касается корневого раздела.

Вынесение домашнего раздела также очень полезно при переустановках. Так вы сможете переустановить систему но сохранить все свои данные. Или же еще можно использовать одного пользователя в нескольких системах.

Загрузчик выносится на отдельный раздел, если файловая система вашего корневого раздела не поддерживается Grub, например, если вы используете Btrfs, xfs и т д. Также такая разбивка диска на разделы linux нужна если вы применяете технологию LVM или шифрование. Кроме того, загрузчик быстрее обнаружит свои файлы, если они будут на небольшом разделе в начале диска, а не где-то в дебрях много — гигабайтовой файловой системы.

На серверах иногда выделяются разделы /var и /usr. Это нужно опять же для изоляции и безопасности, например, вы можете запретить с помощью опции монтирования выполнение файлов с раздела /var.

Полная инсталляция — PUPMODE 2

Многие пользователи Puppy знают, что существует 2 способа установки Puppy на жесткий диск: то, что мы называем «опицией 1» и «опцией 2».

Опция 1 — выбор с наименьшим проникновением в систему (наименее инвазивный), при котором просто производится копирование файлов vmlinuz, initrd.gz и pup_xxx.sfs в выбранный раздел носителя. Чтобы загружать Puppy, установленный таким способом, Универсальный Установщик предлагает создать загрузочный гибкий диск. Однако, в настоящий момент, загрузочный гибкий диск может загрузить только тот Puppy, который установлен на раздел с файловой системой FAT. Для загрузки Puppy также возможно сконфигурировать программы Grub или Lilo. Преимущество данной опции в том, что при таком раскладе установка Puppy никак не влияет на какие-либо другие разделы носителя, и, если на них уже установлены Windows или другие дистрибутивы Linux, то они останутся совершенно нетронутыми. При Опции 1 загрузка Puppy проходит в режиме PUPMODE12.

Опция 2 означает, что Puppy устанавливается на целый раздел, который должен быть линукс-разделом (ext2, ext3, reiserfs). Это рекомендуется разработчикам или вообще всем, кто собирается компилировать программы, так как такой способ экономит свободное место на диске.

Это — самая простая конфигурация из всех. Нет никакого рамдиска, а сам раздел смонтирован прямо на самый верхний уровень. На самом деле, если не надо загружать никаких ».sfs», то Puppy не будет использовать unionfs, поскольку нет никаких слоев.

PDEV1 , обозначенная на диаграмме — просто переменная в файле , содержащая название раздела, например hda1, который монтируется прямо в »/« (корень). Но как узнать, какое значение примет PDEV1 во время загрузки? Утверждать, что это значение записано в файле /etc/rc.d/PUPSTATE , который находится на загружаемом разделе — это все равно, что говорить, что яйцо было раньше курицы (яйцо действительно было раньше курицы, но Барри об этом, видимо, не знал — прим перев). Этот файл, в действительности существует только для скриптов, которым нужно знать, откуда Puppy загрузился. В данном случае, Puppy загружается с гибкого диска, с загрузочного USB-флеш накопителя или с помощью Grub или Lilo. Универсальный Установщик дает возможность задействовать на выбор: гибкий диск, USB или Grub.

Семейство Ext

Ext (EXTENDED FILE SYSTEM) – преемник Minix. Создание разделов выросло до 2 ГБ, а допустимая длина имени файлов повысилось до 255 символов.  Она обладает одним большим недостатком, негативно влияющий на ее популярность: способ запоминания свободных блоков и узлов приводит к значительной фрагментации диска, что отрицательно сказывается на общей производительности.

Ext2

Ext2 – позже стала заменой Ext. За короткое время для linux стала главной файловой системой. По сравнению с предшественницей, она предлагает много преимуществ:

  • поддерживает разделы до 4 ТБ, файлы до 2 ГБ;
  • обнаруживает повреждения, появившиеся в механизме хранения;
  • В случае повреждения сектора восстановление происходит самостоятельно, используя программу e2fsck;;
  • выполняет проверку после аварийного ее отключения или каждый определенный период времени;
  • имеет высокую производительность благодаря предотвращению фрагментации.

Недостатки:

  • долгое сканирование после неправильного завершения работы;
  • низкая производительность в случае с очень маленькими файлами;
  • низкая эффективность при работе с каталогами.

Ext3

Ext3 – усовершенствованный тип ФС на основе Ext2 для SSD. По стандарту задействована в большинстве дистрибутивов с использованием ядра версии 2.4 и более нового. Имеет следующие особенности:

  • Журналирование – механизм учета, повышающий безопасность системы;
  • Индексированные каталоги – значительно увеличена производительность ОС при большом количестве файлов;
  • Синхронная запись – в последних версиях системы Ext3 (ядро 2.4.19) работает более чем в 10 раз быстрее, чем версия Ext2;
  • Полная совместимость с Ext2.

Ext4

Ее разработка началась с 2006 года, с момента создания двух изменений к Ext3. Первый из них расширил величину блоков до 48 бит, вторая заменила механизм косвенной блокировки адреса так называемыми экстентами, областями блоков данных. Поскольку после внедрения этих нововведений структура данных на диске меняется, программисты решили, что эти обновления не будут введены в старую систему ext3, но на основе их кода будет разработана новая версия Ext4. Она работает с 48-битными блоками. Размер стандартного блока составляет 4 килобайта. Благодаря этому, ее размер может достигать до 248 блоков по 4 кбайт, что составляет один экзабайт (1024 петабайт) вместо 16 терабайт, что наблюдалось в Ext3.

/proc и /sys

Помимо /tmp, виртуальные файловые системы, с которыми знакомо большинство пользователей Linux — это /proc и /sys (/dev полагается на общую память и не поддерживает file_operations). Но зачем аж две? Давайте разбираться.

Файловая система procfs предоставляет моментальный снимок состояния ядра и процессов, которые оно контролирует в пространстве пользователя. Кроме того, в /proc ядро делает доступной информацию о прерываниях, виртуальной памяти и планировщике. А ещё в /proc/sys размещены параметры, которые можно настроить из пространства пользователя с помощью команды sysctl. Состояние и статистика по каждому процессу находятся в директориях /proc/<PID>.

/proc/meminfo — пустой файл, но тем не менее, он содержит информацию о памяти

Кажущаяся пустота /proc имеет смысл, поскольку доступная информация динамическая и актуальная на момент получения. Ситуация с файловой системой /sys. Давайте сравним сколько файлов, размером хотя бы один байт, находятся в /proc и /sys:

В procfs такой файл только один — это конфигурация ядра, которую надо генерировать только один раз во время загрузки. С другой стороны в каталоге /sys содержится много файлов большого размера, но большинство из них составляют одну страницу памяти. Обычно файлы из sysfs содержат одно число или строку, в отличие от таблиц информации, например, из /proc/meminfo.

Цель sysfs — предоставить доступ для чтения и записи свойств так называемых объектов kobjects в пользовательском пространстве. Единственная цель kobject — подсчёт ссылок, когда последняя ссылка на kobject будет удалена, система освободит ресурсы, связанные с ним. К тому же, /sys/ составляет основную часть стабильного ABI ядра для пользовательского пространства, которую никто и ни при каких обстоятельствах не может сломать. Но это не значит, что файлы в sysfs статичны. Это бы противоречило подсчёту ссылок.

Стабильность ABI ограничивает то, что может появится в /sys, а не то, что на самом деле есть в любой конкретный момент. Перечисление разрешений на файлы в sysfs дает представление о том, что настраиваемые параметры устройств, модулей и файловых систем можно прочитать и изменить. По логике procfs тоже должна быть частью стабильного ABI ядра, однако в документации об этом ничего не сказано.

Файлы в sysfs можно читать или записывать или всё вместе. Здесь 0 означает, что SSD не извлекаем.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: