РазбиениеДиска

Материал из ALT Linux Wiki
Версия от 23:59, 1 ноября 2015; Asy (обсуждение | вклад) (Убрана категория {{crap}} : думаю, информацию можно считать актуальной на текущий момент.)
42px-Wikitext-ru.svg.png
Эту статью следует викифицировать.


Разбиение диска

Введение

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

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

Дисковая подкачка

У swap есть несколько особенностей.

  1. Если уж он используется, то доступ к нему должен быть максимально быстрый (а это значит либо начало, либо середина диска; для накопителей SSD место расположения, в плане скорости, значения не имеет).
  2. Данные в swap не представляют никакой ценности после перезагрузки машины.
  3. Если на компьютере (например, нотебуке) планируется использовать режима гибернации, размер swap следует сделать несколько больше размера ОЗУ; если ОЗУ планируется наращивать в последствии, об этом лучше подумать заранее.

Наилучшим решением считается держать swap в начале диска, это поможет спасти информацию на диске при повреждении по каким-либо причинам информации в начале диска. Пример такой причины — опечатка при работе с разделами (указали вместо /dev/sda2 просто /dev/sda).

Файловые системы

ext2

ext3

ext4

Пришла на смену ext3, обладает заметно лучшей производительностью благодаря использованию extent-ов.

Применение: ныне самая универсальная файловая система под Linux, рекомендуется использовать её как файловую систему для самых ценных данных, так как она является наиболее надёжной из современных ФС.

btrfs

Журналируемая файловая система нового поколения. Изначально разработана корпорацией Oracle, но, на текущий момент, в разработке участвуют RedHat и Fujitsu. ФС в стадии активной разработки, хотя базовый функционал считается уже стабильным. По скоростным характеристиками, по большей части, уступает остальным ФС, но значительно превосходит по возможностям.

Применение:
а) из простого - файловые системы большого размера и/или с большим количеством маленьких файлов;
б) из сложного - RAID средствами ФС (без mdadm), использование подразделов и т.п.

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

reiserfs

Устаревшая в пользу Reiser4, однако, в отличие от Reiser4, включенная в основное ядро Linux, журналируемая файловая система, которая отличалась от других с точки зрения администратора, в первую очередь, хорошей скоростью работы с каталогами, в которых большое количество маленьких файлов. Как и в ext3 в ветке 2.6, в ней используются для поиска файла в каталоге B-tree и хэши. Кроме того она умеет компактно хранить хвосты от файлов для экономии места, обычно расходуемого впустую.

Применение: файловые системы с большим количеством маленьких файлов, или в которых большое количество файлов в каталоге.

reiser4

Файловая система Reiser4 - наследница ReiserFS. На смену алгоритму B+-tree пришёл алгоритм dancing trees. Система была полностью подготовлена к включению в основное ядро Linux ещё в 2010 году, однако это не произошло. На текущий момент включение кода ФС в основное ядро не является приоритетом ввиду недостатка времени единственного оставшегося разработчика (в этом интервью Эдуард Шишкин сказал несколько слов и о btrfs, но это интервью 2010-ого года).

Применение: файловые системы с большим количеством маленьких файлов, или в которых большое количество файлов в каталоге.

Примечание: в ALT Linux нет готовых ядер с поддержкой Reiser4.

xfs

Разработка SGI, перенесённая в Linux. Присутствует в ядре, начиная с ядра 2.4.25. Оптимизированная для быстрой работы с файлами большого размера (multimedia данных), обладающая великолепной надёжностью, имеющая поддержку ACL (полезно для файл-серверов с Windows-клиентами) и EA (до конца зачем они нужны понимают лишь бывшие пользователи OS/2, остальные смотрят на них с удивлением).

Применение: хранение файлов большого объёма (например мультимедиа-данных) и файл-сервера для Windows-сетей.

jfs

Разработка IBM, использовавшаяся ранее на AIX, ныне портирована на OS/2 и Linux. В OS/2 имеет поддержку ACL и EA (уточнить про Linux).

tmpfs

Специфическая файловая система, предназначенная для хранения временных файлов, которые не имеют ценности после перезагрузки ОС. В силу размещения в ОЗУ, крайне быстра. При этом, в случае размещения части данных в swap, преимущество в быстродействии хотя и падает, но сохраняется. Раздел tmpfs занимает столько памяти, сколько информации в нём размещено. Теоретически, можно задать размер раздела, превышающий размер ОЗУ+swap, но это не стоит делать по вполне понятным причинам. В идеальном случае, суммарный размер всех tmpfs-разделов должен быть меньше суммы ОЗУ+swap, однако могут быть и исключения, в зависимости от назначения tmpfs-разделов. Например, если точно известно, что они не будут одновременно использоваться на полный объём.

Применение: подходит для раздела /tmp, разделов для сборки ПО (например, для раздела, заданного макросом %_tmppath у RPM).

Параметры монтирования

Есть набор параметров монтирования, поддерживаемых всеми файловыми системами, а также есть параметры конкретной файловой системы. Эта информация взята из mount(8). Здесь описаны некоторые параметры, на которые стоит обратить внимание в первую очередь.

Общие параметры монтирования

  • noatime — при каждом доступе (в том числе чтении) к файлу в inode обновляется время последнего доступа к файлу, что требуется крайне редко, при использовании этого параметра это обновление производиться не будет, что заметно ускорит работу news-серверов, и, в особенности, прокси-сервера squid (так как он каждую секунду выполняет несколько обращений к файлам на чтение, каждое из которых без noatime вызывает операцию записи, то есть обновления информации о времени последнего доступа).
  • nodev — не позволяет создавать и использовать на этой файловой системе файлы-устройства, эта возможность полезна для безопасности (если вы точно знаете, что на данной файловой системе файлы-устройства вам не нужны, то есть смысл ставить этот параметр).
  • nosuid — на этой файловой системе не действует бит suid (исполнение программы от имени её владельца, а не запустившего её пользователя).
  • noexec — запрет запуска с этой файловой системы (внимание! скрипты всё равно можно будет запустить командой bash скрипт.sh).
  • ro — доступ только для чтения

ext4

  • data=journal — все данные сначала пишутся в журнал, прежде чем начать запись на файловую систему
  • data=ordered — (режим по умолчанию) сначала пишутся данные прямо в файловую систему, после чего метаданные добавляются в журнал
  • data=writeback — очерёдность записи не соблюдается, метаданные могут быть записаны в журнал до того, как данные будут записаны на файловую систему, хотя этот режим гарантирует целостность файловой системы, он может позволить устаревшим данным присутствовать в файлах после сбоя (и, соответственно, восстановления журнала). Этот режим используется для увеличения производительности

reiserfs

  • notail — отключение ускорения доступа к маленьким файлам и упаковки «хвостов файлов». Она была нужна в те времена, когда загрузчик ядра (LILO) не понимал где искать «хвосты». Кроме того с этим параметром не будет часто замечаемого многими пользователя «обрывков других файлов в файле» после аппаратный сбоев.

Поддерживается в дистрибутивах ALT Linux, выпущенных с начала 2004 года:

  • data=journal — данные сначала пишутся в журнал, а потом начинается запись на файловую систему
  • quota — для управления квотами пользователей на дисковое пространство

xfs

  • dmapi
  • logdev=device — путь к устройству, на котором будет размещён журнал
  • osyncisdsync
  • quota / usrquota / ugnoenforce
  • grpquota / gqnoenforce

tmpfs

  • size=5G - задать размер tmpfs (в примере - 5Гб); если параметр не указывать, размер будет соответствовать 50% ОЗУ.

Значение отдельных разделов

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

/

Корневой раздел. На этом разделе лучше использовать ФС, которая надёжно восстанавливается после системных сбоев. Если предполагается выносить /usr и /var на отдельные разделы, достаточно порядка 4Гб.

Файловая система: ext4. Опции монтирования: в зависимости от наличия в корне остальных разделов.

/boot

На этом разделе обычно лежат рабочее и failsafe ядра, initrd образы, system.map файлы, а также некоторые данные используемого загрузчика (lilo или grub). Если этот раздел вообще создавать, объём следует выбирать, исходя из желаемого количества запасных ядер. Ядро 3.14 с соответствующим initrd занимает около 6М, файлы grub2 около 4.5Мб. Объёма 50Мб, таким образом, должно хватить на эксперименты с 7-ю ядрами.

Раздел часто используется в системах с RAID с уровнями, отличными от 1, так как загрузчики могут работать именно с RAID 1. Так же раздел может быть использован в ситуациях, когда BIOS не работает с HDD большого объёма - в этом случае небольшой раздел в начале позволяет не задумываться о проблемах с BIOS.

Файловая система: ext4, возможно без журнала. Существует мнение, что лучше не монтировать её автоматически, а подключать только в моменты установки ядер и изменения конфигурации загрузчика.

/boot/efi

Обязательный раздел в случае необходимости использования UEFI-загрузчика.

Файловая система - исключительно FAT32.

/usr

Обычно достаточно большой раздел (10-20Гб), который редко разбивается на подразделы. Объём зависит от количества и назначения устанавливаемого ПО: некоторые приложения, например офисные пакеты, или игры, могут занимать много места.

/usr/share/doc

Можно выделить раздел с документацией.

Файловая система: reiserfs, btrfs (с включенной компрессией).
Опции монтирования: ro (не забывать перемонтировать в rw при работе с пакетами), noatime, noexec, nodev.

/var

Раздел, предназначенный для хранения изменяемых в процессе работы системы данных. Кроме того, в нём располагается каталог /var/lib, где расположены chroot-окружения ряда пакетов (при этом, есть исключение в виде chroot резолвера - /var/resolv).

Файловая система и опции монтирования - в зависимости от того, есть ли деление на разделы внутри /var/lib.

/var/log

Этот раздел делать отдельно очень полезно вообще, а для серверов - крайне необходимо. При сбоях или DoS атаках размер журналов может резко увеличиваться, тем самым переполняя этот раздел. Если сервер используется для узкого круга задач (скажем web-сервер), есть смысл журнал основного сервиса вынести на отдельный раздел (скажем /var/log/apache). Например:

/var/log — системные логи
/var/log/apache — логи www-сервера

Файловая система: ext4, xfs.
Опции монтирования: noatime, noexec, nodev.

/var/spool

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

Файловая система: reiserfs, ext4.
Опции монтирования: noexec, nodev.

/var/spool/mail

Файловая система: каталог с почтой пользователей.

Файловая система: ext4 с data=journal.
Опции монтирования: noatime, noexec, nodev.

Также на этот раздел полезно устанавливать квоты.

Примечание: использование современный POP/IMAP серверов может поменять место хранения почты в соответствии с особенностями выбранного ПО.

/var/cache

Всякие кэши.

Файловая система: ext4, reiserfs.
Опции монтирования: noexec, nodev, noatime.

/var/tmp

Эта файловая система предназначена в первую очередь для хранения временных данных, которые могут иметь смысл после сбоя сервера (например данные autosave или журнал работы текстовых редакторов). Предназначен исключительно для файлов данных и должен обеспечивать высокую надёжность при аппаратных и программных сбоях.

Файловая система: ext4.
Опции монтирования: data=journal, noexec, nodev, atime.

/var/www

Раздел с сайтами пользователей

/var/run (/run)

надо описать.

Файловая система: runfs (tmpfs)

/var/lock

надо описать.

Файловая система: tmpfs

/tmp

Каталог для временных файлов, не имеющих никакого смысла при перезагрузке. Может пересоздаваться во время загрузки системы.

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

Файловая система: tmpfs, reiserfs
Опции монтирования: nodev, atime.

/home

Домашние каталоги пользователей. На серверной машине, на которой у пользователей нет shell-доступа, скорее всего, имеет смысл ставить на этот раздел флаг noexec, но если он не ставится, то nosuid обязателен.

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

Файловая система: ext4, xfs
Опции монтирования: nosuid, nodev

/dev

Каталог на корневом разделе, содержащий специальным образом созданные файлы - ссылки на устройства. Как правило, перемонтирован посредством udev и, в обычной системе, является разделом с udevfs.

Специальные файловые системы , создаваемые ядром Linux.

/proc

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

/sys

Псевдо-файловая система, часть единой унифицированной модели представления устройств в Linux.

Ссылки

Благодарности

Денис Смирнов — автор начальной версии этой статьи на freesource.info.
Клочков Роман — масса ценных комментариев к начальной версии Дениса Смирнова.