Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
igor:udev_i_ego_primenenie_dlja_montirovanija_fajlovoj_sistemy [2017/08/05 22:07] – igor | igor:udev_i_ego_primenenie_dlja_montirovanija_fajlovoj_sistemy [2019/12/09 20:54] (текущий) – [Опции монтирования] igor |
---|
====Опции монтирования==== | ====Опции монтирования==== |
Это "нюансы" того, как операционная система должна обращаться с файлами и каталогами на каждом конкретном | Это "нюансы" того, как операционная система должна обращаться с файлами и каталогами на каждом конкретном |
устройстве. Их довольно много, выглядят они несколько путано, и вся эта система опций монтирования носит на себе следы кусочно-ямочных модернизаций. Перечислю некоторые опции, начиная с тех, которыми владею сам.\\ | устройстве. Их довольно много, выглядят они несколько путано, и вся эта система опций монтирования носит на себе следы многочисленных кусочно-ямочных улучшизаций. Перечислю некоторые опции, начиная с тех, которыми владею сам.\\ |
rw/ro - использовать диск для чтения и записи или только для чтения; \\ | **rw/ro** - использовать диск для чтения и записи или только для чтения; \\ |
exec/noexec - разрешать/запрещать выполнение программ, находящихся на диске; \\ | **exec/noexec** - разрешать/запрещать выполнение программ, если они имеются в данной файловой системе; \\ |
sync/async - синхронный/асинхронный режим записи: при синхронном режиме каждый файл записывается немедленно, а | **sync/async** - синхронный/асинхронный режим записи: при синхронном режиме каждый файл записывается немедленно, а при асинхронном файлы накапливаются в буфере (временном хранилище) и затем записываются на диск "оптом", что несколько повышает скорость и продлевает жизнь аппаратуры; \\ |
при асинхронном файлы накапливаются в буфере (временном хранилище) и затем записываются на диск "оптом", что несколько повышает скорость и продлевает жизнь аппаратуры; \\ | **flush=N** - используется совместно с async, "временное хранилище" сбрасывается на диск периодически через N секунд; \\ |
flush=N - используется совместно с async, "временное хранилище" сбрасывается на диск периодически через N секунд; \\ | **atime/noatime** - обновлять/не обновлять время в каталоге файлов при каждом обращении к файлу; \\ |
atime/noatime - обновлять/не обновлять время в каталоге файлов при каждом обращении к файлу; \\ | **diratime/nodiratime** - аналогично для каталогов; \\ |
diratime/nodiratime - аналогично для каталогов; \\ | **relatime** - обновлять время только при создании или изменении файла; \\ |
relatime - обновлять время только при создании или изменении файла; \\ | **codepage=M,iocharset=N** - нужны для устройств, записанных на других компьютерах, если в именах файлов и в самих файлах присутствуют буквы, отличные от латинских, чтобы дать понять нашему компьютеру, "по-каковски это написано" (для России codepage=866,iocharset=koi8-r); \\ |
codepage=M,iocharset=N - нужны для устройств, записанных на других компьютерах, если в именах файлов и в самих файлах присутствуют буквы, отличные от латинских, чтобы дать понять нашему компьютеру, "по-каковски это написано" (для России codepage=866,iocharset=koi8-r); \\ | **utf8** - из той же серии: мне ее хватает для работы с флэшками, где могут быть файлы с русскими буквами в именах; \\ |
utf8 - из той же серии: мне ее хватает для работы с флэшками, где могут быть русские буквы; \\ | **user,users/nouser** - кто имеет право монтировать и размонтировать: nouser - только рут, user - монтировать может рядовой пользователь, и размонтировать - только он же, users - монтировать и размонтировать может любой пользователь; \\ |
user,users/nouser - кто имеет право монтировать и размонтировать: nouser - только рут, user - монтировать может рядовой пользователь, и размонтировать - только он же, users - монтировать и размонтировать может любой пользователь; \\ | **uid=M,gid=N** - позволяют назначить владельца и группу для файловой системы, не поддерживающей права доступа (важно для флэшек - на них файловая система FAT); \\ |
uid=M,gid=N - позволяют назначить владельца и группу для файловой системы, не поддерживающей права доступа (важно для флэшек - на них файловая система FAT); \\ | **user_id,group_id** - почти то же самое, но в современной нотации; \\ |
user_id,group_id - почти то же самое, но в современной нотации; \\ | **fmask,dmask,umask** - задают права доступа к файлам и каталогам; \\ |
fmask,dmask,umask - задают права доступа к файлам и каталогам; \\ | **dev/nodev** - разрешать/запрещать создание на данном носителе файлов-устройств (файлы-устройства - небезопасные игрушки, так что файловые системы, предназначенные для пользовательских данных, монтируются с опцией nodev); \\ |
dev/nodev - разрешать/запрещать создание на данном носителе файлов-устройств (файлы-устройства - небезопасные игрушки, так что файловые системы, предназначенные для пользовательских данных, монтируются с опцией nodev); \\ | |
suid/nosuid; \\ | suid/nosuid; \\ |
blksize=N; \\ | blksize=N; \\ |
default_permissions; \\ | default_permissions; \\ |
allow_other; \\ | **allow_other** - эта опция используется только при монтировании по сети и дает возможность другим пользователям также получать доступ к данному ресурсу; \\ |
shortname=mixed; \\ | shortname=mixed; \\ |
unhide \\ \\ | unhide \\ \\ |
В строке 6 полей, на данном этапе мы рассмотрим первые четыре: нода устройства, точка монтирования, тип файловой системы (или, в более общем плане, в каком виде хранится информация, поскольку она может храниться не только в виде файловой системы, но и как-то иначе) и опции монтирования.\\ | В строке 6 полей, на данном этапе мы рассмотрим первые четыре: нода устройства, точка монтирования, тип файловой системы (или, в более общем плане, в каком виде хранится информация, поскольку она может храниться не только в виде файловой системы, но и как-то иначе) и опции монтирования.\\ |
Для примера: как это сделано у меня.\\ | Для примера: как это сделано у меня.\\ |
В своих статьях я придерживаюсь определенной системы представления текста. ''Моноспейсный'' текст имитирует экран компьютера, на котором мы видим наши команды (подчеркнутым шрифтом) и ответ системы на них.\\ \\ | В своих статьях я придерживаюсь определенной системы представления текста. ''Моноспейсный'' текст имитирует экран компьютера, на котором мы видим наши команды (''__подчеркнутым шрифтом__'') и ответ системы на них.\\ \\ |
''igor@ibmnote ~ $ __cat /etc/fstab__ \\ | ''igor@ibmnote ~ $ __cat /etc/fstab__ \\ |
/dev/sda3 / ext4 rw,async,noatime 0 0 \\ | /dev/sda3 / ext4 rw,async,noatime 0 0 \\ |
/dev/sda1 on /media/windows type fuseblk (ro,nosuid,nodev,allow_other,blksize=4096)'' \\ \\ | /dev/sda1 on /media/windows type fuseblk (ro,nosuid,nodev,allow_other,blksize=4096)'' \\ \\ |
Как видим, результаты двух команд по существу одинаковы, хотя представлены в несколько разном формате. | Как видим, результаты двух команд по существу одинаковы, хотя представлены в несколько разном формате. |
Команда mount без параметров просто выдает список всего, что смонтировано. Файл /etc/mtab также хранит информацию о смонтированных ФС. Этот файл создается системой, и пользователю изменять его не следует. \\ | Команда mount без параметров просто выдает список всего, что смонтировано. Файл /etc/mtab также хранит информацию о смонтированных ФС. Этот файл создается системой, и пользователю изменять его не следует. Заметим, что команда cat отображает __настоящее содержимое__ файла (/etc/mtab - символическая ссылка, которая в Дебиане ведет на /proc/mounts). \\ |
Devtmpfs, proc,tmpfs,devpts,shm,sysfs - это как раз псевдофайловые системы. \\ | Devtmpfs, proc,tmpfs,devpts,shm,sysfs - это как раз псевдофайловые системы. \\ |
Вывод этих команд можно сделать более наглядным, если использовать утилиту column, например так: \\ \\ | Вывод этих команд можно сделать более наглядным, если использовать утилиту column, например так: \\ \\ |
Udev - вещь достаточно универсальная, его компетенция простым автомонтированием гаджетов отнюдь не исчерпывается (некоторые даже пишут, что он для этого не предназначен - непонятно почему). Однако по жизни именно автомонтирование - задача номер один, при решении которой люди в первую очередь вспоминают про udev. \\ | Udev - вещь достаточно универсальная, его компетенция простым автомонтированием гаджетов отнюдь не исчерпывается (некоторые даже пишут, что он для этого не предназначен - непонятно почему). Однако по жизни именно автомонтирование - задача номер один, при решении которой люди в первую очередь вспоминают про udev. \\ |
Udev независим ни от файл-менеджеров, ни от используемой вами графической оболочки (desktop environment, window manager...), ни вообще от X-сервера, то есть описанная ниже технология применима даже к компьютеру, совсем не имеющему графической периферии. \\ | Udev независим ни от файл-менеджеров, ни от используемой вами графической оболочки (desktop environment, window manager...), ни вообще от X-сервера, то есть описанная ниже технология применима даже к компьютеру, совсем не имеющему графической периферии. \\ |
Второе. В бинарных дистрибутивах, как правило, имеются свои варианты решения поставленной задачи, разработанные для нас (за нас) создателями конкретного дистрибутива и, в отличие от того что сказано чуть выше, "привязанные" к графическим средствам этого дистрибутива. Если вы, подобно вашему покорному слуге, считаете их неудачными и хотите решить задачу по-своему, то надо понимать, что это обходное решение - "костыль". В данной ситуации это слово не несет отрицательной эмоциональной нагрузки, но этот "костыль" может конфликтовать со стандартным решением, которого никто не отменял. У меня, например, тунар просто "вылетает" при попытке обратиться к флэшке, примонтированной через udev. \\ \\ | Второе. В бинарных дистрибутивах, как правило, имеются свои варианты решения поставленной задачи, разработанные для нас (за нас) создателями конкретного дистрибутива и, в отличие от того что сказано чуть выше, "привязанные" к графическим средствам этого дистрибутива. Если вы, подобно вашему покорному слуге, считаете их неудачными и хотите решить задачу по-своему, то надо понимать, что это обходное решение - "костыль". В данной ситуации это слово не несет отрицательной эмоциональной нагрузки, но этот "костыль" может конфликтовать со стандартным решением, которого никто не отменял. У меня, например, тунар при попытке обратиться к флэшке, примонтированной через udev, просто "вылетает" со скоростью, обычно ему не свойственной. \\ \\ |
====Краткое описание принципа работы udev==== | ====Краткое описание принципа работы udev==== |
Как уже говорилось, в каждой ОС есть механизмы, следящие за событиями и докладывающие о них, и есть механизмы, получающие эти доклады и предпринимающие должные действия по факту событий. К последним относится udev - демон, который характеризуется тем, что может анализировать информацию о событиях согласно __правилам__, написанным для него пользователем данного конкретного компьютера. \\ | Как уже говорилось, в каждой ОС есть механизмы, следящие за событиями и докладывающие о них, и есть механизмы, получающие эти доклады и предпринимающие должные действия по факту событий. К последним относится udev - демон, который характеризуется тем, что может анализировать информацию о событиях согласно __правилам__, написанным для него пользователем данного конкретного компьютера. \\ |