Предыдущая версия справа и слева
Предыдущая версия
Следующая версия
|
Предыдущая версия
|
for_students:os [2022/01/25 17:28] ejlka [Архитектура ОС.] |
for_students:os [2022/01/27 11:24] (текущий) ejlka |
===== Операционные системы ===== | ===== Операционные системы ===== |
| В данном разделе будут собраны теоретические материалы по дисциплине Операционные системы. |
| |
| |
| |
| |
==== Файловые системы. ==== | |
| |
Файл - это именованная часть данных на диске. Для работы с файлами на диске должна быть создана соответствующая структура. Файловая система - это порядок организации, хранения и именования данных. Сейчас существует множество файловых систем, но приложения не обязаны знать, как работать с каждой из них. Для приложений существует свой уровень абстракции - виртуальная файловая система, с помощью которой приложения пишут и читают с диска (справедливо только для Linux). \\ Минимальная единица, с которой работает файловая система - это блок (в ОС Linux) или кластер (в ОС Windows). Блок или кластер состоит из нескольких секторов и мы не можем занять в файловой системе место меньше, чем один блок или кластер. \\ Все файловые системы можно разделить на 2 группы - журналируемые и нежурналируемые, в зависимости от того, будет ли как-то контролироваться факт записи на диск или нет. Для записи на диск нужно выполнить следующие действия: | |
| |
* зарезервировать место в файловой системе; | |
* записать данные на диск; | |
* записать информацию о местонахождении данных; | |
* создать имя файла. | |
| |
=== Нежурналируемые ФС === | |
| |
Примером таких систем может быть ext2 и fat. Если в процессе записи на диск действие будет остановлено (например, отключится электричество), то в ФС возникнут ошибки, будут повреждены файлы и директории. У таких ФС есть одно преимущество - это скорость. Поэтому сейчас они используются в основном в качестве разделов для временных файлов. Кроме того, они используются на флеш-накопителях, т.к. меньше используют операции перезаписи из-за отсутствия журнала. | |
| |
=== Журналируемые ФС === | |
| |
Журналируемые файловые системы работают по транзакционному принципу. В структуре раздела есть журнал, в котором записываются действия перед тем, как будут произведены. И после их выполнения журнал очищается. Транзакция — это набор действий, выполняемых как одно целое, то есть оно или полностью завершено, или нет. Если транзакция будет прервана, то в соответствии с записью в журнале эти изменения откатятся, и транзакция будет считаться невыполненной. Такой подход делает работу удобнее и надежнее. Чтобы в нежурналируемой системе обнаружить незавершенные действия, требуется проверить целиком весь диск, всю файловую систему. Журналируемые ФС работают медленнее, чем если бы они были отформатированы в аналогичные нежурналируемые. Примером таких ФС могут быть - ext4, NTFS. | |
| |
=== Файловая система Windows - NTFS === | |
| |
NTFS - new technology file system, основная файловая система ОС Windows. \\ Основные особенности: | |
| |
* повышенная надежность - NTFS использует файл журнала и сведения о контрольных точках для восстановления согласованности файловой системы при перезагрузке компьютера после сбоя системы; | |
* повышенная безопасность - безопасность на основе списка управления доступом (ACL) для файлов и папок, а также поддержка шифрования диска BitLocker; | |
* поддержка больших томов - NTFS может поддерживать тома размером до 8 ПБ в версии Windows Server 2019 и выше и Windows 10; | |
* максимальная длина имени файла и пути к файлу - поддержка длинных имен файлов с обратной совместимостью, поддержка длины пути свыше 260 симоволов; | |
* динамическое выделение емкости - применение дисковых квот для отслеживания и контроля использования дискового пространства в томах NTFS для отдельных пользователей, сжатие файловой системы, увеличение размера тома NTFS возможно путем добавления нераспределенного пространства с того же или с другого диска. | |
| |
------ | |
==== Структура каталогов Linux ==== | |
| |
В ОС Linux есть единая иерархия директорий, которая не зависит от физических дисков. Все файлы и каталоги находятся в корне (он же root, он же /). [{{:for_students:106.jpg?}}] | |
Рассмотрим некоторые из этих директорий: | |
* ''/bin'' - содержит непосредственно исполняемые файлы многих базовых команд оболочки. В основном программы представлены в двоичном формате; | |
* ''/dev'' - содержит файлы устройств, есть некоторые особенности: | |
* ''/dev/null'' - эту команду можно отправить, чтоб уничтожить содержимое файла | |
* ''/dev/zero'' - содержит бесконечную последовательность нулей; | |
* ''/dev/random'' - содержит бесконечную последовательность случайных значений; | |
* ''/etc'' - содержит файлы конфигураций; | |
* ''/usr'' - содержит пользовательские двоичные файлы и данные программы | |
* ''/usr/bin'' - основные пользовательские команды; | |
* ''/usr/sbin'' - дополнительные команды для администратора; | |
* ''/usr/lib'' - системные библиотеки; | |
* ''/usr/share'' - документация | |
* ''/home'' - директория для домашних каталогов пользователей; | |
* ''/lib'' - библиотеки | |
* ''/sbin'' - системный двоичные файлы. Эти файлы запускаются только от имени пользователя root | |
* ''/tmp'' - временные файлы, содержимое этой директории удаляется после перезагрузки; | |
* ''/var'' - файлы переменных данных. Здесь хранятся логи. | |
* ''/boot'' - загрузочные файлы | |
Физические диски при этом могут быть примонтированы к любой директории (с помощью команды ''mount''). Точка монтирования - это логическая связь между физическим диском и директорией в файловой структуре Linux. \\ | |
Рассмотрим ситуацию, когда вся система (/) находится на одном физическом диске, но место на этом диске стало заканчиваться. В ОС Linux возможно просто добавить новый диск и примонтировать его к какой-либо директории. Все пути останутся прежними. | |
------- | |
==== LVM - logical volume manager. ==== | |
| |
LVM - управление логическими томами в Linux. Необходим для того, чтобы можно было объединить несколько различных аппаратных дисков в один и далее разбить их так, как требуется. LVM позволяет этого делать "на лету", то есть без отмонтирования текущего диска и, соответственно, без остановки приложения. \\ Возможности LVM: | |
| |
- замена диска без простоя системы; | |
- перераспределение информации по физическим носителям; | |
- увеличение раздела за счет выделения нового пространства на физическом носители или добавления нового. | |
| |
Некоторые понятия LVM: | |
| |
* Физический том (physical volume, pv) - обычно это диск /dev/sda, /dev/sdb или же раздел на диске /dev/sda1 | |
* Группа томов (volume group, vg) - в эти группы объединяются физические тома и являются единым пространством, которое можно нарезать на логические диски. | |
* Логические тома (logical volume, lv) - логический раздел в группе томов. Емкость такого раздела может быть больше, что емкость отдельного физического тома, что позволяет увеличить гибкость работы с разделами. | |
[{{:for_students:16-2.jpg?}}] | |
| |
==== Подключение по SSH. ==== | |
| |
SSH - secure shell (безопасная оболочка). Это сетевой протокол прикладного уровня , с помощью которого можно удаленно управлять операционными системами, а также передавать файлы. Безопасность осуществляется за счет шифрования трафика. По умолчанию этот протокол использует 22 порт. Для работы с ssh необходима серверная и клиентская часть программного обеспечения. Мы будем использовать в качестве серверной части - OpenSSH (ОС Linux) и в качестве клиентской - Windows Terminal (ОС Windows).\\ | |
Аутентификация возможна по паролю или же по ключу. При использовании ключей необходимо сгенерировать пару ключей - открытый (public) и закрытый (private). Закрытый ключ хранится на машине, с которой происходит подключение, на удаленной машине - открытый ключ. <WRAP center round alert 60%> | |
Закрытый ключ пользователя ни при каких обстоятельствах никому не передается! | |
</WRAP> | |
Пара из открытого и закрытого ключей аналогична запиранию двери. Замок общедоступен, любой человек с подходящим ключом может открыть дверь. Ключ является закрытым и предоставляется только доверенным людям, так как его можно использовать для открытия двери. При подключении к виртуальной машине Linux она проверяет SSH-клиент, чтобы убедиться, что у него есть правильный закрытый ключ. Если у клиента есть закрытый ключ, он получает доступ к виртуальной машине. \\ | |
Сгенерировать пару ключей можно с помощью Windows Terminal командой ''ssh-keygen'', после чего открытый ключ необходимо будет передать на удаленную машину. \\ | |
Для подключения по паролю вам необходимо знать следующее - адрес удаленной машины, имя и пароль пользователя. | |
| |
------- | |
| |
| |