Script mappatura dischi HP per Zfs
Jump to navigation
Jump to search
Questo script mappa i dischi HP per posizione fisica, seriale e device per uso con ZFS
#!/bin/bash
printf "|%4s|%4s|%3s|%3s|%18s|%8s|%38s|\n" SLOT PORT BOX BAY SERIAL DEV SCSI
for SLOT in 0 2
do
for PD in $(ssacli controller slot=${SLOT} pd all show| tr -s ' '| grep '^ physicaldrive'| cut -f 3 --delimiter=' ')
do
#echo SLOT=$SLOT
PORT=$(ssacli controller slot=${SLOT} pd $PD show detail | tr -s ' ' | grep '^ Port' | cut -f 3 --delimiter=' ')
#echo PORT=$PORT
BOX=$(ssacli controller slot=${SLOT} pd $PD show detail | tr -s ' ' | grep '^ Box' | cut -f 3 --delimiter=' ')
#echo BOX=$BOX
BAY=$(ssacli controller slot=${SLOT} pd $PD show detail | tr -s ' ' | grep '^ Bay' | cut -f 3 --delimiter=' ')
#echo BAY=$BAY
SERIAL=$(ssacli controller slot=${SLOT} pd $PD show detail | tr -s ' ' | grep '^ Serial' | cut -f 4 --delimiter=' ')
#echo SERIAL=$SERIAL
WWID=$(ssacli controller slot=${SLOT} pd $PD show detail | tr -s ' ' | grep '^ WWID' | cut -f 3 --delimiter=' ')
#echo WWID=$WWID
#SCSI=$(echo $WWID | cut -c 4-)
#SCSI=/dev/disk/by-id/scsi-35000$( printf "%x\n" $((0x${SCSI} - 0x1)) )
#echo SCSI=$SCSI
DEV=$(ssacli controller slot=${SLOT} pd $PD show detail | tr -s ' ' | grep '^ Disk Name' | cut -f 4 --delimiter=' ')
#echo DEV=$DEV
SHORTDEV=$(echo $DEV| cut -f 3 --delimiter='/')
#echo SHORTDEV=$SHORTDEV
SCSI=$( /bin/ls -l /dev/disk/by-id/| grep ${SHORTDEV}$ | tr -s ' ' | cut -f 9 --delimiter=' '| grep ^scsi)
#echo SCSI=/dev/disk/by-id/$SCSI
#echo "========================================"
printf "|%4s|%4s|%3s|%3s|%18s|%8s|%38s|\n" $SLOT $PORT $BOX $BAY $SERIAL $DEV "/dev/disk/by-id/$SCSI"
: '
Smart Array P440ar in Slot 0 (Embedded) (HBA Mode)
HBA Drives
physicaldrive 2I:6:7
Port: 2I
Box: 6
Bay: 7
Status: OK
Drive Type: HBA Mode Drive
Interface Type: SAS
Size: 600 GB
Drive exposed to OS: True
Logical/Physical Block Size: 512/512
Rotational Speed: 10500
Firmware Revision: HPD1
Serial Number: WFJ1QS1C
WWID: 5000C500C15857BD
Model: HP EG000600JWJNP
Current Temperature (C): 34
Maximum Temperature (C): 44
PHY Count: 2
PHY Transfer Rate: 12.0Gbps, Unknown
Drive Authentication Status: OK
Carrier Application Version: 11
Carrier Bootloader Version: 6
Disk Name: /dev/sdq
Mount Points: None
Sanitize Erase Supported: False
Shingled Magnetic Recording Support: None
'
# | grep -i 'physicaldrive\|WWID'
done
done
exit 1
# /bin/ls -l /dev/disk/by-id/| grep scsi | grep sd.$ | sort -k 11 | tr -s ' ' |cut -f 9 # ./mappatura_dischi
,11 --delimiter=' '| sed -e 's_../../_/dev/_'
echo CONTROLLER 1
ssacli controller slot=2 pd all show detail | grep -i 'physicaldrive\|WWID'
# zpool add DATA mirror /dev/disk/by-id/scsi-35000cca07d2e7090 /dev/disk/by-id/scsi-35000cca07d2fd30c
DISKS=$(cat /proc/partitions | tr -s ' '|cut -f 5 --delimiter=' '| grep -v '[0-9]$'| sort)
for DISK in $DISKS
do
SERIAL=$(smartctl -i /dev/$DISK | grep "Serial number" | tr -s ' '| cut -f 3 --delimiter=' ')
WWN=$(/bin/ls -l /dev/disk/by-id/ | grep $DISK | grep wwn | tr -s ' ' | cut -f 9 --delimiter=' ')
SCSI=$(/bin/ls -l /dev/disk/by-id/ | grep $DISK | grep scsi | tr -s ' ' | cut -f 9 --delimiter=' ')
echo DISK = /dev/$DISK
echo SERIAL = $SERIAL
echo WWN = /dev/disk/by-id/$WWN
echo SCSI = /dev/disk/by-id/$SCSI
done
L'output è tipo:
|SLOT|PORT|BOX|BAY| SERIAL| DEV| SCSI| | 0| 1I| 6| 1| 0BGV9DLF|/dev/sdj|/dev/disk/by-id/scsi-35000cca07d2fd3d4| | 0| 1I| 6| 2| 0BGV9NMF|/dev/sdi|/dev/disk/by-id/scsi-35000cca07d2fd7b8| | 0| 1I| 6| 3| 0BGV95RF|/dev/sdh|/dev/disk/by-id/scsi-35000cca07d2fd080| | 0| 1I| 6| 4| 0BGUJS4F|/dev/sdg|/dev/disk/by-id/scsi-35000cca07d2e7090| | 0| 2I| 6| 5| 0BGV9ZGF|/dev/sdk|/dev/disk/by-id/scsi-35000cca07d2fdc7c| | 0| 2I| 6| 6|BTYM731104XC480BGN|/dev/sdl|/dev/disk/by-id/scsi-33001438042b7bd69| | 0| 2I| 6| 7| WFJ1QS1C|/dev/sdq|/dev/disk/by-id/scsi-35000c500c15857bf| | 2| 1I| 4| 1| 0BGV2JHF|/dev/sdd|/dev/disk/by-id/scsi-35000cca07d2f6c9c| | 2| 1I| 4| 2| 0BGV9MDF|/dev/sdc|/dev/disk/by-id/scsi-35000cca07d2fd720| | 2| 1I| 4| 3| 0BGV62PF|/dev/sdb|/dev/disk/by-id/scsi-35000cca07d2fa1fc| | 2| 1I| 4| 4| 0BGV9AZF|/dev/sda|/dev/disk/by-id/scsi-35000cca07d2fd30c| | 2| 1I| 4| 5| 0BGV8PHF|/dev/sde|/dev/disk/by-id/scsi-35000cca07d2fc920| | 2| 1I| 4| 6|BTYM7312071V480BGN|/dev/sdf|/dev/disk/by-id/scsi-33001438042e1d745| | 2| 1I| 4| 7| WFJ1XCA4|/dev/sdp|/dev/disk/by-id/scsi-35000c500c17080af|
Lo slot è il controller, la Bay è il cassetto.
Per creare un vdev mirror con i dischi 7 di due controller diversi:
zpool add DATA mirror /dev/disk/by-id/scsi-35000c500c15857bf /dev/disk/by-id/scsi-350 ~
00c500c17080af
In questo modo i mirror sono fatti con dischi su controller diversi ma nello stesso cassetto:
pool: DATA state: ONLINE scan: scrub repaired 0B in 7h10m with 0 errors on Sun Oct 13 07:34:24 2019 config: NAME STATE READ WRITE CKSUM DATA ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 scsi-35000cca07d2fd3d4 ONLINE 0 0 0 scsi-35000cca07d2f6c9c ONLINE 0 0 0 mirror-2 ONLINE 0 0 0 scsi-35000cca07d2fd7b8 ONLINE 0 0 0 scsi-35000cca07d2fd720 ONLINE 0 0 0 mirror-3 ONLINE 0 0 0 scsi-35000cca07d2fd080 ONLINE 0 0 0 scsi-35000cca07d2fa1fc ONLINE 0 0 0 mirror-4 ONLINE 0 0 0 scsi-35000cca07d2e7090 ONLINE 0 0 0 scsi-35000cca07d2fd30c ONLINE 0 0 0 mirror-5 ONLINE 0 0 0 scsi-35000cca07d2fdc7c ONLINE 0 0 0 scsi-35000cca07d2fc920 ONLINE 0 0 0 mirror-6 ONLINE 0 0 0 scsi-35000c500c15857bf ONLINE 0 0 0 scsi-35000c500c17080af ONLINE 0 0 0 logs mirror-1 ONLINE 0 0 0 scsi-33001438042b7bd69-part1 ONLINE 0 0 0 scsi-33001438042e1d745-part1 ONLINE 0 0 0 cache sdl2 ONLINE 0 0 0 sdf2 ONLINE 0 0 0 errors: No known data errors