SQimage.sh

From DCEwiki
Jump to navigation Jump to search

SQimage.sh je obslužný skript pro zálohování disklessové infrastruktury a generování obrazů snapshotovaných vrstev (plain sqimage), s nimiž pracuje autonomní Half-Diskless.

Popis

Skript SQimage.sh pracuje stejně jako SQcrypto.sh a skript crypto se souborem changelog, publikovaným přes HTTP.

changelog

L - snapshot vrstvy

Po vytvoření snapshotu vygeneruje SQimage.sh tzv. plain sqimage, který umístí do úložiště sdíleného přes HTTP a zapíše do souboru changelog záznam s informací, z čeho tenhle soubor vytvořil.

; L <md5sum> <vrstva> <snapshot>

Layer – Signalizuje, že jde o snapshot jedné vrstvy

<md5sum>
je název (MD5 kontrolní součet) nového souboru
<vrstva>
je identifikátor vrstvy, např. 1111/crypto
<snapshot>
je název snapshotu, např. crypto_2023-12-23_19.18

S - sendvič (sloučené vrstvy)

; S <md5sum> <zdroj_A> <zdroj_B> ...
<md5sum>
je název (MD5 kontrolní součet) nového souboru
<zdroj_X>
jsou identifikátory vrstev, použitých k vytvoření sendviče. Identifikátory mohou vypadat takto:
sdílená vrstva, např. 1111/crypto
sdílená vrstva připojená přes NFS, např. 172.0.0.1:/srv/1111/crypto (použitá IPv4 adresa stroje musí přístupná)
snapshot, např. crypto_2023-12-23_19.18
sqimage je MD5 sqimage souboru z úložiště (ZATÍM NEIMPLEMENTOVÁNO), přičemž nehraje roli, jde-li o kryptovaný sqimage, nebo jeho plain verzi.
Poznámka I když je možné generovat sendvič z několika různých zdrojů, je doporučeno využívat snapshoty. Ostatní varianty umožňují sestavení plain image ze zdrojů, které nejsou lokálně k dispozici – např. adresářů sdílených z jiného NFS serveru.

C - záznam pro aktualizaci vrstvy

Když crypto během zavádění zjistí, že jde o kryptovaný soubor, pokusí se získat jeho dekapitovanou, zaheslovanou hlavičku. A při tom kontroluje changelog, který může obsahovat záznam, že jde o aktualizovanou vrstvu. V takovém případě, pokud najde soubor <old> v úložišti, ví co může odstranit.

SQimage.sh vkládá takový záznam při aktualizaci vrstvy, po vygenerování nového snapshotu. A SQcrypto.sh po odeslání souborů do úložiště sdíleného přes HTTP.

; C <new> <old>
<new>
je MD5 kontrolní součet stahovaného souboru
<old>
je název (MD5 kontrolní součet) nahrazovaného souboru
Poznámka V konfiguraci stroje máme následující řádek:
setlayer c32af4db4aaea650590ba379a3385424

Pro skript crypto je to signál, že má zkontrolovat lokální úložiště, jestli obsahuje soubor c32af4db4aaea650590ba379a3385424. Pokud ne, tak si ho stáhne přes HTTP a po stažení se ho pokusí namountovat. Pokud ho už v úložišti má, zkusí ho rovnou namountovat. U plain sqimage se mu to podaří, ale u kryptované vrstvy tenhle pokus selže. Protože má dekapitovanou hlavičku, následuje pokus o stažení hlavičky. I ta je součástí HTTP úložiště, ale je zaheslovaná a má suffix .7z V prvé řadě se tedy zkusí stáhnout a rozbalit soubor c32af4db4aaea650590ba379a3385424.7z. Když se mu to podaří, pokusí se rozbalenou hlavičku použít. Ale i tento pokus může být marný, protože záznam v konfiguraci může vypadat i takto:

setlayer c32af4db4aaea650590ba379a3385424:9e43748722e47242db40d03cf5a8f881

Řetězec za dvojtečkou je MD5 součet původní plain sqimage vrstvy a dekapitovaná hlavička kontejneru se během kryptování pojmenuje podle něj. Teprve při odeslání do HTTP úložiště SQcrypto.sh hlavičku přejmenuje a do souboru changelog přidá následující řádek:

; C c32af4db4aaea650590ba379a3385424 9e43748722e47242db40d03cf5a8f881

Tenhle záznam je primárně určen pro aktualizaci, protože během zavádění z něm crypto zjistí, který soubor z lokálního úložiště může odstranit. A pokud bude soubor kryptovaný a soubor c32af4db4aaea650590ba379a3385424.7z se stáhnout nepodaří, zkusí jako další variantu 9e43748722e47242db40d03cf5a8f881.7z.

Pointa je v tom, že konfigurace přes 'setlayer' umožňuje použít hlavičku pojmenovanou podle jiné, nekryptované či již nepoužívané starší vrstvy.