RAID1 au rapport

Add comments

Voici un minuscule exemple d’utilisation de fabric: Vérifier l’état des disques de plusieurs machines en RAID1.

On importe tout d’abord les .py nécessaires, et on s’assure qu’on utilise un shell compatible sur tous les systèmes :

from fabric.api import *
from fabric.operations import *

env.shell = "/bin/sh -c"

On définit un rôle fabric qu’on appelera raid1 :

env.roledefs = {
        'raid1': ['tatooine', 'coruscant', 'mustafar'],
}

Puis on écrit notre fonction, brutale, mais fonctionnelle:

def raidcheck():
        '''Checks raid status'''
        opsys = run("uname -s")
        if opsys == "Linux":
                run("cat /proc/mdstat")
        if opsys == "NetBSD":
                sudo("for raid in `/sbin/mount|grep -oE raid[0-9]|sort -u`;do /sbin/raidctl -s $raid;done")

J’obtiens ainsi l’information souhaitée en executant :

$ fab -R raid1 raidcheck

qui affichera le résultat suivant :

[tatooine] Executing task 'raidcheck'
[tatooine] run: uname -s
[tatooine] out: Linux

[tatooine] run: cat /proc/mdstat
[tatooine] out: Personalities : [raid1] 
[tatooine] out: md1 : active raid1 sda5[2] sdb5[1]
[tatooine] out:       955777616 blocks super 1.2 [2/2] [UU]
[tatooine] out:       
[tatooine] out: md0 : active raid1 sda1[2] sdb1[1]
[tatooine] out:       20979763 blocks super 1.2 [2/2] [UU]
[tatooine] out:       
[tatooine] out: unused devices: 

[coruscant] Executing task 'raidcheck'
[coruscant] run: uname -s
[coruscant] out: NetBSD

[coruscant] sudo: for raid in `/sbin/mount|grep -oE raid[0-9]|sort -u`;do /sbin/raidctl -s $raid;done
[coruscant] out: Components:
[coruscant] out:            /dev/wd0a: optimal
[coruscant] out:            /dev/wd2a: optimal
[coruscant] out: No spares.
[coruscant] out: Component label for /dev/wd0a:
[coruscant] out:    Row: 0, Column: 0, Num Rows: 1, Num Columns: 2
[coruscant] out:    Version: 2, Serial Number: 20090619, Mod Counter: 438
[coruscant] out:    Clean: No, Status: 0
[coruscant] out:    sectPerSU: 128, SUsPerPU: 1, SUsPerRU: 1
[coruscant] out:    Queue size: 100, blocksize: 512, numBlocks: 976772992
[coruscant] out:    RAID Level: 1
[coruscant] out:    Autoconfig: Yes
[coruscant] out:    Root partition: Yes
[coruscant] out:    Last configured as: raid0
[coruscant] out: Component label for /dev/wd2a:
[coruscant] out:    Row: 0, Column: 1, Num Rows: 1, Num Columns: 2
[coruscant] out:    Version: 2, Serial Number: 20090619, Mod Counter: 438
[coruscant] out:    Clean: No, Status: 0
[coruscant] out:    sectPerSU: 128, SUsPerPU: 1, SUsPerRU: 1
[coruscant] out:    Queue size: 100, blocksize: 512, numBlocks: 976772992
[coruscant] out:    RAID Level: 1
[coruscant] out:    Autoconfig: Yes
[coruscant] out:    Root partition: Yes
[coruscant] out:    Last configured as: raid0
[coruscant] out: Parity status: clean
[coruscant] out: Reconstruction is 100% complete.
[coruscant] out: Parity Re-write is 100% complete.
[coruscant] out: Copyback is 100% complete.
[coruscant] out: Components:
[coruscant] out:            /dev/wd1a: optimal
[coruscant] out:            /dev/wd3a: optimal
[coruscant] out: No spares.
[coruscant] out: Component label for /dev/wd1a:
[coruscant] out:    Row: 0, Column: 0, Num Rows: 1, Num Columns: 2
[coruscant] out:    Version: 2, Serial Number: -1354219479, Mod Counter: 41
[coruscant] out:    Clean: No, Status: 0
[coruscant] out:    sectPerSU: 128, SUsPerPU: 1, SUsPerRU: 1
[coruscant] out:    Queue size: 100, blocksize: 512, numBlocks: 3907028992
[coruscant] out:    RAID Level: 1
[coruscant] out:    Autoconfig: Yes
[coruscant] out:    Root partition: No
[coruscant] out:    Last configured as: raid1
[coruscant] out: Component label for /dev/wd3a:
[coruscant] out:    Row: 0, Column: 1, Num Rows: 1, Num Columns: 2
[coruscant] out:    Version: 2, Serial Number: -1354219479, Mod Counter: 41
[coruscant] out:    Clean: No, Status: 0
[coruscant] out:    sectPerSU: 128, SUsPerPU: 1, SUsPerRU: 1
[coruscant] out:    Queue size: 100, blocksize: 512, numBlocks: 3907028992
[coruscant] out:    RAID Level: 1
[coruscant] out:    Autoconfig: Yes
[coruscant] out:    Root partition: No
[coruscant] out:    Last configured as: raid1
[coruscant] out: Parity status: clean
[coruscant] out: Reconstruction is 100% complete.
[coruscant] out: Parity Re-write is 100% complete.
[coruscant] out: Copyback is 100% complete.

[mustafar] Executing task 'raidcheck'
[mustafar] run: uname -s
[mustafar] out: Linux

[mustafar] run: cat /proc/mdstat
[mustafar] out: Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
[mustafar] out: md3 : active raid1 sda3[0] sdb3[1]
[mustafar] out:       465855936 blocks [2/2] [UU]
[mustafar] out:       
[mustafar] out: md1 : active raid1 sda1[0] sdb1[1]
[mustafar] out:       20479936 blocks [2/2] [UU]
[mustafar] out:       
[mustafar] out: unused devices: 


Done.
Disconnecting from tatooine... done.
Disconnecting from mustafar... done.
Disconnecting from coruscant... done.

Tout va bien :)

One Response to “RAID1 au rapport”

  1. tahorg Says:

    pour que ça aille plus vite, met un -P. Ça mélange juste un peu les outputs :)

Leave a Reply

WP Theme & Icons based on GlossyBlue by N.Design Studio
Banner from www.trynthlas.com
Entries RSS Comments RSS Log in
Performance Optimization WordPress Plugins by W3 EDGE