Основы 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.