<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fi">
	<id>https://www.linux.fi/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kimmo</id>
	<title>Linux.fi - Käyttäjän muokkaukset [fi]</title>
	<link rel="self" type="application/atom+xml" href="https://www.linux.fi/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kimmo"/>
	<link rel="alternate" type="text/html" href="https://www.linux.fi/wiki/Toiminnot:Muokkaukset/Kimmo"/>
	<updated>2026-04-13T09:23:45Z</updated>
	<subtitle>Käyttäjän muokkaukset</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=K%C3%A4ytt%C3%A4j%C3%A4:Kimmo&amp;diff=59016</id>
		<title>Käyttäjä:Kimmo</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=K%C3%A4ytt%C3%A4j%C3%A4:Kimmo&amp;diff=59016"/>
		<updated>2026-02-20T19:37:40Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-72 syntynyt yrittäjä, insinööriopiskelija ja Debian-fani vuosituhannen alusta saakka.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.11.2023&lt;br /&gt;
Edit:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Edelleen insinööriopiskelija, mutta 30 vuoden jälkeen entinen yrittäjä, nykyisin projektipäällikkö ja 20 vuoden käytön/fanituksen jälkeen mm. [https://papers.freebsd.org/2018/bsdcan/rice-The_Tragedy_of_systemd.files/rice-The_Tragedy_of_systemd.pdf systemd]:n vuoksi siirtymässä pois alkuperäisestä Debianista, vaikka jakelu onkin kokonaisuudessa loistava.  &lt;br /&gt;
&lt;br /&gt;
Työasemana toimii [https://support.apple.com/kb/sp688?locale=fi_FI iMac], josta MacOSX on vaihdettu [https://mxlinux.org/ MX Linuxiin](Debian-pohjainen ilman systemd:tä). Pääservut on [https://support.hp.com/us-en/document/c03270936 HP Z620] ja [https://support.hp.com/id-en/document/c03277050 HP Z420] ja niissä perustana [https://alpinelinux.org/ Alpine Linux], molemmissa [https://www.linux-kvm.org/ KVM virtualisointiympäristö] ja virtuaalikoneissa pyörii kaikkea peruslinuxjuttujen lisäksi [https://genode.org/ Genodesta] [https://fi.wikipedia.org/wiki/Berkeley_Software_Distribution BSD-jakelujen] kautta aina [https://sysguides.com/install-a-windows-11-virtual-machine-on-kvm/ Windows 11] ja [https://github.com/kholia/OSX-KVM MacOsX Venturaan] saakka. Palomuureina ja reitittiminä toimii [https://support.hp.com/hk-en/document/c04356040 HP 520 thin clienteissä] [https://opnsense.org/ OpnSense] ja [https://openwrt.org/ OPENwrt] kahdennettuna. &lt;br /&gt;
&lt;br /&gt;
Lisäksi löytyy kaikennumeroisia Raspeja ja muuta sälää. Käyttöjärjestelmäpuolella tällä hetkellä eniten kiinnostaa [https://opennebula.io/ OpenNebula] [https://www.netbsd.org/ NetBSD], [https://en.wikipedia.org/wiki/Rump_kernel rumpkernelit] ja [https://sel4.systems/ se4L].&lt;br /&gt;
&lt;br /&gt;
Pelkkä harrastelija kuitenkin tässä vain ollaan. Ja pitkästä aikaa yritän myös tänne kirjoittaa jotain tai edes päivittää vanhaa tietoa.&lt;br /&gt;
&lt;br /&gt;
Discord -palvelin: [https://discord.gg/dkmE8dDvCY Linux, BSD ja Posix]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;27.4.2024&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
MXLinuxista ja Alpine Linuxista luovuttu ja palattu Debian 11 ja 12 käyttöjärjestelmiin. Muuten sama.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.5.2024&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yli viiskymmppinen ukko, joka ei enää haihattele it-alan firmasta tai työllistymisestä it-alalle, joten jakaa pikkuhiljaa täällä kaiken tiedon mitä on vuosien saatossa it-järjestelmistä kertynyt. Jos vaikka niistä tiedoista joku nuorempi voisi vaikka hyötyä.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;20.2.2026&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Servereissä pyörii edelleen Debian Stable, eli tällä hetkellä Trixie. Työasemassa ja läppärissä vaihdoin joku aika sitten Debianin CachyOs:iin, eikä kyllä kaduta, ainakaan vielä. Muuten sama kuin ennenkin.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Linux-aloittelijoille:&#039;&#039;&#039; Palvelinkokoonpanon rakentaminen voi koukuttaa pahoin. &lt;br /&gt;
 Siitä huolimatta se on erittäin palkitseva kokemus, ja muutaman kuukauden kuluttua huomaat, ettet koskaan katso taaksepäin. &lt;br /&gt;
 Varmista, että sinulla on aikaa sukeltaa sisään ja ymmärtää, mistä on kyse. &lt;br /&gt;
 Linux on yksi maailman parhaiten dokumentoiduista käyttöjärjestelmistä!  &lt;br /&gt;
 Hyödynnä sitä tarjolla olevaa tietoa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://linux.fi/wiki/Toiminnot:Muokkaukset/Kimmo Muokkaukseni linux.fi:ssä]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://github.com/kipester Github reponi, lähinnä forkkauksia muiden repoista]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=K%C3%A4ytt%C3%A4j%C3%A4:Kimmo&amp;diff=59015</id>
		<title>Käyttäjä:Kimmo</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=K%C3%A4ytt%C3%A4j%C3%A4:Kimmo&amp;diff=59015"/>
		<updated>2026-02-20T19:36:50Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-72 syntynyt yrittäjä, insinööriopiskelija ja Debian-fani vuosituhannen alusta saakka.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.11.2023&lt;br /&gt;
Edit:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Edelleen insinööriopiskelija, mutta 30 vuoden jälkeen entinen yrittäjä, nykyisin projektipäällikkö ja 20 vuoden käytön/fanituksen jälkeen mm. [https://papers.freebsd.org/2018/bsdcan/rice-The_Tragedy_of_systemd.files/rice-The_Tragedy_of_systemd.pdf systemd]:n vuoksi siirtymässä pois alkuperäisestä Debianista, vaikka jakelu onkin kokonaisuudessa loistava.  &lt;br /&gt;
&lt;br /&gt;
Työasemana toimii [https://support.apple.com/kb/sp688?locale=fi_FI iMac], josta MacOSX on vaihdettu [https://mxlinux.org/ MX Linuxiin](Debian-pohjainen ilman systemd:tä). Pääservut on [https://support.hp.com/us-en/document/c03270936 HP Z620] ja [https://support.hp.com/id-en/document/c03277050 HP Z420] ja niissä perustana [https://alpinelinux.org/ Alpine Linux], molemmissa [https://www.linux-kvm.org/ KVM virtualisointiympäristö] ja virtuaalikoneissa pyörii kaikkea peruslinuxjuttujen lisäksi [https://genode.org/ Genodesta] [https://fi.wikipedia.org/wiki/Berkeley_Software_Distribution BSD-jakelujen] kautta aina [https://sysguides.com/install-a-windows-11-virtual-machine-on-kvm/ Windows 11] ja [https://github.com/kholia/OSX-KVM MacOsX Venturaan] saakka. Palomuureina ja reitittiminä toimii [https://support.hp.com/hk-en/document/c04356040 HP 520 thin clienteissä] [https://opnsense.org/ OpnSense] ja [https://openwrt.org/ OPENwrt] kahdennettuna. &lt;br /&gt;
&lt;br /&gt;
Lisäksi löytyy kaikennumeroisia Raspeja ja muuta sälää. Käyttöjärjestelmäpuolella tällä hetkellä eniten kiinnostaa [https://opennebula.io/ OpenNebula] [https://www.netbsd.org/ NetBSD], [https://en.wikipedia.org/wiki/Rump_kernel rumpkernelit] ja [https://sel4.systems/ se4L].&lt;br /&gt;
&lt;br /&gt;
Pelkkä harrastelija kuitenkin tässä vain ollaan. Ja pitkästä aikaa yritän myös tänne kirjoittaa jotain tai edes päivittää vanhaa tietoa.&lt;br /&gt;
&lt;br /&gt;
Discord -palvelin: [https://discord.gg/dkmE8dDvCY Linux, BSD ja Posix]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;27.4.2024&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
MXLinuxista ja Alpine Linuxista luovuttu ja palattu Debian 11 ja 12 käyttöjärjestelmiin. Muuten sama.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.5.2024&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yli viiskymmppinen ukko, joka ei enää haihattele it-alan firmasta tai työllistymisestä it-alalle, joten jakaa pikkuhiljaa täällä kaiken tiedon mitä on vuosien saatossa it-järjestelmistä kertynyt. Jos vaikka niistä tiedoista joku nuorempi voisi vaikka hyötyä.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;20.2.2026&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Servereissä pyörii edelleen Debian Stable, eli tällä hetkellä Trixie. Työasemassa ja läppärissä vaihdoin joku aika sitten Debianin CachyOs:iin, eikä kyllä kaduta.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Linux-aloittelijoille:&#039;&#039;&#039; Palvelinkokoonpanon rakentaminen voi koukuttaa pahoin. &lt;br /&gt;
 Siitä huolimatta se on erittäin palkitseva kokemus, ja muutaman kuukauden kuluttua huomaat, ettet koskaan katso taaksepäin. &lt;br /&gt;
 Varmista, että sinulla on aikaa sukeltaa sisään ja ymmärtää, mistä on kyse. &lt;br /&gt;
 Linux on yksi maailman parhaiten dokumentoiduista käyttöjärjestelmistä!  &lt;br /&gt;
 Hyödynnä sitä tarjolla olevaa tietoa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://linux.fi/wiki/Toiminnot:Muokkaukset/Kimmo Muokkaukseni linux.fi:ssä]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://github.com/kipester Github reponi, lähinnä forkkauksia muiden repoista]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=IPFS:_Hajautettu_tiedostoj%C3%A4rjestelm%C3%A4&amp;diff=58360</id>
		<title>IPFS: Hajautettu tiedostojärjestelmä</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=IPFS:_Hajautettu_tiedostoj%C3%A4rjestelm%C3%A4&amp;diff=58360"/>
		<updated>2025-01-11T10:52:20Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Aiheesta muualla */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://ipfs.tech/ IPFS (InterPlanetary File System)] on hajautettu tiedostojärjestelmä, joka mahdollistaa tiedostojen jakamisen ja tallentamisen verkostossa ilman keskitettyä palvelinta. Sen sijaan tiedostot jaetaan vertaisvertaisesti ([[P2P|peer-to-peer]]) kaikkien verkkoon kytkeytyneiden laitteiden välillä. Tämä tekee IPFS:stä erittäin kestävän ja luotettavan, sillä tiedostojen saatavuus ei ole riippuvainen yhdestä yksittäisestä palvelimesta.&lt;br /&gt;
&lt;br /&gt;
== Miten IPFS toimii? ==&lt;br /&gt;
IPFS käyttää sisältöpohjaista osoitusta [https://en.wikipedia.org/wiki/Content-addressable_storage (Content--Addressable Storage, CAS)]. Tämä tarkoittaa, että jokainen tiedosto tunnistetaan sen sisällön perusteella eikä sen sijainnin perusteella. Kun tiedosto tallennetaan IPFS:ään, sille luodaan ainutlaatuinen [https://fi.wikipedia.org/wiki/Kryptografinen_tiiviste hash-arvo], joka toimii tiedoston pysyvänä tunnisteena. Tämä hash-arvo voidaan jakaa muille, jotka voivat sitten hakea tiedoston sen perusteella.&lt;br /&gt;
&lt;br /&gt;
IPFS käyttää myös versiointia, mikä tarkoittaa, että tiedostoista tallennetaan kaikki versiot. Tämä mahdollistaa tiedostojen palauttamisen aiempiin versioihin ja tekee tiedostoista muuttumattomia.&lt;br /&gt;
&lt;br /&gt;
== IPFS:n ominaisuudet(edut ja haitat) ==&lt;br /&gt;
* Kestävyys: Tiedostot ovat saatavilla niin kauan kuin vähintään yksi verkkoon kytkeytynyt laite säilyttää kopion tiedostosta.&lt;br /&gt;
* Luotettavuus: Tiedostojen saatavuus ei ole riippuvainen yhdestä yksittäisestä palvelimesta.&lt;br /&gt;
* Nopeus: Tiedostojen haku voi olla nopeampi, koska tiedostoja voi olla saatavilla useilta lähellä olevilta laitteilta.&lt;br /&gt;
* Suojaus: Sisältöpohjainen osoitus tekee tiedostoista vaikeasti sensuroitavia.&lt;br /&gt;
* Skaalautuvuus: IPFS voi skaalautua käsittelemään suuria määriä tietoa.&lt;br /&gt;
&lt;br /&gt;
== IPFS:n käyttötapaukset ==&lt;br /&gt;
&lt;br /&gt;
IPFS:ää voidaan käyttää moniin eri tarkoituksiin, kuten:&lt;br /&gt;
&lt;br /&gt;
* Tiedostojen jakaminen: IPFS:ää voidaan käyttää jakamaan suuria tiedostoja, kuten videoita ja ohjelmistoja.&lt;br /&gt;
* Verkkosivustojen hosting: IPFS:ää voidaan käyttää hosting-alustana verkkosivuille.&lt;br /&gt;
* Hajautettujen sovellusten rakentaminen: IPFS:ää voidaan käyttää rakentamaan hajautettuja sovelluksia, kuten vertaisvertaisia sosiaalisia verkostoja ja pilvitallennuspalveluita.&lt;br /&gt;
* Sensuurin vastustus: IPFS:ää voidaan käyttää jakamaan tietoa, jota yritetään sensuroida.&lt;br /&gt;
== Yhteenveto ==&lt;br /&gt;
IPFS on lupaava teknologia, jolla on potentiaalia muuttaa tapaa, jolla jaamme ja tallennamme tietoa. Sen hajautettu luonne, kestävyys ja luotettavuus tekevät siitä houkuttelevan vaihtoehdon perinteisille keskitettyille tiedostojärjestelmille.&lt;br /&gt;
&lt;br /&gt;
== Aiheesta muualla ==&lt;br /&gt;
&lt;br /&gt;
* [https://ipfs.tech/ IPFS (InterPlanetary File System)]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;br /&gt;
[[Luokka:P2P-ohjelmat]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=IPFS:_Hajautettu_tiedostoj%C3%A4rjestelm%C3%A4&amp;diff=58359</id>
		<title>IPFS: Hajautettu tiedostojärjestelmä</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=IPFS:_Hajautettu_tiedostoj%C3%A4rjestelm%C3%A4&amp;diff=58359"/>
		<updated>2025-01-11T10:52:00Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: Ak: Uusi sivu: [https://ipfs.tech/ IPFS (InterPlanetary File System)] on hajautettu tiedostojärjestelmä, joka mahdollistaa tiedostojen jakamisen ja tallentamisen verkostossa ilman keskitettyä palvelinta. Sen sijaan tiedostot jaetaan vertaisvertaisesti (peer-to-peer) kaikkien verkkoon kytkeytyneiden laitteiden välillä. Tämä tekee IPFS:stä erittäin kestävän ja luotettavan, sillä tiedostojen saatavuus ei ole riippuvainen yhdestä yksittäisestä palvelimesta.  == Miten IPFS...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://ipfs.tech/ IPFS (InterPlanetary File System)] on hajautettu tiedostojärjestelmä, joka mahdollistaa tiedostojen jakamisen ja tallentamisen verkostossa ilman keskitettyä palvelinta. Sen sijaan tiedostot jaetaan vertaisvertaisesti ([[P2P|peer-to-peer]]) kaikkien verkkoon kytkeytyneiden laitteiden välillä. Tämä tekee IPFS:stä erittäin kestävän ja luotettavan, sillä tiedostojen saatavuus ei ole riippuvainen yhdestä yksittäisestä palvelimesta.&lt;br /&gt;
&lt;br /&gt;
== Miten IPFS toimii? ==&lt;br /&gt;
IPFS käyttää sisältöpohjaista osoitusta [https://en.wikipedia.org/wiki/Content-addressable_storage (Content--Addressable Storage, CAS)]. Tämä tarkoittaa, että jokainen tiedosto tunnistetaan sen sisällön perusteella eikä sen sijainnin perusteella. Kun tiedosto tallennetaan IPFS:ään, sille luodaan ainutlaatuinen [https://fi.wikipedia.org/wiki/Kryptografinen_tiiviste hash-arvo], joka toimii tiedoston pysyvänä tunnisteena. Tämä hash-arvo voidaan jakaa muille, jotka voivat sitten hakea tiedoston sen perusteella.&lt;br /&gt;
&lt;br /&gt;
IPFS käyttää myös versiointia, mikä tarkoittaa, että tiedostoista tallennetaan kaikki versiot. Tämä mahdollistaa tiedostojen palauttamisen aiempiin versioihin ja tekee tiedostoista muuttumattomia.&lt;br /&gt;
&lt;br /&gt;
== IPFS:n ominaisuudet(edut ja haitat) ==&lt;br /&gt;
* Kestävyys: Tiedostot ovat saatavilla niin kauan kuin vähintään yksi verkkoon kytkeytynyt laite säilyttää kopion tiedostosta.&lt;br /&gt;
* Luotettavuus: Tiedostojen saatavuus ei ole riippuvainen yhdestä yksittäisestä palvelimesta.&lt;br /&gt;
* Nopeus: Tiedostojen haku voi olla nopeampi, koska tiedostoja voi olla saatavilla useilta lähellä olevilta laitteilta.&lt;br /&gt;
* Suojaus: Sisältöpohjainen osoitus tekee tiedostoista vaikeasti sensuroitavia.&lt;br /&gt;
* Skaalautuvuus: IPFS voi skaalautua käsittelemään suuria määriä tietoa.&lt;br /&gt;
&lt;br /&gt;
== IPFS:n käyttötapaukset ==&lt;br /&gt;
&lt;br /&gt;
IPFS:ää voidaan käyttää moniin eri tarkoituksiin, kuten:&lt;br /&gt;
&lt;br /&gt;
* Tiedostojen jakaminen: IPFS:ää voidaan käyttää jakamaan suuria tiedostoja, kuten videoita ja ohjelmistoja.&lt;br /&gt;
* Verkkosivustojen hosting: IPFS:ää voidaan käyttää hosting-alustana verkkosivuille.&lt;br /&gt;
* Hajautettujen sovellusten rakentaminen: IPFS:ää voidaan käyttää rakentamaan hajautettuja sovelluksia, kuten vertaisvertaisia sosiaalisia verkostoja ja pilvitallennuspalveluita.&lt;br /&gt;
* Sensuurin vastustus: IPFS:ää voidaan käyttää jakamaan tietoa, jota yritetään sensuroida.&lt;br /&gt;
== Yhteenveto ==&lt;br /&gt;
IPFS on lupaava teknologia, jolla on potentiaalia muuttaa tapaa, jolla jaamme ja tallennamme tietoa. Sen hajautettu luonne, kestävyys ja luotettavuus tekevät siitä houkuttelevan vaihtoehdon perinteisille keskitettyille tiedostojärjestelmille.&lt;br /&gt;
&lt;br /&gt;
== Aiheesta muualla ==&lt;br /&gt;
&lt;br /&gt;
* [https://ipfs.tech/ IPFS (InterPlanetary File System)]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;br /&gt;
[[Luokka:P2P-ohjelmat]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Virtuaalikoneet&amp;diff=58301</id>
		<title>Virtuaalikoneet</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Virtuaalikoneet&amp;diff=58301"/>
		<updated>2024-09-24T19:10:07Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Aiheesta muualla */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kuva:Virtualisointia.png|200px|thumb|right|[[QEMU]], [[VMware]] ja [[xnest]] vauhdissa.]]&lt;br /&gt;
&lt;br /&gt;
x86-virtuaalisoinnin tekniikkat ovat nykyään kovasti muodissa. Virtualisointi on saavuttanut erityisesti suosiota palvelinkäytössä; webhotellit voivat tarjota jokaiselle asiakkaille oman palvelimen, jota kukin voi itse ylläpitää. Virtualisoinnin ansiosta fyysistä laitteistoa ei tarvitse lisätä samassa tahdissa. Myös eri käyttöjärjestelmille tarkoitettujen palvelinohjelmien ongelma poistuu, kun samassa fyysisessä palvelimessa voidaan ajaa useita eri käyttöjärjestelmiä.&lt;br /&gt;
&lt;br /&gt;
== Osiointi ==&lt;br /&gt;
&lt;br /&gt;
Vanhin virtualisoinnin muoto on jakaa koneen käyttö aikalohkoihin eri käyttäjien kesken. Tämä jakaminen voidaan suorittaa laitteiston ja ohjelmiston väliin jäävän firmware (tunnetuin firmware sovellus on PC:n BIOS) ohjelmiston avulla, jolloin virtuaalikoneiden perustamista varten ei tarvita isäntäkäyttöjärjestelmää.&lt;br /&gt;
&lt;br /&gt;
== Emulointi ==&lt;br /&gt;
&lt;br /&gt;
Mikäli virtualisoinnin tehokustannuksia ei tarvitse ottaa huomioon voidaan käyttää emulaatiota virtualisoinnin tekniikkana. Emulaatiota voidaan suorittaa isäntäkäyttöjärjestelmän prosessina, jolloin virtualisoidun järjestelmän hallinta on helppoa, mutta virtualisointi itsessään vie runsaasti laskentatehoa isäntäjärjestelmältä. Emuloitaessa koko virtualisoidun järjestelmän prosessori on virtuaalinen, joten emulaation avulla isäntäkoneen prosessori voi toimia eri käskykannalla kuin virtualisoidun.&lt;br /&gt;
&lt;br /&gt;
== Ryvästys ==&lt;br /&gt;
&lt;br /&gt;
Kun monesta tehdään yksi, ryvästetään. Ryvästystä voidaan harjoittaa kahdesta toisensa pois sulkeavasta lähtökohdasta. Mikäli halutaan nostaa järjestelmänä kokonaistehoa ryvästämällä, voidaan ryvästyksen avulla luoda useasta koneesta yksi virtuaalikone ja virtuaalikoneen samat tehtävät edelleen jakaa fyysisten järjestelmien kesken. Kun tavoitteena on vikasietoisuuden saaminen, ei tehtäviä voida jakaa järjestelmän fyysisten koneiden kesken, vaan niintä suoritetaan rinnakkain useassa koneessa. Näitä kahta ominaisuutta yleensä sekoitellaan keskenään, mutta aina niiden välillä toisen suosiminen aiheuttaa toisen ominaisuuden laiminlyöntiä.&lt;br /&gt;
&lt;br /&gt;
== Haluan käyttää Linuxia virtuaalikoneessa ==&lt;br /&gt;
&lt;br /&gt;
Linuxin kokeilu virtuaalikoneessa on erittäin hyvä kokeilutapa. Niin et vahingoita oikeaa käyttöjärjestelmääsi lainkaan. Voit tehdä lisää virtuaalikoneita ja etsiä vaikkapa suosikkijakelusi niiden avulla.&lt;br /&gt;
&lt;br /&gt;
Mutta miten virtuaalikone tehdään? Sinun pitää asentaa siihen tarkoitettu sovellus, esimerkiksi VMware tai VirtualBox niiden omilta kotisivuiltaan. Lataa koneellesi myös haluamasi Linux-jakelun ISO-tiedosto kyseisen jakelun omalta nettisivultaan.&lt;br /&gt;
&lt;br /&gt;
Kun olet ladannut yllä mainitut asiat, tee virtuaalikone klikkaamalla &amp;quot;New&amp;quot; tai jotain muuta vastaavaa. Sinulta kysytään ISO-tiedostoa, koneen nimeä, ja kaikenlaista muuta.&lt;br /&gt;
&lt;br /&gt;
Koneen voit käynnistää valitsemalla sen ja painamalla &amp;quot;Start&amp;quot; tai jotain muuta vastaavaa. Usein Linux pitää [[Aloittelijalle|asentaa]] manuaalisesti koneeseen. Seuraa ohjeita ja vastaa kysymyksiin. Käynnistä asennuksen jälkeen kone uusiksi. Nyt sinulla ei ole asennusmediaa etkä voi poistaa sitä, joten paina vain Enter-näppäintä (jos sinulta tällaista edes kysytään).&lt;br /&gt;
&lt;br /&gt;
==Virtuaalikoneiden edut==&lt;br /&gt;
&lt;br /&gt;
Virtuaalikoneiden etu on se, että niillä saa pelleillä enemmän kuin oikealla tietokoneella. Oikeaa tietokonetta ei kannata tuhota viruksilla mutta virtuaalikoneissa se on kuitenkin mahdollista. Virtuaalikoneilla voit tehdä muitakin temppuja, joita ei oikealla koneella kannata tehdä.&lt;br /&gt;
&lt;br /&gt;
==Snapshotit==&lt;br /&gt;
&lt;br /&gt;
Snapshotit ovat kuin kuvakaappauksia virtuaalikoneesta. Virtuaalikoneen voit aina palauttaa ottamasi snapshotin avulla puhtaaksi. Snapshot on ikään kuin varmuuskopio virtuaalikoneestasi.&lt;br /&gt;
&lt;br /&gt;
==Virtualisointia kerroksittain==&lt;br /&gt;
&lt;br /&gt;
Monimutkaisemmilla virtualisointitekniikoilla ja esim. &amp;quot;host-passtrough&amp;quot; -menetelmillä voidaan ajaa kokonaisia pilvijärjestelmiä virtualikoneissa, eli virtuaalikonetta virtuaalikoneen sisällä samalla tietokoneella ja kaikki voivat olla täysin toisistaan irrallisia järjestelmiä. Kuten seuraavassa kuvakaappauksessa: [[Tiedosto:Smartos-debian-alpine.png|pienoiskuva]] Virtuaalikoneiden hallitsin pyörii Macissä, jossa [[Debian]] linux,yhdessä serverissä käynnissä [https://illumos.org Illumos-pohjainen] [https://www.tritondatacenter.com/smartos SmartOS] virtuaalikoneena ja sen virtuaalikoneessa [[Alpine]] linux.&lt;br /&gt;
&lt;br /&gt;
Näin voidaan rakentaa erittäin vikasietoisia ja tietoturvallisia käyttöjärjestelmä-ympäristöjä. Haittapuolena tietysti monimutkaisuus ja jos käyttöjärjetelmiä oikein monta samalla koneella päällekäin niin se syö myös tehoa.&lt;br /&gt;
&lt;br /&gt;
==Ohjelmia==&lt;br /&gt;
* [[User-mode Linux]]&lt;br /&gt;
* [[Openvz]]&lt;br /&gt;
* [[Linux-vserver]]&lt;br /&gt;
* [[Libvirt]]&lt;br /&gt;
* [[Kvm]]&lt;br /&gt;
* [[Xen]]&lt;br /&gt;
* [[Virtualbox]]&lt;br /&gt;
* [[LXC]]&lt;br /&gt;
* [[Docker]]&lt;br /&gt;
&lt;br /&gt;
== Katso myös ==&lt;br /&gt;
*[[Emulaattorit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Emulaattorit ja virtuaalikoneet}}&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Virtuaalikoneet&amp;diff=58300</id>
		<title>Virtuaalikoneet</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Virtuaalikoneet&amp;diff=58300"/>
		<updated>2024-09-24T18:52:39Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Virtualisointia kerroksittain */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kuva:Virtualisointia.png|200px|thumb|right|[[QEMU]], [[VMware]] ja [[xnest]] vauhdissa.]]&lt;br /&gt;
&lt;br /&gt;
x86-virtuaalisoinnin tekniikkat ovat nykyään kovasti muodissa. Virtualisointi on saavuttanut erityisesti suosiota palvelinkäytössä; webhotellit voivat tarjota jokaiselle asiakkaille oman palvelimen, jota kukin voi itse ylläpitää. Virtualisoinnin ansiosta fyysistä laitteistoa ei tarvitse lisätä samassa tahdissa. Myös eri käyttöjärjestelmille tarkoitettujen palvelinohjelmien ongelma poistuu, kun samassa fyysisessä palvelimessa voidaan ajaa useita eri käyttöjärjestelmiä.&lt;br /&gt;
&lt;br /&gt;
== Osiointi ==&lt;br /&gt;
&lt;br /&gt;
Vanhin virtualisoinnin muoto on jakaa koneen käyttö aikalohkoihin eri käyttäjien kesken. Tämä jakaminen voidaan suorittaa laitteiston ja ohjelmiston väliin jäävän firmware (tunnetuin firmware sovellus on PC:n BIOS) ohjelmiston avulla, jolloin virtuaalikoneiden perustamista varten ei tarvita isäntäkäyttöjärjestelmää.&lt;br /&gt;
&lt;br /&gt;
== Emulointi ==&lt;br /&gt;
&lt;br /&gt;
Mikäli virtualisoinnin tehokustannuksia ei tarvitse ottaa huomioon voidaan käyttää emulaatiota virtualisoinnin tekniikkana. Emulaatiota voidaan suorittaa isäntäkäyttöjärjestelmän prosessina, jolloin virtualisoidun järjestelmän hallinta on helppoa, mutta virtualisointi itsessään vie runsaasti laskentatehoa isäntäjärjestelmältä. Emuloitaessa koko virtualisoidun järjestelmän prosessori on virtuaalinen, joten emulaation avulla isäntäkoneen prosessori voi toimia eri käskykannalla kuin virtualisoidun.&lt;br /&gt;
&lt;br /&gt;
== Ryvästys ==&lt;br /&gt;
&lt;br /&gt;
Kun monesta tehdään yksi, ryvästetään. Ryvästystä voidaan harjoittaa kahdesta toisensa pois sulkeavasta lähtökohdasta. Mikäli halutaan nostaa järjestelmänä kokonaistehoa ryvästämällä, voidaan ryvästyksen avulla luoda useasta koneesta yksi virtuaalikone ja virtuaalikoneen samat tehtävät edelleen jakaa fyysisten järjestelmien kesken. Kun tavoitteena on vikasietoisuuden saaminen, ei tehtäviä voida jakaa järjestelmän fyysisten koneiden kesken, vaan niintä suoritetaan rinnakkain useassa koneessa. Näitä kahta ominaisuutta yleensä sekoitellaan keskenään, mutta aina niiden välillä toisen suosiminen aiheuttaa toisen ominaisuuden laiminlyöntiä.&lt;br /&gt;
&lt;br /&gt;
== Haluan käyttää Linuxia virtuaalikoneessa ==&lt;br /&gt;
&lt;br /&gt;
Linuxin kokeilu virtuaalikoneessa on erittäin hyvä kokeilutapa. Niin et vahingoita oikeaa käyttöjärjestelmääsi lainkaan. Voit tehdä lisää virtuaalikoneita ja etsiä vaikkapa suosikkijakelusi niiden avulla.&lt;br /&gt;
&lt;br /&gt;
Mutta miten virtuaalikone tehdään? Sinun pitää asentaa siihen tarkoitettu sovellus, esimerkiksi VMware tai VirtualBox niiden omilta kotisivuiltaan. Lataa koneellesi myös haluamasi Linux-jakelun ISO-tiedosto kyseisen jakelun omalta nettisivultaan.&lt;br /&gt;
&lt;br /&gt;
Kun olet ladannut yllä mainitut asiat, tee virtuaalikone klikkaamalla &amp;quot;New&amp;quot; tai jotain muuta vastaavaa. Sinulta kysytään ISO-tiedostoa, koneen nimeä, ja kaikenlaista muuta.&lt;br /&gt;
&lt;br /&gt;
Koneen voit käynnistää valitsemalla sen ja painamalla &amp;quot;Start&amp;quot; tai jotain muuta vastaavaa. Usein Linux pitää [[Aloittelijalle|asentaa]] manuaalisesti koneeseen. Seuraa ohjeita ja vastaa kysymyksiin. Käynnistä asennuksen jälkeen kone uusiksi. Nyt sinulla ei ole asennusmediaa etkä voi poistaa sitä, joten paina vain Enter-näppäintä (jos sinulta tällaista edes kysytään).&lt;br /&gt;
&lt;br /&gt;
==Virtuaalikoneiden edut==&lt;br /&gt;
&lt;br /&gt;
Virtuaalikoneiden etu on se, että niillä saa pelleillä enemmän kuin oikealla tietokoneella. Oikeaa tietokonetta ei kannata tuhota viruksilla mutta virtuaalikoneissa se on kuitenkin mahdollista. Virtuaalikoneilla voit tehdä muitakin temppuja, joita ei oikealla koneella kannata tehdä.&lt;br /&gt;
&lt;br /&gt;
==Snapshotit==&lt;br /&gt;
&lt;br /&gt;
Snapshotit ovat kuin kuvakaappauksia virtuaalikoneesta. Virtuaalikoneen voit aina palauttaa ottamasi snapshotin avulla puhtaaksi. Snapshot on ikään kuin varmuuskopio virtuaalikoneestasi.&lt;br /&gt;
&lt;br /&gt;
==Virtualisointia kerroksittain==&lt;br /&gt;
&lt;br /&gt;
Monimutkaisemmilla virtualisointitekniikoilla ja esim. &amp;quot;host-passtrough&amp;quot; -menetelmillä voidaan ajaa kokonaisia pilvijärjestelmiä virtualikoneissa, eli virtuaalikonetta virtuaalikoneen sisällä samalla tietokoneella ja kaikki voivat olla täysin toisistaan irrallisia järjestelmiä. Kuten seuraavassa kuvakaappauksessa: [[Tiedosto:Smartos-debian-alpine.png|pienoiskuva]] Virtuaalikoneiden hallitsin pyörii Macissä, jossa [[Debian]] linux,yhdessä serverissä käynnissä [https://illumos.org Illumos-pohjainen] [https://www.tritondatacenter.com/smartos SmartOS] virtuaalikoneena ja sen virtuaalikoneessa [[Alpine]] linux.&lt;br /&gt;
&lt;br /&gt;
Näin voidaan rakentaa erittäin vikasietoisia ja tietoturvallisia käyttöjärjestelmä-ympäristöjä. Haittapuolena tietysti monimutkaisuus ja jos käyttöjärjetelmiä oikein monta samalla koneella päällekäin niin se syö myös tehoa.&lt;br /&gt;
&lt;br /&gt;
==Ohjelmia==&lt;br /&gt;
* [[User-mode Linux]]&lt;br /&gt;
* [[Openvz]]&lt;br /&gt;
* [[Linux-vserver]]&lt;br /&gt;
* [[Libvirt]]&lt;br /&gt;
* [[Kvm]]&lt;br /&gt;
* [[Xen]]&lt;br /&gt;
* [[Virtualbox]]&lt;br /&gt;
* [[LXC]]&lt;br /&gt;
* [[Docker]]&lt;br /&gt;
&lt;br /&gt;
== Katso myös ==&lt;br /&gt;
*[[Emulaattorit]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[http://opensuse.fi/Virtualisointi Virtualisointi opensuse.fi:n wikissä]&lt;br /&gt;
&lt;br /&gt;
{{Emulaattorit ja virtuaalikoneet}}&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Virtuaalikoneet&amp;diff=58299</id>
		<title>Virtuaalikoneet</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Virtuaalikoneet&amp;diff=58299"/>
		<updated>2024-09-24T18:45:42Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kuva:Virtualisointia.png|200px|thumb|right|[[QEMU]], [[VMware]] ja [[xnest]] vauhdissa.]]&lt;br /&gt;
&lt;br /&gt;
x86-virtuaalisoinnin tekniikkat ovat nykyään kovasti muodissa. Virtualisointi on saavuttanut erityisesti suosiota palvelinkäytössä; webhotellit voivat tarjota jokaiselle asiakkaille oman palvelimen, jota kukin voi itse ylläpitää. Virtualisoinnin ansiosta fyysistä laitteistoa ei tarvitse lisätä samassa tahdissa. Myös eri käyttöjärjestelmille tarkoitettujen palvelinohjelmien ongelma poistuu, kun samassa fyysisessä palvelimessa voidaan ajaa useita eri käyttöjärjestelmiä.&lt;br /&gt;
&lt;br /&gt;
== Osiointi ==&lt;br /&gt;
&lt;br /&gt;
Vanhin virtualisoinnin muoto on jakaa koneen käyttö aikalohkoihin eri käyttäjien kesken. Tämä jakaminen voidaan suorittaa laitteiston ja ohjelmiston väliin jäävän firmware (tunnetuin firmware sovellus on PC:n BIOS) ohjelmiston avulla, jolloin virtuaalikoneiden perustamista varten ei tarvita isäntäkäyttöjärjestelmää.&lt;br /&gt;
&lt;br /&gt;
== Emulointi ==&lt;br /&gt;
&lt;br /&gt;
Mikäli virtualisoinnin tehokustannuksia ei tarvitse ottaa huomioon voidaan käyttää emulaatiota virtualisoinnin tekniikkana. Emulaatiota voidaan suorittaa isäntäkäyttöjärjestelmän prosessina, jolloin virtualisoidun järjestelmän hallinta on helppoa, mutta virtualisointi itsessään vie runsaasti laskentatehoa isäntäjärjestelmältä. Emuloitaessa koko virtualisoidun järjestelmän prosessori on virtuaalinen, joten emulaation avulla isäntäkoneen prosessori voi toimia eri käskykannalla kuin virtualisoidun.&lt;br /&gt;
&lt;br /&gt;
== Ryvästys ==&lt;br /&gt;
&lt;br /&gt;
Kun monesta tehdään yksi, ryvästetään. Ryvästystä voidaan harjoittaa kahdesta toisensa pois sulkeavasta lähtökohdasta. Mikäli halutaan nostaa järjestelmänä kokonaistehoa ryvästämällä, voidaan ryvästyksen avulla luoda useasta koneesta yksi virtuaalikone ja virtuaalikoneen samat tehtävät edelleen jakaa fyysisten järjestelmien kesken. Kun tavoitteena on vikasietoisuuden saaminen, ei tehtäviä voida jakaa järjestelmän fyysisten koneiden kesken, vaan niintä suoritetaan rinnakkain useassa koneessa. Näitä kahta ominaisuutta yleensä sekoitellaan keskenään, mutta aina niiden välillä toisen suosiminen aiheuttaa toisen ominaisuuden laiminlyöntiä.&lt;br /&gt;
&lt;br /&gt;
== Haluan käyttää Linuxia virtuaalikoneessa ==&lt;br /&gt;
&lt;br /&gt;
Linuxin kokeilu virtuaalikoneessa on erittäin hyvä kokeilutapa. Niin et vahingoita oikeaa käyttöjärjestelmääsi lainkaan. Voit tehdä lisää virtuaalikoneita ja etsiä vaikkapa suosikkijakelusi niiden avulla.&lt;br /&gt;
&lt;br /&gt;
Mutta miten virtuaalikone tehdään? Sinun pitää asentaa siihen tarkoitettu sovellus, esimerkiksi VMware tai VirtualBox niiden omilta kotisivuiltaan. Lataa koneellesi myös haluamasi Linux-jakelun ISO-tiedosto kyseisen jakelun omalta nettisivultaan.&lt;br /&gt;
&lt;br /&gt;
Kun olet ladannut yllä mainitut asiat, tee virtuaalikone klikkaamalla &amp;quot;New&amp;quot; tai jotain muuta vastaavaa. Sinulta kysytään ISO-tiedostoa, koneen nimeä, ja kaikenlaista muuta.&lt;br /&gt;
&lt;br /&gt;
Koneen voit käynnistää valitsemalla sen ja painamalla &amp;quot;Start&amp;quot; tai jotain muuta vastaavaa. Usein Linux pitää [[Aloittelijalle|asentaa]] manuaalisesti koneeseen. Seuraa ohjeita ja vastaa kysymyksiin. Käynnistä asennuksen jälkeen kone uusiksi. Nyt sinulla ei ole asennusmediaa etkä voi poistaa sitä, joten paina vain Enter-näppäintä (jos sinulta tällaista edes kysytään).&lt;br /&gt;
&lt;br /&gt;
==Virtuaalikoneiden edut==&lt;br /&gt;
&lt;br /&gt;
Virtuaalikoneiden etu on se, että niillä saa pelleillä enemmän kuin oikealla tietokoneella. Oikeaa tietokonetta ei kannata tuhota viruksilla mutta virtuaalikoneissa se on kuitenkin mahdollista. Virtuaalikoneilla voit tehdä muitakin temppuja, joita ei oikealla koneella kannata tehdä.&lt;br /&gt;
&lt;br /&gt;
==Snapshotit==&lt;br /&gt;
&lt;br /&gt;
Snapshotit ovat kuin kuvakaappauksia virtuaalikoneesta. Virtuaalikoneen voit aina palauttaa ottamasi snapshotin avulla puhtaaksi. Snapshot on ikään kuin varmuuskopio virtuaalikoneestasi.&lt;br /&gt;
&lt;br /&gt;
==Virtualisointia kerroksittain==&lt;br /&gt;
&lt;br /&gt;
Monimutkaisemmilla virtualisointitekniikoilla ja esim. &amp;quot;host-passtrough&amp;quot; -menetelmillä voidaan ajaa kokonaisia pilvijärjestelmiä virtualikoneissa, eli virtuaalikonetta virtuaalikoneen sisällä samalla tietokoneella ja kaikki voivat olla täysin toisistaan irrallisia järjestelmiä. Kuten seuraavassa kuvakaappauksessa: [[Tiedosto:Smartos-debian-alpine.png|pienoiskuva]] Virtuaalikoneiden hallitsin pyörii Macissä, jossa [[Debian]] linux,yhdessä serverissä käynnissä [[SmartOs]] virtuaalikoneena ja sen virtuaalikoneessa [[Alpine]] linux.&lt;br /&gt;
&lt;br /&gt;
Näin voidaan rakentaa erittäin vikasietoisia ja tietoturvallisia käyttöjärjestelmä-ympäristöjä. Haittapuolena tietysti monimutkaisuus ja jos käyttöjärjetelmiä oikein monta samalla koneella päällekäin niin se syö myös tehoa. &lt;br /&gt;
&lt;br /&gt;
==Ohjelmia==&lt;br /&gt;
* [[User-mode Linux]]&lt;br /&gt;
* [[Openvz]]&lt;br /&gt;
* [[Linux-vserver]]&lt;br /&gt;
* [[Libvirt]]&lt;br /&gt;
* [[Kvm]]&lt;br /&gt;
* [[Xen]]&lt;br /&gt;
* [[Virtualbox]]&lt;br /&gt;
* [[LXC]]&lt;br /&gt;
* [[Docker]]&lt;br /&gt;
&lt;br /&gt;
== Katso myös ==&lt;br /&gt;
*[[Emulaattorit]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[http://opensuse.fi/Virtualisointi Virtualisointi opensuse.fi:n wikissä]&lt;br /&gt;
&lt;br /&gt;
{{Emulaattorit ja virtuaalikoneet}}&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Tiedosto:Smartos-debian-alpine.png&amp;diff=58298</id>
		<title>Tiedosto:Smartos-debian-alpine.png</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Tiedosto:Smartos-debian-alpine.png&amp;diff=58298"/>
		<updated>2024-09-24T18:32:28Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Debianin libvirt-kvm virtuaalikoneessa SmartOs, jonka virtuaalikoneessa pyörii Alpine-linux.&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Tune2fs&amp;diff=58297</id>
		<title>Tune2fs</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Tune2fs&amp;diff=58297"/>
		<updated>2024-09-22T07:15:20Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Käyttö */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;tt&amp;gt;tune2fs&amp;lt;/tt&amp;gt; on [[komentorivi]]ohjelma jolla voi muuttaa [[ext2]]-, [[ext3]]- ja [[ext4]]-[[tiedostojärjestelmä]]n parametreja. Vallitsevat parametrit voi näyttää [[dumpe2fs]]:n avulla.&lt;br /&gt;
&lt;br /&gt;
==Käyttö==&lt;br /&gt;
Vaihdetaan osion &amp;lt;tt&amp;gt;/dev/sdc3&amp;lt;/tt&amp;gt; &amp;quot;otsikkoa&amp;quot; (label) vaikkapa [[mount|liittämisen]] helpottamiseksi&lt;br /&gt;
 tune2fs -L otsikko /dev/sdc3&lt;br /&gt;
Lisätään journalointitiedot tiedostojärjestelmään, eli käytännössä muutetaan ext2 ext3:ksi&lt;br /&gt;
 tune2fs -j /dev/sdc3&lt;br /&gt;
Journaloinnin poisto käytöstä:&lt;br /&gt;
 tune2fs -O ^has_journal&lt;br /&gt;
Muutetaan vain [[pääkäyttäjä]]n käyttöön varattu osuus tiedostojärjestelmästä nollaan prosenttiin&lt;br /&gt;
 tune2fs -m0 /dev/sda2&lt;br /&gt;
Oletuksena kaikista ext-tiedostojärjestelmistä 5% on varattu pääkäyttäjän käyttöön, jotta järjestelmän palautus ja taustapalvelujen pyöriminen olisi mahdollista myös silloin, kun tavallinen käyttäjä on täyttänyt koko tiedostojärjestelmän. 5% on kuitenkin nykyisille kiintolevyille aivan liian suuri arvo (esimerkiksi 160 Gt:n osiolla se tekee 8 Gt). [[juuriosio|Juuritiedostojärjestelmä]]n arvo kannattaa yleensä säätää yhteen prosenttiin ja muiden nollaan.&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
* [[Tiedostojärjestelmä]]&lt;br /&gt;
* [[Ext2]]&lt;br /&gt;
* [[Ext3]]&lt;br /&gt;
* [[Ext4]]&lt;br /&gt;
* [[ReiserFS]]&lt;br /&gt;
* [[Reiser4]]&lt;br /&gt;
* [[Mkfs]]&lt;br /&gt;
* [[Fsck]]&lt;br /&gt;
* [[XFS]] - Suorituskykyinen tiedostojärjestelmä, joka sisältää journaloinnin.&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Komentorivin erikoisohjelmat]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58296</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58296"/>
		<updated>2024-09-20T14:39:23Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Asennetaan DRBD ja Linstor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.10.1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debian 11 paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb restart &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one/datastores- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
 sudo apt install augeas-tools libnbd-bin ruby-sqlite3 ipset rsync ruby jq vlan&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Useissa netistä löytyvissä ohjeissa suositellaan tai jopa käsketään konffata kahta verkkokorttia käyttäen. Siinä tietysti puolensa, koska helpompaa tehdä kahdella verkkoliitynnällä. Mutta vaikka asennetaan kaks verkkokorttia niin kannattaa bondata verkkoyhteydet ja [[vlan]]ia hyödyntäen niillä verkkoyhteydet koneille, niin on aina maksimit käytössä, eikä replikointi vie kaikkea kaistaa kotiverkossa olevilta muilta koneilta. &lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri toimii ja DRBD-osioilta saa tiedot vaikka vain kaksi konetta olisi päällä niin kun menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
*OpenNebula control ja Linstor controlleria voi ajaa vaikka pöytäkoneella Docker-konteissa ja WakeOnLan:illa käynnistää klusterin koneet vain silloin ja sitä mukaa kun  niitä tarvii, niin se näkyy kyllä kodin sähkölaskussa. Etenkin jos klusterissa on vaikka 8 kpl servereitä, kuten tämän artikkelin alkuperäisellä kirjoittajalla on artikkelin kirjoittamisen aikaan.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.0/installation_and_configuration/containerized_deployment/architecture_deployment.html Frontend node Docker/Podman kontissa(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Xen&amp;diff=58270</id>
		<title>Xen</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Xen&amp;diff=58270"/>
		<updated>2024-05-12T13:42:46Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Aiheesta muualla */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Xen&#039;&#039;&#039; on avoimen lähdekoodin x86-järjestelmää [[Virtuaalikoneet|virtualisoiva ohjelmisto]]. Se asennetaan järjestelmään lähimmäksi rautaa, Xenin alla ei oleile mitään käyttöjärjestelmää. Xen vaatii siinä ajettavista käyttöjärjestelmistä erityiset Xen-kernelit tai prosessorilta VMX-tuen.&lt;br /&gt;
&lt;br /&gt;
Melko vanhaa tietoa. Tälle sivulle olisi syytä päivittää tiedot.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
* [https://xenproject.org/ Xenproject.org]&lt;br /&gt;
* [http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ Xen]&lt;br /&gt;
&lt;br /&gt;
{{Emulaattorit ja virtuaalikoneet}}&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Virtualisointi]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Luokka:Virtualisointi&amp;diff=58269</id>
		<title>Luokka:Virtualisointi</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Luokka:Virtualisointi&amp;diff=58269"/>
		<updated>2024-05-12T13:40:04Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Käyttöjärjestelmävirtualisoinnilla tarkoitetaan menetelmää, jossa oikealla tietokoneella, isäntäkoneella (host), ohjelmallisesti matkitaan kokonaista tietokonetta, johon voidaan asentaa valittu käyttöjärjestelmä, vierasjärjestelmä (guest), ja siihen haluttuja ohjelmia. Virtualisoinnilla on mahdollista käynnistää esimerkiksi Ubuntu-käyttöjärjestelmää käyttävä virtuaalikone yhteen Windows-työpöydällä näkyvään ikkunaan. Näin on mahdollista kokeilla uusia käyttöjärjestelmiä ja niiden eri versioita asentamatta niitä varsinaiselle koneelle. Toisaalta tämä mahdollistaa myös sellaisten sovellusten ajamisen, joita ei muuten ole saatavilla isäntäjärjestelmään. Esimerkiksi Microsoft Word -ohjelmaa on mahdollista käyttää näin Linux-isäntään asennetussa Windows-virtuaalikoneessa.&lt;br /&gt;
# &lt;br /&gt;
# Nykyään on myös käsitteet ohjelmistovirtualisointi, näitä on useita kymmeniä, ellei satoja. Ehkä tunnetuimmat virtuaalikoneet ovat [[Dalvik]], eli [[Android]], sekä [[java]] ja [[python]]. Sekä erilaiset konttiteknologiat, joissa virtualisoidaan osa käyttöjärjestelmästä tai jopa pelkästään yksi sovellus/ohjelma. Näitä ovat esimerkiksi [[Docker]], [[Podman]], [[LXC]] ja [[Kubernetes]].&lt;br /&gt;
&lt;br /&gt;
Hypervisor(suomenkielistä vastinetta ei ole) on tietotekniikassa käytetty termi, joka suomeksi tarkoittaa virtuaalikonemonitoria tai virtuaalikonetta hallitsevaa ohjelmaa. Hypervisor toimii isäntäkoneella ja ottaa kontrollin isäntäkoneen laitteistosta. Sen avulla voidaan luoda ja hallita virtuaalikoneita (guest-koneita) sekä virtuaalikytkimiä. Hypervisor mahdollistaa useiden käyttöjärjestelmien suorittamisen samalla fyysisellä laitteistolla, mikä on hyödyllistä esimerkiksi palvelin- ja pilviympäristöissä.&lt;br /&gt;
&lt;br /&gt;
Hypervisoreita on kahta eri tyyppiä:&lt;br /&gt;
&lt;br /&gt;
1. Type 1 hypervisoreita ovat [[Xen]] ja myös [[KVM]], vaikkakin KVM on siinä rajalla. Julkaisusta riippuen määritellään type-1 tai type-2 hypervisoriksi.&lt;br /&gt;
&lt;br /&gt;
* Asennetaan suoraan palvelimen fyysiseen laitteistoon ilman käyttöjärjestelmän välikerrosta.&lt;br /&gt;
* Toimii suoraan laiteohjaimien kanssa ja hallitsee fyysisiä resursseja.&lt;br /&gt;
* Tarjoaa paremman eristävyyden jokaiselle virtuaaliympäristölle.&lt;br /&gt;
* Dedikoidut resurssit.&lt;br /&gt;
* Usein käytetään palvelin- ja pilviympäristöissä.&lt;br /&gt;
* Type 1 hypervisorin päällä toimiva käyttöjärjestelmä on yhtä nopea kuin natiivisti toimiva. &lt;br /&gt;
&lt;br /&gt;
2. Type 2 hypervisoreita ovat mm. [[VMware]] Workstation ja [[Virtualbox]]&lt;br /&gt;
&lt;br /&gt;
* Asennetaan isäntäkäyttöjärjestelmän päälle.&lt;br /&gt;
* Käyttää isäntäkäyttöjärjestelmän resursseja.&lt;br /&gt;
* Vähemmän eristävyyttä virtuaaliympäristöille.&lt;br /&gt;
* Häviää nopeudessa/tehokkuudessa Type 1 hypervisorille&lt;br /&gt;
* Ovat helppokäyttöisiä ja yleisiä työpöytäkäytössä&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58268</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58268"/>
		<updated>2024-05-11T07:50:50Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Ocfs2-tiedostojärjestelmän asennus ja käyttöönotto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debian 11 paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb restart &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one/datastores- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
 sudo apt install augeas-tools libnbd-bin ruby-sqlite3 ipset rsync ruby jq vlan&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Useissa netistä löytyvissä ohjeissa suositellaan tai jopa käsketään konffata kahta verkkokorttia käyttäen. Siinä tietysti puolensa, koska helpompaa tehdä kahdella verkkoliitynnällä. Mutta vaikka asennetaan kaks verkkokorttia niin kannattaa bondata verkkoyhteydet ja [[vlan]]ia hyödyntäen niillä verkkoyhteydet koneille, niin on aina maksimit käytössä, eikä replikointi vie kaikkea kaistaa kotiverkossa olevilta muilta koneilta. &lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri toimii ja DRBD-osioilta saa tiedot vaikka vain kaksi konetta olisi päällä niin kun menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
*OpenNebula control ja Linstor controlleria voi ajaa vaikka pöytäkoneella Docker-konteissa ja WakeOnLan:illa käynnistää klusterin koneet vain silloin ja sitä mukaa kun  niitä tarvii, niin se näkyy kyllä kodin sähkölaskussa. Etenkin jos klusterissa on vaikka 8 kpl servereitä, kuten tämän artikkelin alkuperäisellä kirjoittajalla on artikkelin kirjoittamisen aikaan.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.0/installation_and_configuration/containerized_deployment/architecture_deployment.html Frontend node Docker/Podman kontissa(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58267</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58267"/>
		<updated>2024-05-11T07:48:17Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Ocfs2-tiedostojärjestelmän asennus ja käyttöönotto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debian 11 paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one/datastores- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
 sudo apt install augeas-tools libnbd-bin ruby-sqlite3 ipset rsync ruby jq vlan&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Useissa netistä löytyvissä ohjeissa suositellaan tai jopa käsketään konffata kahta verkkokorttia käyttäen. Siinä tietysti puolensa, koska helpompaa tehdä kahdella verkkoliitynnällä. Mutta vaikka asennetaan kaks verkkokorttia niin kannattaa bondata verkkoyhteydet ja [[vlan]]ia hyödyntäen niillä verkkoyhteydet koneille, niin on aina maksimit käytössä, eikä replikointi vie kaikkea kaistaa kotiverkossa olevilta muilta koneilta. &lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri toimii ja DRBD-osioilta saa tiedot vaikka vain kaksi konetta olisi päällä niin kun menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
*OpenNebula control ja Linstor controlleria voi ajaa vaikka pöytäkoneella Docker-konteissa ja WakeOnLan:illa käynnistää klusterin koneet vain silloin ja sitä mukaa kun  niitä tarvii, niin se näkyy kyllä kodin sähkölaskussa. Etenkin jos klusterissa on vaikka 8 kpl servereitä, kuten tämän artikkelin alkuperäisellä kirjoittajalla on artikkelin kirjoittamisen aikaan.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.0/installation_and_configuration/containerized_deployment/architecture_deployment.html Frontend node Docker/Podman kontissa(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58266</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58266"/>
		<updated>2024-05-06T07:33:19Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Aiheesta muualla */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one/datastores- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
 sudo apt install augeas-tools libnbd-bin ruby-sqlite3 ipset rsync ruby jq vlan&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Useissa netistä löytyvissä ohjeissa suositellaan tai jopa käsketään konffata kahta verkkokorttia käyttäen. Siinä tietysti puolensa, koska helpompaa tehdä kahdella verkkoliitynnällä. Mutta vaikka asennetaan kaks verkkokorttia niin kannattaa bondata verkkoyhteydet ja [[vlan]]ia hyödyntäen niillä verkkoyhteydet koneille, niin on aina maksimit käytössä, eikä replikointi vie kaikkea kaistaa kotiverkossa olevilta muilta koneilta. &lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri toimii ja DRBD-osioilta saa tiedot vaikka vain kaksi konetta olisi päällä niin kun menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
*OpenNebula control ja Linstor controlleria voi ajaa vaikka pöytäkoneella Docker-konteissa ja WakeOnLan:illa käynnistää klusterin koneet vain silloin ja sitä mukaa kun  niitä tarvii, niin se näkyy kyllä kodin sähkölaskussa. Etenkin jos klusterissa on vaikka 8 kpl servereitä, kuten tämän artikkelin alkuperäisellä kirjoittajalla on artikkelin kirjoittamisen aikaan.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.0/installation_and_configuration/containerized_deployment/architecture_deployment.html Frontend node Docker/Podman kontissa(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58265</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58265"/>
		<updated>2024-05-05T18:49:17Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Asennetaan OpenNebula */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one/datastores- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
 sudo apt install augeas-tools libnbd-bin ruby-sqlite3 ipset rsync ruby jq vlan&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Useissa netistä löytyvissä ohjeissa suositellaan tai jopa käsketään konffata kahta verkkokorttia käyttäen. Siinä tietysti puolensa, koska helpompaa tehdä kahdella verkkoliitynnällä. Mutta vaikka asennetaan kaks verkkokorttia niin kannattaa bondata verkkoyhteydet ja [[vlan]]ia hyödyntäen niillä verkkoyhteydet koneille, niin on aina maksimit käytössä, eikä replikointi vie kaikkea kaistaa kotiverkossa olevilta muilta koneilta. &lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri toimii ja DRBD-osioilta saa tiedot vaikka vain kaksi konetta olisi päällä niin kun menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
*OpenNebula control ja Linstor controlleria voi ajaa vaikka pöytäkoneella Docker-konteissa ja WakeOnLan:illa käynnistää klusterin koneet vain silloin ja sitä mukaa kun  niitä tarvii, niin se näkyy kyllä kodin sähkölaskussa. Etenkin jos klusterissa on vaikka 8 kpl servereitä, kuten tämän artikkelin alkuperäisellä kirjoittajalla on artikkelin kirjoittamisen aikaan.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58264</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58264"/>
		<updated>2024-05-04T08:28:23Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Viritysvinkkejä */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one/datastores- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Useissa netistä löytyvissä ohjeissa suositellaan tai jopa käsketään konffata kahta verkkokorttia käyttäen. Siinä tietysti puolensa, koska helpompaa tehdä kahdella verkkoliitynnällä. Mutta vaikka asennetaan kaks verkkokorttia niin kannattaa bondata verkkoyhteydet ja [[vlan]]ia hyödyntäen niillä verkkoyhteydet koneille, niin on aina maksimit käytössä, eikä replikointi vie kaikkea kaistaa kotiverkossa olevilta muilta koneilta. &lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri toimii ja DRBD-osioilta saa tiedot vaikka vain kaksi konetta olisi päällä niin kun menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
*OpenNebula control ja Linstor controlleria voi ajaa vaikka pöytäkoneella Docker-konteissa ja WakeOnLan:illa käynnistää klusterin koneet vain silloin ja sitä mukaa kun  niitä tarvii, niin se näkyy kyllä kodin sähkölaskussa. Etenkin jos klusterissa on vaikka 8 kpl servereitä, kuten tämän artikkelin alkuperäisellä kirjoittajalla on artikkelin kirjoittamisen aikaan.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58263</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58263"/>
		<updated>2024-05-04T08:22:48Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Viritysvinkkejä */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one/datastores- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Useissa netistä löytyvissä ohjeissa suositellaan tai jopa käsketään konffata kahta verkkokorttia käyttäen. Siinä tietysti puolensa, koska helpompaa tehdä kahdella verkkoliitynnällä. Mutta vaikka asennetaan kaks verkkokorttia niin kannattaa bondata verkkoyhteydet ja [[vlan]]ia hyödyntäen niillä verkkoyhteydet koneille, niin on aina maksimit käytössä, eikä replikointi vie kaikkea kaistaa kotiverkossa olevilta muilta koneilta. &lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri toimii ja DRBD-osioilta saa tiedot vaikka vain kaksi konetta olisi päällä niin kun menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58262</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58262"/>
		<updated>2024-05-03T14:09:58Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Viritysvinkkejä */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one/datastores- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Useissa netistä löytyvissä ohjeissa suositellaan tai jopa käsketään konffata kahta verkkokorttia käyttäen. Siinä tietysti puolensa, koska helpompaa tehdä kahdella verkkoliitynnällä. Mutta vaikka asennetaan kaks verkkokorttia niin kannattaa bondata verkkoyhteydet ja [[vlan]]ia hyödyntäen niillä verkkoyhteydet koneille, niin on aina maksimit käytössä, eikä replikointi vie kaikkea kaistaa kotiverkossa olevilta muilta koneilta. &lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri ja DRBD-osioilta saa tiedot vaikka vain yksi kone olisi päällä niin siitä kun levy(t) menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58261</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58261"/>
		<updated>2024-05-03T14:08:53Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Viritysvinkkejä */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one/datastores- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Useissa netistä löytyvissä ohjeissa suositellaan tai jopa käsketään konffata kahta verkkokorttia käyttäen. Siinä tietysti puolensa, koska helpompaa tehdä kahdella verkkoliitynnällä. Mutta vaikka asennetaan kaks verkkokorttia niin kannattaa bondata verkkoyhteydet ja [[vlan]]ia hyödyntäen niillä verkkoyhteydet, niin on aina maksimit käytössä, eikä replikointi vie kaikkea kaistaa kotiverkossa olevilta muilta koneilta. &lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri ja DRBD-osioilta saa tiedot vaikka vain yksi kone olisi päällä niin siitä kun levy(t) menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Homelab&amp;diff=58260</id>
		<title>Homelab</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Homelab&amp;diff=58260"/>
		<updated>2024-05-03T06:08:26Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Katso myös */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Ohjelma&lt;br /&gt;
| kuva=[[Tiedosto:Homelab.jpg|pienoiskuva]]&lt;br /&gt;
| kotisivu=[https://www.reddit.com/r/homelab/ Redditin homelab-osio]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Homelab sanalle ei löydy hyvää suomenkielistä vastinetta. Se kuitenkin on kotona tai pienessä organisaatiossa ylläpidetty tietokoneiden, palvelinten ja verkkojen ympäristö. Se on kuin oma pieni laboratorio, jossa voit kokeilla, testata ja oppia uusia teknologioita ilman suurta investointia. Homelab voi sisältää esimerkiksi seuraavia komponentteja:&lt;br /&gt;
&lt;br /&gt;
* Palvelimet: Voit asentaa ja ylläpitää erilaisia palvelimia, kuten web-palvelimia, tiedostopalvelimia, sähköpostipalvelimia ja muita.&lt;br /&gt;
* Verkkolaitteet: Voit harjoitella verkon konfigurointia ja hallintaa käyttämällä reitittimiä, kytkimiä ja muita verkkolaitteita.&lt;br /&gt;
* Virtualisointi: Voit luoda virtuaalisia ympäristöjä käyttämällä hypervisoreita, kuten VMware ESXi, Microsoft Hyper-V tai Proxmox.&lt;br /&gt;
* Tietokannat: Voit asentaa ja ylläpitää tietokantoja, kuten MariaDB, PostgreSQL tai MongoDB.&lt;br /&gt;
* Ohjelmistokehitys: Voit harjoitella ohjelmointia ja sovellusten kehittämistä omassa ympäristössäsi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Homelab on loistava tapa oppia ja kehittää taitojasi tietotekniikan alalla. Se voi myös olla hauska harrastus, joka tarjoaa mahdollisuuden kokeilla erilaisia teknologioita ja rakentaa omia projekteja.&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
&lt;br /&gt;
[[Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)]]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Kehitystyökalut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Homelab&amp;diff=58259</id>
		<title>Homelab</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Homelab&amp;diff=58259"/>
		<updated>2024-05-03T06:08:06Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Ohjelma&lt;br /&gt;
| kuva=[[Tiedosto:Homelab.jpg|pienoiskuva]]&lt;br /&gt;
| kotisivu=[https://www.reddit.com/r/homelab/ Redditin homelab-osio]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Homelab sanalle ei löydy hyvää suomenkielistä vastinetta. Se kuitenkin on kotona tai pienessä organisaatiossa ylläpidetty tietokoneiden, palvelinten ja verkkojen ympäristö. Se on kuin oma pieni laboratorio, jossa voit kokeilla, testata ja oppia uusia teknologioita ilman suurta investointia. Homelab voi sisältää esimerkiksi seuraavia komponentteja:&lt;br /&gt;
&lt;br /&gt;
* Palvelimet: Voit asentaa ja ylläpitää erilaisia palvelimia, kuten web-palvelimia, tiedostopalvelimia, sähköpostipalvelimia ja muita.&lt;br /&gt;
* Verkkolaitteet: Voit harjoitella verkon konfigurointia ja hallintaa käyttämällä reitittimiä, kytkimiä ja muita verkkolaitteita.&lt;br /&gt;
* Virtualisointi: Voit luoda virtuaalisia ympäristöjä käyttämällä hypervisoreita, kuten VMware ESXi, Microsoft Hyper-V tai Proxmox.&lt;br /&gt;
* Tietokannat: Voit asentaa ja ylläpitää tietokantoja, kuten MariaDB, PostgreSQL tai MongoDB.&lt;br /&gt;
* Ohjelmistokehitys: Voit harjoitella ohjelmointia ja sovellusten kehittämistä omassa ympäristössäsi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Homelab on loistava tapa oppia ja kehittää taitojasi tietotekniikan alalla. Se voi myös olla hauska harrastus, joka tarjoaa mahdollisuuden kokeilla erilaisia teknologioita ja rakentaa omia projekteja.&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
&lt;br /&gt;
[[Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2]]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Kehitystyökalut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58258</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58258"/>
		<updated>2024-05-03T05:59:19Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Viritysvinkkejä */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one/datastores- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Useissa netistä löytyvissä ohjeissa suositellaan tai jopa käsketään konffata kahta verkkokorttia käyttäen. Siinä tietysti puolensa, koska helpompaa tehdä kahdella verkkoliitynnällä. Mutta vaikka asennetaan kaks verkkokorttia niin kannattaa verkkoyhteydet tehdä [[vlan]]ia hyödyntäen niin on aina maksimit käytössä, eikä replikointi vie kaikkea kaistaa kotiverkossa olevilta muilta koneilta. &lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri ja DRBD-osioilta saa tiedot vaikka vain yksi kone olisi päällä niin siitä kun levy(t) menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58257</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58257"/>
		<updated>2024-05-03T05:56:32Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Viritysvinkkejä */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one/datastores- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Useissa nesitä löytyvissä ohjeissa suositellaan tai jopa käsketään konffata kahta verkkokorttia käyttäen. Siinä tietysti puolensa, koska helpompaa tehdä kahdella verkkoliitynnällä. Mutta vaikka asennetaan kaks verkkokorttia niin kannattaa verkkoyhteydet tehdä [[vlan]]ia hyödyntäen niin on aina maksimit käytössä, eikä replikointi vie kaikkea kaistaa kotiverkossa olevilta muilta koneilta. &lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri ja DRBD-osioilta saa tiedot vaikka vain yksi kone olisi päällä niin siitä kun levy(t) menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58256</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58256"/>
		<updated>2024-05-03T05:51:34Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Ocfs2-tiedostojärjestelmän asennus ja käyttöönotto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one/datastores- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri ja DRBD-osioilta saa tiedot vaikka vain yksi kone olisi päällä niin siitä kun levy(t) menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58255</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58255"/>
		<updated>2024-05-01T20:06:36Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Luodaan DRBD/Linstor klusteri */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri ja DRBD-osioilta saa tiedot vaikka vain yksi kone olisi päällä niin siitä kun levy(t) menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58254</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58254"/>
		<updated>2024-05-01T20:05:26Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Ocfs2-tiedostojärjestelmän asennus ja käyttöönotto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
Luodaan volume-ryhmä:&lt;br /&gt;
 &lt;br /&gt;
 linstor volume-group create homelabrg&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one/datastores &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one/datastores&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri ja DRBD-osioilta saa tiedot vaikka vain yksi kone olisi päällä niin siitä kun levy(t) menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58253</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58253"/>
		<updated>2024-05-01T20:03:05Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Asennetaan OpenNebula */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
Luodaan volume-ryhmä:&lt;br /&gt;
 &lt;br /&gt;
 linstor volume-group create homelabrg&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
OpenNebula käyttää myös kansiota /var/tmp/one mutta asennuspaketti ei joka kerta sitä uudelle koneelle asennettaessa luo, joku bugi ilmeisesti, jolloin klusteri ei toimi. Siinä tapauksessa puuttuva /var/tmp/one kansio taytyy vain luoda [[mkdir]]-komennolla ja [[chown]]illa vaihtaa sen omistusoikeus oneadminille.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri ja DRBD-osioilta saa tiedot vaikka vain yksi kone olisi päällä niin siitä kun levy(t) menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58252</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58252"/>
		<updated>2024-05-01T19:58:22Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Asennetaan OpenNebula */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
Luodaan volume-ryhmä:&lt;br /&gt;
 &lt;br /&gt;
 linstor volume-group create homelabrg&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
HUOM! Oneadmin kayttäjän kotikansio on /var/lib/one ja ssh tiedot myös tallentuu ja haetaan sieltä. isäntiä ei saa lisättyä control-nodeen ellei näistä sijainneista löytyviä ssh-avaimia luoda ja kopioida esim. [[scp]]:n avulla koneelta toiselle /var/lib/one/.ssh/authorized_keys tiedostoon.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri ja DRBD-osioilta saa tiedot vaikka vain yksi kone olisi päällä niin siitä kun levy(t) menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58251</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58251"/>
		<updated>2024-05-01T19:46:59Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Viritysvinkkejä */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
Luodaan volume-ryhmä:&lt;br /&gt;
 &lt;br /&gt;
 linstor volume-group create homelabrg&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [[ramdisk]]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri ja DRBD-osioilta saa tiedot vaikka vain yksi kone olisi päällä niin siitä kun levy(t) menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58250</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58250"/>
		<updated>2024-05-01T19:46:15Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Viritysvinkkejä */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
Luodaan volume-ryhmä:&lt;br /&gt;
 &lt;br /&gt;
 linstor volume-group create homelabrg&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [[Verkkoliitynnät_monipuolisemmin#Yhteysnopeuden_kasvattaminen_ryhmitt.C3.A4m.C3.A4ll.C3.A4|bondingilla]] ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [ramdisk]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [[zpool]]-pakka [[RAIDZ]]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [[RAID]]0-tasoa. Tässä systeemissä on [[varmuuskopiointi]] aivan äärimmäisen tärkeää. Vaikka klusteri ja DRBD-osioilta saa tiedot vaikka vain yksi kone olisi päällä niin siitä kun levy(t) menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58249</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58249"/>
		<updated>2024-05-01T19:43:04Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
Luodaan volume-ryhmä:&lt;br /&gt;
 &lt;br /&gt;
 linstor volume-group create homelabrg&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Viritysvinkkejä==&lt;br /&gt;
&lt;br /&gt;
*Klusterin nopeutta saa kasvatettua huomattavasti verkkokorttien [bonding]illa ja/tai tietenkin 2,5Gbitin tai jopa 10 Gigan verkkokorteilla ja kytkimillä.&lt;br /&gt;
*Toisekseen klusterin nopeutta saa kasvatettua paljon NVME-levyillä ja suurella määrällä RAM-muistia ja ajamalla niitä sovelluksia ja/tai virtuaalikoneita [ramdisk]issä jotka tarvitsevat paljon nopeutta/tehoa&lt;br /&gt;
*Helppo ja halpa tapa kasvattaa nopeutta on tietysti rakentaa [zpool]-pakka [RAIDZ]-muotoon stripingiä hyödyntymällä, joka vastaa muiden tiedostojärjestelmien [RAID]0-tasoa. Tässä systeemissä on [varmuuskopiointi] aivan äärimmäisen tärkeää. Vaikka klusteri ja DRBD-osioilta saa tiedot vaikka vain yksi kone olisi päällä niin siitä kun levy(t) menee tilttiin niin kaikki tieto on vaarassa hävitä.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=K%C3%A4ytt%C3%A4j%C3%A4:Kimmo&amp;diff=58248</id>
		<title>Käyttäjä:Kimmo</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=K%C3%A4ytt%C3%A4j%C3%A4:Kimmo&amp;diff=58248"/>
		<updated>2024-05-01T17:38:08Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-72 syntynyt yrittäjä, insinööriopiskelija ja Debian-fani vuosituhannen alusta saakka.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.11.2023&lt;br /&gt;
Edit:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Edelleen insinööriopiskelija, mutta 30 vuoden jälkeen entinen yrittäjä, nykyisin projektipäällikkö ja 20 vuoden käytön/fanituksen jälkeen mm. [https://papers.freebsd.org/2018/bsdcan/rice-The_Tragedy_of_systemd.files/rice-The_Tragedy_of_systemd.pdf systemd]:n vuoksi siirtymässä pois alkuperäisestä Debianista, vaikka jakelu onkin kokonaisuudessa loistava.  &lt;br /&gt;
&lt;br /&gt;
Työasemana toimii [https://support.apple.com/kb/sp688?locale=fi_FI iMac], josta MacOSX on vaihdettu [https://mxlinux.org/ MX Linuxiin](Debian-pohjainen ilman systemd:tä). Pääservut on [https://support.hp.com/us-en/document/c03270936 HP Z620] ja [https://support.hp.com/id-en/document/c03277050 HP Z420] ja niissä perustana [https://alpinelinux.org/ Alpine Linux], molemmissa [https://www.linux-kvm.org/ KVM virtualisointiympäristö] ja virtuaalikoneissa pyörii kaikkea peruslinuxjuttujen lisäksi [https://genode.org/ Genodesta] [https://fi.wikipedia.org/wiki/Berkeley_Software_Distribution BSD-jakelujen] kautta aina [https://sysguides.com/install-a-windows-11-virtual-machine-on-kvm/ Windows 11] ja [https://github.com/kholia/OSX-KVM MacOsX Venturaan] saakka. Palomuureina ja reitittiminä toimii [https://support.hp.com/hk-en/document/c04356040 HP 520 thin clienteissä] [https://opnsense.org/ OpnSense] ja [https://openwrt.org/ OPENwrt] kahdennettuna. &lt;br /&gt;
&lt;br /&gt;
Lisäksi löytyy kaikennumeroisia Raspeja ja muuta sälää. Käyttöjärjestelmäpuolella tällä hetkellä eniten kiinnostaa [https://opennebula.io/ OpenNebula] [https://www.netbsd.org/ NetBSD], [https://en.wikipedia.org/wiki/Rump_kernel rumpkernelit] ja [https://sel4.systems/ se4L].&lt;br /&gt;
&lt;br /&gt;
Pelkkä harrastelija kuitenkin tässä vain ollaan. Ja pitkästä aikaa yritän myös tänne kirjoittaa jotain tai edes päivittää vanhaa tietoa.&lt;br /&gt;
&lt;br /&gt;
Discord -palvelin: [https://discord.gg/dkmE8dDvCY Linux, BSD ja Posix]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;27.4.2024&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
MXLinuxista ja Alpine Linuxista luovuttu ja palattu Debian 11 ja 12 käyttöjärjestelmiin. Muuten sama.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.5.2024&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yli viiskymmppinen ukko, joka ei enää haihattele it-alan firmasta tai työllistymisestä it-alalle, joten jakaa pikkuhiljaa täällä kaiken tiedon mitä on vuosien saatossa it-järjestelmistä kertynyt. Jos vaikka niistä tiedoista joku nuorempi voisi vaikka hyötyä.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Linux-aloittelijoille:&#039;&#039;&#039; Palvelinkokoonpanon rakentaminen voi koukuttaa pahoin. &lt;br /&gt;
 Siitä huolimatta se on erittäin palkitseva kokemus, ja muutaman kuukauden kuluttua huomaat, ettet koskaan katso taaksepäin. &lt;br /&gt;
 Varmista, että sinulla on aikaa sukeltaa sisään ja ymmärtää, mistä on kyse. &lt;br /&gt;
 Linux on yksi maailman parhaiten dokumentoiduista käyttöjärjestelmistä!  &lt;br /&gt;
 Hyödynnä sitä tarjolla olevaa tietoa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://linux.fi/wiki/Toiminnot:Muokkaukset/Kimmo Muokkaukseni linux.fi:ssä]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://github.com/kipester Github reponi, lähinnä forkkauksia muiden repoista]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58247</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58247"/>
		<updated>2024-05-01T14:45:30Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Asennetaan OpenNebula */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
Luodaan volume-ryhmä:&lt;br /&gt;
 &lt;br /&gt;
 linstor volume-group create homelabrg&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä libvirt ja docker-ryhmiin&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker &amp;amp;&amp;amp; sudo adduser oneadmin libvirt&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58246</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58246"/>
		<updated>2024-05-01T11:38:48Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Asennetaan DRBD ja Linstor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt -y install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
Luodaan volume-ryhmä:&lt;br /&gt;
 &lt;br /&gt;
 linstor volume-group create homelabrg&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä docker-ryhmään&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker&lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58245</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58245"/>
		<updated>2024-05-01T11:38:20Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Asennetaan DRBD ja Linstor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
Luodaan volume-ryhmä:&lt;br /&gt;
 &lt;br /&gt;
 linstor volume-group create homelabrg&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä docker-ryhmään&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker&lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58244</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58244"/>
		<updated>2024-05-01T11:37:54Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Asennetaan DRBD ja Linstor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 sudo apt install curl zip &amp;amp;&amp;amp; curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
Luodaan volume-ryhmä:&lt;br /&gt;
 &lt;br /&gt;
 linstor volume-group create homelabrg&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä docker-ryhmään&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker&lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=K%C3%A4ytt%C3%A4j%C3%A4:Kimmo&amp;diff=58243</id>
		<title>Käyttäjä:Kimmo</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=K%C3%A4ytt%C3%A4j%C3%A4:Kimmo&amp;diff=58243"/>
		<updated>2024-05-01T11:07:29Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-72 syntynyt yrittäjä, insinööriopiskelija ja Debian-fani vuosituhannen alusta saakka.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.11.2023&lt;br /&gt;
Edit:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Edelleen insinööriopiskelija, mutta 30 vuoden jälkeen entinen yrittäjä, nykyisin projektipäällikkö ja 20 vuoden käytön/fanituksen jälkeen mm. [https://papers.freebsd.org/2018/bsdcan/rice-The_Tragedy_of_systemd.files/rice-The_Tragedy_of_systemd.pdf systemd]:n vuoksi siirtymässä pois alkuperäisestä Debianista, vaikka jakelu onkin kokonaisuudessa loistava.  &lt;br /&gt;
&lt;br /&gt;
Työasemana toimii [https://support.apple.com/kb/sp688?locale=fi_FI iMac], josta MacOSX on vaihdettu [https://mxlinux.org/ MX Linuxiin](Debian-pohjainen ilman systemd:tä). Pääservut on [https://support.hp.com/us-en/document/c03270936 HP Z620] ja [https://support.hp.com/id-en/document/c03277050 HP Z420] ja niissä perustana [https://alpinelinux.org/ Alpine Linux], molemmissa [https://www.linux-kvm.org/ KVM virtualisointiympäristö] ja virtuaalikoneissa pyörii kaikkea peruslinuxjuttujen lisäksi [https://genode.org/ Genodesta] [https://fi.wikipedia.org/wiki/Berkeley_Software_Distribution BSD-jakelujen] kautta aina [https://sysguides.com/install-a-windows-11-virtual-machine-on-kvm/ Windows 11] ja [https://github.com/kholia/OSX-KVM MacOsX Venturaan] saakka. Palomuureina ja reitittiminä toimii [https://support.hp.com/hk-en/document/c04356040 HP 520 thin clienteissä] [https://opnsense.org/ OpnSense] ja [https://openwrt.org/ OPENwrt] kahdennettuna. &lt;br /&gt;
&lt;br /&gt;
Lisäksi löytyy kaikennumeroisia Raspeja ja muuta sälää. Käyttöjärjestelmäpuolella tällä hetkellä eniten kiinnostaa [https://opennebula.io/ OpenNebula] [https://www.netbsd.org/ NetBSD], [https://en.wikipedia.org/wiki/Rump_kernel rumpkernelit] ja [https://sel4.systems/ se4L].&lt;br /&gt;
&lt;br /&gt;
Pelkkä harrastelija kuitenkin tässä vain ollaan. Ja pitkästä aikaa yritän myös tänne kirjoittaa jotain tai edes päivittää vanhaa tietoa.&lt;br /&gt;
&lt;br /&gt;
Discord -palvelin: [https://discord.gg/dkmE8dDvCY Linux, BSD ja Posix]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;27.4.2024&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
MXLinuxista ja Alpine Linuxista luovuttu ja palattu Debian 11 ja 12 käyttöjärjestelmiin. Muuten sama.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.5.2024&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yli viiskymmppinen ukko, joka ei enää haihattele it-alan firmasta tai työllistymisestä it-alalle, joten jakaa pikkuhiljaa täällä kaiken tiedon mitä on vuosien saatossa it-järjestelmistä kertynyt. Jos vaikka niistä tiedoista joku nuorempi voisi vaikka hyötyä.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Linux-aloittelijoille:&#039;&#039;&#039; Palvelinkokoonpanon rakentaminen voi koukuttaa pahoin. &lt;br /&gt;
 Siitä huolimatta se on erittäin palkitseva kokemus, ja muutaman kuukauden kuluttua huomaat, ettet koskaan katso taaksepäin. &lt;br /&gt;
 Varmista, että sinulla on aikaa sukeltaa sisään ja ymmärtää, mistä on kyse. &lt;br /&gt;
 Linux on yksi maailman parhaiten dokumentoiduista käyttöjärjestelmistä!  &lt;br /&gt;
 Hyödynnä sitä tarjolla olevaa tietoa.&lt;br /&gt;
&lt;br /&gt;
Muokkaukseni linux.fi:ssä:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://linux.fi/wiki/Toiminnot:Muokkaukset/Kimmo&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=K%C3%A4ytt%C3%A4j%C3%A4:Kimmo&amp;diff=58242</id>
		<title>Käyttäjä:Kimmo</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=K%C3%A4ytt%C3%A4j%C3%A4:Kimmo&amp;diff=58242"/>
		<updated>2024-05-01T11:03:05Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-72 syntynyt yrittäjä, insinööriopiskelija ja Debian-fani vuosituhannen alusta saakka.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.11.2023&lt;br /&gt;
Edit:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Edelleen insinööriopiskelija, mutta 30 vuoden jälkeen entinen yrittäjä, nykyisin projektipäällikkö ja 20 vuoden käytön/fanituksen jälkeen mm. [https://papers.freebsd.org/2018/bsdcan/rice-The_Tragedy_of_systemd.files/rice-The_Tragedy_of_systemd.pdf systemd]:n vuoksi siirtymässä pois alkuperäisestä Debianista, vaikka jakelu onkin kokonaisuudessa loistava.  &lt;br /&gt;
&lt;br /&gt;
Työasemana toimii [https://support.apple.com/kb/sp688?locale=fi_FI iMac], josta MacOSX on vaihdettu [https://mxlinux.org/ MX Linuxiin](Debian-pohjainen ilman systemd:tä). Pääservut on [https://support.hp.com/us-en/document/c03270936 HP Z620] ja [https://support.hp.com/id-en/document/c03277050 HP Z420] ja niissä perustana [https://alpinelinux.org/ Alpine Linux], molemmissa [https://www.linux-kvm.org/ KVM virtualisointiympäristö] ja virtuaalikoneissa pyörii kaikkea peruslinuxjuttujen lisäksi [https://genode.org/ Genodesta] [https://fi.wikipedia.org/wiki/Berkeley_Software_Distribution BSD-jakelujen] kautta aina [https://sysguides.com/install-a-windows-11-virtual-machine-on-kvm/ Windows 11] ja [https://github.com/kholia/OSX-KVM MacOsX Venturaan] saakka. Palomuureina ja reitittiminä toimii [https://support.hp.com/hk-en/document/c04356040 HP 520 thin clienteissä] [https://opnsense.org/ OpnSense] ja [https://openwrt.org/ OPENwrt] kahdennettuna. &lt;br /&gt;
&lt;br /&gt;
Lisäksi löytyy kaikennumeroisia Raspeja ja muuta sälää. Käyttöjärjestelmäpuolella tällä hetkellä eniten kiinnostaa [https://opennebula.io/ OpenNebula] [https://www.netbsd.org/ NetBSD], [https://en.wikipedia.org/wiki/Rump_kernel rumpkernelit] ja [https://sel4.systems/ se4L].&lt;br /&gt;
&lt;br /&gt;
Pelkkä harrastelija kuitenkin tässä vain ollaan. Ja pitkästä aikaa yritän myös tänne kirjoittaa jotain tai edes päivittää vanhaa tietoa.&lt;br /&gt;
&lt;br /&gt;
Discord -palvelin: [https://discord.gg/dkmE8dDvCY Linux, BSD ja Posix]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;27.4.2024&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
MXLinuxista ja Alpine Linuxista luovuttu ja palattu Debian 11 ja 12 käyttöjärjestelmiin. Muuten sama.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.5.2024&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yli viiskymmppinen ukko, joka ei enää haihattele it-alan firmasta tai työllistymisestä it-alalle, joten jakaa pikkuhiljaa täällä kaiken tiedon mitä on vuosien saatossa it-järjestelmistä kertynyt. Jos vaikka niistä tiedoista joku nuorempi voisi vaikka hyötyä.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Linux-aloittelijoille: Palvelinkokoonpanon rakentaminen voi koukuttaa pahoin. &lt;br /&gt;
 Siitä huolimatta se on erittäin palkitseva kokemus, ja muutaman kuukauden kuluttua huomaat, ettet koskaan katso taaksepäin. &lt;br /&gt;
 Varmista, että sinulla on aikaa sukeltaa sisään ja ymmärtää, mistä on kyse. &lt;br /&gt;
 Linux on yksi maailman parhaiten dokumentoiduista käyttöjärjestelmistä!  &lt;br /&gt;
 Hyödynnä sitä tarjolla olevaa tietoa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Muokkaukseni linux.fi:ssä:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://linux.fi/wiki/Toiminnot:Muokkaukset/Kimmo&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=K%C3%A4ytt%C3%A4j%C3%A4:Kimmo&amp;diff=58241</id>
		<title>Käyttäjä:Kimmo</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=K%C3%A4ytt%C3%A4j%C3%A4:Kimmo&amp;diff=58241"/>
		<updated>2024-05-01T10:57:37Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-72 syntynyt yrittäjä, insinööriopiskelija ja Debian-fani vuosituhannen alusta saakka.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.11.2023&lt;br /&gt;
Edit:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Edelleen insinööriopiskelija, mutta 30 vuoden jälkeen entinen yrittäjä, nykyisin projektipäällikkö ja 20 vuoden käytön/fanituksen jälkeen mm. [https://papers.freebsd.org/2018/bsdcan/rice-The_Tragedy_of_systemd.files/rice-The_Tragedy_of_systemd.pdf systemd]:n vuoksi siirtymässä pois alkuperäisestä Debianista, vaikka jakelu onkin kokonaisuudessa loistava.  &lt;br /&gt;
&lt;br /&gt;
Työasemana toimii [https://support.apple.com/kb/sp688?locale=fi_FI iMac], josta MacOSX on vaihdettu [https://mxlinux.org/ MX Linuxiin](Debian-pohjainen ilman systemd:tä). Pääservut on [https://support.hp.com/us-en/document/c03270936 HP Z620] ja [https://support.hp.com/id-en/document/c03277050 HP Z420] ja niissä perustana [https://alpinelinux.org/ Alpine Linux], molemmissa [https://www.linux-kvm.org/ KVM virtualisointiympäristö] ja virtuaalikoneissa pyörii kaikkea peruslinuxjuttujen lisäksi [https://genode.org/ Genodesta] [https://fi.wikipedia.org/wiki/Berkeley_Software_Distribution BSD-jakelujen] kautta aina [https://sysguides.com/install-a-windows-11-virtual-machine-on-kvm/ Windows 11] ja [https://github.com/kholia/OSX-KVM MacOsX Venturaan] saakka. Palomuureina ja reitittiminä toimii [https://support.hp.com/hk-en/document/c04356040 HP 520 thin clienteissä] [https://opnsense.org/ OpnSense] ja [https://openwrt.org/ OPENwrt] kahdennettuna. &lt;br /&gt;
&lt;br /&gt;
Lisäksi löytyy kaikennumeroisia Raspeja ja muuta sälää. Käyttöjärjestelmäpuolella tällä hetkellä eniten kiinnostaa [https://opennebula.io/ OpenNebula] [https://www.netbsd.org/ NetBSD], [https://en.wikipedia.org/wiki/Rump_kernel rumpkernelit] ja [https://sel4.systems/ se4L].&lt;br /&gt;
&lt;br /&gt;
Pelkkä harrastelija kuitenkin tässä vain ollaan. Ja pitkästä aikaa yritän myös tänne kirjoittaa jotain tai edes päivittää vanhaa tietoa.&lt;br /&gt;
&lt;br /&gt;
Discord -palvelin: [https://discord.gg/dkmE8dDvCY Linux, BSD ja Posix]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;27.4.2024&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
MXLinuxista ja Alpine Linuxista luovuttu ja palattu Debian 11 ja 12 käyttöjärjestelmiin. Muuten sama.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.5.2024&lt;br /&gt;
Edit:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yli viiskymmppinen ukko, joka ei enää haihattele it-alan firmasta tai työllistymisestä it-alalle, joten jakaa pikkuhiljaa täällä kaiken tiedon mitä on vuosien saatossa it-järjestelmistä kertynyt. Jos vaikka niistä tiedoista joku nuorempi voisi vaikka hyötyä.&lt;br /&gt;
&lt;br /&gt;
Muokkaukseni linux.fi:ssä:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://linux.fi/wiki/Toiminnot:Muokkaukset/Kimmo&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=T2_J%C3%A4rjestelm%C3%A4_kehitysymp%C3%A4rist%C3%B6&amp;diff=58240</id>
		<title>T2 Järjestelmä kehitysympäristö</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=T2_J%C3%A4rjestelm%C3%A4_kehitysymp%C3%A4rist%C3%B6&amp;diff=58240"/>
		<updated>2024-05-01T10:53:38Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Jakelu&lt;br /&gt;
| nimi=T2SDE&lt;br /&gt;
| logo=&lt;br /&gt;
| kuva=&lt;br /&gt;
| kuvateksti=&lt;br /&gt;
| julkaisija=&lt;br /&gt;
| viimeisin versio=[https://dl.t2sde.org/binary/2024/  24.5]&lt;br /&gt;
| päivämäärä=27.4.2024&lt;br /&gt;
| julkaisusykli=&lt;br /&gt;
| elinkaari=&lt;br /&gt;
| pakettienhallinta=&lt;br /&gt;
| tila=toiminnassa&lt;br /&gt;
| arkkitehtuurit= aarch64, alpha, armel, ia64, loongarch64, mipsel, mips64, m68k, nios2, powerpc, powerpc64, riscv, riscv64, s390x, sparc64, superh, x86, x86_64&lt;br /&gt;
| äitijakelu=&lt;br /&gt;
| sukulaisjakelut=&lt;br /&gt;
| kotisivu=[https://t2sde.org/ T2SDE]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
T2 haarautui yhteisövetoisena ROCK Linux projektista, jonka tavoitteena oli luoda hajautettu kehitys ja mahdollistaa puitteet spin-off-projekteille ja mukautetuille jakeluille. Toinen tavoite oli tarjota jatkuvampi julkaisuvirta vakaille tietoturvapäivityksille.&lt;br /&gt;
&lt;br /&gt;
T2:lla voit määrittää kohteita useisiin eri tarkoituksiin, aina sulautetuista Linux-järjestelmistä, joiden koko on muutaman megatavu palvelinkokoonpanoissa, täysiin työpöytäjärjestelmiin, joissa on X.Org Foundation, KDE, Gnome, OpenOffice.Org ja monet muut. Nämä kohteet voidaan kääntää käytettäväksi yleisimmissä arkkitehtuureissa: Alpha, ARM, HPPA (sis. HPPA64), IA64, MIPS, PowerPC (sis. PowerPC-64), SPARC (sis. SPARC64), SuperH, x86 (sis. x86-64) - teoriassa mikä tahansa GCC/Linux-tuettu.&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=T2_J%C3%A4rjestelm%C3%A4_kehitysymp%C3%A4rist%C3%B6&amp;diff=58239</id>
		<title>T2 Järjestelmä kehitysympäristö</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=T2_J%C3%A4rjestelm%C3%A4_kehitysymp%C3%A4rist%C3%B6&amp;diff=58239"/>
		<updated>2024-05-01T10:53:06Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: Ak: Uusi sivu: {{Jakelu | nimi=T2SDE | logo= | kuva= | kuvateksti= | julkaisija= | viimeisin versio=[https://dl.t2sde.org/binary/2024/  24.5] | päivämäärä=27.4.2024 | julkaisusykli= | elinkaari= | pakettienhallinta= | tila=toiminnassa | arkkitehtuurit= aarch64, alpha, armel, ia64, loongarch64, mipsel, mips64, m68k, nios2, powerpc, powerpc64, riscv, riscv64, s390x, sparc64, superh, x86, x86_64 | äitijakelu= | sukulaisjakelut= | kotisivu=[https://t2sde.org/] }}  T2 haarautui yhteisövet...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Jakelu&lt;br /&gt;
| nimi=T2SDE&lt;br /&gt;
| logo=&lt;br /&gt;
| kuva=&lt;br /&gt;
| kuvateksti=&lt;br /&gt;
| julkaisija=&lt;br /&gt;
| viimeisin versio=[https://dl.t2sde.org/binary/2024/  24.5]&lt;br /&gt;
| päivämäärä=27.4.2024&lt;br /&gt;
| julkaisusykli=&lt;br /&gt;
| elinkaari=&lt;br /&gt;
| pakettienhallinta=&lt;br /&gt;
| tila=toiminnassa&lt;br /&gt;
| arkkitehtuurit= aarch64, alpha, armel, ia64, loongarch64, mipsel, mips64, m68k, nios2, powerpc, powerpc64, riscv, riscv64, s390x, sparc64, superh, x86, x86_64&lt;br /&gt;
| äitijakelu=&lt;br /&gt;
| sukulaisjakelut=&lt;br /&gt;
| kotisivu=[https://t2sde.org/]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
T2 haarautui yhteisövetoisena ROCK Linux projektista, jonka tavoitteena oli luoda hajautettu kehitys ja mahdollistaa puitteet spin-off-projekteille ja mukautetuille jakeluille. Toinen tavoite oli tarjota jatkuvampi julkaisuvirta vakaille tietoturvapäivityksille.&lt;br /&gt;
&lt;br /&gt;
T2:lla voit määrittää kohteita useisiin eri tarkoituksiin, aina sulautetuista Linux-järjestelmistä, joiden koko on muutaman megatavu palvelinkokoonpanoissa, täysiin työpöytäjärjestelmiin, joissa on X.Org Foundation, KDE, Gnome, OpenOffice.Org ja monet muut. Nämä kohteet voidaan kääntää käytettäväksi yleisimmissä arkkitehtuureissa: Alpha, ARM, HPPA (sis. HPPA64), IA64, MIPS, PowerPC (sis. PowerPC-64), SPARC (sis. SPARC64), SuperH, x86 (sis. x86-64) - teoriassa mikä tahansa GCC/Linux-tuettu.&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58238</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58238"/>
		<updated>2024-05-01T10:32:40Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Asennetaan Bridge-utils KVM, Qemu, libvirt ja Docker */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
Luodaan volume-ryhmä:&lt;br /&gt;
 &lt;br /&gt;
 linstor volume-group create homelabrg&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä docker-ryhmään&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker&lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58237</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58237"/>
		<updated>2024-05-01T10:31:57Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Asennetaan Bridge-utils KVM, Qemu, libvirt ja Docker */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
Luodaan volume-ryhmä:&lt;br /&gt;
 &lt;br /&gt;
 linstor volume-group create homelabrg&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
Luodaan verkkosilta OpenNebulaan asennettaville virtuaalikoneille&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
[[DHCP]] silta(ei suositeltava) konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet dhcp&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tai suositeltava staattininen silta konfiguraatiosta tehdään tälläinen:&lt;br /&gt;
&lt;br /&gt;
 # The loopback network interface&lt;br /&gt;
 auto lo&lt;br /&gt;
 iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
 # The primary network interface&lt;br /&gt;
 allow-hotplug enp0s25&lt;br /&gt;
 iface enp0s25 inet manual&lt;br /&gt;
 &lt;br /&gt;
 #Bridge br1 network configurations&lt;br /&gt;
 auto br1&lt;br /&gt;
 iface br1 inet static&lt;br /&gt;
 address 192.168.1.200&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
 gateway 192.168.1.1&lt;br /&gt;
 bridge_ports enp0s25&lt;br /&gt;
 bridge_stp off       # disable Spanning Tree Protocol&lt;br /&gt;
 bridge_waitport 0    # no delay before a ort becomes available&lt;br /&gt;
 bridge_fd 0          # no forwarding delay&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä docker-ryhmään&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker&lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58236</id>
		<title>Debian homelab(opennebula, drbd, linstor ja ocfs2)</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Debian_homelab(opennebula,_drbd,_linstor_ja_ocfs2)&amp;diff=58236"/>
		<updated>2024-05-01T10:21:25Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Asennetaan KVM, Qemu, libvirt ja Docker */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Tiedosto:135e3d55-669d-4e0e-95fe-66dfd6d6b783.jpg|pienoiskuva]]&lt;br /&gt;
Tässä luodaan kolmen Debian 11/12 palvelimen [[homelab]] ja/tai testiklusteri.&lt;br /&gt;
&lt;br /&gt;
== Laitteistovaatimukset ==&lt;br /&gt;
Jokaisessa 3:ssa koneessa tulee minimissään löytyä seuraavat ominaisuudet:&lt;br /&gt;
* 4GB RAM&lt;br /&gt;
* 2 ytiminen prosessori(suositeltava minimi 4 ydintä) ja valmistajasta riippuen [https://en.wikipedia.org/wiki/X86_virtualization#Processor VT-x tai AMD-V ominaisuudella]&lt;br /&gt;
* 1 kpl kiintolevy 10GB (/dev/sda), jossa juuriosio ja johon on asennettu käyttöjärjestelmä&lt;br /&gt;
* 1 kpl kiintolevy 50GB (/dev/sdb), joka liitetään klusterin yhteiseksi levyksi&lt;br /&gt;
* 1 kpl Gigabitin verkkokortti RJ-45&lt;br /&gt;
&lt;br /&gt;
Laittistovaatimuksille ei perinteisesti ole ylärajaa. Edellämainitut ominaisuudet siis minimi vaatimukset ja mitä tehokkaampi laitteisto käytössä, sitä sulavammin ohjelmisto toimii.&lt;br /&gt;
&lt;br /&gt;
== Ohjelmistovaatimukset ==&lt;br /&gt;
* 1 kpl (controlnode)Debian 11 tuoreella minimaalisella asennuksella. Tämä palvelin toimii sekä osana klusteria, että käyttöliittymänä ja hallitsee muita klusterissa olevia palvelimia ja palveluita.&lt;br /&gt;
* 2 kpl(node 1 ja 2) Debian 12 tuoreella minimaalisella asennuksella. &lt;br /&gt;
&lt;br /&gt;
Tässä ohjeessa emme käy [[Debian]]in perusasennusta läpi, koska onnistuakseen tässä pitää osata asentaa Debian ja tietää myös muita peruskäsitteitä Debianista ja Linux-järjestelmästä yleisesti.&lt;br /&gt;
&lt;br /&gt;
Seuraavat toimenpiteet tehdään jokaisessa klusterin palvelimessa.&lt;br /&gt;
&lt;br /&gt;
== Muokataan /etc/hosts- tiedosto ==&lt;br /&gt;
&lt;br /&gt;
 sudo nano /etc/hosts&lt;br /&gt;
&lt;br /&gt;
Lisätään rivit:&lt;br /&gt;
&lt;br /&gt;
 192.168.1.200   control.lan  control&lt;br /&gt;
 192.168.1.201   node-1.lan   node-1&lt;br /&gt;
 192.168.1.202	node-2.lan   node-2&lt;br /&gt;
&lt;br /&gt;
Poistutaan ctrl+x&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[ZFS]] -tiedostojärjestelmä ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apt linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed&lt;br /&gt;
&lt;br /&gt;
== Luodaan [[zpool]] looginen varanto ==&lt;br /&gt;
&lt;br /&gt;
Haetaan /dev/sdb:n disk-id&lt;br /&gt;
&lt;br /&gt;
  ls -lh /dev/disk/by-id/&lt;br /&gt;
&lt;br /&gt;
Luodaan varanto tulosteesta saadusta disk-id:stä&lt;br /&gt;
Debian 11:&lt;br /&gt;
 sudo zpool create controltank &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-1&lt;br /&gt;
 sudo zpool create nodetank1 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
Debian 12 node-2&lt;br /&gt;
 sudo zpool create nodetank2 &amp;lt;disk-id&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[DRBD]] ja [[Linstor]] ==&lt;br /&gt;
&lt;br /&gt;
Debianin pakettivarastoista ei löydy Linstoria, eikä sen vaatimaa DRBD 9 versiota, pelkästään version nro 8 löytyy, eikä se tue kuin kahta palvelinta, eikä myöskään Linstor tue kasiversiota. Joten käännämme tarvittavat paketit Ubuntun PPA:sta löytyvistä paketeista.&lt;br /&gt;
&lt;br /&gt;
Nämä pitää tehdä Debian 11 koneella ja toisella Debian 12 koneella, valmiit .deb paketit voi kopioida ja asentaa käännöskoneena käytetyltä Debian 12 koneelta toiselle.&lt;br /&gt;
&lt;br /&gt;
Asennetaan Debian SDK&lt;br /&gt;
&lt;br /&gt;
 sudo apt install devscripts build-essential dkms&lt;br /&gt;
&lt;br /&gt;
Asennetaan [https://sdkman.io/ SDKMAN] ja Linstorin vaatima uusin [https://gradle.org/ Gradle] sen avulla.&lt;br /&gt;
&lt;br /&gt;
SDKMAN:&lt;br /&gt;
 curl -s &amp;quot;https://get.sdkman.io&amp;quot; | bash&lt;br /&gt;
&lt;br /&gt;
Ja sen jälkeen Gradle:&lt;br /&gt;
 sdk install gradle 8.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Tässä ohjeessa haetaan uusimmat ohjeen kirjoittamisen aikaan(27.4.2024) olleet dsc:t. Linbitin PPA:sta poistuu vanhoja ja uusia tulee tilalle melko usein, joten ei kannata tästä suoraan copypeistata, vaan hakea uusimmat dsc:t täältä: [https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+packages Linbit/Ubuntu PPA DRBD9 stack] &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Luodaan kansiot ja haetaan Ubuntun PPA:sta dsc-tiedot:&lt;br /&gt;
&lt;br /&gt;
 cd ~ &amp;amp;&amp;amp; mkdir drbd &amp;amp;&amp;amp; mkdir drbd-utils &amp;amp;&amp;amp; mkdir -p linstor/server &amp;amp;&amp;amp; mkdir -p linstor/client &amp;amp;&amp;amp; mkdir -p linstor/python &amp;amp;&amp;amp; mkdir drbd-linstor-debs&lt;br /&gt;
&lt;br /&gt;
Kernelin tarvitsema DRBD-moduuli:&lt;br /&gt;
 cd drbd &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd/9.2.9~rc.1-1ppa1~jammy1/drbd_9.2.9~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-9.2.9~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-dkms*.deb drbd-ueficert*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Käyttöjärjestelmän tarvitsema drbd-utils paketti:&lt;br /&gt;
 cd drbd-utils &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/drbd-utils/9.28.0~rc.1-1ppa1~jammy1/drbd-utils_9.28.0~rc.1-1ppa1~jammy1.dsc&lt;br /&gt;
 cd drbd-utils-9.28.0~rc.1 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv drbd-utils*.deb  ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor server paketit:&lt;br /&gt;
 cd linstor/server &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-server/1.27.0-1ppa1~jammy1/linstor-server_1.27.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-server-1.27.0&lt;br /&gt;
&lt;br /&gt;
 nano debian/control&lt;br /&gt;
Muutetaan Build-Dependseistä &lt;br /&gt;
 gradle (&amp;gt;=4.4.1-13)&lt;br /&gt;
Tallennetaan ja poistutaan ctrl+x&lt;br /&gt;
 &lt;br /&gt;
 sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor client paketti:&lt;br /&gt;
 cd client &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/linstor-client/1.22.0-1ppa1~jammy1/linstor-client_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd linstor-client-1.22.0 &amp;amp;&amp;amp; sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ..&lt;br /&gt;
&lt;br /&gt;
Linstor python paketti:&lt;br /&gt;
 cd python &amp;amp;&amp;amp; dget --extract --allow-unauthenticated https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack/+sourcefiles/python-linstor/1.22.0-1ppa1~jammy1/python-linstor_1.22.0-1ppa1~jammy1.dsc&lt;br /&gt;
 cd python-linstor-1.22.0 &amp;amp;&amp;amp;  sudo mk-build-deps --install --remove &amp;amp;&amp;amp; dpkg-buildpackage --build=binary --no-sign &amp;amp;&amp;amp; cd ..&lt;br /&gt;
 mv python-linstor*.deb ~/drbd-linstor-debs/ &amp;amp;&amp;amp; cd ~/drbd-linstor-debs/&lt;br /&gt;
&lt;br /&gt;
Asennetaan riippuvuudet ja käännetyt paketit:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install python3-natsort &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Paketit asentuvat yleensä puhtaaseen Debian-asennukseen, mutta jos on tehty pienikin muokkaus niin häiriöitä voi esiintyä. Jos paketit eivät asennu ilman erroreita niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
Ja pakettien uudelleenasennus:&lt;br /&gt;
&lt;br /&gt;
 cd ~/drbd-linstor-debs/ &amp;amp;&amp;amp; sudo dpkg -i *.deb&lt;br /&gt;
&lt;br /&gt;
Jos vieläkään ei asennu niin komento:&lt;br /&gt;
&lt;br /&gt;
 sudo dmesg&lt;br /&gt;
&lt;br /&gt;
Myös /var/log-tiedoston tutkiminen voi auttaa. Jos mikään ei auta niin paketit verkkolevylle tai muistitikulle talteen ja Debianin uudelleenasennus ja sitten pakettien asennus &amp;quot;puhtaaseen tauluun&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Luodaan DRBD/Linstor klusteri ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Huom! Nämä komennot annetaan AINOASTAAN Debian 11 control-koneessa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Käynnistetään ja kytketään linstor-controller päälle:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now linstor-controller&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 linstor node create control 192.168.1.200 --node-type combined&lt;br /&gt;
 linstor node create node-1 192.168.1.201&lt;br /&gt;
 linstor node create node-1 192.168.1.202&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor node list&lt;br /&gt;
&lt;br /&gt;
Tulostuu seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! NodeType !! Addresses !! State&lt;br /&gt;
|-&lt;br /&gt;
| control || COMBINED || 192.168.1.200:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-1 || SATELLITE || 192.168.1.201:3366 (PLAIN) || Online&lt;br /&gt;
|-&lt;br /&gt;
| node-2 || SATELLITE || 192.168.1.202:3366 (PLAIN) || Online&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Luodaan tallennusvaranto:&lt;br /&gt;
&lt;br /&gt;
 linstor storage-pool create zfs control homelabpool controltank&lt;br /&gt;
 linstor storage-pool create zfs node-1 homelabpool nodetank1&lt;br /&gt;
 linstor storage-pool create zfs node-2 homelabpool nodetank2&lt;br /&gt;
&lt;br /&gt;
Komennolla: &lt;br /&gt;
 linstor storage-pool list&lt;br /&gt;
&lt;br /&gt;
Tulostuu jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! StoragePool !! Node  !! Driver !! PoolName !! FreeCapacity !!  TotalCapacity !! CanSnapshots !! State !! SharedName &lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || control || DISKLESS || || || || False || Ok || control;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-1 || DISKLESS || || || || False || Ok || node-1;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| DfltDisklessStorPool || node-2 || DISKLESS || || || || False || Ok || node-2;DfltDisklessStorPool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || control || ZFS || controltank || 50.00 GiB || 50.00 GiB || True || Ok || control;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-1 || ZFS || nodetank1 || 50.00 GiB || 50.00 GiB || True || Ok || node-1;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
| homelabpool || node-2 || ZFS || nodetank2 || 50.00 GiB || 50.00 GiB || True || Ok || node-2;homelabpool&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Luodaan resurssiryhmä ja määritellään tallennustila sille:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-group create homelabrg --storage-pool homelabpool --place-count 3&lt;br /&gt;
&lt;br /&gt;
Luodaan volume-ryhmä:&lt;br /&gt;
 &lt;br /&gt;
 linstor volume-group create homelabrg&lt;br /&gt;
&lt;br /&gt;
Luodaan looginen tallennustila:&lt;br /&gt;
 &lt;br /&gt;
 linstor resource-definition create homelabdisk0&lt;br /&gt;
 linstor volume-definition create homelabdisk0 40G&lt;br /&gt;
 linstor resource create control homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
 linstor resource create node-1 homelabdisk0 --storage-pool homelabpool&lt;br /&gt;
&lt;br /&gt;
Tarkistuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource-definition list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Port !! ResourceGroup !! State&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || 7000 || DfltRscGrp || ok&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || Unused || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || Unused || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || Unused || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Seuraavaksi sallitaan kaikkien klusterin palvelinten liittää samanaikaisesti Linstorin luoma jaettu /dev/drbd1000 resurssi:&lt;br /&gt;
&lt;br /&gt;
 linstor controller drbd-options --allow-two-primaries yes&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;Huom! Tuota yllämainittua komentoa/ominaisuutta ei voi käyttää kuin [[Ocfs2]] ja [[GFS2]] tiedostojärjestelmien kanssa. Muilla(esim. [[ext4]] tai [[btrfs]] )järjestelmä vikaantuu pahasti.&amp;lt;/big&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== [[Ocfs2]]-tiedostojärjestelmän asennus ja käyttöönotto ==&lt;br /&gt;
&lt;br /&gt;
Seuraavat komennot annetaan jälleen kaikissa kolmessa palvelimessa.&lt;br /&gt;
&lt;br /&gt;
Asennetaan komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install ocfs2-tools&lt;br /&gt;
&lt;br /&gt;
Luodaan klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Lisätään palvelimet klusteriin:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb add-node homelabcluster control --ip 192.168.1.200 --port 7777 --number 0&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-1 --ip 192.168.1.201 --port 7777 --number 1&lt;br /&gt;
 sudo o2cb add-node homelabcluster node-2 --ip 192.168.1.202 --port 7777 --number 2&lt;br /&gt;
&lt;br /&gt;
Rekisteröidään klusteri:&lt;br /&gt;
&lt;br /&gt;
 sudo o2cb register-cluster homelabcluster&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan klusterin asetustiedosto:&lt;br /&gt;
&lt;br /&gt;
 cat /etc/ocfs2/cluster.conf&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni oikein sen pitäisi antaa seuraanvan kaltainen tuloste:&lt;br /&gt;
&lt;br /&gt;
 cluster:&lt;br /&gt;
 name = homelabcluster&lt;br /&gt;
 heartbeat_mode = local&lt;br /&gt;
 node_count = 3&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 0&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.200&lt;br /&gt;
 name = control&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 1&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.201&lt;br /&gt;
 name = node-1&lt;br /&gt;
 node:&lt;br /&gt;
 cluster = homelabcluster&lt;br /&gt;
 number = 2&lt;br /&gt;
 ip_port = 7777&lt;br /&gt;
 ip_address = 192.168.1.202&lt;br /&gt;
 name = node-2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HUOM! Debianin paketissa on bugi ja klusteri ei käynnisty ennenkuin teet pari manuaalista liitosta komennoilla. Tämä täytyy EHKÄ tehdä jokaisen käynnistyksen jälkeen, tai automatisoida se esimerkiksi crontabiin:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Mikäli edellinen komento antaa virheen ja juuritiedostojärjestelmässä ei ole kansioita dlm ja config, voit luoda ne ja liittää komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /dlm &amp;amp;&amp;amp; sudo mkdir /config &amp;amp;&amp;amp; sudo mount -t ocfs2_dlmfs none /dlm &amp;amp;&amp;amp; sudo mount -t configfs none /config&lt;br /&gt;
&lt;br /&gt;
Tämän jälkeen klusteri voidaan käynnistää kaikissa kolmessa palvelimessa komennolla ja samalla tarkistaa toiminta:&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/o2cb start &amp;amp;&amp;amp; sudo /etc/init.d/o2cb status&lt;br /&gt;
&lt;br /&gt;
Tuloste pitäisi olla esimerkiksi Debian 12 node-1:ssä tämän kaltainen:&lt;br /&gt;
&lt;br /&gt;
 o2cb.service - LSB: Load O2CB cluster services at system boot.&lt;br /&gt;
 Loaded: loaded (/etc/init.d/o2cb; generated)&lt;br /&gt;
 Active: active (running) since Sat 2024-04-27 13:25:20 EEST; 3s ago&lt;br /&gt;
 Docs: man:systemd-sysv-generator(8)&lt;br /&gt;
 Process: 45895 ExecStart=/etc/init.d/o2cb start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 Tasks: 1 (limit: 9371)&lt;br /&gt;
 Memory: 236.0K&lt;br /&gt;
 CPU: 73ms&lt;br /&gt;
 CGroup: /system.slice/o2cb.service&lt;br /&gt;
 `-45942 o2hbmonitor&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Starting o2cb.service - LSB: Load O2CB cluster services at system boot....&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: checking debugfs...&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading stack plugin &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Loading filesystem &amp;quot;ocfs2_dlmfs&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Mounting ocfs2_dlmfs filesystem at /dlm: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting cluster stack &amp;quot;o2cb&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Registering O2CB cluster &amp;quot;homelabcluster&amp;quot;: OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2cb[45895]: Setting O2CB cluster timeouts : OK&lt;br /&gt;
 Apr 27 13:25:20 node-1 o2hbmonitor[45942]: Starting&lt;br /&gt;
 Apr 27 13:25:20 node-1 systemd[1]: Started o2cb.service - LSB: Load O2CB cluster services at system boot..&lt;br /&gt;
&lt;br /&gt;
Nyt voidaan luoda ocfs2-tiedostojärjestelmä Linstorin luomaan DRDB-osioon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seuraava komento annetaan ainoastaan Debian 11 control nodessa:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sudo mkfs.ocfs2 -b 4k -C 1M -N 3 -L homelab /dev/drbd1000&lt;br /&gt;
&lt;br /&gt;
Jossa -b block size, -C cluster size, -N node count, -L label&lt;br /&gt;
&lt;br /&gt;
Tiedostojärjestelmän luonnin jälkeen tehdään kaikissa palvelimissa  /var/lib/one- kansio ja liitetään /dev/drbd1000 siihen seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /var/lib/one &amp;amp;&amp;amp; sudo mount /dev/drbd1000 /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Tarkistetaan lsblk -f komennolla:&lt;br /&gt;
&lt;br /&gt;
 lsblk -f&lt;br /&gt;
&lt;br /&gt;
Joka tulostaa levyt/tiedostojärjestelmät ja jos kaikki meni kaikilla palvelimilla oikein niin tulosteesta pitäisi löytyä rivi:&lt;br /&gt;
 zd0         drbd       v09                                               &lt;br /&gt;
 └─drbd1000                &lt;br /&gt;
 &lt;br /&gt;
Vielä voi tarkistaa df -h komennolla, että drbd laite on liitetty:&lt;br /&gt;
&lt;br /&gt;
 df -h&lt;br /&gt;
&lt;br /&gt;
Tulosteesta pitäisi löytyä jotakuinkin tälläinen rivi:&lt;br /&gt;
&lt;br /&gt;
 /dev/drbd1000        50G  0,1G  50G   1% /var/lib/one&lt;br /&gt;
&lt;br /&gt;
Ja jos kaikki meni oikein niin linstorin tarkastuskomento:&lt;br /&gt;
&lt;br /&gt;
 linstor resource list&lt;br /&gt;
&lt;br /&gt;
Tulostaa nyt jotakuinkin seuraavaa:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ResourceName !! Node !! Port !! Usage !! Conns !! State !! CreatedON&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || control ||  || InUse || Ok || UpToDate || 2024-04-26 17:55:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-1 ||  || InUse || Ok || UpToDate || 2024-04-26 17:58:13&lt;br /&gt;
|-&lt;br /&gt;
| homelabdisk0 || node-2 ||  || InUse || Ok || UpToDate || 2024-04-26 17:59:13&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[Bridge-utils]] [[KVM]], [[Qemu]], [[libvirt]] ja [[Docker]] ==&lt;br /&gt;
&lt;br /&gt;
Bridge-utils, [[KVM]], Qemu ja libvirt asennetaan seuraavalla komennolla:&lt;br /&gt;
&lt;br /&gt;
 sudo apt -y install bridge-utils qemu-system libvirt-daemon-system&lt;br /&gt;
&lt;br /&gt;
[[Docker]] asennetaan seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update&lt;br /&gt;
 sudo apt -y install ca-certificates curl&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \&lt;br /&gt;
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;) stable&amp;quot; | \&lt;br /&gt;
 sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
== Asennetaan [[OpenNebula]] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 11 control node.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Lisätään pakettivaraston avain ja pakettivarasto:&lt;br /&gt;
&lt;br /&gt;
 sudo -i&lt;br /&gt;
 wget -q -O- https://downloads.opennebula.io/repo/repo2.key | gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg&lt;br /&gt;
 echo &amp;quot;deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/6.8/Debian/11 stable opennebula&amp;quot; &amp;gt; /etc/apt/sources.list.d/opennebula.list&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Asennetaan Opennebula käyttöliittymä ja virtualisointiympäristö:&lt;br /&gt;
&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt -y install opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow opennebula-provision opennebula-node-kvm docker-machine-opennebula&lt;br /&gt;
&lt;br /&gt;
Lisätään asennuksen luoma oneadmin käyttäjä docker-ryhmään&lt;br /&gt;
&lt;br /&gt;
 sudo adduser oneadmin docker&lt;br /&gt;
&lt;br /&gt;
Vaihdetaan oneadmin-käyttäjäksi ja lisätään salasana:&lt;br /&gt;
&lt;br /&gt;
 sudo -u oneadmin /bin/sh&lt;br /&gt;
&lt;br /&gt;
 echo &#039;oneadmin:vaihdaminut123&#039; &amp;gt; /var/lib/one/.one/one_auth&lt;br /&gt;
&lt;br /&gt;
Kytketään ja käynnistetään OpenNebula:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl enable --now opennebula opennebula-sunstone opennebula-fireedge opennebula-gate opennebula-flow&lt;br /&gt;
&lt;br /&gt;
Jos kaikki meni putkeen ja palomuurista portti 9869 auki, voit selaimella mennä osoitteeseen https://&amp;lt;debian11_control_ip-osoite&amp;gt;:9869&lt;br /&gt;
&lt;br /&gt;
Ja kirjautua oneadmin käyttäjänä ja aiemmin antamallisi salasanalla hallintapaneeliin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nämä komennot vain Debian 12 koneissa.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Koska osassa opennebulan paketeista on vielä tätä ohjetta kirjoitettaessa ristiriitaisuuksia Debian 12:n pakettien kanssa niin asennetaan pelkästään varmasti toimivat paketit näihin palvelimiin seuraavasti:&lt;br /&gt;
&lt;br /&gt;
 mkdir opennebula &amp;amp;&amp;amp; cd opennebula&lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-common-onecfg_6.8.0-1_all.deb &lt;br /&gt;
 wget https://downloads.opennebula.io/repo/6.8/Debian/11/pool/opennebula/opennebula-node-kvm_6.8.0-1_all.deb&lt;br /&gt;
 sudo dpkg -i *.deb &amp;amp;&amp;amp; sudo apt -f install&lt;br /&gt;
&lt;br /&gt;
Oneadmin-käyttäjälle täytyy luoda salasanaton [[ssh]]-kirjautuminen palvelimien välille ja sitten voidaan Debian 12 palvelimet lisätä Debian 11 hallintapaneelista virtuaalikoneisänniksi.&lt;br /&gt;
&lt;br /&gt;
==Huomiota==&lt;br /&gt;
* Nyt on kolmen palvelimen korkean käytettävyyden [[homelab]] -perusta konfiguroitu. &lt;br /&gt;
&lt;br /&gt;
* Klusteriin voi nyt lisätä palvelimia ja lisätä ne [[OpenNebula]]an isänniksi. Voi lisätä kovalevyjä ja tehdä niistä [[Linstor]]in ja [[Ocfs2]]:n avulla lisää jaettuja levyjä ja ajaa vaikka [[NFS]] ja/tai [[Samba]] -servereitä niillä.&lt;br /&gt;
&lt;br /&gt;
* Voi lisätä [[Docker]] -kontteja eri sovelluksille tai ajaa vaikka [[Kubernetes]]tä klusterissa&lt;br /&gt;
&lt;br /&gt;
* Voi rakentaa kokonaisen virtualisoidun pilviympäristön palomuureineen, verkkolevyineen reitittimineen yms.&lt;br /&gt;
&lt;br /&gt;
* Yhteisen jaetun levyn ansiosta voit sulavasti siirtää jopa sammuttamatta virtuaalikoneen isännältä toiselle. Ks. [https://en.wikipedia.org/wiki/Live_migration Wikipedian Live migration artikkeli(englanniksi)]&lt;br /&gt;
&lt;br /&gt;
* Voi ajaa klusterin päällä esim. [[Distcc]]:tä ja tehdä esim. Linux-[[ytimen_kääntäminen]] nopeammaksi. Tai minkä muun paketin tahansa.&lt;br /&gt;
&lt;br /&gt;
==Erittäin tärkeää==&lt;br /&gt;
&lt;br /&gt;
* Linstoria ajetaan tässä dual-primary moodissa ja äkillisen virtakatkoksen tai muun häiriön tapahtutuessa palvelinten uudelleenkäynnistyksen yhteydessä saattaa tapahtua nk. [https://www.google.com/search?q=split+brain+drbd&amp;amp;sca_esv=ee520a4c543f855e&amp;amp;sxsrf=ACQVn08x_CGXtg7oj1_8Cg7hJNlTDRbH9g%3A1714227872009&amp;amp;ei=oAotZrQLpY3A8A_v4JCoDg&amp;amp;udm=&amp;amp;oq=split+brain+dr&amp;amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiDnNwbGl0IGJyYWluIGRyKgIIAjIIEAAYgAQYywEyCBAAGIAEG split-brain reaktio], joka tarkoittaa, että palvelin ei tiedä miltä koneelta tieto haetaan replikoitavaksi ja on haasteellista saada järjestelmä tästä virheestä toipumaan ilman uudelleenasennusta ja tietojen häviämistä. Joten etenkin tuotantokäytössä on syytä heti käyttöönoton jälkeen aloittaa [[crontab]]in ja vaikka [[rsync]]in avulla Linstorin DRBD-osion säännöllinen tiheä [[varmuuskopiointi]].&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://openzfs.org/wiki/Main_Page OpenZFS wiki (englanniksi)]&lt;br /&gt;
*[https://linbit.com/user-guides-and-product-documentation/ DRBD ja Linstor virallinen dokumentaatio (enlanniksi)]&lt;br /&gt;
*[https://brian-candler.medium.com/linstor-networked-storage-without-the-complexity-c3178960ce6b Linstor klusterin tekeminen LXC kontteihin (englanniksi)]&lt;br /&gt;
*[https://pub.nethence.com/storage/drbd-linstor DRBD ja Linstor -ohje (englanniksi)]&lt;br /&gt;
*[https://launchpad.net/~linbit/+archive/ubuntu/linbit-drbd9-stack Linbitin Ubuntu paketit]&lt;br /&gt;
*[https://wiki.debian.org/BuildingTutorial#Method_1:_apt_source Debian wikin pakettien teko-ohje (englanniksi)]&lt;br /&gt;
*[https://wiki.debian.org/CreatePackageFromPPA Debian wikin Ubuntu pakettien käännösohje (englanniksi)]&lt;br /&gt;
*[https://ocfs2.wiki.kernel.org/ Ocfs2 wiki (englanniksi)]&lt;br /&gt;
*[https://docs.docker.com/engine/install/debian/ Dockerin Debian dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://libvirt.org/ Libvirt dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://linux-kvm.org/page/Main_Page KVM hypervisorin dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://docs.opennebula.io/6.8/overview/opennebula_concepts/opennebula_overview.html OpenNebulan virallinen dokumentaatio (englanniksi)]&lt;br /&gt;
*[https://computingforgeeks.com/install-opennebula-kvm-node-on-debian/ OpenNebula KVM-noden konfigurointi -ohje (englanniksi)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Verkko]]&lt;br /&gt;
[[Luokka:Tiedostojärjestelmät]]&lt;br /&gt;
[[Luokka:Ohjeet]]&lt;br /&gt;
[[Luokka:Debian GNU/Linux]]&lt;br /&gt;
[[Luokka:Palvelimet]]&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Pilvipalvelut]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Muita_k%C3%A4ytt%C3%B6j%C3%A4rjestelm%C3%A4ytimi%C3%A4&amp;diff=58235</id>
		<title>Muita käyttöjärjestelmäytimiä</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Muita_k%C3%A4ytt%C3%B6j%C3%A4rjestelm%C3%A4ytimi%C3%A4&amp;diff=58235"/>
		<updated>2024-04-28T20:10:03Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: /* Aiheesta muualla */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tässä artikkelissa listataan muutamia [[POSIX]]-yhteensopivia käyttöjärjestelmäytimiä. Voit käyttää suurinta osaa tämän wikin vinkeistä myös näillä järjestelmillä niiden POSIX-yhteensopivuuden ja [[GNU]]-ohjelmien hyvän siirrettävyyden vuoksi.&lt;br /&gt;
&lt;br /&gt;
==OpenSolaris==&lt;br /&gt;
&#039;&#039;Katso myös pääartikkeli [[OpenSolaris]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OpenSolaris oli [[Sun Microsystems|Sun Microsystemsin]] kehittämä käyttöjärjestelmä, joka perustui Solaris 10 -järjestelmään, joka oli aikaisemmin maksullinen ja suljettu järjestelmä. OpenSolariksen lähdekoodi on avattu [[CDDL]]-lisensillä. OpenSolariksen kehitys on sittemmin loppunut ja seuraaja on [https://illumos.org/ Illumos]&lt;br /&gt;
&lt;br /&gt;
===Aiheesta muualla===&lt;br /&gt;
* [[wikipedia:OpenSolaris|OpenSolaris Wikipediassa]]&lt;br /&gt;
* [http://www.opensolaris.org/ OpenSolaris.org]&lt;br /&gt;
* [https://illumos.org/docs/about/history/ Illumos historia]&lt;br /&gt;
&lt;br /&gt;
==GNU Hurd==&lt;br /&gt;
GNU Hurd on [[GNU]]-projektin käyttöjärjestelmäydin, joka käyttää pohjana [[GNU Mach]]-mikroydintä. Hurd laajentaa Machia mm. laitteistoajureilla. Hurdin nimi on lyhenne, joka tarkoittaa [[Unix]]in korvaavien [[taustaprosessi]]en laumaa (Hird of Unix Replacing Daemons).&lt;br /&gt;
&lt;br /&gt;
Hurdia tukevia jakeluja ovat esimerkiksi [[Debian GNU/Hurd]] sekä [[Arch Hurd]].&lt;br /&gt;
&lt;br /&gt;
===Aiheesta muualla===&lt;br /&gt;
*[http://www.gnu.org/software/hurd/hurd.html GNU Hurd]&lt;br /&gt;
*[[wikipedia:fi:GNU_Hurd|GNU Hurd Wikipediassa]]&lt;br /&gt;
&lt;br /&gt;
==L4==&lt;br /&gt;
&lt;br /&gt;
L4 on kokonainen mikroydin-järjestelmäperhe josta löytyy monia haaroja. Esimerkiksi:&lt;br /&gt;
&lt;br /&gt;
* [http://hypervisor.org/ NOVA]&lt;br /&gt;
* [https://sel4.systems/ se4l]&lt;br /&gt;
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco.OC]&lt;br /&gt;
&lt;br /&gt;
===Aiheesta muualla===&lt;br /&gt;
* [https://genode.org/ Genode käyttöjärjestelmä kehys/kehitysympäristö]&lt;br /&gt;
&lt;br /&gt;
==Redox==&lt;br /&gt;
&lt;br /&gt;
RedoxOS on uusi potentiaalinen [[Rust]]illa kirjoitettu käyttöjärjestelmä. Sen ydin perustuu mikroydin arkkitehtuuriin, kuten esimerkiksi Minix, Hurd ja L4.&lt;br /&gt;
&lt;br /&gt;
===Aiheesta muualla===&lt;br /&gt;
* [https://www.redox-os.org/ Redox OS kotisivu]&lt;br /&gt;
&lt;br /&gt;
==BSD==&lt;br /&gt;
BSD eli Berkeley Software Distribution on UNIX-käyttöjärjestelmä, joka kehitettiin Berkeleyn yliopistossa. Sen lähdekoodi avattiin 1990-luvun alussa, mutta UNIXin alkuperäisen kehittäjäyhtiön (AT&amp;amp;T) nostaman oikeusjutun takia varsinainen käyttöönotto viivästyi muutamalla vuodella (sillä välin [[Linus Torvalds]] kyllästyi [[MS-DOS]]iin ja aloitti Linuxin kehittämisen). Nykyään BSD:tä kehitetään ainakin [[FreeBSD]]-, [[NetBSD]]- ja [[OpenBSD]]-projekteissa. Eri BSD-versioille tyypillistä on oman ytimen kehittäminen, vaikkakin lähdekoodipohja on kaikissa sama.&lt;br /&gt;
&lt;br /&gt;
===Aiheesta muualla===&lt;br /&gt;
*[[wikipedia:fi:BSD|BSD Wikipediassa]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://wiki.osdev.org/Projects OSdevin kattava lista avoimen koodin käyttöjärjestelmistä ja ytimistä(kaikki eivät ole Posix-yhteensopivia)]&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Järjestelmä]]&lt;br /&gt;
[[Luokka:Ydin]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Muita_k%C3%A4ytt%C3%B6j%C3%A4rjestelm%C3%A4ytimi%C3%A4&amp;diff=58234</id>
		<title>Muita käyttöjärjestelmäytimiä</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Muita_k%C3%A4ytt%C3%B6j%C3%A4rjestelm%C3%A4ytimi%C3%A4&amp;diff=58234"/>
		<updated>2024-04-28T20:09:40Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tässä artikkelissa listataan muutamia [[POSIX]]-yhteensopivia käyttöjärjestelmäytimiä. Voit käyttää suurinta osaa tämän wikin vinkeistä myös näillä järjestelmillä niiden POSIX-yhteensopivuuden ja [[GNU]]-ohjelmien hyvän siirrettävyyden vuoksi.&lt;br /&gt;
&lt;br /&gt;
==OpenSolaris==&lt;br /&gt;
&#039;&#039;Katso myös pääartikkeli [[OpenSolaris]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
OpenSolaris oli [[Sun Microsystems|Sun Microsystemsin]] kehittämä käyttöjärjestelmä, joka perustui Solaris 10 -järjestelmään, joka oli aikaisemmin maksullinen ja suljettu järjestelmä. OpenSolariksen lähdekoodi on avattu [[CDDL]]-lisensillä. OpenSolariksen kehitys on sittemmin loppunut ja seuraaja on [https://illumos.org/ Illumos]&lt;br /&gt;
&lt;br /&gt;
===Aiheesta muualla===&lt;br /&gt;
* [[wikipedia:OpenSolaris|OpenSolaris Wikipediassa]]&lt;br /&gt;
* [http://www.opensolaris.org/ OpenSolaris.org]&lt;br /&gt;
* [https://illumos.org/docs/about/history/ Illumos historia]&lt;br /&gt;
&lt;br /&gt;
==GNU Hurd==&lt;br /&gt;
GNU Hurd on [[GNU]]-projektin käyttöjärjestelmäydin, joka käyttää pohjana [[GNU Mach]]-mikroydintä. Hurd laajentaa Machia mm. laitteistoajureilla. Hurdin nimi on lyhenne, joka tarkoittaa [[Unix]]in korvaavien [[taustaprosessi]]en laumaa (Hird of Unix Replacing Daemons).&lt;br /&gt;
&lt;br /&gt;
Hurdia tukevia jakeluja ovat esimerkiksi [[Debian GNU/Hurd]] sekä [[Arch Hurd]].&lt;br /&gt;
&lt;br /&gt;
===Aiheesta muualla===&lt;br /&gt;
*[http://www.gnu.org/software/hurd/hurd.html GNU Hurd]&lt;br /&gt;
*[[wikipedia:fi:GNU_Hurd|GNU Hurd Wikipediassa]]&lt;br /&gt;
&lt;br /&gt;
==L4==&lt;br /&gt;
&lt;br /&gt;
L4 on kokonainen mikroydin-järjestelmäperhe josta löytyy monia haaroja. Esimerkiksi:&lt;br /&gt;
&lt;br /&gt;
* [http://hypervisor.org/ NOVA]&lt;br /&gt;
* [https://sel4.systems/ se4l]&lt;br /&gt;
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco.OC]&lt;br /&gt;
&lt;br /&gt;
===Aiheesta muualla===&lt;br /&gt;
* [https://genode.org/ Genode käyttöjärjestelmä kehys/kehitysympäristö]&lt;br /&gt;
&lt;br /&gt;
==Redox==&lt;br /&gt;
&lt;br /&gt;
RedoxOS on uusi potentiaalinen [[Rust]]illa kirjoitettu käyttöjärjestelmä. Sen ydin perustuu mikroydin arkkitehtuuriin, kuten esimerkiksi Minix, Hurd ja L4.&lt;br /&gt;
&lt;br /&gt;
===Aiheesta muualla===&lt;br /&gt;
* [https://www.redox-os.org/ Redox OS kotisivu]&lt;br /&gt;
&lt;br /&gt;
==BSD==&lt;br /&gt;
BSD eli Berkeley Software Distribution on UNIX-käyttöjärjestelmä, joka kehitettiin Berkeleyn yliopistossa. Sen lähdekoodi avattiin 1990-luvun alussa, mutta UNIXin alkuperäisen kehittäjäyhtiön (AT&amp;amp;T) nostaman oikeusjutun takia varsinainen käyttöönotto viivästyi muutamalla vuodella (sillä välin [[Linus Torvalds]] kyllästyi [[MS-DOS]]iin ja aloitti Linuxin kehittämisen). Nykyään BSD:tä kehitetään ainakin [[FreeBSD]]-, [[NetBSD]]- ja [[OpenBSD]]-projekteissa. Eri BSD-versioille tyypillistä on oman ytimen kehittäminen, vaikkakin lähdekoodipohja on kaikissa sama.&lt;br /&gt;
&lt;br /&gt;
===Aiheesta muualla===&lt;br /&gt;
*[[wikipedia:fi:BSD|BSD Wikipediassa]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
*[https://wiki.osdev.org/Projects OSdevin kattava lista avoimen koodin käyttöjärjestelmistä ja ytimistä(kaikki eivät ole Posix-yhteensopivia)&lt;br /&gt;
&lt;br /&gt;
[[Luokka:Järjestelmä]]&lt;br /&gt;
[[Luokka:Ydin]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=VirtualBox&amp;diff=58233</id>
		<title>VirtualBox</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=VirtualBox&amp;diff=58233"/>
		<updated>2024-04-28T20:00:37Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ohjelma &lt;br /&gt;
 | nimi=Oracle VM VirtualBox&lt;br /&gt;
 | kuva=&lt;br /&gt;
 | kuvateksti=&lt;br /&gt;
 | lisenssi=[[GPL]]v2&lt;br /&gt;
 | käyttöliittymä=[[Qt]]&lt;br /&gt;
 | kotisivu=[https://www.virtualbox.org/ www.virtualbox.org]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Kuva:Virtualbox-windowsxp.png|thumb|200px|right|VirtualBox OSE ajamassa Windows XP:tä]]&lt;br /&gt;
&#039;&#039;&#039;Oracle VM VirtualBox&#039;&#039;&#039; (aiemmin &#039;&#039;&#039;Sun VirtualBox&#039;&#039;&#039;, &#039;&#039;&#039;Sun xVM VirtualBox&#039;&#039;&#039; ja &#039;&#039;&#039;Innotek VirtualBox&#039;&#039;&#039;) on alun perin saksalaisen InnoTek GmbH:n kehittämä [[Luokka:Virtualisointi|type 2]] virtualisointiohjelmisto, jota [[Oracle]] nykyään kehittää ostettuaan InnoTekin ostaneen [[Sun Microsystems|Sunin]]. VirtualBoxin avoimen lähdekoodin versio (&#039;&#039;VirtualBox OSE&#039;&#039;) löytyy nykyisellään useimpien [[jakelu]]iden pakettivarastoista ja on varsin käyttökelpoinen, varsinkin erikseen noudettavan virtualisoituun käyttöjärjestelmään asennettavan &amp;quot;VirtualBox Guest Additions&amp;quot;-ohjelmiston kanssa. VirtualBox soveltuu sekä työpöytävirtualisointiin että palvelinkäyttöön. Siihen on saatavilla erilaisia käyttöliittymiä eri tarkoituksia varten: työpöytäkäyttöön soveltuvan Qt-käyttöliittymän lisäksi löytyy [[framebuffer]]ia käyttävä &amp;lt;tt&amp;gt;VBoxSDL&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;VBoxHeadless&amp;lt;/tt&amp;gt;, joka ei tarjoa paikallista konsolia virtuaalikoneeseen ollenkaan. Suljetun lähdekoodin versiossa on tarjolla myös &amp;lt;tt&amp;gt;VBoxRDP&amp;lt;/tt&amp;gt;, joka tarjoaa [[RDP]]-konsolin verkon yli käytettäväksi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Virtualbox on vapaa ja käyttäjäystävällinen virtualisointiohjelma, jolla uuden virtuaalikoneen luominen ja käyttö ovat helppoa. Uutta virtuaalikonetta luotaessa valitaan koneelle halutut perusominaisuudet, kuten muistin määrä, kiintolevykuvan koko, käytettävä optinen asema (isäntäkoneen asema tai levykuva) ja asennettavan käyttöjärjestelmän tyyppi. Tämän jälkeen uusi virtuaalikone käynnistetään ja siihen asennetaan käyttöjärjestelmä aivan kuten mihin tahansa tyhjään tietokoneeseen. Asennuksen jälkeen virtuaalikone on käynnistettävissä parilla hiiren napsautuksella. Virtuaalikoneen käyttö eroaa tavallisen koneen käytöstä pääasiassa vain siinä, että sen näyttönä toimii yksi isäntäkoneen ikkuna ja jotkin sen &amp;quot;laitteistoista&amp;quot; saattavat toimia hieman normaalia vajaammin. Esimerkiksi näytön 3D-tehosteet eivät välttämättä ole käytettävissä virtuaalikoneessa samoin kuin isäntäkoneen USB-laitteet.&lt;br /&gt;
&lt;br /&gt;
VirtualBoxin mahdollisia käyttökohteita ovat esimerkiksi:&lt;br /&gt;
&lt;br /&gt;
* uusien (tai vanhojen) käyttöjärjestelmien ja niiden versioiden kokeilu&lt;br /&gt;
* jonkin sellaisen sovellusohjelman käyttäminen, jota ei ole saatavilla suoraan normaalisti käytössä olevaan isäntäjärjestelmään (esimerkiksi www-sivujen testaaminen Internet Explorerilla Linux-järjestelmässä asentamalla virtuaalikoneeseen Windows ja siihen IE)&lt;br /&gt;
* palvelinasennuksen testaaminen virtuaalikoneessa &amp;quot;sotkematta&amp;quot; varsinaista järjestelmää&lt;br /&gt;
* oman, itselle tutun järjestelmän käyttäminen lainakoneessa&lt;br /&gt;
&lt;br /&gt;
VirtualBoxissa on mahdollista ottaa virtuaalikoneista myös niin kutsuttuja snapshotteja. Tällä tarkoitetaan virtuaalikoneen sen hetkisen tilan tallentamista. Samasta virtuaalikoneesta voi siis olla tallessa useampia erilaisissa tiloissa olevia snapshotteja, joiden välillä voidaan helposti siirtyä. Tämä tekniikka on erityisen kätevää, kun halutaan esimerkiksi tallentaa järjestelmän tila ennen jonkin suuremman ohjelman tai päivityksen asentamista siltä varalta, että asennus epäonnistuu tai jostain muusta syystä osoittautuu virheeksi.&lt;br /&gt;
&lt;br /&gt;
VirtualBox vaatii toimiakseen riittävän tehokkaan isäntäkoneen, eli isäntäkoneessa tulee olla muistia ja prosessoritehoa riittävästi sekä isännän että vieraan käyttöön. Samoin isännän kiintolevyllä on oltava riittävästi tilaa kaikkien luotujen virtuaalikoneiden ja niihin asennettujen käyttöjärjestelmien sekä ohjelmien tallennukseen. 2010-luvulta alkaen lähes kaikissa x86-prosessoreissa on mukana käskykannan virtualisointilaajennoksia, joiden avulla virtualisoinnin aiheuttama suorituskykyhukka on saatu siedettävälle tasolle. &lt;br /&gt;
&lt;br /&gt;
Type 2 hypervisorina Virtualbox ei pysty hyödyntää suoraan laitteistoa, koska tuki PCI Passtroughelle on puutteellinen, joten esimerkiksi raskaiden pelien pelaaminen tai muiden paljon resursseja vaativien ohjelmien käyttäminen ei Virtualboxilla ole miellyttävää. &lt;br /&gt;
&lt;br /&gt;
VirtualBoxiin on myös asennettavissa yksityiskäyttöön ilmainen, mutta epävapaa, laajennuspaketti (VirtualBox Extension Pack) joka mahdollistaa muun muassa isäntäkoneen USB-porttien käytön suoraan vierasjärjestelmästä käsin. &lt;br /&gt;
&lt;br /&gt;
==Asennus==&lt;br /&gt;
{{asenna|VirtualBox OSE|virtualbox-ose&amp;lt;/tt&amp;gt; tai &amp;lt;tt&amp;gt;VirtualBox-OSE}} Asennus saattaa vaatia [[epäviralliset pakettilähteet|epävirallisten pakettivarastojen]] käyttöön ottamista.&lt;br /&gt;
&lt;br /&gt;
Update 27.4.2024 ei Virtualbox OSE ei enää löydy useiden jakeluiden virallisista pakettilähteistä, vaan useimmiten vaatii [[Oraclen]] pakettivarastojen käyttöönoton.&lt;br /&gt;
&lt;br /&gt;
==Virtualbox-KVM==&lt;br /&gt;
&lt;br /&gt;
Saksalainen [https://www.cyberus-technology.de/ Cyberus technology] yritys on kehittänyt Virtualboxia type 1 hypervisorin suuntaan muokkaamalla koodia niin, että Virtualbox käyttää Linuxin ytimeen vakiona sisältyvää KVM-hypervisoria. Tällöin Virtualboxissa olevat virtuaalikoneet pystyvät kommunikoimaan suoraan muiden KVM:ää käyttäviä virtuaalikoneita, myös PCI passtrough ominaisuudet toimivat paremmin, eikä myöskään erillistä vboxdrv:tä tarvitse ytimelle asentaa. Käyttöliittymässä loppukäyttäjä ei juurikaan huomaa eroa, vaan se on edelleen sama tuttu helppokäyttöinen Virtualboxin oma QT-pohjainen. Virtualbox-KVM toimii ainoastaan x86_64 arkkitehtuurin Linux-isännissä, eikä siitä ole valmiita paketteja vaan se täytyy kääntää asentaa suoraan lähdekoodista.&lt;br /&gt;
&lt;br /&gt;
Riippuvuudet pakettien kääntämiseen mm. [[Ubuntu]]lla, [[Debian]]illa, [[Fedora]]lla, [[Arch]]illa ja [[Gentoo]]lla löytyy [https://www.virtualbox.org/wiki/Linux%20build%20instructions täältä.]&lt;br /&gt;
&lt;br /&gt;
===Virtualbox-KVM käännetään seuraavasti:===&lt;br /&gt;
&lt;br /&gt;
 wget https://download.virtualbox.org/virtualbox/7.0.16/VirtualBox-7.0.16.tar.bz2&lt;br /&gt;
 tar xf VirtualBox-7.0.16.tar.bz2&lt;br /&gt;
 git clone https://github.com/cyberus-technology/virtualbox-kvm vbox-kvm&lt;br /&gt;
 cd VirtualBox-7.0.16&lt;br /&gt;
 git init&lt;br /&gt;
 git add *&lt;br /&gt;
 git commit -m &amp;quot;VirtualBox vanilla code&amp;quot;&lt;br /&gt;
 git am ../vbox-kvm/patches/*.patch&lt;br /&gt;
 ./configure --with-kvm --disable-kmods --disable-docs --disable-hardening --disable-java&lt;br /&gt;
 source ./env.sh&lt;br /&gt;
 kmk&lt;br /&gt;
 cd out/linux.x86/release/bin/src&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
===Virtualbox-KVM asennetaan seuraavasti:===&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
 cd ..&lt;br /&gt;
&lt;br /&gt;
===Virtuabox-KVM käynnistys===&lt;br /&gt;
&lt;br /&gt;
 ./Virtualbox&lt;br /&gt;
&lt;br /&gt;
Ja tutun käyttöliittymän pitäisi avautua. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Katso myös==&lt;br /&gt;
* [[Virtuaalikoneet]]&lt;br /&gt;
* [[VMware]]&lt;br /&gt;
* [[KVM]]&lt;br /&gt;
* [[Xen]]&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
* [https://github.com/cyberus-technology/virtualbox-kvm Virtualbox-KVM:n sivu Githubissa]&lt;br /&gt;
* [http://wiki.ubuntu-fi.org/VirtualBox Asennusohje Ubuntulle]&lt;br /&gt;
&lt;br /&gt;
{{Emulaattorit ja virtuaalikoneet}}&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Virtualisointi]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=Luokka:Virtualisointi&amp;diff=58232</id>
		<title>Luokka:Virtualisointi</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=Luokka:Virtualisointi&amp;diff=58232"/>
		<updated>2024-04-28T17:11:21Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Käyttöjärjestelmävirtualisoinnilla tarkoitetaan menetelmää, jossa oikealla tietokoneella, isäntäkoneella (host), ohjelmallisesti matkitaan kokonaista tietokonetta, johon voidaan asentaa valittu käyttöjärjestelmä, vierasjärjestelmä (guest), ja siihen haluttuja ohjelmia. Virtualisoinnilla on mahdollista käynnistää esimerkiksi Ubuntu-käyttöjärjestelmää käyttävä virtuaalikone yhteen Windows-työpöydällä näkyvään ikkunaan. Näin on mahdollista kokeilla uusia käyttöjärjestelmiä ja niiden eri versioita asentamatta niitä varsinaiselle koneelle. Toisaalta tämä mahdollistaa myös sellaisten sovellusten ajamisen, joita ei muuten ole saatavilla isäntäjärjestelmään. Esimerkiksi Microsoft Word -ohjelmaa on mahdollista käyttää näin Linux-isäntään asennetussa Windows-virtuaalikoneessa.&lt;br /&gt;
# &lt;br /&gt;
# Nykyään on myös käsitteet ohjelmistovirtualisointi, näitä on useita kymmeniä, ellei satoja. Ehkä tunnetuimmat virtuaalikoneet ovat [[Dalvik]], eli [[Android]], sekä [[java]] ja [[python]]. Sekä erilaiset konttiteknologiat, joissa virtualisoidaan osa käyttöjärjestelmästä tai jopa pelkästään yksi sovellus/ohjelma. Näitä ovat esimerkiksi [[Docker]], [[Podman]], [[LXC]] ja [[Kubernetes]].&lt;br /&gt;
&lt;br /&gt;
Hypervisor(suomenkielistä vastinetta ei ole) on tietotekniikassa käytetty termi, joka suomeksi tarkoittaa virtuaalikonemonitoria tai virtuaalikonetta hallitsevaa ohjelmaa. Hypervisor toimii isäntäkoneella ja ottaa kontrollin isäntäkoneen laitteistosta. Sen avulla voidaan luoda ja hallita virtuaalikoneita (guest-koneita) sekä virtuaalikytkimiä. Hypervisor mahdollistaa useiden käyttöjärjestelmien suorittamisen samalla fyysisellä laitteistolla, mikä on hyödyllistä esimerkiksi palvelin- ja pilviympäristöissä.&lt;br /&gt;
&lt;br /&gt;
Hypervisoreita on kahta eri tyyppiä:&lt;br /&gt;
&lt;br /&gt;
1. Type 1 hypervisoreita ovat mm. [[Xen]] ja [[KVM]] &lt;br /&gt;
&lt;br /&gt;
* Asennetaan suoraan palvelimen fyysiseen laitteistoon ilman käyttöjärjestelmän välikerrosta.&lt;br /&gt;
* Toimii suoraan laiteohjaimien kanssa ja hallitsee fyysisiä resursseja.&lt;br /&gt;
* Tarjoaa paremman eristävyyden jokaiselle virtuaaliympäristölle.&lt;br /&gt;
* Dedikoidut resurssit.&lt;br /&gt;
* Usein käytetään palvelin- ja pilviympäristöissä.&lt;br /&gt;
* Type 1 hypervisorin päällä toimiva käyttöjärjestelmä on yhtä nopea kuin natiivisti toimiva. &lt;br /&gt;
&lt;br /&gt;
2. Type 2 hypervisoreita ovat mm. [[VMware]] Workstation ja [[Virtualbox]]&lt;br /&gt;
&lt;br /&gt;
* Asennetaan isäntäkäyttöjärjestelmän päälle.&lt;br /&gt;
* Käyttää isäntäkäyttöjärjestelmän resursseja.&lt;br /&gt;
* Vähemmän eristävyyttä virtuaaliympäristöille.&lt;br /&gt;
* Häviää nopeudessa/tehokkuudessa Type 1 hypervisorille&lt;br /&gt;
* Ovat helppokäyttöisiä ja yleisiä työpöytäkäytössä&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
	<entry>
		<id>https://www.linux.fi/w/index.php?title=VMware&amp;diff=58231</id>
		<title>VMware</title>
		<link rel="alternate" type="text/html" href="https://www.linux.fi/w/index.php?title=VMware&amp;diff=58231"/>
		<updated>2024-04-28T17:10:39Z</updated>

		<summary type="html">&lt;p&gt;Kimmo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kuva:Vmware_kubuntu.png|right|thumb|200px|VMware Workstation ajamassa [[Kubuntu|Kubuntu 5.10ä.]]]]&lt;br /&gt;
[[kuva:Vmware_xp.png|right|thumb|200px|Windows XP:n asennus VmWare Serverissä]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VMware&#039;&#039;&#039; on [[Virtuaalikoneet|x86-virtuaalikone]], joka mahdollistaa periaatteessa minkä tahansa x86-käskykantaa tukevan, muokkaamattoman (vrt. [[User-mode Linux]], [[Xen]]) käyttöjärjestelmän asentamisen virtuaalikoneeseen, joka toimii Windowsilla tai Linuxilla x86-käskykannan toteuttavassa laitteistossa. VMware on kaupallinen, suljetun lähdekoodin ohjelmisto. &lt;br /&gt;
&lt;br /&gt;
VMwaresta on olemassa Workstation, Server ja ESX Server -versiot. Workstation on työasemakäyttöön tarkoitettu versio. Server on palvelinversio, joka asentuu normaalin palvelinkäyttöjärjestelmän päälle. ESX Server asentuu [[Xen|Xenin]] tapaan käyttöjärjestelmän tilalle lähimmäksi rautaa. ESX Serverin tukema VMotion -tekniikka mahdollistaa käynnissä olevan virtuaalikoneen siirtämisen isäntäkoneesta toiseen vaikkapa huollon ajaksi. VMware server osaa ajaa myös Microsoft Virtual PC:llä luotuja virtuaalikoneita.&lt;br /&gt;
&lt;br /&gt;
Ilmaisilla VMware Playerillä ja VMware Serverillä virtuaalikoneita voi käyttää kuka tahansa. Playerillä ei voi luoda uusia virtuaalikoneita, mutta Serverillä se onnistuu. Server-versiolla voit myös jättää virtuaalikoneita pyörimään [[Demoni|demonina]], mikä on palvelinkäytössä välttämätöntä. Server-versio oli aiemmin maksullinen, mutta kilpailun kiristyttyä sen GSX-versiosta tuli ilmainen siinä toivossa, että käyttäjät päivittäisivät sen myöhemmin kehittyneempään, maksulliseen ESX-versioon.&lt;br /&gt;
&lt;br /&gt;
VMware Playerille voi kuitenkin luoda virtuaalikoneita epävirallisilla työkaluilla, esimerkiksi yksinkertaisella [http://www.easyvmx.com/ EasyVMX:llä]. Sillä luotu virtuaalikone käynnistetään komennolla &amp;lt;tt&amp;gt;vmplayer virtuaalikone.vmx&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Project Photon==&lt;br /&gt;
VMware julkaisi huhtikuussa 2015 avoimen Linux pohjaisen alustansa, sekä jakoi sen lähdekoodin Githubissa nimellä [https://vmware.github.io/photon/ Project Photon]. Photon on kevyt Linux alusta peruselementein. Alustalla voi käyttää container-komponentteja virtuaalikoneen sisällä. Lightwave projekti tulee jakoon myöhemmin.&lt;br /&gt;
&lt;br /&gt;
==Aiheesta muualla==&lt;br /&gt;
* [http://www.vmware.com VMwaren kotisivu]&lt;br /&gt;
* [[wikipedia:fi:VMware|VMware-artikkeli Wikipediassa]]&lt;br /&gt;
* [http://opensuse.fi/Vmware_asennus VMwaren asennus opensuse.fi:n wikissä]&lt;br /&gt;
* [http://www.tivi.fi/Kaikki_uutiset/2015-03-13/VMware-virtualisoi-my%C3%B6s-linux-ty%C3%B6p%C3%B6yd%C3%A4t-3217368.html Tivi - VMware virtualisoi myös linux-työpöydät]&lt;br /&gt;
* [http://www.tivi.fi/Kaikki_uutiset/2015-04-21/VMware-julkisti-ensimm%C3%A4isen-Linux-alustansa---keskittyy-nopeuteen-3220125.html Tivi - VMware julisti ensimmäisen Linux pohjaisen alustan]&lt;br /&gt;
&lt;br /&gt;
{{Emulaattorit ja virtuaalikoneet}}&lt;br /&gt;
[[Luokka:Emulaattorit ja virtuaalikoneet]]&lt;br /&gt;
[[Luokka:Virtualisointi]]&lt;/div&gt;</summary>
		<author><name>Kimmo</name></author>
	</entry>
</feed>