
Проверили: 0/1
Это старая версия документа!
Операционные системы
Системы виртуализации.
Задачи систем виртуализации:
- обеспечивают независимость виртуализированных окружений друг от друга;
- обеспечивают безопасность виртуализированных окружений;
- позволяют максимально эффективно использовать все вычислительные ресурсы.
Хозяйская система (хостовая система) - аппаратная система, на которой запущен гипервизор, симулятор или система управления контейнерами.
Гостевая система - виртуальная система, запущенная под управлением гипервизора или симулятора, или же контейнер.
Гипервизор - программное обеспечение, запущенное на хостовой машине, позволяющее создавать и управлять гостевыми виртуальными машинами.
Гипервизор должен полностью контролировать гостевые ресурсы, обеспечения безопасность для гостевых и хостовых систем. Программное обеспечение, запущенное на виртуальной машине, должно работать также, как и запущенное на реальном ПК. Гипервизор должен использовать как можно меньше ресурсов хостовой машины.
Типы гипервизоров
- Гипервизоры 1го типа (bare-metal) - работают непосредственно на аппаратном обеспечении (без дополнительной хостовой ОС). Например, VMWare ESXi и MS Hyper-V core.
- Гипервизоры 2го типа - работают на хостовой ОС. Например, KVM.
- Гибридные гипервизоры (1+) - могут работать на «чистом» железе, однако для управления и администрирования нужна отдельная ОС.
Некоторые параметры Oracle Virtual Box, которые могут пригодиться на лабораторных занятиях:
- Сеть. В Oracle Virtual Box возможно несколько вариантов подключения сетевого адаптера, рассмотрим наиболее часто используемые:
NAT
- network address translation, данный вариант позволяет выходить во внешнюю сеть, используя при этом частный ip адрес, который не будет доступе из внешней сети. Для подключения к такой машине извне необходимо сделать проброс портов;Сетевой мост
(bridge) - в этом случае ВМ работает аналогично физической машине. При этом появляется возможность подключаться к ВМ из внешней сети.Внутренняя сеть
- этот вариант вам пригодится в том случае, если необходимо сделать локальную сеть между ВМ, работающими на одном физическом хосте.
- Общие папки - для удобства вам может понадобиться общая папка между гостевой и хостовой машинами.
Архитектура ОС.
Операционная система - комплекс взаимосвязанных программ, предназначенных для управления ресурсами компьютера и организации взаимодействия с пользователем. Их можно разделить на 2 большие группы - ОС семейства MS Windows и Unix-подобные ОС.
ОС состоит из следующих компонентов:
- Загрузчик - GRUB (GRand Unified Bootloader), Windows Boot Manager;
- Ядро ОС
- Сервисы (демоны) — программы, постоянно работающих и выполняющих задачи в фоновом режиме;
- Утилиты - вспомогательные компьютерные программы в составе общего программного обеспечения для выполнения специализированных типовых задач, связанных с работой оборудования и операционной системы (ОС);
- Оболочки - командные оболочки (shell, bash, powershell), файловые менеджеры (filezilla, mc), графические оболочки (KDE);
- Среды разработки.
Как происходит загрузка ОС?
После включения ПК сначала проходит POST (Power on self test) - проверка аппаратного обеспечения компьютера. Далее загружается BIOS/UEFI, в котором прописано, откуда будет происходить загрузка (boot device), после чего происходит загрузка с этого устройства. Для того, чтобы с данного устройства могла происходить загрузка, оно должно быть размечено специальным образом. Если это BIOS, то область MBR (master boot record), если UEFI - GPT, после чего управление передается загрузчику ОС.
Загрузчик ОС - специальная программа, которая расположена на первых секторах жесткого диска. Загрузчик нужен для того, чтобы можно было модифицировать загрузку ОС - например, если у вас установлено параллельно 2 ОС - Windows и Linux, или же вам надо загрузиться с какими-либо параметрами в режиме отладки. Загрузчик находит ОС и загружает 2 сущности - Kernel space и User space.
Ядро ОС - часть ОС, постоянно находящаяся в оперативной памяти и управляющая всей ОС. Ядро контролирует доступ приложений к аппаратной части - к ОЗУ, к ЦПУ и т.д., то есть обработка прерываний.
Основные функции ядра ОС:
- обработка прерываний;
- создание и уничтожение процессов;
- переключение процессов из состояния в состояние;
- организация взаимодействия между процессами;
- поддержка распределения и перераспределения памяти;
- поддержка операций ввода-вывода.
Архитектура ядер:
- Монолитное ядро;
- Модульное ядро;
- Микроядро;
- Экзоядро;
- Наноядро;
- Гибридное ядро.
Монолитное ядро - все драйверы выполняются в пространстве ядра. Примером такого ядра является Linux. Преимуществом такого ядра является скорость работы, однако же сбой в одном из компонентов нарушит работу всей системы. Для изменения такого ядра (добавления новых функций, драйверов и т.д.) необходима перекомпиляция ядра и при этом будет происходить увеличение кода ядра, что к повышению требований к оперативной памяти. Поэтому такие ядра не используются в системах, где есть жесткое ограничение по объему ОЗУ.
Модульное ядро - это разновидность монолитного ядра, однако добавлять и убирать различные драйверы в пространства ядра в нем возможно без компиляции. Современные версии Linux работают на модульном ядре. С помощью команд insmod
и modprobe
можно загружать и выгружать модули ядра, lsmod
покажет список загруженных модулей.
Микроядро - предоставляет только элементарные функции управления процессами и минимальный набор абстракций для работы с оборудованием. Это позволяет решить проблему отказа системы при отказе работы одного драйвера. Преимуществами такого ядра является его высокая надежность, недостаток - дополнительные затраты на переключение контекста.
Экзоядро - частный случай микроядра, когда ядро занимается только взаимодействием процессов. Все остальные функции - работа с памятью, сетью, другими устройствами - выносятся в пользовательские библиотеки.
Наноядро - ядро, реализующее только обработку прерываний, т.е. по сути работа с аппаратным обеспечением. Такой тип ядра часто используется в виртуализации. Наноядро гостевой ОС может работать как процесс или модуль ядра другой ОС, позволяя запускать «неродные» приложения.
Гибридное ядро - позволяет сгладить недостатки монолитного и микроядра. При этом часть критичных для производительности функций реализована внутри пространства ядра, а часть, как сервисы, в пользовательском пространстве.
MBR - master boot record
MBR содержит исполняемый код, необходимый для передачи управления загрузчик и таблицу разделов (partition table). Эта запись занимает 512 байт в начале диска. В этой таблице можно создавать только 4 первичных (primary) разделов. Если необходимо обойти это ограничение, можно создать расширенный раздел (extended partition) вместо одного из первичных и уже внутри него создать несколько логических разделов (до 16). Стоит помнить, что ОС Windows можно устанавливать только на первичные разделы, у Linux таких ограничений нет.
GPT — GUID Partition Table
GPT - статический уникальный идентификатор, не содержит загружаемый код. Тем не менее блок MBR присутствует в начале для совместимости и защиты от повреждения утилитами, не умеющими работать с GPT, но понимающими MBR. В совместимом MBR указан один раздел, охватывающий весь диск. GPT не накладывает ограничений на разделы, поэтому такие понятия, как расширенные и первичные разделы, в работе с ним не используются.
Файловые системы.
Файл - это именованная часть данных на диске. Для работы с файлами на диске должна быть создана соответствующая структура. Файловая система - это порядок организации, хранения и именования данных. Сейчас существует множество файловых систем, но приложения не обязаны знать, как работать с каждой из них. Для приложений существует свой уровень абстракции - виртуальная файловая система, с помощью которой приложения пишут и читают с диска (справедливо только для 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 возможно путем добавления нераспределенного пространства с того же или с другого диска.
LVM - logical volume manager.
LVM - управление логическими томами в Linux. Необходим для того, чтобы можно было объединить несколько различных аппаратных дисков в один и далее разбить их так, как требуется. LVM позволяет этого делать «на лету», то есть без отмонтирования текущего диска и, соответственно, без остановки приложения.
Возможности LVM:
- замена диска без простоя системы;
- перераспределение информации по физическим носителям;
- увеличение раздела за счет выделения нового пространства на физическом носители или добавления нового.
Некоторые понятия LVM:
- Физический том (physical volume, pv) - обычно это диск /dev/sda, /dev/sdb или же раздел на диске /dev/sda1
- Группа томов (volume group, vg) - в эти группы объединяются физические тома и являются единым пространством, которое можно нарезать на логические диски.
- Логические тома (logical volume, lv) - логический раздел в группе томов. Емкость такого раздела может быть больше, что емкость отдельного физического тома, что позволяет увеличить гибкость работы с разделами.