Основы linux от основателя gentoo. часть 4 (1/4): файловые системы, разделы и блочные устройства

Disable automatic mount

Under systemd, is automatically mounted as a tmpfs even though no entry is specified in . To disable the automatic mount, mask the systemd unit.

Files will no longer be stored in a tmpfs, but on the block device instead. The contents will now be preserved between reboots, which might not be the desired behavior. To regain the previous behavior and clean the folder automatically when restarting, consider using :

/etc/tmpfiles.d/tmp.conf
# see tmpfiles.d(5)
# always enable /tmp folder cleaning
D! /tmp 1777 root root 0

# remove files in /var/tmp older than 10 days
D /var/tmp 1777 root root 10d

# namespace mountpoints (PrivateTmp=yes) are excluded from removal
x /tmp/systemd-private-*
x /var/tmp/systemd-private-*
X /tmp/systemd-private-*/tmp
X /var/tmp/systemd-private-*/tmp

UUID vs /dev/sdaX[править]

Диск используемый в примере

  • UUID
proc            /proc                   proc    nosuid,noexec,gid=proc          0 0
devpts          /dev/pts                devpts  nosuid,noexec,gid=tty,mode=620  0 0
tmpfs           /tmp                    tmpfs   nosuid                          0 0
UUID=bbe58276-7f12-4ebf-9ce3-802deb80e5ff	/	ext4    relatime        1	1
UUID=16669fd2-821f-4fe6-87be-255aca71576b	/home   ext4    nosuid,relatime 1	2
UUID=3a898d57-3304-4c3b-8efd-631971f43a79	swap    swap    defaults        0	0
UUID=B405-0BA5  /mnt/sda3	vfat showexec,quiet,codepage=866,iocharset=utf-8,umask=0 0 0
UUID=94E8EABFE8EA9F2C   /mnt/sda1	ntfs-3g locale=ru_RU.UTF-8,nofail,comment=x-gvfs-show,dmask=0,fmask=0111 0 0
UUID=4fae171f-2835-4686-a8ac-1748bd2337cf	/mnt/sda10	ext4 defaults 0 0
UUID=76DCB7B25CB1100A   /mnt/sda5	ntfs-3g locale=ru_RU.UTF-8,nofail,comment=x-gvfs-show,dmask=0,fmask=0111 0 0
UUID=a2c4468b-4bfa-457f-bb3b-128899d069c0	/mnt/sda6	ext4 defaults 0 0
  • /dev/sdaX
    • удобно использовать если у вас:
      • фиксированный размер физических дисков или периодически происходит изменение разделов
      • установлено несколько систем и вы решите переустановить одну из них. При установке у диска сменится UUID, и если у вас прописан корневой раздел другого Linux-дистрибутива в fstab в UUID, то при загрузке будет ошибка монтирования.
proc            /proc                   proc    nosuid,noexec,gid=proc          0 0
devpts          /dev/pts                devpts  nosuid,noexec,gid=tty,mode=620  0 0
tmpfs           /tmp                    tmpfs   nosuid                          0 0
/dev/sda9	/	ext4    relatime        1	1
/dev/sda8	/home   ext4    nosuid,relatime 1	2
/dev/sda7	swap    swap    defaults        0	0
/dev/sda3  /mnt/sda3	vfat showexec,quiet,codepage=866,iocharset=utf-8,umask=0 0 0
/dev/sda1   /mnt/sda1	ntfs-3g locale=ru_RU.UTF-8,nofail,comment=x-gvfs-show,dmask=0,fmask=0111 0 0
/dev/sda10	/mnt/sda10	ext4 defaults 0 0
/dev/sda5   /mnt/sda5	ntfs-3g locale=ru_RU.UTF-8,nofail,comment=x-gvfs-show,dmask=0,fmask=0111 0 0
/dev/sda6	/mnt/sda6	ext4 defaults 0 0

«Собственный» fstabправить

Если вам не очень удобно, что диски имеют точки монтирования вида /mnt/sda5, то путем правки fstab вы можете визуально «отформатировать» файл для более удобного чтения и задать собственные точки монтирования.

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

su-
mkdir /mnt/Windows
mkdir /mnt/SimplyLinux
mkdir /mnt/Ubuntu
mkdir /mnt/Data
mkdir /mnt/ReactOS

И прописать ее в fstab.

proc            /proc                   proc    nosuid,noexec,gid=proc          0 0
devpts          /dev/pts                devpts  nosuid,noexec,gid=tty,mode=620  0 0
tmpfs           /tmp                    tmpfs   nosuid                          0 0
#Root
/dev/sda9	/	ext4    relatime        1	1
#Home
/dev/sda8	/home   ext4    nosuid,relatime 1	2
#swap
/dev/sda7	swap    swap    defaults        0	0

#SimplyLinux
/dev/sda10	/mnt/SimplyLinux        ext4 defaults,comment=x-gvfs-show 0 0
#Ubuntu
/dev/sda6	/mnt/Ubuntu     ext4 defaults,comment=x-gvfs-show 0 0

#Windows
/dev/sda1   /mnt/Windows   ntfs-3g   locale=ru_RU.utf8,comment=x-gvfs-show   0   0
#Data
/dev/sda5   /mnt/Data   ntfs-3g   locale=ru_RU.utf8,comment=x-gvfs-show   0   0
#ReactOS
/dev/sda3   /mnt/ReactOS vfat   user,rw,umask=000,comment=x-gvfs-show   0   0

После перезагрузки или перемонтирования, убедившись, что старые каталоги пусты и не используются fstab, удалите их.

su-
rmdir /mnt/sda3
rmdir /mnt/sda1
rmdir /mnt/sda10
rmdir /mnt/sda5
rmdir /mnt/sda6

Как узнать идентификаторыправить

Первый способ:

su-
blkid

Второй способ:

ls -l /dev/disk/by-uuid/

Третий способ:

Графический. С помощью Gparted. Открыв программу выберите раздел, пкм>свойства. В свойствах будет прописан UUID и путь.

Usage

Arch uses a tmpfs directory, with and simply existing as symlinks for compatibility. It is also used for by the default systemd setup and does not require an entry in fstab unless a specific configuration is needed.

2.2 and above expects tmpfs to be mounted at for
. Mounting tmpfs at is handled automatically by systemd and manual configuration in fstab is not necessary.

Generally, tasks and programs that run frequent read/write operations can benefit from using a tmpfs folder. Some applications can even receive a substantial gain by offloading some (or all) of their data onto the shared memory. For example, relocating the Firefox profile into RAM shows a significant improvement in performance.

Формат строки

Каждая строка в файле содержит следующие поля, разделенные пробелами или символами табуляции:

filesystem    dir    type    options    dump    pass

filesystem
Физическое место размещения файловой системы, по которому определяется конкретный раздел или устройство хранения для монтирования. Смотрите подробнее в разделе .
dir
Точка монтирования, куда монтируется корень файловой системы.
type
Тип файловой системы. Поддерживается множество типов: , , , , , , , , , , , и . При выборе команда mount попытается определить реальный тип файловой системы самостоятельно. Это полезно для компакт-дисков (CD/DVD).
options
Параметры монтирования файловой системы. Подробнее смотрите на

Обратите внимание, что некоторые параметры относятся к конкретным типам файловых систем.
dump
Используется утилитой dump для определения того, нужно ли создать резервную копию данных в файловой системе. Возможные значения: 0 или 1

Если указано число 1, dump создаст резервную копию. У большинства пользователей утилита dump не установлена, поэтому им следует указывать 0 в этом поле.
pass
Используется программой fsck для определения того, нужно ли проверять целостность файловой системы. Возможные значения: 0, 1 или 2. Значение 1 следует указывать только для корневой файловой системы (с точкой монтирования ); для остальных ФС, которые вы хотите проверять, используйте значение 2, которое имеет менее высокий приоритет.Обратите внимание, что в случае btrfs следует всегда указывать 0, даже если эта файловая система используется в качестве корневой. Файловые системы, для которых в поле указано значение 0, не будут проверяться fsck.

Изменение размера раздела NTFS

Примечание: Перед редактированием разделов обязательно делайте резервную копию важных данных!

Некоторые пользователи с установленной системой Windows хотели бы оставить её при установке Arch Linux. Часто для того, чтобы освободить место на диске под установку Arch Linux, возникает необходимость изменить размер системного раздела, на котором установлена Windows. Эту задачу можно выполнить одним из двух способов:

1) Воспользоваться встроенным в Windows средством управления разделами. Для его запуска нажмите Win+R, введите в появившееся окно diskmgmt.msc и нажмите Enter. Кликните по разделу, размер которого нужно уменьшить, правой кнопкой мыши, и выберите в меню пункт Сжать том. Укажите количество места, которое нужно освободить, и нажмите OK. После завершения операции за изменённым разделом появится свободное место, в котором можно будет создать необходимые разделы в процессе установки системы.

Для изменения размера NTFS-раздела из существующей системы Arch Linux установите пакеты и и запустите программу gparted. Если в системе отсутствует графический пользовательский интерфейс, можно использовать программу parted, входящую в состав пакета .

Структура fstab

Каждая запись имеет следующие поля (которые разделяются пробелом или табуляцией):

<device-spec>	<mount-point>	<fs-type>	<options>	<dump>	<pass>
  • Поле, <device-spec> (устройство) сообщает демону монтирования файловых систем mount, что монтировать, имя монтируемого устройства или его метку.
  • Второе поле, <mount-point> (точка монтирования), определяет путь, по которому будет смонтировано устройство <device-spec>.
  • Поле <fs-type> (тип файловой системы) содержит тип файловой системы монтируемого устройства. Полный список поддерживаемых систем можно просмотреть выполнив команду:
man mount

Следующее поле называется (опции). Если используются все значения по умолчанию, то используется специальный ключ defaults. Если хоть одна опция задана явно, то defaults указывать не нужно (defaults служит только для того, что была занята позиция в строке). Для полного списка опций используйте команду man mount.

auto Файловая система монтируется при загрузке автоматически или после выполнения команды ‘mount -a’.
noauto Файловая система может быть смонтирована только вручную.
exec Позволяет исполнять бинарные файлы на разделе диска. Установлено по умолчанию.
noexec Бинарные файлы не выполняются. Использование опции на корневой системе приведёт к её неработоспособности.
ro Монтирует файловую систему только для чтения.
rw Монтирует файловую систему для чтения/записи.
sync Все операции ввода-вывода должны выполняться синхронно.
async Все операции ввода-вывода должны выполняться асинхронно.
user Разрешает любому пользователю монтировать файловую систему. Применяет опции noexec, nosuid, nodev, если они не переопределены.
nouser Только суперпользователь может монтировать файловую систему. Используется по умолчанию.
defaults Использовать значения по умолчанию. Соответствует набору rw, suid, dev, exec, auto, nouser, async.
suid Разрешить операции с suid и sgid битами. В основном используются, чтобы позволить пользователям выполнять бинарные файлы со временно приобретёнными привилегиями для выполнения определённой задачи.
nosuid Запрещает операции с suid и sgid битами.
nodev Данная опция предполагает, что на монтируемой файловой системе не будут созданы файлы устройств (/dev). Корневой каталог и целевой каталог команды chroot всегда должны монтироваться с опцией dev или defaults.
atime Включает запись информации о последнем времени доступа (atime) при каждом чтении файла. Включено по умолчанию на Linux до v.2.6.29 включительно.
noatime Отключает запись информации о последнем времени доступа (atime) при каждом чтении файла.
relatime Включает запись информации о последнем времени доступа при чтении файла, если предыдущее время доступа (atime) меньше времени изменения файла (ctime). Включено по умолчанию на Linux начиная с v.2.6.30.
notail Отключает «упаковку хвостов файлов». Опция работает только с файловой системой ReiserFS.
size Используется для указания размера файловой системы. Опция работает только с файловой системой tmpfs.
nofail Используется в случае, если в fstab прописаны некоторые другие жёсткие диски, кроме основого (с системой, которая загружается), но в данный момент они физически не подключены к ПК. Чтобы при загрузке не выдавалась ошибка, приводящая к невозможности загрузки (система ищет по fstab отключенные диски, но не находит их), в строчках fstab-а с этими дисками и следует установить такой флаг — тогда эти диски будут проигнорированы при загрузке (до их подключения к ПК). При применении этого флага к подключенным дискам, никакого эффекта не наступает, флаг игнорируется.
  • <dump> — используется утилитой dump для того чтобы определить, когда делать резервную копию. После установки, dump проверяет эту запись и использует значение, чтобы решить, подключать ли файловую систему. Возможные значения 0 или 1. Если 0, dump игнорирует файловую систему, если 1, dump сделает резервную копию. У большинства пользователей dump не установлен, поэтому в поле <dump> следует задать 0.
  • <pass> (номер прохода). fsck проверяет число, подставленное в поле <pass> и решает, в каком порядке проверять файловую систему. Возможные значения 0, 1 и 2. Файловые системы со значением <pass>, равным 0, не будут проверены утилитой fsck. У корневой системы должен быть наибольший приоритет, 1, остальные файловые системы должны иметь приоритет 2.

Вместо указания имени устройства, можно указать UUID или метку тома, написав LABEL=<label> или UUID=<uuid>, например, `LABEL=Boot’ или `UUID=3e6be9de-8139-11d1-9106-a43f08d823a6′.

Примеры

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

Пример обычного[что?] файла fstab:

# <device-spec>        <mount-point> <fs-type> <options>          <dump> <pass>
none                   /dev/pts      devpts    defaults            0      0
none                   /dev/shm      tmpfs     defaults            0      0

/dev/cdrom             /mnt/cd   iso9660   ro,user,noauto,unhide   0      0
/dev/dvd               /mnt/dvd  udf       ro,user,noauto,unhide   0      0
/dev/fd0               /mnt/fl   auto      user,noauto             0      0

/dev/hda1              swap       swap      defaults               0      0
/dev/hda4              /          ext3      defaults               0      1
/dev/hda3              /home      xfs       rw,suid,exec,auto,nouser,async 0      2

Пример типового файла fstab в FreeBSD:

# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a /    ufs  ro 1 1
/dev/ad0s1e /tmp ufs  rw 2 2
/dev/ad0s1f /usr ufs  rw 2 2
/dev/ad0s1d /var ufs  rw 2 2 

Советы для уменьшения операций чтения/записи

Основной идеей долговечного использования SSD является перенос интенсивных операция ввода/вывода в оперативную память или HDD, в основном из-за большого размера блока очистки (512 КиБ в некоторых случаях).

Примечание: 32ГБ SSD с посредственным 10-кратным показателем write amplification, стандартными 10000 циклами чтения/записи и 10ГБ записей в день дают 8 лет жизни. Также, дольше живут диски с наибольшими объемами и современными контроллерами, которые имеют меньший показатель write amplification.

Используйте команду и отсортируйте по количеству записей, чтобы увидеть сколько пишется на диск.

Продуманная схема разделов

Если в системе установлены одновременно оба типа дисков (HDD и SSD), то рекомендуется монтировать раздел на HDD, чтобы продлить жизнь SSD, избежав на нём множества операций чтения/записи.

Если же SSD является единственным диском в системе, и нет возможности использовать его совместно с HDD, разумно так же выделить отдельный раздел для , чтобы в дальнейшем при возникновении ошибки было легче восстановить систему. Например, если программа использовала всё доступное пространство в , какой-либо лог превысил все разумные размеры, и т. п.

Опция монтирования noatime

Монтируйте разделы SSD с опцией . См. раздел .

Существует несколько ключевых параметров монтирования, используемых в для разделов на SSD.

noatimeОднако, эта опция может вызвать проблемы с некоторыми программами, такими как Mutt, т. к. время доступа к файлу станет меньше, чем время изменения, что вызовет проблемы в работе. Использование опции relatime вместо noatime позволит быть уверенным, что поле atime никогда не станет меньше, чем время изменения. — Во время чтения файлов не будет обновляться поле atime файловой системы, указывающее время последнего доступа к файлу

Важность данного параметра в том, что он убирает необходимость системы производить «ненужные» операции записи когда файл всего-навсего необходимо прочитать. Т

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

discard — Параметр discard включает команду TRIM для ядер версии 2.6.33 и выше. Не работает с файловой системой ext3; если всё же он включен на ext3, корневой раздел будет смонтирован только для чтения.

/dev/sda1 / ext4 defaults,relatime,discard 0 1
/dev/sda2 /home ext4 defaults,relatime,discard 0 1

Важно: Пользователь должен убедиться ещё ДО попытки монтирования раздела с опцией , что он работает на ядре версии 2.6.33 или выше, а также, что его SDD поддерживает TRIM. Иначе можно потерять данные!

Расположите часто используемые файлы в оперативной памяти

Профили браузеров

Довольно просто можно перенести профили браузеров, таких как chromium, firefox, opera, и т.д. в оперативную память через tmpfs и использовать rsync для синхронизации с копиями на диске. Таким образом можно так же заметно сократить количество операций чтения/записи.

В AUR есть несколько пакетов для автоматизации этой операции, например .

Другие файлы

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

Важно: Не пытайтесь добавлять /var/log в anything-sync-daemon. Systemd очень разозлится на это.

Компиляция в tmpfs

Перенос интенсивной компиляции в — отличная идея продления срока жизни диска. Если у вас имеется более 4ГБ оперативной памяти, строку tmp из нужно изменить, чтобы раздел использовал больше половины доступной памяти, через параметр , т. к. при компиляции растёт очень быстро.

Пример для машины с 8ГБ оперативки:

tmpfs /tmp tmpfs nodev,nosuid,size=7G 0 0

Отключение журналирования ФС

Количество записанных данных (в мегабайтах) на ФС ext4 с параметром noatime.

операция с журналом без журнала разница
git clone 367.0 353.0 3.81 %
make 207.6 199.4 3.95 %
make clean 6.45 3.73 42.17 %

«Результаты показали, что записанный объём при работе с большим количеством мета-данных почти в 2 раза выше, чем реальный размер файлов. Это ожидаемо, т. к. все изменения в блоках мета-данных сначала пишутся в журнал, и транзакция журнала сбрасывается перед тем, как мета-данные будут записаны в конечное положение на диск. Однако же, для обычных задач, где данные пишутся сразу за мета-данными, разница в лишних операциях записи минимальна.»

Примечание: Пример make clean из таблицы выше показывает важность переноса компиляции в tmpfs как рекомендовано в предыдущем разделе!

Introduction to fstab

Every operating system has a file system table, in Linux fstab happens to be that file. Earlier in linux era, one had to manually mount any drives/files at specified locations with the help of “mount” command. Right after plugging in your device, they just didn’t show up on your desktop. They were meant to be mounted manually and then further processing was done. There existed (exists) a way through which it can be done automatically, fstab was the magic wand. Fstab is used to store configurations for different file systems and it contains what to do with them, i.e., what and where to mount.

This automatic mounting can be carried out in graphical style too with the help of a tool PySDM, it is explained here.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *