Citrix XenServer and DR
Assuming your storage is capable of replication, a bunch of VMs could be happily replicated to an alternate location, where you can start them on will (and on crisis, most likely).
This procedure, in theory, is rather simple. I have discovered that it is less so, especially if your system goes into testing once a while.
This leaves some “memories” with Citrix XenServer, as well as the underlayer OS.
The forums show examples of how to handle iSCSI re-attach, so I am adding here hot to handle fiber channel re-attach operation as well, especially if you’re using multipath.
Grab the SCSI ID
The SCSI ID is very important, as it is he basic identified of the LUN:
xe sr-proble type=lvmohba 2>&1
This will show a section (XML-like) under “SCSIid” containing the device’s SCSI ID. Also – grab the UUID of the device, as XenServer assigns. You could do this with:
xe sr-probe type=lvmohba device-config:SCSIid=<Enter SCSI ID here>
Introduce the Device
The system needs the device introduced. For that we’ll use the above captured UUID:
xe sr-introduce uuid=<Enter the UUID obtained before> shared=true typb=lvmohba namb-label=”Imported SR”
Keep the UUID returned by this command. I will reference to it as “SR UUID”
Create PBD for each host in the pool
This should be performed for each host, based on the UUID of all hosts:
xe pbd-create sr-uuid=<Enter the SR UUID obtained before> device-config=SCSIid=<Enter SCSI ID> host-uuid=<Enter UUID of host>
The result value, for each host, is the pbd UUID for that specific host. pbd is a physical Block Device, meaning – the “connection” of the Storage Repository (which is pool-wide) to the specific host.
Plug PBDs
For each of the pbd UUID obtained above, run the following command to plug it in:
xe pbd-plug uuid=<pbd UUID as obtained above>
That should be all.
For ease of repeat, below is a script to perform these exact actions automatically. It assumes one (1) unallocated LUN at the beginning of the process. It will probably behave differently for more than one.
#!/bin/bash SCSIID=`xe sr-probe type=lvmohba 2>&1 | grep -A1 SCSIid | grep -v SCSIid | grep -v vendor | tail -1 | awk '{print $NF}'` echo "scsi ID: $SCSIID" UUID=`xe sr-probe type=lvmohba device-config:SCSIid=$SCSIID | grep -A1 UUID | grep -v UUID | grep -v Devlist | head -1 | awk '{print $NF}'` echo "SR UUID $UUID" SRID=`xe sr-introduce uuid=$UUID name-label="Imported SR" shared=true type=lvmohba` echo "SR UID: $SRID" HOSTID=`xe host-list | grep uuid | awk '{print $NF}'` PBDID="" for i in $HOSTID do PBDID="$PBDID `xe pbd-create sr-uuid=$SRID device-config:SCSIid=$SCSIID host-uuid=$i`" done for i in $PBDID do xe pbd-plug uuid=$i done
Thanks a lot, this helped me!