Script mappatura dischi HP per Zfs

From RVM Wiki
Revision as of 13:53, 6 November 2019 by Gabriele.vivinetto (talk | contribs) (Created page with "Questo script mappa i dischi HP per posizione fisica, seriale e device per uso con ZFS <pre> #!/bin/bash printf "|%4s|%4s|%3s|%3s|%18s|%8s|%38s|\n" SLOT PORT BOX BAY SERIAL...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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