Сегодня 26 апреля 2024
18+
MWC 2018 2018 Computex IFA 2018
реклама
Программное обеспечение

Linux Navigator

⇣ Содержание

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

Работа с дисками, файловыми системами и другими блочными устройствами для Linux здорово отличается от аналогичной работы для Windows. Это опять же связано с идеологическими требованиями, с которых я начал. Корневая файловая система - та, которая предоставляет точку отсчета для всех файловых систем в Linux. Для всех файловых систем применяется так называемый механизм монтировки (я знаю, что Windows тоже монтирует файловые системы, но доступ человека к этому процессу крайне ограничен). Это означает, что любая файловая система перед работой должна быть зарегистрирована ядром. В разделе, посвященном ядру, было описано незначительное количество типов файловых систем, поддерживаемых Linux, всего их более 40. Каждая файловая система имеет свой набор параметров, которые можно менять для более эффективной работы (а иногда следует менять просто для работы). Эти параметры свои для каждой файловой системы, и некоторые из них ядро умеет определять самостоятельно. Для тех же, которые ядро не определяет, существует файл fstab. Пусть вас не обманывает его кажущаяся простота - количество параметров, которые можно в него вносить, порядка тысячи. Правда, для обычного домашнего компьютера с файловыми системами для Linux и DOS/Windows вполне можно обойтись десятком.

Поскольку пользователь не должен знать о физической структуре компьютера, то каждый раздел на жестком диске, дисководы для флоппи и CD-ROM, а также каждый стриммер, или иной носитель информации, представляется простым каталогом. Выбор этого каталога - дело администратора, но обычно следуют соглашению о том, что каждый неродной для Linux раздел находится в поддиректории директории /mnt. Для этого в ней создаются директории вроде diskc, cdrom, floppy. После монтирования файловой системы эти директории будут называться точками монтирования. Туда можно записать все что угодно, но после монтирования эти данные станут недоступными, хотя место на диске занимать будут. А потому этого делать не рекомендуется. (Существовало предложение о решении проблемы скрытой массы Галактики, как о гипотетической галактике записанной в Пространство до монтирования нашей.) Эту информацию тоже полезно внести в fstab.

#fstab
#устройство#точка монтированиятипопцииfs_freq и fs_passno
/dev/hda3/ext2defaults0 1
/dev/hda4/procswapdefaults0 2
/dev/hda1/bootext2defaults0 2
/dev/hda2/mnt/diskcvfatauto, exec, nosuid, async0 0
none/procprocdefaults0 0
/dev/hdc/mnt/cdromiso9660user, noauto, ro0 0
/dev/fd0/mnt/floppyautouser, noauto0 0

Монтирование файловой системы осуществляется либо автоматически, либо вручную командой mount. Аналогично и размонтрование после использования, для этого служит команда umount. Эта команда таже использует файл fstab и такие же параметры.

mount -t <тип> -o <опции> <устройство> <каталог>

Структура этого файла отвечает на естественные вопросы "Что?", "Куда?" и "Каким образом?". На последний вопрос отвечают столбцы со третьего по пятый. Самый интересный столбец, это столбец опций.

Общие опции

asyncВвод/вывод осуществляется асинхронно. Задано по умолчанию.
syncВвод/вывод осуществляется синхронно. Устанавливайте для ненадежных носителей, иногда полезно ставить для дисководов.
atimeОбновляется время обращения к файлу. Задано по умолчанию.
autoСистема монтируется автоматически.
noautoСистема монтируется только вручную.
devФайлы устройств интерпретируются устройствами.
nodevОбратно предыдущему.
execРазрешено исполнение файлов.
noexecИсполнение запрещено.
suidВключены флаги SUID и SGID.
nosuidОбратно предыдущему.
userОбычный пользователь может смонтировать систему, правда с параметрами по умолчанию noexec, nosuid, nodev.
nouserПравом монтировки обладает только root
rwЧтение и запись.
roТолько чтение.
defaultsОзначает rw, suid, dev, exec, auto, nouser, async. В 95% случаев достаточно этой опции для ext2.

Опций, специфичных для ext2, очень много и описывать их большого смысла не имеет, поскольку ядро их определяет корректно. Теперь некоторые опции для vfat (FAT с длинными именами) и ntfs, вредительские и ненужные я опускаю.

umask=nnnМаска доступа по умолчанию. Для этой и следующей опции по умолчанию используется для FAT пользователь, смонтировавший систему, а для NTFS - root.
uid=n, gid=nGID и UID владельца по умолчанию.
codepage=866Кодировка родного языка для FAT (показан русский)
quietИзменения UNIX-атрибутов не происходит и не приводит к ошибке.
uni_xlateЗаменять Unicode-символы. Практически всегда следует указывать. Позволяет правильно работать с пробелами в названии файлов.
iocharset=koi8-rКодировка родного языка для Linux (так же показан русский)

Опции для ISO9660 (или CDFS) автоматически корректно определяются для каждого диска, включая поддержку расширений для работы с длинными именами RockRidge и Joliet. Также к числу часто используемых типов файловых систем относится NFS (Network File System). Она позволяет монтировать каталоги с удаленных компьютеров по сети. Большая часть ее настроек опивается в разделе об установке сети, поскольку они специфичны именно для этого. Также я не буду описывать файловые системы Ext3 (журналируемое расширение Ext2), ReiserFS (наиболее вероятный преемник семейства Ext), и DFS (DVD File System), хотя они тоже достаточно важны, поскольку для Ext3 и ReiserFS практически полностью решены проблемы с кэшированием.

В последнем столбце стоят 2 числа - fs_freq и fs_passno. fs_freq может принимать значение 0 и 1, и отвечает за создание резервной копии раздела в случае сбоя системы. Это полезно на больших корпоративных серверах с RAID'ом и для системных программистов, разрабатывающих модули для ядра. Остальным не требуется. fs_passno определяет порядок проверки файловой системы при первичной загрузке системы. Число 1 обязательно следует указывать для корневой файловой системы. Если вы захотите проверять что-нибудь кроме нее, то ставьте число 2, в противном случае - 0.

Такое монтирование файловых систем имеет свои ограничения. Первое ограничение связано с кэшированием записи в файловую систему. Дело в том, что нельзя извлекать носитель информации до того как его не размонтировали. Если вы просто читали с него, то это часто полбеды. А вот если еще и писали... Последствия могут быть самыми неожиданными, вплоть до полной остановки системы из-за не вовремя вынутой дискеты. Причем именно дисковод являются самым незащищенным носителем. (Это одна из причин, по которым я считаю, что дисководу не место в профессиональной машине.) Привод CD защищается режимом Read-Only и блокировкой лотка. Блокировка лотка приводит к тому, что нажатие на клавишу eject на панели привода не возымеет никакого действия до тех пор, пока не размонтируете файловую систему диска. Другое ограничение это то, что для работы со сменным носителем приходится каждый раз набирать команду mount.

Частично эти ограничения позволяет обойти автомонтирщик. Это программа, которая монтирует сменный носитель при обращении к нему. Для того, чтобы использовать автомонтировщик, следует включить его поддержку в ядре. Самый распространенный автомонтировщик это autofs. Он управляется файлом auto.master. Структура auto.master

#каталог	управляющий файл
/mnt		/etc/auto.misc

Каждый раз, когда происходит обращение к каталогу /mnt, запускается автомонтировщик с управляющим файлом /etc/auto.misc.

#auto.misc
#подкаталог	опции			:устройство
cdrom		-fstype=iso9660	:/dev/hdc
floppy		-fstype=auto		:/dev/fd0

Тогда при дальнейшем обращении к /mnt/cdrom происходит запуск mount для устройства /dev/hdc с указанными опциями. Указание в опциях файловой системы для носителя обязательно, остальные опции могут браться из fstab.

Проведение проверок дисков является необходимостью, независимо от используемой файловой и операционной систем. В Linux для этого служит целый набор команд. Команда badblocks проводит проверку поверхности диска на читаемость и записываемость, она действует независимо от используемой файловой системы. Для ее выполнения файловую систему необходимо размонтировать (ГРАБЛИ! все проверки дисков это ПОСИМВОЛЬНЫЕ команды), а затем отдать команду

badblocks /dev/hda3 > /tmp/bblcks3

После этого вся информация о поврежденных участках поступит в файл /tmp/bblcks3. Это необходимо, т.к. далее она понадобится для проверки файловой системы.

Проверка файловой системы на носителях проводится различными (ПОСИМВОЛЬНЫМИ!) командами, в зависимости от типа файловой системы (есть общая fsck, которая занимается только тем, что вызывает специфическую, и для работы требует указывать тип файловой системы). Обычно требуется только e2fsck. Она проводит проверку суперблока файловой системы, структуры директории, а также может проводить проверку читаемости поверхности. Однако последнее не требуется, если вы использовали команду badblocks. Еще раз обращу ваше внимание на то, что для запуска проверки файловая система должна быть размонтирована, или, в крайнем случае, смонтирована read-only.

e2fsck -l /tmp/bblcks3 /dev/hda3

Тогда при проверке будет предпринята попытка перенести информацию с поврежденного блока на целый. Иногда это удается.

Следующая страница → ← Предыдущая страница
⇣ Содержание
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Вечерний 3DNews
Каждый будний вечер мы рассылаем сводку новостей без белиберды и рекламы. Две минуты на чтение — и вы в курсе главных событий.

window-new
Soft
Hard
Тренды 🔥
Анонсирован VR-хоррор Alien: Rogue Incursion, который полностью погрузит игроков в ужасы вселенной «Чужого» 8 мин.
Российская пошаговая тактика «Спарта 2035» про элитных наёмников в Африке получила первый геймплей — демоверсия не выйдет 30 апреля 2 ч.
Власти США позвали Сэма Альтмана, Дженсена Хуанга и Сатью Наделлу помочь им с защитой от ИИ 3 ч.
«В команде явно продали души дьяволу»: игроков впечатлила работа Biomutant на Nintendo Switch, но производительность требует жертв 4 ч.
Microsoft открыла исходный код MS-DOS 4.00 и разместила его на GitHub 4 ч.
Большинство россиян не видит угрозы в ИИ 4 ч.
Китайские клавиатурные приложения Honor, Oppo, Samsung, Vivo и Xiaomi оказались уязвимы перед слежкой 5 ч.
Alphabet удалось развеять опасения по поводу отставания в области ИИ 6 ч.
GSC Game World показала новый трейлер и скриншоты S.T.A.L.K.E.R. 2: Heart of Chornobyl 6 ч.
Рекламные доходы YouTube в первом квартале выросли на 21 % до $8,1 млрд 7 ч.
Видеокарты MSI семейства Radeon RX пропадают с прилавков — компания «сместила фокус» на GeForce RTX 58 мин.
TSMC научилась создавать монструозные двухэтажные процессоры размером с пластину 3 ч.
Федеральное расследование аварий с автопилотом Tesla нашло их причину — «неправильное использование» 3 ч.
Oppo представила смартфон A60 с Snapdragon 680 и 50-Мп камерой 4 ч.
Япония ужесточит контроль экспорта полупроводников и квантовых технологий куда бы то ни было 4 ч.
Intel пожаловалась на производственные проблемы при сборке Core Ultra — из-за этого процессоров не хватает 5 ч.
Великобритания и Новая Зеландия задействуют подводные оптические кабели для распознавания землетрясений и цунами 5 ч.
Объём российского IoT-рынка превысил 35 млрд руб. 5 ч.
Китайцы начали выпускать Radeon RX 6600 LE — вариант RX 6600 с разгоном на 0,16 % 6 ч.
Realme представила 5G-версию 125-долларового смартфона C65 на чипе Dimensity 6300 7 ч.