Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:ext4 [2011/07/18 08:08] [e2fsprogs] |
wiki:ext4 [2018/09/27 20:14] (текущий) Орфографическая ошибка |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Ext4 ====== | ====== Ext4 ====== | ||
- | Ext4 — журналируемая файловая система, используемая по умолчанию в Ubuntu, начиная с версии 9.10. При создании ФС до 1,8% объёма может быть зарезервировано под служебные нужды, в дальнейшем размер этих данных увеличиваться не будет. Как и в других ФС, используемых в Linux, регистр в именах файлов имеет значение, то есть "Документ.txt" и "документ.txt" — это разные файлы, и они без проблем могут находиться в одной директории. | + | Ext4 — журналируемая файловая система, предлагаемая для использования по умолчанию инсталятором Ubuntu, начиная с версии 9.10. Количество индексных дескрипторов (i-node) задается только при создании ФС и в дальнейшем может быть только уменьшено((хотя по умолчанию число дескрипторов задается довольно большим, но при записи огромного числа маленьких файлов возможна ситуация когда дескрипторов не хватит, а место на диске еще есть:-()). При создании ФС приблизительно 1,8% объёма диска занимается служебными структурами ФС((в частности на i-node)), в дальнейшем размер этих данных увеличиваться будет только на размер каталогов файлов. Кроме того еще 5% (по умолчанию) резервируется для root((этот резерв можно отключить утилитой tune2fs)). Как и в других ФС, используемых в Linux, регистр в именах файлов имеет значение, то есть "Документ.txt" и "документ.txt" — это разные файлы, и они без проблем могут находиться в одной директории.\\ В отличии от Ext3 в Ext4 пространство под файлы выделяется экстентами: extent - последовательная цепочка блоков, для идентификации которой используется только указатель на начало и длина в блоках (тогда как в Ext2/3 при выделении места используются отдельные блоки и требовалось перечислять все блоки, в которых размещен файл). |
- | ===== Дефрагментация ===== | + | Все утилиты требуемые для работы с Ext4 содержатся в пакете //e2fsprogs//. |
- | ФС в Linux изначально спроектированы так, чтобы файлы фрагментировались как можно меньше. Тем не менее, фрагментированность файлов имеет место быть, и в некоторых случаях может привести к заметному падению производительности дисковой подсистемы. | + | ===== Форматирование раздела ===== |
+ | Для того, чтоб отформатировать раздел достаточно выполнить комманду: | ||
+ | <code> | ||
+ | sudo mkfs.ext4 /dev/<xxx> | ||
+ | </code> | ||
+ | где <xxx> - название раздела на котором требуется создать файловую систему Ext4. Например, sda4 (смотри "Системный монитор - Файловые системы"). | ||
- | Вопреки расхожему мнению, дефрагментатор для Ext4 есть, и не один. | + | <note warning>Последствия этой команды необратимы. Вся информация, хранящаяся на разделе к которому она применялась, будет утеряна.</note> |
- | * [[http://e2fsprogs.sourceforge.net/| e2fsprogs]]. На 14.11.2010 дефрагментатора ''e4defrag'' ещё нет в текущем стабильном релизе, но он есть в [[http://git.kernel.org/?p=fs/ext2/e2fsprogs.git;a=summary|git'е]]. | + | ===== Конвертация Ext3 разделов в Ext4 ===== |
+ | ==== Монтирование раздела как Ext4 ==== | ||
+ | Этот способ можно считать самым безопасным, так как физически на диске ничего не меняется и вернуться обратно к Ext3 не составит труда. При монтировании Ext3 как Ext4 будут доступны некоторые оптимизации добавленые в Ext4. | ||
+ | |||
+ | ==== Конвертация в Ext4 ==== | ||
+ | Полная конвертация раздела добавит большую часть нововведений Ext4, но некоторые из них будут применяться только к новым файлам. Для того, чтобы выполнить конвертацию раздела в Ext4 достаточно выполнить следующие действия: | ||
+ | -- Включение новых возможностей на разделе с Ext3: | ||
+ | ..<code> | ||
+ | sudo tune2fs -O extents,uninit_bg,dir_index /dev/<xxx> | ||
+ | </code> | ||
+ | -- Проверка раздела на наличие ошибок: | ||
+ | ..<code> | ||
+ | sudo e2fsck -pDf /dev/<xxx> | ||
+ | </code> | ||
+ | где <xxx> - название раздела который требуется конвертировать в Ext4. | ||
+ | <note warning>После выполнения этой команды монтирование раздела в Ext3 будет невозможно. Если раздел прописан в [[wiki:fstab|fstab]], не забудьте внести соответствующие правки.</note> | ||
+ | |||
+ | ===== Дефрагментация ===== | ||
+ | ФС в Linux изначально спроектированы так, чтобы фрагментация файлов была как можно меньше. Тем не менее, фрагментированность файлов имеет место быть, и в некоторых случаях может привести к заметному падению производительности дисковой подсистемы. | ||
+ | |||
+ | Для Ext4 есть несколько дефрагментаторов: | ||
+ | |||
+ | * [[http://e2fsprogs.sourceforge.net/| e2fsprogs]]. Онлайн дефрагментатор из стандартного набора утилит. | ||
* [[http://ck.kolivas.org/apps/defrag/|Defrag]]. Дефрагментатор от Кона Коливаса. Случаются перерывы в разработке, но проект живой, в 2010 появился [[репозиторий#при_помощи_консоли_новый_способ|PPA-репозиторий]]: ''ppa:e2defrag/ppa''. | * [[http://ck.kolivas.org/apps/defrag/|Defrag]]. Дефрагментатор от Кона Коливаса. Случаются перерывы в разработке, но проект живой, в 2010 появился [[репозиторий#при_помощи_консоли_новый_способ|PPA-репозиторий]]: ''ppa:e2defrag/ppa''. | ||
* [[http://vleu.net/shake/|Shake]]. Онлайн-дефрагментатор, PPA-репозиторий: ''ppa:un-brice/ppa''. | * [[http://vleu.net/shake/|Shake]]. Онлайн-дефрагментатор, PPA-репозиторий: ''ppa:un-brice/ppa''. | ||
==== e2fsprogs ==== | ==== e2fsprogs ==== | ||
- | + | -- Проверка необходимости дефрагментации: | |
- | -- Скачаем из git и соберём: | + | |
..<code> | ..<code> | ||
- | sudo aptitude install git | + | sudo e4defrag -c /dev/<xxx></code> |
- | cd /usr/src | + | ..где <xxx> - название раздела, который требуется дефрагментировать. Например, sda4. |
- | sudo git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git | + | -- запуск дефрагментации: |
- | cd e2fsprogs | + | |
- | sudo ./configure | + | |
- | sudo make | + | |
- | </code> | + | |
- | -- запускаем дефрагментацию: | + | |
..<code> | ..<code> | ||
- | cd misc | + | sudo e4defrag /dev/<xxx></code> |
- | sudo ./e4defrag /dev/<xxx></code> | + | ..где <xxx> - название раздела, который требуется дефрагментировать. Например, sda4. |
- | ..где <xxx> - имя раздела, например, sda4 | + | -- проверка результата (в последней строке вывода должно быть ⩽0.3% non-contiguous): |
- | -- проверяем последнюю строчку вывода (должно быть ⩽0.3% non-contiguous): | + | |
..<code> | ..<code> | ||
- | sudo fsck -n /dev/sda4 | + | sudo fsck -n /dev/<xxx> |
</code> | </code> | ||
+ | |||
===== Оптимизация дискового пространства ===== | ===== Оптимизация дискового пространства ===== | ||
- | Как вы уже заметили, на свежесозданном разделе с ext4 обычно выделяется меньше свободного дискового пространства и это становится заметным при копировании больших объемов информации. Почему это происходит? | + | На свежесозданном разделе с Ext4 обычно выделяется заметно меньше свободного дискового пространства чем размер раздела. Это происходит потому, что используется порядка 1,8% на служебные нужды: заголовки групп блоков, бинарные поля для учета свободного места, индексные дескрипторы (i-node), основной и множество резервных копий суперблока.\\ |
- | По умолчанию резервируется 5% от объема раздела при создании файловой системы на нем. Это необходимо для уменьшения фрагментации, для ведения журналирования а также некоторый объем откладывается для нужд учетной записи суперпользователя (root) и системных служб (daemons). Обычно это справедливо для системного корневого раздела, но на пользовательских разделах это не всегда приемлемо, особенно на разделах небольшого размера, например 120 ГБ; где может сказаться банальная нехватка свободного места. | + | Также по умолчанию, дополнительно резервируется 5% от объема раздела для нужд учетной записи суперпользователя (root) и системных служб (daemons). Обычно это полезно для системного корневого раздела, но на пользовательских разделах необходимости в этом резерве нет, особенно на разделах большого размера, где 5% превращаются в очень приличные объемы (недоступные пользователю). |
- | Давайте исправим положение. | + | ==== Изменение процента зарезервированных блоков для нужд суперпользователя ==== |
- | + | По умолчанию резервируется 5% от объема раздела или диска. Значение 0 отключает резервирование блоков, значение 5 - устанавливает резервирование на 5%. | |
- | Уменьшим процент зарезервированных блоков для нужд суперпользователя. По умолчанию резервируется 5% от объема раздела или диска: | + | |
- | Значение 0 отключает резервирование блоков, значение 5 - устанавливает резервирование на 5%. | + | |
<code> | <code> | ||
- | sudo tune2fs -m 1 | + | sudo tune2fs -m 0 /dev/<xxx> |
</code> | </code> | ||
- | Установим процент зарезервированных блоков, например 1%. | + | ==== Изменение числа зарезервированных под служебные нужды блоков ==== |
- | Значение 0 отключает резервирование блоков, значение 5 - устанавливает резервирование на 5%. | + | Значение 0 отключает резервирование блоков, значение 5 - устанавливает резервирование 5-и блоков. |
<code> | <code> | ||
- | sudo tune2fs -r 1 | + | sudo tune2fs -r 0 /dev/<xxx> |
</code> | </code> | ||
- | |||
===== Ссылки ===== | ===== Ссылки ===== | ||
+ | * [[http://forum.ubuntu.ru/index.php?topic=132111.msg971646#msg971646|дефрагментация ext4]] — статья на форуме | ||
* [[http://events.linuxfoundation.org/slides/2010/linuxcon_japan/linuxcon_jp2010_fujita.pdf|Outline of Ext4 File System & | * [[http://events.linuxfoundation.org/slides/2010/linuxcon_japan/linuxcon_jp2010_fujita.pdf|Outline of Ext4 File System & | ||
Ext4 Online Defragmentation Foresight (англ., pdf)]] — презентация от Akira Fujita | Ext4 Online Defragmentation Foresight (англ., pdf)]] — презентация от Akira Fujita | ||
Строка 57: | Строка 76: | ||
* [[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=748de6736c1e482e111f9d1b5a5d5b1787600cad|git.kernel.org]] — коммит в ядро, добавляющий поддержку дефрагментации Ext4. | * [[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=748de6736c1e482e111f9d1b5a5d5b1787600cad|git.kernel.org]] — коммит в ядро, добавляющий поддержку дефрагментации Ext4. | ||
* Доступ к ext4 из Windows: [[http://kubuntu.ru/node/4562|Kubuntu.ru]], [[http://habrahabr.ru/blogs/linux/70058/|Хабр]], [[http://sourceforge.net/projects/ext2read/|вариант для x64]]. | * Доступ к ext4 из Windows: [[http://kubuntu.ru/node/4562|Kubuntu.ru]], [[http://habrahabr.ru/blogs/linux/70058/|Хабр]], [[http://sourceforge.net/projects/ext2read/|вариант для x64]]. | ||
- | + | * [[http://habrahabr.ru/post/58121/|Как конвертировать файловую систему из ext3 в ext4]] | |
- | {{tag>NEW FIXME}} | + |