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:

Dell MD3220 – how to reset unreadable Sectors statistic


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:

Targetcli Skript


wenn man einen Standard-Linux-Server zur Bereitstellung von Speicher per Fibre-Channel nutzen möchte, kann man das Tool Targetcli benutzen.
Ich habe ein Skript zum Konfigurieren eines Fibre-Channel Targets auf einem Linux Host geschrieben.
Nachdem das Target angelegt ist, soll eine Lun angelegt werden und die entsprechend gezonten Server Zugriff erhalten.

Hinweis: Hier wird ein Qlogic 2562 HBA verwendet. Dieser funktioniert mit targetcli sehr gut.

port1=`targetcli “/qla2xxx/ info” |awk ‘/Allowed WWNs list/’ |cut -d’:’ -f2 |awk -F’,’ ‘{print $1}’|cut -c2-21`
port2=`targetcli “/qla2xxx/ info” |awk ‘/Allowed WWNs list/’ |cut -d’:’ -f2 |awk -F’,’ ‘{print $2}’|cut -c2-21`

function createtarget {
targetcli /qla2xxx create $port1
targetcli /qla2xxx create $port2
function createlun {
read -p “Bitte den Namen der Lun angeben: ” lunname
ls /dev/mapper
read -p “Bitte Logical-Volume angeben (voller Pfad): ” lv
targetcli /backstores/block create $lunname $lv
targetcli /qla2xxx/$port1/luns create /backstores/block/$lunname
targetcli /qla2xxx/$port2/luns create /backstores/block/$lunname
function maplun {
read -p “Bitte die WWN des ersten Ports des anzubindenden Servers angeben: ” wwn1
targetcli /qla2xxx/$port1/acls create $wwn1
read -p “Bitte die WWN des zweiten Ports des anzubindenden Servers angeben: ” wwn2
targetcli /qla2xxx/$port2/acls create $wwn2

PS3=”Auswahl: ”
echo “Was moechten sie tun: ”
select aufgabe in “Target anlegen” “Lun anlegen” “Lun mappen” “beenden”;
case $aufgabe in
“Target anlegen”) createtarget;;
“Lun anlegen”) createlun ;;
“Lun mappen”) maplun ;;
“beenden”) break;;