close Warning: Can't synchronize with repository "keplertools" (/srv/svn/keplertools does not appear to be a Subversion repository.). Look in the Trac log for more information.

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 bau)

  • 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 bau, 8 years ago

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.

comment:2 by bau, 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

Last edited 8 years ago by bau (previous) (diff)

comment:3 by bau, 8 years ago

Description: modified (diff)

comment:4 by Rüdiger Kupper, 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 Rüdiger Kupper, 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.

comment:6 by bau, 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

Last edited 8 years ago by bau (previous) (diff)

comment:7 by Rüdiger Kupper, 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.

​https://virtuozzosupport.force.com/s/article/000017152

in reply to:  6 comment:8 by Rüdiger Kupper, 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 bau, 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 bau, 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 bau, 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 bau, 8 years ago

Die Ballon-Datei kann dann einfach neu erzeugt werden:

qemu-img create -f qed -b Win7.qed Win7_ballon.qed
chown windows. Win7_ballon.qed 
Version 0, edited 8 years ago by bau (next)

comment:13 by bau, 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)
    #!/bin/bash
    # start infosys-session as user "windows"
    
    #---------------------------------------------
    # Wo sollen die Snapshots gespeichert werden?
    SnapshotDir=/cache/Snapshots
    #---------------------------------------------
    
    # Hole Version-file von Server
    echo "Hole /cache/Win7.qed.version"
    rsync paedml::linbo/Win7.qed.version /cache/Win7.qed.version
    
    # 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/$actversion.torrent ]; then
      echo "Hole /cache/$actversion.torrent"
      rsync paedml::linbo/$actversion.torrent /cache/$actversion.torrent
    fi
    
    # nochmals pruefen, ob torrent-file da ist
    if [ ! -e /cache/$actversion.torrent ]; then
      echo " ... /cache/$actversion.torrent ist noch immer nicht da => STOPP"
      #exit 255
    fi
    
    
    # alte Versionen pruefen, ggf loeschen
    dateien=($(ls /cache/ | grep Win7_ |grep .qed$))
    for datei in "${dateien[@]}"; do
      if [ "$datei" != "Win7_ballon.qed" ]; then
        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" = "0" ]; then
          echo "     loesche ueberfluessiges Image $datei und Zusatzdateien"
          rm /cache/$datei*
        fi
      fi
    done
    
    # Läuft der Screen schon (Test fuer manuellen Restart)?
    if screen -list | grep -q "ctorrent_$actversion"; then
      echo  "Ctorrent-Screen fuer $actversion läuft bereits."
    else
      echo "starte Ctorrent-screen $actversion"
      screen -S ctorrent_$actversion -dm ctorrent -s /cache/$actversion /cache/$actversion.torrent -X "touch /cache/$actversion.complete"
    fi
    
    # Pruefe, ob Image komplett da ist
    while [ ! -e /cache/$actversion.complete ]; do
      echo "Image $actversion noch nicht da! warte 30s"
      sleep 30s
    done
    
    #Symlink anlegen
    rm /cache/Win7.qed
    ln -s /cache/$actversion /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
Last edited 7 years ago by bau (previous) (diff)

comment:14 by Rüdiger Kupper, 7 years ago

Milestone: Schuljahr 2018/19 → Image „Humane Henrike”
Owner: changed from bau to Rüdiger Kupper
Status: new → accepted

comment:15 by bau, 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
Last edited 7 years ago by bau (previous) (diff)

comment:16 by bau, 7 years ago

Script /usr/local/sbin/kepler--start-ctorrent-screen auf paedml angelegt.

Last edited 7 years ago by bau (previous) (diff)

comment:17 by bau, 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 bau, 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 bau, 7 years ago

Resolution: → erledigt
Status: accepted → closed
Note: See TracTickets for help on using tickets.