6 Replies Latest reply on Mar 24, 2015 7:56 AM by derniwi

    Größe RepositoryCache einstellen

    tsauter Apprentice
      Hallo,

      ich suche gerade verzweifelt wo man die Größe des RepositoryCache Verzeichnisses auf den Clients anpassen kann.

      Ich dachte es wäre bei Staging, dort finde ich es aber irgendwie nicht.

      Vielen Dank für einen Tipp.

      Thorsten
        • 1. Re: Größe RepositoryCache einstellen
          Frank.Scholer Master
          Hi Thorsten,

          bist du noch auf Enteo v6? Weil seit DSM 7 wird nicht mehr die Größe des Repository Caches angegeben, sondern DSM nimmt sich soviel wie es braucht (bis zu einer in der Konfigtabelle definierbaren Untergrenze)...

          HTH, Gruß Frank
          • 2. Re: Größe RepositoryCache einstellen
            tsauter Apprentice


            bist du noch auf Enteo v6? Weil seit DSM 7 wird nicht mehr die Größe des Repository Caches angegeben, sondern DSM nimmt sich soviel wie es braucht (bis zu einer in der Konfigtabelle definierbaren Untergrenze)...



            nein. Es ist v7.
            Wie kann ich bei einer 128SSD die Größe auf z.B. 10GB begrenzen? Die verwendeten 30GB sind mir zu Groß.

            Danke.
            • 3. Re: Größe RepositoryCache einstellen
              Frank.Scholer Master
              Das geht nicht... wie gesagt, du kannst in DSM sagen, wieviel Platz auf jeden Fall frei bleiben muss (standardmäßig sind da glaub ich 3 GB eingetragen, wenn ich mich recht erinnere)...

              Es ist auch so, dass der DSM Core Service das immer überwacht. Wenn also der User mehr Platz braucht (weil er Files auf die Partition kopiert), dann löscht der Core Service online Dateien aus dem Repository Cache, um Platz zu schaffen

              Was du natürlich machen kannst, ist dass du den Cache am Ende deiner Installation löschst (z.B. per NIPREP mit dem Schalter /e).

              HTH, Gruß Frank
              • 4. Re: Größe RepositoryCache einstellen
                tsauter Apprentice
                Danke für die Info.

                Was habt Ihr dann da eingetragen um z.B. eine SSD nicht ganz zu füllen?
                Ich denke so an minimum 50GB frei? (Bei mir hat eigentlich keines der Pakete mehr als 2GB Größe)
                • 5. Re: Größe RepositoryCache einstellen
                  NicoS1 Master
                  Wir haben bei uns als absoluten Wert 2 GB eingetragen.

                  Die Pakete werden auch nach einer gewisser Zeit aus dem Repository entfernt. Unserer Erfahrung nach gibt es viele User, die auch gerne viele Daten auf C:\ ablegen. Wenn du unter die 50 GB Grenze rutschen würdest, würde die Softwareverteilung auf dem Client nicht mehr funktionieren.

                  Der Wert soll ja nur die absolute Untergrenze sein, und 2-3 GB ist ein guter Wert, das Windows noch läuft ;-)
                  • 6. Re: Größe RepositoryCache einstellen
                    derniwi Master
                    Hallo,

                    das schließe ich mich Nico an.
                    Man sollte schon schauen, dass genügend Platz auf den Rechnern bleibt. Und egal, wieviel Platz man den Mitarbeitern gibt, die werden den schon irgendwie nutzen.

                    Ich habe ein kleines Paket, welches als Job bei jedem Login läuft:
                    !freien Speicher prüfen
                    !Beschreibung: es wird geprüft, ob genügend Speicher auf C: frei ist. Bei Bedarf wird eine Nachricht verschickt.
                    !
                    If DiskFree('C:')<1048576
                    Set('_WMI_DeviceID','')
                    Set('_WMI_FreeSpace','')
                    WMISimpleQuery('\\.\root\cimv2','WIN32_LOGICALDISK','DeviceID=C:','_WMI_')
                      FreeSpace
                    EndProc/TS
                    !
                    Set('varA','%_WMI_FreeSpace%')
                    Set('varB','1048576')
                    Set('varOperator','\')
                    CallScript('.\Extern$\VBCalculator.vbs','')/TS
                    If %varMsg%=''
                      SendSmtpMail('|Hostmaster','||','zu wenig freier Speicher auf %COMPUTERNAME%: %varResult% MB','%Reporting.SmtpServer%','')
                       Auf dem Rechner %COMPUTERNAME% sind auf Laufwerk C: noch %varResult% MB Speicherplatz frei.
                      EndProc
                      ExitProcEx(Done,'freier Speicher: %varResult% MB')
                    Else
                      SendSmtpMail('|Hostmaster','||','zu wenig freier Speicher auf %COMPUTERNAME%  %_WMI_FreeSpace% Bytes','%Reporting.SmtpServer%','')
                       Auf dem Rechner %COMPUTERNAME% sind auf Laufwerk C: noch %_WMI_FreeSpace% Byte Speicherplatz frei.
                      
                       Fehler bei der Umwandlung:
                       %varMsg%
                      EndProc
                      ExitProcEx(Done,'freier Speicher: %_WMI_FreeSpace% Bytes')


                    Hierbei wird noch ein kleines VB-Skript verwendet (Extern$\VBCalculator.vbs):
                    ' VBCalculator
                    ' A simple calculator using registry values

                    Option Explicit
                    Dim varA
                    Dim varB
                    Dim varOperator
                    Dim varResult
                    Dim varMsg
                    Dim bOK

                    ' Read and check the variable which have to be set in the eScript
                    ' varName: name of the registry variable
                    ' Returns "ERR" in case of any error or the value as double data type
                    Function getVar( ByVal varName )
                    getVar = "ERR"
                    On Error Resume Next
                    getVar = NIGetVar( varName )
                    If ( 0 = err.number ) Then
                      If ( "" = getVar ) Then
                       bOK = False
                       varMsg = varMsg & " " & varName & " empty"
                      Else
                       getVar = CDbl( getVar )
                       If ( 0 <> err.number ) Then
                        bOK = False
                        varMsg = varMsg & " Error converting " & getVar
                       End If 
                      End If
                    Else
                      bOK = False
                      varMsg = varMsg & " " & varName & " not Found"
                    End If

                    On Error Goto 0
                    End Function

                    ' Read and check the operator which have to be set in the eScript
                    ' Returns "ERR" in case of any error or the operator as one of "+", "-", "*", "/" and "^"
                    Function getOperator( ByVal varName )
                    getOperator = "ERR"
                    On Error Resume Next
                    getOperator = NIGetVar( varName )
                    If ( 0 = err.number ) Then
                      If ( "" = getOperator ) Then
                       bOK = False
                       varMsg = varMsg & " " & varName & " empty"
                      Else
                       If (( "+" <> getOperator ) AND _
                        ( "-" <> getOperator ) AND _
                        ( "*" <> getOperator ) AND _
                        ( "/" <> getOperator ) AND _
                        ( "\" <> getOperator ) AND _
                        ( "^" <> getOperator ) AND _
                        ( "ABS" <> getOperator ) AND _
                        ( "HEX" <> getOperator ) AND _
                        ( "RND" <> getOperator )) Then
                        bOK = False
                        varMsg = varMsg & " Unknown operator: " & getOperator
                       End If 
                      End If
                    Else
                      bOK = False
                      varMsg = varMsg & " " & varName & " not Found"
                    End If

                    On Error Goto 0
                    End Function

                    ' Initialize variables
                    bOK = True
                    varMsg = ""
                    varResult = "ERR"

                    ' Get variables
                    varA = getVar( "varA" )
                    varB = getVar( "varB" )

                    ' Get operator
                    varOperator = getOperator( "varOperator" )

                    ' If everything is ok calculate
                    If bOK Then
                    On Error Resume Next
                    Select Case varOperator
                      Case "+" ' Addition
                       varResult = varA + varB
                      Case "-" ' Subtraction
                       varResult = varA - varB
                      Case "*" ' Multiplication
                       varResult = varA * varB
                      Case "/" ' Division
                       varResult = varA / varB
                      Case "\" ' Integer division
                       varResult = CLng( varA / varB )
                      Case "^" ' Exponentiation
                       varResult = varA ^ varB
                      Case "ABS" ' Absolute value
                       varResult = Abs( varA )
                      Case "HEX" ' Convert varA to hex
                       varResult = Hex( varA )
                      Case "RND" ' Random
                       varResult = Rnd( varA )
                      Case Else
                       varMsg = varMsg & " Unknown operator: " & varOperator
                    End Select

                    ' Calculation error handling
                    If ( 0 <> err.number ) Then
                      varResult = "ERR"
                      varMsg = varMsg & " Error " & Err.Description
                    End If
                    On Error Goto 0
                    End If

                    ' Write result and message to eScript variables
                    NISetVar "varResult", Trim( CStr( varResult ))
                    NISetVar "varMsg", Trim( varMsg )

                    Dieses Skript führt dann die Operation "Division ohne Rest" durch. Kann man auch weglassen, wenn einem die Byte an sich reichen.

                    Gruß
                    Nils