Opened 8 years ago
Closed 7 years ago
#3088 closed Verbesserung (erledigt)
virtuelle HDD immutable
| Reported by: | bau | Owned by: | Rüdiger Kupper |
|---|---|---|---|
| Priority: | bald erledigen | Milestone: | Image „Humane Henrike” |
| Component: | Software: Windows-VM | Severity: | beeinträchtigt den Unterricht einiger Lehrer |
| Keywords: | Cc: | Rüdiger Kupper |
Description (last modified by )
- wir verteilen aktuell Windows7 per vdi-File mit ctorrent
- VirtualBox mounted das vdi-File immutable und legt bei jedem Start eine Ballon-VDI an, die beim nächsten Booten weggeworfen wird
- mit qemu-nbd kann man vdi-Files mounten, aber keine Ballons
- Oracle hat die Tools für den Ballon-Mount verschwinden lassen
Idee:
- Nutzung von LVM, das kann Snapshots
- LVM-Volumes können in VirtualBox verwendet werden
- Wie kann man ein LVM am besten per torrent füllen?
wir laden ja gerade per ctorrent das VDI herunter in ein File geht das auch in ein LVM-Volume?
- VirtualBox kann VDI, VHD, VMDK, HDD (Parallels), QCOW (nicht QCOW2?), QED
Change History (19)
comment:1 by , 8 years ago
comment:2 by , 8 years ago
VDFuse von Thorsten Sick wäre genau das, was wir bräuchten (https://github.com/Thorsten-Sick/vdfuse), die SourceForge-Seite wird aber seit 6 Jahren nicht mehr bedient: https://github.com/Thorsten-Sick/vdfuse
dort steht:
USAGE: ./vdfuse [options] -f image-file mountpoint -h help -r readonly -t specify type (VDI, VMDK, VHD, or raw; default: auto) -f VDimage file -s Snapshot file(s) to load on top of the image file -a allow all users to read disk -w allow all users to read and write to disk -g run in foreground -v verbose -d debug
VDFuse war in Ubuntu bis 12.04
comment:3 by , 8 years ago
| Description: | modified (diff) |
|---|
comment:4 by , 8 years ago
LVM richtet man typischerweise für ein ganzes physukalusches Device ein, also z.B. /dev/sda. Das bekommen wir Linbo nie beigebogen. Allerdings ist LVM sehr performant.
Ich glaube, was hier besser passt ist ein Overlay-Filesystemmte, wie es die Ubuntu-Live-DVD verwendet. Die benutzen 'aufs':
https://de.m.wikipedia.org/wiki/Aufs
Das verwendet ein readonly-gemountetes Filmsystem und ein schreibbares File, das die ganzen Änderungen aufnimmt. Die beiden werden vom aufs-Treiber transparent übereinandergelegt und das Ergebnis als ein normales beschreibbares Filmsystem zur Verfügung gestellt, das man normal mounten kann.
Die Änderungen kann man jederzeit zurücksetzen, indem man dsie Differenzdatei einfach löscht. Hab ich schon mehrmals mit meinem Livestick auausprobiert.
Wie es bei aufs mit der Performance aussieht, weiß ich allerdings nicht. Glaube aber nicht, dass das bei der VM stört.
Wir müssten also das .VDI in ein solches aufs-Dateisystem legen.
comment:5 by , 8 years ago
Klaus Knopper nutzt aufs für Knoppix.
Eine Alternative, die in den Linux-Kernel implementiert ist, ist OverlayFS. Das fubktioniert auf Verzeichnisebene.
Wenn das Filmsystem immer komplette Dateien in das schreibbare Image kopiert, wäre das allerdings für unsere Zwecke ungeeignet, da wir alles in einer einzigen Datei haben.
LVM arbeitet auf Blockebene.
follow-up: 8 comment:6 by , 8 years ago
Aufs wäre (leider nicht) möglich:
- mounten des VDI mit qemu-nbd nach /cache/aufs/win7_vdi
- read/write-Teil unter /cache/aufs/win7_rw
- aufs-mount unter /cache/aufs/win7_aufs
mount -t aufs -o br=/cache/aufs/win7_rw:/cache/aufs/win7_vdi none /cache/aufs/win7_aufs
- Booten der VM von /cache/aufs/win7_aufs
- Verzicht auf das Ballon-System des VDI
Idee ist gut, geht aber nicht, da das dumme Windoofs nur von einem NTFS booten möchte.
Benutzt werden kann aber ein System, welches ein immutable-Block-Device zur Verfügung stellt, das kann dann unter Linux als BD gemanaged werden, möglich wäre z.B. qcow
comment:7 by , 8 years ago
Andere Möglichkeit:
- loop-Device (also ein Block-Device in einer Datei)
- darin ein LVM anlegen (erlaubt Snapshots)
- in dem LVM ein Filesystem anlegen
- in das Filesystem kommt das vdi.
- die Loop-Datei kann man dann per Torrent verteilen und auf dem Client mounten (so macht es Linbo auch mit cloop).
Nachteile:
- Erzeugung und mounten auf dem Client ist etwas aufwändig, kann man aber mit einem Skript lösen.
- Loop hat feste Größe, man muss also genügend Platz in der Date für die LVM-Snapshots lassen -> große Loop-Datei.
Gerade finde ich noch eine Alternative: ploop
- das ist offenbar ein verbessertes loop
- wächst dynamisch
- erlaubt Snapshots
Nachteile: Noch in der Entwicklung, es gibt aber Ubuntu-Pakete.
comment:8 by , 8 years ago
Replying to bau:
Aufs wäre (leider nicht) möglich:
- mounten des VDI mit qemu-nbd nach /cache/aufs/win7_vdi
- read/write-Teil unter /cache/aufs/win7_rw
- aufs-mount unter /cache/aufs/win7_aufs
mount -t aufs -o br=/cache/aufs/win7_rw:/cache/aufs/win7_vdi none /cache/aufs/win7_aufs- Booten der VM von /cache/aufs/win7_auf
Idee ist gut, geht aber nicht, da das dumme Windoofs nur von einem NTFS booten möchte.
Benutzt werden kann aber ein System, welches ein immutable-Block-Device zur Verfügung stellt, das kann dann unter Linux als BD gemanaged werden, möglich wäre z.B. qcow
Kann nicht das komplette vdi-File in das aufs-Dateisystem? Und dann startet man die VM wie gewohnt (ohne nbd-Mount)?
- read-only und read-write-Teil liegen beide im Cache: /cache/aufs/ro /cache/aufs/rw
- aufs-mount unter /cache/aufs/full:
mount -t aufs -o br=/cache/aufs/rw:/cache/aufs/ro none /cache/aufs/full
- In den ro-Teil kommt das vdi rein
- Dann wird die VM mit diesem vdi gestartet, aber als normale Festplatte (also mutable, nicht immutable).
Dann hängt es davon ab, was aufs macht, wenn in die Datei geschrieben wird: Nur einzelne Blöcke ins rw-System kopieren, oder die ganze Datei (das wäre für uns unbrauchbar).
comment:9 by , 8 years ago
Problem ist, dass aufs Dateiweise vorgeht - wir brauchen etwas, was das BlockDevice bitweise zur Verfügung stellt.
Problem ist eigentlich nur, dass es nicht möglich ist, ein VDI-Ballon unter Ubuntu zu mounten.
Was aber geht, sind die Formate qcow2 (kann VBox nicht) und qed (Qemu enhanced drive).
VBox kann auch qed, damit teste ich gerade.
comment:10 by , 8 years ago
QED-Test positiv verlaufen:
- (XP.vdi) VDI in qed (XP.qed) umgewandelt:
qemu-img convert -f vdi -O qed XP.vdi XP.qed
- Backup-File angelegt
qemu-img create -f qed -b XP.qed XP_ballon.qed
- mounten unter linux
modprobe nbd qemu-nbd -c /dev/nbd0 XP_ballon.qed # oder für das Original: XP.qed mount /dev/nbd0p1 /mnt umount /dev/nbd0p1 qemu-nbd -d /dev/nbd0 rmmod nbd
- Ballon in VirtualBox benutzen:
# # Ganz oben nach dem <Machine ...> - Tag # <MediaRegistry> <HardDisks> <HardDisk uuid="{2db03cf8-83fc-4f0c-a4de-b5124a953196}" location="/cache/XP.qed" format="QED" type="Immutable"> <HardDisk uuid="{0bcd7541-1d40-4b59-bd82-c819a040db28}" location="/cache/XP_ballon.qed" format="QED"/> </HardDisk> </HardDisks> </MediaRegistry> (...) # # Unten kurz vor dem <Machine/> - Tag # <StorageControllers> <StorageController name="IDE" type="PIIX4" PortCount="2" useHostIOCache="true" Bootable="true"> <AttachedDevice passthrough="false" type="DVD" port="1" device="0"/> <AttachedDevice type="HardDisk" port="0" device="0"> <Image uuid="{0bcd7541-1d40-4b59-bd82-c819a040db28}"/> </AttachedDevice> </StorageController> </StorageControllers>
FAZIT:
- Win7.vdi nach Win7.qed konvertieren und per torrent auf die Clients verteilen
- Win7_ballon.qed erzeugen
- Win7_ballon.qed kann nun beliebig verändert werden, der ctorrent verteilt das unveränderte Win7.qed
comment:11 by , 8 years ago
In die aktuelle VM muss in /home/windows/VirtualBox VMs/Windows 7/ eingefügt werden:
<MediaRegistry>
<HardDisks>
<HardDisk uuid="{6eeebf3e-cd22-476e-8138-aab6cc9155a0}" location="/cache/Win7.qed" format="QED" type="Immutable">
<HardDisk uuid="{86fbb014-aee3-4afd-8d8c-473e88fbae24}" location="/cache/Win7_ballon.qed" format="QED"/>
</HardDisk>
</HardDisks>
</MediaRegistry>
<AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
<Image uuid="{86fbb014-aee3-4afd-8d8c-473e88fbae24}"/>
</AttachedDevice>
comment:12 by , 8 years ago
Die Ballon-Datei kann dann einfach neu erzeugt werden:
rm /cache/Win7_ballon.qed qemu-img create -f qed -b /cache/Win7.qed /cache/Win7_ballon.qed chown windows. /cache/Win7_ballon.qed
comment:13 by , 7 years ago
- Windows 7 mit täglicher Verlängerung des Aktivierungszeitraums für LZ fertiggestellt
- /usr/local/sbin/infosys-session angepasst (macht nun nichts mehr mit den virtuellen Platten)
# alten Status verwerfen vboxmanage discardstate "Windows 7" # shared folders entfernen vboxmanage sharedfolder remove "Windows 7" --name home # shared folder einbinden vboxmanage sharedfolder add "Windows 7" --name home --hostpath /home/windows/Dokumente/ # Mini-Toolbar nicht anzeigen vboxmanage setextradata "Windows 7" GUI/ShowMiniToolBar no # VM Starten virtualbox --startvm "Windows 7" --fullscreen
- /usr/local/sbin/infosys-session-windows-user angepasst (kümmert sich um das Image und die virtuelle Platte)
# start infosys-session as user "windows" #--------------------------------------------- # Wo sollen die Snapshots gespeichert werden? SnapshotDir=/cache/Snapshots #--------------------------------------------- # Hole Versions-file von Server echo "Hole /cache/Win7.qed.version" rsync paedml::linbo/Win7.qed.version /cache/Win7.qed.version fi # Versionen auslesen und aktuelle Version festhalten mapfile -t version < /cache/Win7.qed.version actversion=${version[0]} # Pruefe, ob torrent-file da ist if [ ! -e /cache/Win7_$actversion.qed.torrent ]; then echo "Hole /cache/Win7_$actversion.qed.torrent" rsync paedml::linbo/Win7_$actversion.qed.torrent /cache/Win7$actversion.qed.torrent fi # alte Versionen pruefen, ggf loeschen $dateien=($(ls Win7_*.qed)) for datei in "${dateien[@]}"; do echo " ... in /cache/ gefunden: $datei" in=0 for version in "${version[@]}"; do if [[ "$datei" == "$version" ]]; then in=1 echo " $datei soll erhalten bleiben" fi done if ! $in; then echo " loesche ueberfluessiges Image $datei und Zusatzdateien" rm /cache/$datei* fi done # Läuft der Screen schon (Test fuer manuellen Restart)? if screen -list | grep -q "ctorrent_Win7_$actversion"; then echo "Ctorrent-Screen fuer Win7_$actversion läuft bereits." else echo "starte Ctorrent-screen Win7_$actversion" screen -S ctorrent_Win7_$actversion -dm ctorrent -s /cache/Win7_$actversion.qed /cache/Win7_$actversion.qed.torrent -X "touch /cache/Win7_$actversion.qed.complete" fi # Pruefe, ob Image komplett da ist while [ ! -e /cache/Win7_$actversion.qed.complete ]; do echo "Image Win7_$actversion noch nicht da! warte 30s" sleep 30s done #Symlink anlegen rm /cache/Win7.qed ln -s /cache/Win7_$actversion.qed /cache/Win7.qed # alten Ballon entfernen rm /cache/Win7_ballon.qed # neuen Ballon anfertigen qemu-img create -f qed -b /cache/Win7.qed /cache/Win7_ballon.qed chown windows. /cache/Win7_ballon.qed # Lege Snapshots-Ordner an, falls er noch nicht existiert: mkdir -p $SnapshotDir/ chown windows: $SnapshotDir # Lösche alte Snapshots rm $SnapshotDir/* # Starte Infosys-Session als Nutzer windows sudo -iu windows infosys-session
- /home/windows/VirtualBox VMs/ţest kann gelöscht werden
- /home/windows/VirtualBox VMs/Windows 7/Windows 7.vbox anpassen (austauschen - die Einträge zu den qed ersetzen die der vdi):
<?xml version="1.0"?> <!-- ** DO NOT EDIT THIS FILE. ** If you make changes to this file while any VirtualBox related application ** is running, your changes will be overwritten later, without taking effect. ** Use VBoxManage or the VirtualBox Manager GUI to make changes. --> <VirtualBox xmlns="http://www.virtualbox.org/" version="1.15-linux"> <Machine uuid="{aafb6b91-e521-4bc3-9a5e-664c9cb71d6e}" name="Windows 7" OSType="Windows7_64" snapshotFolder="/cache/Snapshots" lastStateChange="2019-11-01T10:12:02Z"> <MediaRegistry> <HardDisks> <HardDisk uuid="{2db03cf8-83fc-4f0c-a4de-b5124a953196}" location="/cache/Win7.qed" format="QED" type="Immutable"> <HardDisk uuid="{1904d921-2ef6-49bc-9a49-64d797e4c46a}" location="/cache/Win7_ballon.qed" format="QED"/> </HardDisk> </HardDisks> </MediaRegistry> <ExtraData> <ExtraDataItem name="GUI/InformationWindowGeometry" value="383,193,600,430"/> <ExtraDataItem name="GUI/LastCloseAction" value="PowerOff"/> <ExtraDataItem name="GUI/LastGuestSizeHint" value="1853,983"/> <ExtraDataItem name="GUI/LastGuestSizeHintWasFullscreen" value="true"/> <ExtraDataItem name="GUI/LastNormalWindowPosition" value="1090,358,640,480,max"/> <ExtraDataItem name="GUI/RestrictedRuntimeDevicesMenuActions" value="HardDrives"/> <ExtraDataItem name="GUI/RestrictedRuntimeMachineMenuActions" value="SaveState,PowerOff"/> <ExtraDataItem name="GUI/ShowMiniToolBar" value="no"/> <ExtraDataItem name="GUI/StatusBar/IndicatorOrder" value="HardDisks,OpticalDisks,FloppyDisks,Network,USB,SharedFolders,Display,VideoCapture,Features,Mouse,Keyboard"/> </ExtraData> <Hardware> <CPU count="2"> <PAE enabled="false"/> <HardwareVirtExLargePages enabled="false"/> </CPU> <Memory RAMSize="1024"/> <HID Pointing="USBTablet"/> <Display VRAMSize="27"/> <VideoCapture fps="25" options="ac_enabled=false"/> <RemoteDisplay enabled="false"/> <BIOS> <IOAPIC enabled="true"/> </BIOS> <USB> <Controllers> <Controller name="OHCI" type="OHCI"/> <Controller name="EHCI" type="EHCI"/> </Controllers> </USB> <Network> <Adapter slot="0" enabled="true" MACAddress="080027191BB7" cable="true" type="82540EM"> <DisabledModes> <InternalNetwork name="intnet"/> <NATNetwork name="NatNetwork"/> </DisabledModes> <NAT/> </Adapter> <Adapter slot="1" MACAddress="0800270A7F74" cable="true" type="82540EM"/> <Adapter slot="2" MACAddress="08002760CC34" cable="true" type="82540EM"/> <Adapter slot="3" MACAddress="080027502D9C" cable="true" type="82540EM"/> <Adapter slot="4" MACAddress="0800277908A9" cable="true" type="82540EM"/> <Adapter slot="5" MACAddress="0800272B5589" cable="true" type="82540EM"/> <Adapter slot="6" MACAddress="080027B750CB" cable="true" type="82540EM"/> <Adapter slot="7" MACAddress="080027D3AE91" cable="true" type="82540EM"/> </Network> <LPT> <Port slot="1" enabled="false" IOBase="0x378" IRQ="7"/> </LPT> <AudioAdapter controller="HDA" driver="Pulse" enabled="true"/> <SharedFolders> <SharedFolder name="home" hostPath="/home/windows/Dokumente" writable="true" autoMount="false"/> </SharedFolders> <Clipboard mode="Bidirectional"/> <GuestProperties> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxControl.exe" value="5.1.38r122592" timestamp="1572602923956788000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxCredProv.dll" value="-" timestamp="1572602923980762000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxDisp.dll" value="5.1.38r122592" timestamp="1572602923964719000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxGINA.dll" value="-" timestamp="1572602923980524000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxGuest.sys" value="5.1.38r122592" timestamp="1572602924026349000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxHook.dll" value="5.1.38r122592" timestamp="1572602923963973000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxMMR.exe" value="-" timestamp="1439730053871413000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxMMRHook.dll" value="-" timestamp="1439730053871750000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxMRXNP.dll" value="5.1.38r122592" timestamp="1572602923980164000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxMouse.sys" value="5.1.38r122592" timestamp="1572602924026703000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxOGL.dll" value="5.1.38r122592" timestamp="1572602924022978000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxOGLarrayspu.dll" value="5.1.38r122592" timestamp="1572602923985116000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxOGLcrutil.dll" value="5.1.38r122592" timestamp="1572602923992721000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxOGLerrorspu.dll" value="5.1.38r122592" timestamp="1572602923996926000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxOGLfeedbackspu.dll" value="5.1.38r122592" timestamp="1572602924012628000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxOGLpackspu.dll" value="5.1.38r122592" timestamp="1572602924005754000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxOGLpassthroughspu.dll" value="5.1.38r122592" timestamp="1572602924008885000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxSF.sys" value="5.1.38r122592" timestamp="1572602924027265000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxService.exe" value="5.1.38r122592" timestamp="1572602923975189000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxTray.exe" value="5.1.38r122592" timestamp="1572602923975000000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Components/VBoxVideo.sys" value="5.1.38r122592" timestamp="1572602924029641000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/HostVerLastChecked" value="5.2.32" timestamp="1572602937428019000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/InstallDir" value="C:/Program Files/Oracle/VirtualBox Guest Additions" timestamp="1572602923950696000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Revision" value="122592" timestamp="1572602923950475000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/Version" value="5.1.38" timestamp="1572602923950098000" flags=""/> <GuestProperty name="/VirtualBox/GuestAdd/VersionExt" value="5.1.38" timestamp="1572602923950343000" flags=""/> <GuestProperty name="/VirtualBox/GuestInfo/Net/0/MAC" value="080027191BB7" timestamp="1572602930608450000" flags=""/> <GuestProperty name="/VirtualBox/GuestInfo/Net/0/Status" value="Up" timestamp="1572602930608210000" flags=""/> <GuestProperty name="/VirtualBox/GuestInfo/Net/0/V4/Broadcast" value="255.255.255.255" timestamp="1572602930607984000" flags=""/> <GuestProperty name="/VirtualBox/GuestInfo/Net/0/V4/IP" value="10.0.2.15" timestamp="1572602930607816000" flags=""/> <GuestProperty name="/VirtualBox/GuestInfo/Net/0/V4/Netmask" value="255.255.255.0" timestamp="1572602930608075000" flags=""/> <GuestProperty name="/VirtualBox/GuestInfo/Net/Count" value="1" timestamp="1572603120625607000" flags=""/> <GuestProperty name="/VirtualBox/GuestInfo/OS/Product" value="Windows 7" timestamp="1572602923949226000" flags=""/> <GuestProperty name="/VirtualBox/GuestInfo/OS/Release" value="6.1.7601" timestamp="1572602923949412000" flags=""/> <GuestProperty name="/VirtualBox/GuestInfo/OS/ServicePack" value="1" timestamp="1572602923949873000" flags=""/> <GuestProperty name="/VirtualBox/HostInfo/GUI/LanguageID" value="de_DE" timestamp="1572603122973445000" flags=""/> </GuestProperties> </Hardware> <StorageControllers> <StorageController name="IDE" type="PIIX4" PortCount="2" useHostIOCache="true" Bootable="true"> <AttachedDevice passthrough="false" type="DVD" hotpluggable="false" port="1" device="0"/> </StorageController> <StorageController name="SATA" type="AHCI" PortCount="1" useHostIOCache="false" Bootable="true" IDE0MasterEmulationPort="0" IDE0SlaveEmulationPort="1" IDE1MasterEmulationPort="2" IDE1SlaveEmulationPort="3"> <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0"> <Image uuid="{1904d921-2ef6-49bc-9a49-64d797e4c46a}"/> </AttachedDevice> </StorageController> </StorageControllers> </Machine> </VirtualBox> - Win7.qed liegt auf paedml:/var/linbo
- ich habe auf paedml von Hand einen ctorrent in einem Screen gestartet, so dass das Image vorhanden ist
- Zusammenfassung für neues Image:
- /usr/local/sbin/infosys-session ersetzen
- /usr/local/sbin/infosys-session-windows-user ersetzen
- Ordner /home/windows/VirtualBox VMs/ţest löschen
- /home/windows/VirtualBox VMs/Windows 7/Windows 7.vbox ersetzen
- /cache/Win7.vdi* löschen
- beim Booten sollte dann der Rechner das qed per ctorrent holen und, sobald das da ist, die VM starten
- Aktuell verteile ich das mal im LZ von Hand
comment:14 by , 7 years ago
| Milestone: | Schuljahr 2018/19 → Image „Humane Henrike” |
|---|---|
| Owner: | changed from to |
| Status: | new → accepted |
comment:15 by , 7 years ago
weitere Problemstellung: Versionsmanagement (damit unser torrent nicht verrückt spielt)
- die Images erhalten eine Versionsnummer: Win7_20191101.qed
- in /var/linbo/Win7.qed.version wird die Versionsnummer auf dem Server abgelegt
- in /cache/Win7.qed.version wird die Versionsnummer auf dem Client abgelegt:
- erste Zeile: aktuelles Image
- weitere Zeilen: Images, die auf den Clients noch vorgehalten werden sollen
- anpassen des scripts infosys-session (s.o.), so dass es
- die Datei * in /var/linbo/Win7.qed.version holt
- die Versionsnummer verwendet
- starten des ctorrent-screen
- SymLink /cache/Win7.qed auf /cache/Win7_VERSION.qed
- Beim Ändern des Imagefiles auf einem Client:
- ctorrent-screen auf Server anhalten
- ctorrent-screen auf Client anhalten
- VM stoppen
- Image bearbeiten (kann bei jedem User eingehängt werden: /root/virtualWin7/Win7.ova von paedml importieren und /cache/Win7.qed (SymLink) an den SATA-Controller hängen)
- Image /cache/Win7_VERSION.qed eine neue Versionsnummer geben
- neues /cache/Win7_VERSION.qed.torrent erzeugen
ctorrent -t -u "http://10.16.112.4:6969/announce" -s Win7_VERSION.qed.torrent Win7_VERSION.qed
- /cache/Win7_VERSION.qed.torrent auf Server hochladen
- /cache/Win7.version anpassen
- /cache/Win7.version auf Server hochladen
- ctorrent-screen auf Client starten
- ctorrent-screen auf Server starten (=> start-Script /usr/locsl/sbin/kepler--start-ctorrent-screen schreiben)
Der Server lädt sich nun die aktuelle Version herunter, gleichzeitig können bereits die anderen Clients das neue Image laden (vorher alte Images entfernen):
- VM anhalten
- ctorrent-screen anhalten
- /usr/local/sbin/infosys-session-windows-user starten
comment:16 by , 7 years ago
Script /usr/local/sbin/kepler--start-ctorrent-screen auf paedml angelegt.
comment:17 by , 7 years ago
Im Script /usr/local/sbin/infosys-session-windows-user waren noch ein paar kleine Fehlerchen, jetzt ist es getestet und auf die Clients im LZ verteilt.
Besonders übel zu finden war der blöder Fehler, dass im Script kein Interpreter oben angegeben war, wenn man aber mapfile benutzt sollte es schon die bash sein :-)
comment:18 by , 7 years ago
erledigt auf paedml (SVN eingecheckt)
- /usr/local/sbin/infosys-session
- /usr/local/sbin/infosys-session-windows-user
- /usr/local/sbin/kepler--start-ctorrent-screen
erledigt auf Main-Client
- Ordner /home/windows/VirtualBox VMs/test gelöscht
- /home/windows/VirtualBox VMs/Windows 7/Windows 7.vbox ersetzen
- /home/windows/VirtualBox VMs/Windows 7/Windows 7.vbox-pref entfernt
comment:19 by , 7 years ago
| Resolution: | → erledigt |
|---|---|
| Status: | accepted → closed |
Ist es möglich, das VDI in ein LVM zu legen und dann einen Snapshot zu machen?
Ich denke, da ist zu Testen, wie die Performance dann so aussieht.