Outils de gestion de contrôleur RAID 3-ware

Récupération et installation de l’outil (tw_cli):

Ça se passe sur le site de 3-ware (http://www.3ware.com) (support → documents and downloads). On y récupère gros zip (~ 10Mo) 3DM2_CLI-Linux_10.2.1_9.5.4.zip.

On décompresse tout ça dans /opt (ou /usr/local, ou ce que vous voulez), et on se débrouille pour que $instdir/tw_cli.(x86_64|x86) soit dans le PATH ou on fait un bête lien symbolique:

ln -s $instdir/tw_cli.x86_64 /usr/local/sbin/tw_cli

Utilisation / mise en place:

[root@host: ~]# tw_cli
//host> show
 Ctl   Model        (V)Ports  Drives   Units   NotOpt  RRate   VRate  BBU
 ------------------------------------------------------------------------
 c0    9750-8i      7         7        1       0       1       1      -
//host> /c0 show # ajouter «all» pour avoir plus de détails
 Unit  UnitType  Status         %RCmpl  %V/I/M  Stripe  Size(GB)  Cache  AVrfy
 ------------------------------------------------------------------------------
 u0    RAID-0    OK             -       -       256K    2933.59   RbW    ON
 VPort Status         Unit Size      Type  Phy Encl-Slot    Model
 ------------------------------------------------------------------------------
 p0    OK             u0   419.18 GB SAS   0   -            SEAGATE ST3450857SS
 p1    OK             u0   419.18 GB SAS   1   -            SEAGATE ST3450857SS
 p2    OK             u0   419.18 GB SAS   2   -            SEAGATE ST3450857SS
 p3    OK             u0   419.18 GB SAS   3   -            SEAGATE ST3450857SS
 p5    OK             u0   419.18 GB SAS   5   -            SEAGATE ST3450857SS
 p6    OK             u0   419.18 GB SAS   6   -            SEAGATE ST3450857SS
 p7    OK             u0   419.18 GB SAS   7   -            SEAGATE ST3450857SS
//host> /c0 add type=raid0 disk=0:7 stripe=256 autoverify storsave=perform  # ajout d'une grappe raid0
//host> /c0/u0 show # ajouter «all» pour avoir plus de détails
 Unit     UnitType  Status         %RCmpl  %V/I/M  VPort Stripe  Size(GB)
 ------------------------------------------------------------------------
 u0       RAID-0    OK             -       -       -     256K    2933.59
 u0-0     DISK      OK             -       -       p0    -       419.085
 u0-1     DISK      OK             -       -       p1    -       419.085
 u0-2     DISK      OK             -       -       p2    -       419.085
 u0-3     DISK      OK             -       -       p3    -       419.085
 u0-4     DISK      OK             -       -       p5    -       419.085
 u0-5     DISK      OK             -       -       p6    -       419.085
 u0-6     DISK      OK             -       -       p7    -       419.085
 u0/v0    Volume    -              -       -       -     -       2933.59
//host> /c0/u0 set autoverify=on
//host> /c0/u0 set cache=on # cette option et la suivantes requiert d'avoir un pack
//host> /c0/u0 set set wrcache=on # de batterie et une alimentation sécurisée sur onduleur
//host> /c0/u0 set rdcache=basic
//host> /c0/u0 set storsave=perform
//host> /c0/u0 set rapidrecovery=all
//host> quit
[root@host: ~]#
Après ça, si on a juste un disque avec le système (/dev/sda) et un le volume contrôleur raid avec son volume, on voit apparaître un /dev/sdb, sans partition.
Si le volume raid fait plus de 2To, il ne faut pas oublier de créer une table de partition au format GPT si on veut pouvoir tout utiliser. Comme *fdisk ne gère pas ça, on passe par parted:
[root@host: ~]# parted /dev/sdb > mklabel gpt # création de la table de partition au bon format > mkpart primary 0 100% # création d'une seule partition qui prend tout le volume > quit
[root@host: ~]#
La doc de 3ware recommande quelques petites choses à faire au niveau système pour tirer pleinement profit du contrôleur:
  • passer le I/O scheduler en mode deadline:
    • à chaud:
echo deadline > /sys/block/sdb/queue/scheduler
    • on le fait de façon pérenne (pour Debian avec GRUB2): ajouter elevator=deadline à la variable GRUB_CMDLINE_LINUX dans le fichier /etc/default/grub puis exécuter la commande update-grub
  • augmenter la taille du buffer pour le read-ahead:
    • à chaud:
blockdev --setra 16384 /dev/sdb
    • on rend ça pérenne en ajoutant cette même ligne dans le fichier /etc/rc.local.
Personnellement je rajoute aussi au moins ça dans mon /etc/sysctl.conf:
vm.min_free_kbytes = 65536
vm.dirty_background_ratio = 20
vm.dirty_ratio = 60

Ensuite, je formate tout ça en XFS (voir cet article à ce sujet).