Что такое хост машина
Хост — что это такое и как он работает
Довольно часто, читая какие-нибудь статьи в интернете по информатике или компьютерной тематике, можно наткнуться на термин — хост или узел. Чаще всего авторы таких статей не объясняют, что это такое.
И у пользователей ПК, особенно тех, которые увлекаются компьютерными и сетевыми технологиями возникает вопрос — что же это такое и почему этот термин так нередко употребляют в интернете?
Надеюсь вам понравился материал про маску сети, давайте сегодня разберем, что означает термин Хост, что он из себя представляет и почему некоторые авторы его так часто употребляют.
Что такое Хост
Хост (host) — в первую очередь это любое устройство, которое выполняет функции клиент-сервера. Имеет несколько значений:
1. Это — сервер, на котором можно размещать данные и хранить их, например, документы, музыку, видео и т.д. Все это может быть доступно в общем доступе или для частного пользования. Это может быть всякий сайт, электронная почта, интернет-сервис или даже онлайн игра.
2. Это — IP адрес. Вы уже знаете, что каждому устройству, подключенному к сети, привязывается уникальный идентификатор — айпи. Он бывает статическим и динамическим. Если адрес динамический, то им могут пользоваться сразу несколько пользователей, но хост будет считаться все равно, как один. Поэтому статистика по уникальным айпи, на сервисах для их подсчета часто бывает искаженной. Для памяти, — IP как вы знаете используется в стеке протоколов TCP/IP.
3. Это – компьютер, или другая техника, или гаджет подключенные к интернету. Но это можно отнести и ко второму пункту про айпи. Написал, чтобы было понятней.
4. Это — уникальный посетитель. Нередко встретишь в глобальной паутине и такое определение.
Интересно! С английского переводится — «хозяин» или «принимающий гостей», что довольно забавно.
Что такое узел сети
Узел сети — это любое устройство, подключенное к интернету. Им может быть: компьютер, смартфон, телевизор, планшет, маршрутизатор, принтер и т.д. Т.е. каждое устройство, которое имеет свой IP адрес.
Чем хост отличается от узла?
По сути эти два термина означают одно и тоже, но, все зависит от того, в каком контексте они употребляются. Так, любой узел с IP адресом по сути является хостом, поэтому их просто взаимозаменяют.
Но, есть отличие, так, host может быть виртуальным и работать в режиме сервера, например, yandex.ru, предоставляя сервисы для других узлов — вашему и другим ПК.
Отличие заключается в том, что хост может быть виртуальным и работать в режиме сервера, а узел нет. Если конечно не настроить последний на работу в режиме сервера.
Так, как эти понятия практически синонимы друг друга и их можно заменять в различных контекстах — поэтому многие авторы и употребляют их, просто заменяя один на другой. Так, что если увидите эти термины в каких-либо статьях — смотрите на то, в каком ключе их используют.
В заключение
Вот вы и узнали, что это такое по определению в информатике. Надеюсь вам было интересно, в следующих материалах мы продолжим разбираться в сетевых технологиях — будет много полезного. Заходите еще!
Что такое виртуальная машина и как её создать
В этой статье мы расскажем, что называется виртуальной машиной и для чего предназначена эта программа, а также покажем, как устанавливать VirtualBox.
Виртуальные машины с каждым годом все больше набирают популярность. Такой рост объясняется двумя основными причинами:
Что такое виртуальная машина
Иногда требуется установить программу, созданную для ОС, которой нет на устройстве. Для этого можно воспользоваться технологией виртуализации. Виртуализация ― это возможность запуска нескольких операционных систем на одном физическом устройстве. То есть виртуальная машина позволяет создать на одном компьютере ещё один компьютер. Технология использует ресурсы устройства (память, процессор, устройство ввода и вывода), но при этом работает как отдельный компьютер.
Операционная система, на базе которой создаётся новая среда, называется хост-системой (host), а дополнительная операционная система — гостевой.
Виртуализация создается при помощи двух элементов: виртуальной машины и гипервизора.
Виртуальная машина (ВМ или VM) — программа, с помощью которой можно создать гостевую операционную систему на компьютере.
Гипервизор — программа, которая управляет физическими ресурсами вычислительной машины и распределяет эти ресурсы между несколькими различными операционными системами, позволяя запускать их одновременно. Благодаря гипервизору операционные системы не мешают друг другу.
Есть три вида гипервизоров:
Аппаратный. Такие гипервизоры используют Hyper-V, KVM, ESXi. Xen. Аппаратный гипервизор устанавливается прямо на «железо» и выполняет функции эмуляции физического аппаратного обеспечения. То есть такой гипервизор является минимальной операционной системой.
Хостовый гипервизор запускается на обычной ОС, как и другие приложения в системе. В этом случае гостевая ОС выполняется как процесс на хосте, а гипервизор разделяет гостевую ОС и ОС хоста. Примеры гипервизоров этого типа: VMware, VirtualBox и Parallels Desktop для macOS.
Гибридный. Смесь аппаратного и хостового гипервизора. Аппаратными средствами управляет первый тип гипервизора. Хостовый работает с остальными аппаратными компонентами. Такой вид управления имеет Hybrid, Type-1+.
Зачем нужна виртуальная машина и виртуализация
Для чего используют виртуализацию:
Преимущества и недостатки использования виртуальной машины
Сохранение текущего состояния машины. Если нужно выключить ПК или перейти к другой задаче, то машина сохранит все настройки. При следующей загрузке ВМ откроется в том состоянии, в котором находилась в момент выключения.
Создание снапшота при тестировании нестабильной программы. Если при тестировании софта произошла критическая ошибка, можно откатить ВМ до предыдущего состояния. По сравнению с основной системой, для виртуальной машины выделяется меньше места на дисковом пространстве, благодаря этому откат системы происходит быстрее.
Машину можно сохранять или дублировать как изолированную среду. Её можно будет запустить позднее или скопировать на другой ПК со всеми заданными конфигурациями.
Для переподключения на другую ОС не нужно перезагружать компьютер.
Для одновременного запуска на ВМ нескольких операционных систем, нужно иметь соответствующие аппаратные ресурсы.
ОС в виртуальных машинах работают медленнее. Несмотря на постоянное развитие ВМ, работа виртуальных ОС ниже традиционных.
Виртуальная платформа поддерживает не весь функционал устройства. Например, VMware поддерживает USB 3.0, контроллеры портов COM и LPT и приводы CD-ROM, но виртуализация видеоадаптеров и поддержка функций ускорения трехмерной графики пока малодоступны.
Популярные виртуальные машины
Самыми популярным виртуальным машинам являются:
VMware
VMware — одна из самых популярных виртуальных машин для крупных задач. VMware имеет 2 вида: Player (бесплатная версия) и Workstation (платная версия). Для macOS есть специальная версия VMware Fusion и VMware Fusion Pro.
VirtualBox
VirtualBox — простой и бесплатный инструмент для виртуализации от компании ORACLE. Можно установить самые популярные операционные системы (Windows, Linux-подобные ОС, FreeBSD, macOS). Также VirtualBox может работать с VM, которые были созданы в платной версии VMware Workstation.
Microsoft Hyper-V
Microsoft Hyper-V — VM для Windows 10. Не работает на других ОС.
Parallels Desktop
Несмотря на развитость всех программ для виртуализации, самым часто используемым инструментом является VirtualBox. Он нашел свое применение частными лицами и организациями. Далее мы рассмотрим, как создать VM и установить операционную систему в программе VirtualBox.
Как создать виртуальную машину VirtualBox
Скачайте и установите VirtualBox на компьютер.
Откройте панель управления Oracle и нажмите Создать:
3. Введите название виртуальной машины (имя может быть любое). Кликните Далее:
4. Укажите объём памяти для машины. Для этого сдвиньте ползунок вправо. Нажмите Далее:
5. Выберите пункт «Создать новый виртуальный жёсткий диск» и кликните Создать:
6. Укажите тип файла «VDI (VirtualBox Disk Image)» и нажмите Далее:
7. Выберите формат хранения «Динамический виртуальный жёсткий диск». Нажмите Далее:
8. Укажите объём жёсткого диска 20 ГБ. Кликните Создать:
Готово, вы создали ВМ на VirtualBox. Теперь переходите к установке операционной системы:
Как установить операционную систему в VirtualBox
Рассмотрим, как установить операционную систему на примере Ubuntu 20.04.
Скачайте дистрибутив Ubuntu на компьютер.
Откройте панель управления Oracle и нажмите Настроить:
3. Перейдите в раздел Система. На вкладке «Материнская плата» поставьте галочку напротив пункта «Гибкий диск»:
4. На вкладке «Процессор» выберите 2 ядра:
5. Перейдите в раздел Дисплей. Поставьте галочку напротив пункта «Включить 3D-ускорение» и передвиньте ползунок вправо, чтобы выделить максимально возможный объём видеопамяти:
6. Перейдите в раздел Носители и выберите «Пусто». Затем нажмите на иконку Диск — Выбрать образ оптического диска. Загрузите дистрибутив Ubuntu, который вы скачали на первом шаге.
7. После загрузки кликните Ок:
8. На главной странице нажмите Запустить:
9. Подождите, пока загрузится машина:
10. В приветственном окне выберите язык:
11. Нажмите установить Ubuntu:
12. Выберите раскладку клавиатуры «Russian». Нажмите Продолжить:
13. Выберите пункты «Обычная установка» и «Загрузить обновления во время установки Ubuntu». Затем кликните Продолжить:
14. Выберите тип установки «Стереть диск и установить Ubuntu» и нажмите Установить:
Затем кликните Продолжить:
15. Назначьте нужный регион и нажмите Продолжить:
16. Зарегистрируйтесь. Задайте имя и пароль, остальные поля будут заполнены автоматически. Нажмите Продолжить:
17. Дождитесь окончания установки и кликните Перезагрузить:
18. Дождитесь перезагрузки и нажмите Enter:
19. Выберите учётную запись, которую вы создали на шаге 15:
20. Введите пароль, который вы задали при создании учётной записи:
21. Примите предлагаемые настройки или нажмите Далее в правом верхнем углу экрана:
Готово, вы установили ОС Ubuntu 20.04 и можете приступать к работе:
Теперь вы знаете, что делает виртуальная машина и какими ресурсами виртуальной машины можно управлять с помощью программы VirtualBox.
Работа с виртуальными машинами KVM. Подготовка хост-машины
Вступление
Как и было обещано в предыдущей статье, сегодня мы поговорим о базовой настройке хост-машины для работы KVM.
Для начала необходимо узнать, есть ли у нашего процессора необходимые инструкции для поддержки виртуализации.
$ egrep ‘(vmx|svm)’ /proc/cpuinfo
Если есть — это замечательно.
Подготовка операционной системы
Установку Debian Squeeze я, пожалуй, описывать не буду: если уж вы добрались до KVM, то установка системы — плёвое дело.
Устанавливать нужно будет 64-битную OS, поскольку необходимые пакеты есть только для этой архитектуры.
В Debian Squeeze «свежесть» пакетов с KVM и сопутствующих программами нас совсем не устраивает, поскольку очень много всяких фиксов и фич попросту пройдут мимо нас. Поэтому мы добавим репозитории Debian Sid и experimental:
deb http://ftp.ru.debian.org/debian sid main contrib non-free
deb-src http://ftp.ru.debian.org/debian sid main contrib non-free
deb http://ftp.ru.debian.org/debian experimental main contrib non-free
deb-src http://ftp.ru.debian.org/debian experimental main contrib non-free
Указываем, что у нас базовый дистрибутив stable, а не то, что подумала система:
# echo ‘APT::Default-Release «stable»;’ > /etc/apt/apt.conf.d/default
Оттуда нам понадобятся пакеты:
Из стабильного репозитория нам будут нужны:
# aptitude install uml-utilities bridge-utils
На вашем рабочем десктопе вы можете поставить virt-manager (GUI-утилита), который позволит удобно создавать нужные конфигурации виртуальных машин.
Ядро чем «свежее» — тем лучше (в известных пределах конечно: из git, например, я бы ставить не рекомендовал). Хорошим вариантом будет 2.6.39, вышедшее недавно.
Следует отметить, что в стандартном ядре отсутствует модуль для поддержки записи в UFS2, и если планируется запускать гостевую FreeBSD, потребуется собрать ядро с этим модулем. Ну и, конечно, в Debian-овском ядре отсутствуют свежие версии cgroups.
Что должно быть включено в ядре для использования максимального объема требуемого функционала:
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_RING=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_CGROUPS=y
CONFIG_CGROUP_NS=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
CONFIG_CGROUP_SCHED=y
CONFIG_BLK_CGROUP=y
CONFIG_NET_CLS_CGROUP=y
Затем идём по ссылке и устанавливаем все deb-пакеты оттуда, копируем insmod.static в /sbin/insmod.static (это нужно, поскольку в работе libguestfs использует статически скомпилированную версию insmod, а в Debian и Ubuntu такого файла просто нет, однако в последней версиии febootstrap эту проблему устранили, insmod.static более не нужно загружать на сервер). libguestfs позволяет нам получать доступ к диску VDS через API libguestfs(C, Perl, Python, PHP) или через утилиту guestfish.
Первый блин
Сейчас мы установили все, необходимое для запуска VDS, их доступа в сеть и установки самой виртуальной машины.
Давайте попробуем что-нибудь поставить, например, тот же самый Debian. Пока без настройки сети, просто, по умолчанию.
Скачиваем установщик netinstall:
Редактируем /etc/libvirt/qemu.conf, чтобы виртуальные машины работали у нас от непривилегированного пользователя:
user = «username»
group = «libvirt»
Поскольку у нас будут использоваться tun-устройства, нужно выставить capability CAP_NET_ADMIN, сделать это можно как для отдельного исполняемого файла, так и для пользователя в целом, или настроить чтобы libvirt не сбрасывал нужные права для qemu/kvm.
Выставляем для отдельного файла:
sudo setcap cap_net_admin=ei /usr/bin/kvm
Или выставляем для пользователя в целом в файле /etc/security/capability.conf:
Или выставляем соответствующую настройку в /etc/libvirt/qemu.conf:
Добавим пользователя в группу libvirt и kvm:
# adduser username libvirt
# adduser username kvm
Запустим установку виртуальной машины:
Подробно разберём параметры, которые мы указали:
Утилиты настройки и управления
Для управления установкой и для клонирования виртуальных машин у нас есть две замечательные утилиты — графическая и консольная: virt-manager и virsh, соответственно. Конечно, консольная версия намного богаче по возможностям, но ничто не сравнится с видом графиков, от которых сердце сисадмина млеет.
Думаю с virt-manager вы и сами разберётесь, давайте попробуем покопаться в консольных внутренностях virsh. Вот несколько команд которые стоит выполнить и посмотреть что из этого получится:
Чтобы тысячу раз не писать —connect qemu:///system, добавьте:
export VIRSH_DEFAULT_CONNECT_URI= qemu:///system
Подготовка сети
В официальной документации предлагается использовать несколько вариантов организации сети: NAT, bridged и прямое использование сетевых карт. И, к сожалению, в различных примерах, которые я нашел в сети и на официальном сайте, рассматриваются только NAT и bridged сети.
В моей конфигурации используются TUN/TAP устройства, на которые с eth0 маршрутизируется трафик. Коротко опишу, почему выбран именно такой способ маршрутизации:
NAT нам не подходит, поскольку каждая VDS должна быть доступна из сети напрямую.
Схема с мостами не очень надёжная, поскольку теоретически есть возможность «захвата» IP адреса чужой виртуальной машины.
Итак:
Данный участок конфигурации нужно указывать непосредственно в конфигурационном файле гостя, расположенного по адресу /etc/libvirt/qemu/debian_guest.xml. Редактировать лучше всего через:
$ virsh edit debian_guest
Тогда конфигурация обновится на лету, при условии, что машина не запущена. В противном случае нужно будет подождать, пока она остановится, и запустить ее снова.
Создадим необходимое нам виртуальное устройство.
Для начала нам нужно дать нашему пользователю возможность беспарольного обращения к системным командам. Для этого добавим в sudoers:
Cmnd_Alias QEMU = /sbin/ifconfig, /sbin/modprobe, /usr/sbin/brctl, /usr/sbin/tunctl, /sbin/sysctl, /bin/ip, /usr/bin/cgcreate, /usr/bin/cgdelete, /sbin/tc
username ALL=(ALL:ALL) NOPASSWD: QEMU
Включим возможность форвардинга и проксирования arp-запросов:
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo sysctl net.ipv4.conf.all.proxy_arp=1
Также можно добавить эти параметры в /etc/sysctl.conf и применить их:
Создадим виртуальную сетевую карту и поднимем устройство:
Создадим маршрут на нужное нам устройство с нужного IP-адреса:
sudo ip route add 10.10.10.100 dev debian_guest
Теперь можно запустить VDS:
$ virsh start debian_guest
Подключившись к консоли, мы увидим, что сети нет, но у нас появилось устройство eth1, вместо eth0. Это произошло потому, что система при загрузке в /etc/udev/rules.d/70-persistent-net.rules прописывает mac-адрес сетевой карты, и если mac сменился, она создаёт ещё одну запись о сетевой карте, вроде этой:
SUBSYSTEM==»net», ACTION==»add», DRIVERS==»?*», ATTR
==»xx:xx:xx:xx:xx:xx», ATTRНужно удалить этот файл и перезагрузить VDS — после этого сетевая карта определится корректно.
Пропишем новые сетевые настройки в гостевой системе:
# ifconfig eth0 10.10.10.100 netmask 255.255.255.0
# route add default gw 10.10.10.10
10.10.10.10 — это IP-адрес хост-системы. Теперь мы сможем попинговать другие машины.
Добавим DNS-серверы в /etc/resolv.conf, и будет совсем замечательно:
К слову, замечу, что оказалось очень удобно называть сетевые устройства, принадлежащие VDS, также, как и сами VDS — отпадает необходимость искать, кому принадлежит устройство tap0 или vnet0, или как там ещё можно их обозвать.
Если понадобится выдать виртуальной машине ещё один IP-адрес, достаточно будет просто на хост-машине прописать ещё один маршрут:
# ip route add 10.10.10.101 dev debian_guest
А в гостевой системе создать алиас для сетевого устройства:
# ifconfig eth0:1 10.10.10.101
В следующей части
В следующей статье я расскажу о том, как создать образ VDS, что вообще меняется от системы к системе, и как эти параметры можно удобно менять.
Что такое хост-машина
Хост (от англ. host — «хозяин, принимающий гостей») — любое устройство, предоставляющее сервисы формата «клиент-сервер» в режиме сервера по каким-либо интерфейсам и уникально определённое на этих интерфейсах. В более частном случае под хостом могут понимать любой компьютер, сервер, подключённый к локальной или глобальной сети.
Слово «хост» само по себе является практически жаргонным термином, и не несёт никакой информации об устройстве или его функционировании. Употребление слова «хост» имеет смысл только вместе с пояснением, хостом какого сервиса предполагается называемое устройство. Тем не менее, зачастую название сервиса опускают, предполагая, что оно очевидно из контекста.
Например, в реализации протокола USB управлением и координацией каждой группы клиентских устройств занимается отдельный USB Host Controller. В данном случае он выступает в качестве хоста протокола USB. С другой стороны, при выполнении, например, команды ping по произвольному IP-адресу хостом может называться компьютер, обладающий этим адресом, и предоставляющий сервис ответа на ICMP-пакеты. В этом случае такой компьютер выступит как хост сервисов ICMP.
Чаще всего, однако, под «хостом» без дополнительных комментариев подразумевается хост протокола TCP/IP, то есть сетевой интерфейс устройства, подключённого к IP-сети. Как и всякий другой хост, этот имеет уникальное определение в среде сервисов TCP/IP (IP-адрес). С хостом протокола TCP/IP может быть также связана необязательная текстовая характеристика — доменное имя.
В компьютерных играх и других сетевых приложениях, где подключение по сети создаётся динамически, под хостом обычно подразумевают того из участников соединения, который организует управление сеансом связи, в противовес остальным, которые подключаются к организованному им сеансу.