Dell MD3220 – reset preferred controller module

Recently, id resetted the controller modules of the Dell MD3220 Storage Array while troubleshooting some strange events (it didnt change anything, ok its not a windows system ;D ).

After this, the virtual disks changed their path to the second controller. Ok, its not “mission critical”, but you always get the message that the virtual disks are not one the preferred path.

So, as described in my last post, this is also one of the operations that cant be made with MD Storage Manager.

This command will help: smcli.exe your-md-dns-name-or-ip -c "reset storageArray virtualDiskDistribution;"

Ps: Here you can find the Command Line Guide for SMCLI:

http://ftp.respmech.com/pub/MD3000/CLIA20EN.pdf

Dell MD3220 – how to reset unreadable Sectors statistic

Hy,

recently, i had the problem that our Dell MD3220 Storage Array was showing Alerts regarding unreadable sectors on disk drives.
Stupidly it didnt say which disk is affected. I thought that this is a old message, which is not cleared.

So my first step was resetting the statistic. If there are really defective sectors, the message will show up again.

The trick is, you cant do this over the gui (Dell MD Storage Manager) – you have to use SMCLI (which is part of the installation of the storage manager).

Here is the command:

scmli.exe your-md-dns-name-or-ip -c "clear allVirtualDisks unreadableSectors;"

The message is gone in my case.

Ps: Here you can find the Command Line Guide for SMCLI:

http://ftp.respmech.com/pub/MD3000/CLIA20EN.pdf

[Powershell]Printserver der Fritzbox neustarten

Hallo,

meine Eltern beklagten sich schon seit längerem darüber, dass ihr Drucker sporadisch nicht drucken bzw. mitten im Druckjob abbrechen würde. Der Drucker ist per USB an eine Fritzbox 7170 angeschlossen und an den Clients per Socket eingebunden.

Ich schaute mir also den Status des USB-Hosts in der Fritzbox an und stellte fest, dass der Drucker im Leerlauf als “beim Drucken” angezeigt wurde.

Da war für mich klar, dass vermutlich der Printserver der Fritzbox das Problem sein würde.

Blöderweise gibt es auf der Fritzbox-Oberfläche keine Möglichkeit, das USB-Subsystem neuzustarten ohne die ganze Fritzbox neu starten zu müssen. Gut, der Anschluss ist keine Komponente, die jederzeit verfübar sein muss, trotzdem ist es nervig.

Ich hatte im Hinterkopf, dass die Fritzbox einen Telnet-Zugang hat. Als alter Linuxer dachte ich mir, dass man über die dann verfügbare Shell das USB-Subsystem per init-skript o.ä durchzustarten.

Genau so funktionierte es auch. Blöderweise verfügen meine Eltern nicht über die Fähigkeit sich per telnet zu connecten und den Service neuzustarten ^^. Ich überlegt also, wie man diesen Vorgang Automatisieren könnte.

Die Lösung: Powershell! Mit der Powershell besteht die Möglichkeit, eine TCP-Verbindung über einen bestimmten Port aufzubauen und darüber Kommandos auszuführen.

Hier also das Skript:

param(
[string] $remoteHost = "",
[int] $port = 23,
[string] $password = "",
[string] $command1 = "/etc/init.d/rc.usbhost stop",
[string] $command2 = "/etc/init.d/rc.usbhost start",
[int] $commandDelay = 1000
)
[string] $output = ""
## Read output from a remote host
function GetOutput
{
## Create a buffer to receive the response
$buffer = new-object System.Byte[] 1024
$encoding = new-object System.Text.AsciiEncoding
$outputBuffer = ""
$foundMore = $false
## Read all the data available from the stream, writing it to the
## output buffer when done.
do
{
## Allow data to buffer for a bit
start-sleep -m 1000
## Read what data is available
$foundmore = $false
$stream.ReadTimeout = 1000
do
{
try
{
$read = $stream.Read($buffer, 0, 1024)
if($read -gt 0)
{
$foundmore = $true
$outputBuffer += ($encoding.GetString($buffer, 0, $read))
}
} catch { $foundMore = $false; $read = 0 }
} while($read -gt 0)
} while($foundmore)
$outputBuffer
}
function Main
{
## Open the socket, and connect to the computer on the specified port
write-host "Connecting to $remoteHost on port $port"
trap { Write-Error "Could not connect to remote computer: $_"; exit }
$socket = new-object System.Net.Sockets.TcpClient($remoteHost, $port)
write-host "Connected. Press ^D followed by [ENTER] to exit.`n"
$stream = $socket.GetStream()
$writer = new-object System.IO.StreamWriter $stream
## Receive the output that has buffered so far
$SCRIPT:output += GetOutput
Start-Sleep -m $commandDelay
$writer.WriteLine($password)
$writer.Flush()
Start-Sleep -m $commandDelay
$writer.WriteLine($command1)
$writer.Flush()
Start-Sleep -m $commandDelay
$writer.WriteLine($command2)
$writer.Flush()
$SCRIPT:output += GetOutput
## Close the streams
$writer.Close()
$stream.Close()
$output | Out-File ("C:\Temp\$remoteHost.txt") #Change this to suit your environment
}
. Main

Lotus Notes Maildatenbank konvertieren

Wenn beispielsweise ein Lotus 7.0 Benutzer auf Lotus 8.5 umgestellt werden soll, muss außer der Installation des neuen Clients eine Konvertierung der Maildatenbank ausgeführt werden.

Dazu öffnet man den Domino Administrator, stellt Administration mit voller Berechtigung ein und geht auf die Console.

Zum Konvertieren der Datenbank gibt man folgenden Befehl ein:

load convert mail\user.nsf * mail85.ntf

Danach muss die Ordnerstruktur der Datenbank noch auf das neue Format angepasst werden. Dies geschieht mit:

load convert -u mail\user.nsf

Zum Schluss kann man noch die Datenbank komprimieren:

load compact -c -daos on mail\user.nsf

Fertig ist die Migration von Lotus Notes 7.0 auf 8.5 🙂

MSI Installer Fehler (Windows 7)

Hi,

Problem: in letzter Zeit kam es bei mir öfters vor, dass ich keine Software mehr installieren oder deinstallieren konnte. Die Installation bzw Deinstallation brach mit dem Fehler 2203 Internal Error bzw Cannot open Database file ab.

Lösung: Das Problem liegt bei den Umgebungsvariablen! Ich vermute, dass das System keinen Zugriff auf den Temp Ordner bekommt, sodass er die temporären Daten, die zur Installation/Deinstallation abgelegt werden müssen, nicht ablegen darf.

Abhilfe schafft man dem, indem man die Umgebungsvariablen TEMP und TMP auf C:\Temp umstellt! Ein Neustart und schon funktionierts wieder.