% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
%
\documentclass[
]{article}
\usepackage{amsmath,amssymb}
\usepackage{lmodern}
\usepackage{iftex}
\ifPDFTeX
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
  \usepackage{unicode-math}
  \defaultfontfeatures{Scale=MatchLowercase}
  \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
  \usepackage[]{microtype}
  \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
  \IfFileExists{parskip.sty}{%
    \usepackage{parskip}
  }{% else
    \setlength{\parindent}{0pt}
    \setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
  \KOMAoptions{parskip=half}}
\makeatother
\usepackage{xcolor}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\hypersetup{
  pdflang={hu-HU},
  hidelinks,
  pdfcreator={LaTeX via pandoc}}
\urlstyle{same} % disable monospaced font for URLs
\usepackage[margin=3cm]{geometry}
\usepackage{graphicx}
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
% Set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
\ifLuaTeX
\usepackage[bidi=basic]{babel}
\else
\usepackage[bidi=default]{babel}
\fi
\babelprovide[main,import]{magyar}
% get rid of language-specific shorthands (see #6817):
\let\LanguageShortHands\languageshorthands
\def\languageshorthands#1{}
% magyar helyesírás ellenőrzéshez (ispell) és elválasztáshoz
\selectlanguage{magyar}
%=================================================================
% direkt ékezetes karakter beírás támogatás
%-------------------------------------------
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{multirow} 
\usepackage{float}

%================================================================
% ha ábrát akarunk beemelni, akkor használjuk a graphicx/graphics
% csomagot és az \includegraphics[width=<width>]{abra.pdf} parancsot
\usepackage{graphicx} %for graphics
%kepek helye a gyokerhez(ehhez a file-hoz kepest) kepest
\graphicspath{{./figs/}}
\usepackage{fontspec, newunicodechar}
% \setmainfont{Noto Sans}
\newunicodechar{ű}{\H{u}}
\newunicodechar{ő}{\H{o}}

\ifLuaTeX
  \usepackage{selnolig}  % disable illegal ligatures
\fi

\author{}
\date{}

\begin{document}

\input{onlabmacros}
\markright{Réthelyi Bálint (IZUM0B)} 
\begin{titlepage}
%bme logo 
 \begin{figure}[h]
    \centering
      \includegraphics[width=12cm]{bme_logo}
  \label{fig:bme_logo}
  \end{figure}
  \thispagestyle{empty}
  %cím generálás
  \onlabcim
 
  %\szerzo argumentumok: #1=Név, #2=Neptunkód, #3=szakirány, #4=email,#5 konzulens-1, #6 konzulens-1-email, #7 konzulens-2, #8 konzulens-2-email
  \onlabszerzo{Réthelyi Bálint}{IZUM0B}{Mérnökinformatikus szak}{rethelyibalint@gmail.com}{Dr. Simon Csaba}{simon@tmit.bme.hu}{Dr. Maliosz Markosz}{maliosz@tmit.bme.hu}
  \feladatcim{Proxmox alapú virtualizációs klaszter kiépítése a HSNLabnál} 
\end{titlepage}

\hypertarget{bevezetuxe9s}{%
\subsection{Bevezetés}\label{bevezetuxe9s}}

Az önálló laboratóriumomat a TMIT-en a HSNLab-nál végeztem. A labornak a
különböző kutatásokhoz van négy szervere. Ezeket a szervereket
használják Kubernetes, valamint docker konténerek futtatására, és ezeken
a szervereken keresztül érik el a tanszéki belső hálózatot is.

Amikor átvettem a szerverek üzemeltetését, a négy gép úgynevezett
\href{https://en.wikipedia.org/wiki/Bare-metal_server}{bare-metal}
szerver volt, azaz a fizikai szerveren futott egy operációs rendszer és
a felhasználók azt használták. A hosztokon Ubuntu 18.04 futott.

\hypertarget{probluxe9muxe1k-a-jelenlegi-megolduxe1ssal}{%
\subsubsection{Problémák a jelenlegi
megoldással}\label{probluxe9muxe1k-a-jelenlegi-megolduxe1ssal}}

Míg első elgondolásra a bare metal megoldás kényelmesnek hangzik
üzemeletetési szempontból, erről kiderült, hogy azért bőven akad vele
probléma.\\
A laborban sokan dolgoznak, csak a BSc és MSc hallgatók száma meghaladja
a százat. A laborban az volt a szokásjog, hogy mindenki a \texttt{root}
felhasználóhoz kapott hozzáférést, ezzel a \texttt{docker} használatához
szükséges jogosultságok kiosztására nem volt szükség.\\
Ez a megoldás sajnos nehezebb auditálhatóságot okozott, hiszen minden
felhasználó a \texttt{root} felhasználó nevében végezte a munkáját, így
mindent a \texttt{root} felhasználó csinált.

Minden felhasználónak különböző csomagverziók és azok függőségeire volt
szüksége, ezért ezek karbantartása és kezelése is problémákat okozott,
hiszen mindenkinek a fizikai gépen kellett dolgoznia.

Összességében arra jutottam, hogy a virtualizáció lenne a megoldás
ezekre a problémákra, melyet egy hypervisorral (vagy hiperfelügyelővel)
terveztem megoldani.

\hypertarget{miuxe9rt-juxf3-a-virtualizuxe1ciuxf3-a-bare-metal-szerver-helyett}{%
\subsection{Miért jó a virtualizáció a bare-metal szerver
helyett?}\label{miuxe9rt-juxf3-a-virtualizuxe1ciuxf3-a-bare-metal-szerver-helyett}}

\hypertarget{mi-is-pontosan-egy-bare-metal-szerver}{%
\subsubsection{Mi is pontosan egy bare-metal
szerver?}\label{mi-is-pontosan-egy-bare-metal-szerver}}

A bare-metal szerver a fizikai szervert jelenti, melyet általában egy
kliens/felhasználó használ. Sokkal nagyobb számítási kapacitással
rendelkezik, mint egy-egy virtuális gép, hiszen hozzáférünk a fizikai
hoszt összes erőforrásához, beleértve a memóriát, a processzort, a
diszkeket és a sávszélességet is. Előny még emellett, hogy teljes
felügyeletünk lehet a fizikai gép felett, mind hardveresen, mind
szoftveresen.

\hypertarget{mi-az-a-virtualizuxe1ciuxf3}{%
\subsubsection{Mi az a
virtualizáció?}\label{mi-az-a-virtualizuxe1ciuxf3}}

A virtualizáció egy hoszting megoldás, ami több virtuális gép párhuzamos
futtatását teszi lehetővé egy fiziaki eszközön. Lehetőséget biztosít a
fizikai gép erőforrásainak \emph{feldarabolására}, és ezek kiosztására a
virtuális gépek között, így azok ugyanazon erőforrás részein,
\emph{darabkáin} tudnak megosztozni.\\
Virtuális gépek használata elősegíti a felhasználók könnyebb
auditálhatóságát, valamint minden felhasználónak egyedi, elszeparált
környezetet biztosít, amit a saját igényeinek megfelelően alakíthat.

Ha a virtualizációs megoldást választják, akkor a virtuális gépek
kiosztását és menedzselését rábízzák egy úgynevezett hypervisorra
(magyarul hiperfelügyelőre).

\hypertarget{mi-az-a-hypervisor}{%
\subsection{Mi az a Hypervisor?}\label{mi-az-a-hypervisor}}

A hypervisor a virtualizációt lehetővé tevő szoftverek kulcsfontosságú
része. A hypervisor feladata a virtuális gépek (vendéggépek)
előkészítése és a virtuális gépek által elért hardver funckiók elkapása,
feldolgozása.

A hypervisorok egy virtualizációs réteget hoznak létre az által, hogy
felügyelik, hogy a virtuális gépeken futó folyamatok mely fizikai
erőforrásokhoz férnek hozzá.

A gépet, amelyre a hypervisort telepítjük, gazdagépnek nevezzük, szemben
a rajtuk futó virtuális vendéggépekkel.

A hypervisorok a fizikai beosztásán kívül biztosíthatnak emulált
hardvereket (merevlemez, egér, képernyő, hálókártya, stb.), amelyek
használatával a vendéggépek úgy viselkedhetnek, mintha fizikai hardveren
futnának.

A VM szempontjából nincs különbség a fizikai és a virtualizált környezet
között. A vendéggépek nem tudják, hogy a hypervisor virtuális
környezetben hozta létre őket. Sem azt, hogy megosztják a rendelkezésre
álló számítási teljesítményt. A VM-ek változatlanul az őket működtető
hardveren futnak, így teljes mértékben függnek annak stabil működésétől.

A hypervisornak tradícionálisan két típusa van. Az első típust
bare-metal hypervisornak is szokták hívni, míg a másodikat hosztolt
hypervisornak.

\hypertarget{elsux151-tuxedpusuxfa-hypervisor}{%
\subsubsection{Első típusú
hypervisor}\label{elsux151-tuxedpusuxfa-hypervisor}}

A bare-metal hypervisor egy olyan szoftverréteg, amelyet közvetlenül a
fizikai kiszolgáló és az alapul szolgáló hardver fölé telepítünk.

Nincs közte szoftver vagy bármilyen operációs rendszer, innen a
bare-metal hypervisor (magyarul csupasz metál) elnevezés. Az 1-es típusú
hypervisor kiváló teljesítményt és stabilitást biztosít, mivel nem egy
operációs rendszeren belül fut.

Az 1-es típusú hiypervisor egy nagyon alapszintű operációs rendszer,
amelyen virtuális gépeket lehet futtatni. A fizikai gép, amelyen a
hypervisor fut, csak virtualizációs célokat szolgál. Másra nem
használható.

\hypertarget{muxe1sodik-tuxedpusuxfa-hypervisor}{%
\subsubsection{Második típusú
hypervisor}\label{muxe1sodik-tuxedpusuxfa-hypervisor}}

Az ilyen típusú hypervisor egy fizikai gép operációs rendszerén belül
fut.

Ezért nevezzük a 2. típusú hypervisorokat hosztolt hypervisoroknak. Az
1. típusú hypervisorokkal szemben, amelyek közvetlenül a hardveren
futnak, a hosztolt hypervisorok alatt egy szoftverréteg található. Ebben
az esetben a következőkkel rendelkezünk:

\begin{itemize}
\tightlist
\item
  Egy fizikai gép.
\item
  A hardverre telepített operációs rendszer (Windows, Linux, macOS).
\item
  Az operációs rendszeren belül egy 2. típusú hypervisor szoftver.
\item
  A vendég virtuális gépek tényleges példányai.
\end{itemize}

Ebben az esetben a fizikai hoszton is tudjuk kezelni, menedzselni a
virtuális gépeinket.

\hypertarget{a-modern-hypervisor}{%
\subsubsection{A modern hypervisor}\label{a-modern-hypervisor}}

Manapság rájöttek, hogy a bare-metal hypervisor jó tulajdonságai mellett
kényelmes, ha az operációs rendszer teljes értékű. Ezért a gyártók
beleépítették az operációs rendszerekbe a hypervisor modult, ezzel
elérve, hogy legyen egy tradícionális operációs rendszerünk, annak
minden pozitív tulajdonságával és kényelmi funkciójával, és a hypervisor
is kernel szintű legyen, ne legyen még egy plusz réteg az operációs
rendszer fölött.

A teljesség igénye nélkül ilyen megoldások az alábbiak:

\begin{itemize}
\tightlist
\item
  VMware ESXi
\item
  Hyper-V
\item
  Linux + KVM
\item
  bhyve (FreeBSD)
\item
  Hypervisor framework (Apple macOS)
\item
  Proxmox
\end{itemize}

\hypertarget{modern-hypervisorok-kezeluxe9se}{%
\subsubsection{Modern hypervisorok
kezelése}\label{modern-hypervisorok-kezeluxe9se}}

Ha elindítunk egy fizikai kiszolgálót, amelyen egy hypervisor van
telepítve, egy parancssorszerű képernyő jelenik meg. Ha egy monitort
csatlakoztatunk a szerverhez, akkor a hardver és a hálózat néhány
részletét láthatjuk. Ez álltalában a CPU típusából, a memória
mennyiségéből, az IP-címből és a MAC-címből áll.

Álltalában ezek csak egyszerű szerverkonfigurációt tesznek lehetővé.

Ez a dátum és az idő, az IP-cím, a jelszó stb. megváltoztatásából áll. A
virtuális példányok létrehozásához egy másik gépen beállított
kezelőkonzolra van szükség. A konzol segítségével csatlakozhatunk a
szerveren lévő hypervisorhoz, és kezelhetjük a virtuális környezetet.

A kezelési konzol lehet webalapú vagy különálló szoftvercsomag, amelyet
telepíthetünk arra a gépre, amelynek távoli kezelését szeretnénk.

Az egyik elvégezhető művelet a virtuális gépek fizikai kiszolgálók
közötti manuális vagy automatikus áthelyezése. Ez a mozgatás a VM adott
pillanatban fennálló erőforrásigényén alapul, és a végfelhasználókra
gyakorolt hatás nélkül történik. Ugyanez a folyamat történik akkor is,
ha egy hardverdarab vagy egy egész szerver meghibásodik. A megfelelően
konfigurált kezelőszoftver a virtuális gépeket egy működő szerverre
helyezi át, amint probléma merül fel. Az észlelési és helyreállítási
eljárás automatikusan és zökkenőmentesen zajlik.

A hypervisorok egyik legjobb tulajdonsága, hogy lehetővé teszik a
fizikai erőforrások túlkiosztását.

A hypervisorokkal több erőforrást rendelhetünk a virtuális gépekhez,
mint amennyi rendelkezésre áll. Ha például a kiszolgálón 128 GB RAM van,
és nyolc virtuális gépet használunk, mindegyikhez 24 GB RAM-ot
rendelhetünk. Ez összesen 192 GB RAM-ot jelent, de maguk a VM-ek
valójában nem fogják elfogyasztani a fizikai kiszolgáló mind a 24
GB-ját. A VM-ek azt hiszik, hogy 24 GB-ot használhatnak, holott
valójában csak annyi RAM-ot használnak, amennyi az egyes feladatok
elvégzéséhez szükséges.

A hypervisor csak annyi erőforrást rendel ki, amennyi szükséges ahhoz,
hogy egy példány teljes mértékben működőképes legyen.

\hypertarget{modern-hypervisorok-uxe1ttekintuxe9se}{%
\subsection{Modern hypervisorok
áttekintése}\label{modern-hypervisorok-uxe1ttekintuxe9se}}

\hypertarget{vmware-esxi}{%
\subsubsection{VMware ESXi}\label{vmware-esxi}}

Az ESXi egy BSD alapú operációs rendszer, melynek magja a VMkernel, mely
a FreeBSD kernelén alapszik és ebbe építették bele a hypervisort.

Nagyvállalati környezetben a legtöbbször ezt a megoldást a vSphere-el
együtt használják, mely lehetővé teszi több ESXi hoszt klaszterizálását.

Korábbi munkáim során találkoztam már a megoldással, és a tanszéki
környezethez feleslegesen bonyolultnak és túlságosan robosztusnak
ítéltem meg, ezért elvetettem a használatát.

\hypertarget{hyper-v}{%
\subsubsection{Hyper-V}\label{hyper-v}}

A Hyper-V a Microsoft hypervisor megoldása, mely mind a fogyasztói
Windows, mind Windows Server operációs rendszereken elérhető.
Természetesen az átlag felhasználók számára jóval kevesebb funkció
érhető el, mint a szerveres környezetben.

A Hyper-V a Microsoft által készített NT kernel része, így Windowson
lehetővé teszi virtuális gépek futtatását.

Ezzel a megoldással is találkoztam már korábban, és mivel a tanszéki
környezetben inkább Linuxos környezetre van szükség, feleslegesen
bonyolultnak éreztem egy Windowsos réteg bevonását az ökoszisztémába.

\hypertarget{linux-plusz-vanilla-kvm}{%
\subsubsection{Linux plusz vanilla KVM}\label{linux-plusz-vanilla-kvm}}

A KVM, azaz Kernel-based Virtual Machine (kernel alapú virtuális gép)
egy virtualizációs infrastruktúra a Linux rendszermagba integrálva. Egy
Hypervisor váltja a Linux rendszermagot. A KVM natív virtualizációt
támogat.

Egy kényelmesen használható, nyílt forráskódú megoldás, mely egy
betölthető kernelmodulból, a \texttt{kvm.ko}-ból, amely az alapvető
virtualizációs infrastruktúrát biztosítja, és egy processzorspecifikus
modulból, a \texttt{kvm-intel.ko} vagy \texttt{kvm-amd.ko} modulból áll.

Ezen a megoldáson alapszik a Proxmox VE is, amelyet végül a tanszéki
rendszerek hypervisorának választottam.

\hypertarget{proxmox-ve}{%
\subsubsection{Proxmox VE}\label{proxmox-ve}}

A Proxmox VE egy teljes körű, nyílt forráskódú, Debian alapú
szervermenedzsment platform virtualizációhoz. Szorosan integrálja a KVM
hypervisort és a Linux Containers (LXC), a szoftveresen definiált
tárolási és hálózati funkciókat egyetlen platformon. Az integrált
webalapú felhasználói felülettel könnyedén kezelhetőek a VM-ek és
konténerek, a klaszterek magas rendelkezésre állása vagy az integrált
katasztrófa-helyreállítási eszközök (disaster recovery tools).

\hypertarget{proxmox-ve-telepuxedtuxe9se}{%
\subsection{Proxmox VE telepítése}\label{proxmox-ve-telepuxedtuxe9se}}

\hypertarget{beuxe1lluxedtuxe1sok-kivuxe1lasztuxe1sa}{%
\subsubsection{Beállítások
kiválasztása}\label{beuxe1lluxedtuxe1sok-kivuxe1lasztuxe1sa}}

\hypertarget{fuxe1jlrendszer-beuxe1lluxedtuxe1sa}{%
\paragraph{Fájlrendszer
beállítása}\label{fuxe1jlrendszer-beuxe1lluxedtuxe1sa}}

Szerettem volna, ha szoftveres raid-et használna a szerver zfs-el, mivel
a zfs fájl szinten kezeli az adatokat, így sokkal több lehetőség áll
rendelkezésre az adatok védelme, sebességnövelés, stb. érdekében.
Hardveres raid-el szemben a szoftveres raid nincsen hardverhez kötve,
így meghibásodás esetén a merevlemezeket át lehet tenni egy másik gépbe,
ahol szoftveresen ugyanúgy össze lehet rakni a raid-et, és le lehet
menteni az adatokat, valamint így a vendor lock-in (gyártókhoz kötés) se
áll fent. A szoftveres raid rendszeresen kap frissítéseket, így az
idővel jobb, hatékonyabb lehet, valamint biztonsági hibákat is lehet
rajtuk javítani, ellentétben egy hardveres raid vezérlővel.

Ezen kívül a zfs támogat:

\begin{itemize}
\tightlist
\item
  cow (copy on write)-ot
\item
  transparens tömörítést
\item
  thin allocated virtuális diskek létrehozását
\item
  snapshotokat és azok hálózaton való átküldését
\end{itemize}

\begin{figure}
\centering
\includegraphics{pics/proxmox02.png}
\caption{Fájlrendszer beállítása}
\end{figure}

\hypertarget{huxe1luxf3zat-beuxe1lluxedtuxe1sa}{%
\paragraph{Hálózat beállítása}\label{huxe1luxf3zat-beuxe1lluxedtuxe1sa}}

Először szeretném, hogy a hosztot el lehessen érni rögtön a tanszéki
hálózatról, valamint legyen hozzáférése az internethez is, így a korábbi
interfészét szeretnénk megtartani, valamint a korábbi
interfészbeállításokat is.\\
Azaz beállítom menedzsment interfésznek a korábbi interfészt (ez jelen
esetben az \texttt{ens18} interfész). Hosztnévnek a
\texttt{vke2.hsnlab}-ot veszem fel (ez beírásra kerül a
\texttt{/etc/hosts} fájlba, valamint ez alapján lesz beállítva a hoszt
hosztneve). IP címnek beállítom a korábban használt címet:
\texttt{10.6.6.7/24} és átjárónak szintén a korábbi átjárót:
\texttt{10.6.6.1}.

\includegraphics{pics/proxmox05.png}~

\hypertarget{a-hardveres-raid-vezuxe9rlux151-uxe1tuxe1lluxedtuxe1sa-hba-muxf3dba}{%
\subsubsection{A hardveres RAID vezérlő átállítása HBA
módba}\label{a-hardveres-raid-vezuxe9rlux151-uxe1tuxe1lluxedtuxe1sa-hba-muxf3dba}}

Mivel korábban úgy döntöttem, hogy a Proxmoxon szoftveres raid-et fogok
használni, ezért át kellett kapcsoljam a hardveres RAID vezérlőt HBA
módba.

\hypertarget{sas-vezuxe9rlux151k-muxf3djai}{%
\paragraph{SAS vezérlők módjai}\label{sas-vezuxe9rlux151k-muxf3djai}}

A szerverekben több merevlemez vagy SSD együttes használatához
úgynevezett SAS vezérlőt alkalmaznak (Serial Attached SCSI), mely
segítségével sorosan lehet a merevlemezeket csatlakoztatni.

Ezeknek a SAS vezérlőknek általában két módja van, a RAID mód és a HBA
mód.

RAID módban, azaz Redundant Array of Independent Disks (magyarul:
független lemezek redundáns tömbje), az operációs rendszer nem fogja
látni a független lemezeket, hanem egy virtuális tömbként, eszközként
fogja azt kezelni.

HBA módban (Host Bus Adapter) a vezérlő átadja a lemezeket az operációs
rendszernek, azaz az operációs rendszer látni fogja az összes független
lemezt.

\end{document}
