Έλεγχος αντοχής των Storage Spaces με την χρήση του PowerShell (Three-Way Mirror)

2. Έλεγχος αντοχής Three-Way Mirroring

Στο δεύτερο μέρος αυτού του blogpost θα ασχοληθούμε με τον έλεγχο της αντοχής ενός Storage Space με επίπεδο προστασίας Three-Way Mirroring.

Για την υλοποίηση αυτού του Storage Space, o ελάχιστος αριθμός σκληρών δίσκων που θα χρειαστούν είναι πέντε (5), ενώ η ακεραιότητα των δεδομένων εξασφαλίζεται ακόμη και στην περίπτωση βλάβης δύο (2) δίσκων.

2.1 Δημιουργία δίσκων

Όπως αναλύσαμε στο προηγούμενο άρθρο, το κάθε Storage Space δημιουργείται επί ενός Storage Pool το οποίο με την σειρά του περιλαμβάνει τους σκληρούς δίσκους του συστήματος.

Το πρώτο βήμα λοιπόν, είναι η δημιουργία αυτών των σκληρών δίσκων και η προσθήκη τους στο σύστημα των δοκιμών με λειτουργικό σύστημα Windows Server 2012R2.

Τους δίσκους τους δημιουργούμε και τους συνδέουμε με το VM των δοκιμών μας, εύκολα και απλά μέσω του PowerShell και των παρακάτω εντολών στον Hyper-V host.

Διαπιστώνουμε τόσο την δημιουργία των δίσκων όσο και την σύνδεση τους στο VM, με την Get-PhysicalDisk στο VM

PS C:> Get-PhysicalDisk | ft -AutoSize

FriendlyName CanPool OperationalStatus HealthStatus Usage        Size

———— ——- —————– ———— —–         —-

PhysicalDisk2 True   OK               Healthy     Auto-Select 20 GB

PhysicalDisk3 True   OK               Healthy     Auto-Select 20 GB

PhysicalDisk0 False   OK              Healthy     Auto-Select 127 GB

PhysicalDisk5 True   OK               Healthy     Auto-Select 20 GB

PhysicalDisk1 True   OK               Healthy     Auto-Select 20 GB

PhysicalDisk4 True   OK               Healthy     Auto-Select 20 GB

2.2 Δημιουργία Storage Pool

Αφού δημιουργήσαμε τους σκληρούς δίσκους και τους συνδέσαμε στο VM, φτιάχνουμε το Storage Pool με τις παρακάτω εντολές στο VM

Πιστοποιούμε την ολοκλήρωση του Storage Pool, με την παρακάτω εντολή στο VM

PS C:> Get-StoragePool | ft -AutoSize

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly

———— —————– ———— ———— ———-

StorPool01   OK               Healthy     False       False

Primordial   OK                Healthy     True         False

2.3 Υλοποίηση Storage Space

Αφού ολοκληρώθηκε η δημιουργία του Storage Pool, μπορούμε να φτιάξουμε το Storage Space με το επίπεδο ασφάλειας που επιθυμούμε. Στην συγκεκριμένη περίπτωση θα δημιουργήσουμε ένα Three-Way Mirror, με τις εξής εντολές στο VM

To Storage Space που δημιουργήθηκε είναι ένας νέος δίσκος για το σύστημα μας, ο οποίος χρειάζεται αρχικοποίηση (initialization), δημιουργία partition και format, κατά τα γνωστά.

Εάν θέλουμε να δούμε την κατάσταση του StorageSpace, του partition και των φυσικών δίσκων πάνω στους οποίους έχουν δημιουργηθεί, τότε χρησιμοποιούμε την παρακάτω εντολή

PS C:> Get-Volume S | Get-Partition | Get-Disk | Get-VirtualDisk | Get-PhysicalDisk | ft -AutoSize

FriendlyName CanPool OperationalStatus HealthStatus Usage           Size

———— ——- —————– ———— —–           —-

PhysicalDisk2 False   OK               Healthy     Auto-Select 19.25 GB

PhysicalDisk3 False   OK               Healthy     Auto-Select 19.25 GB

PhysicalDisk5 False   OK               Healthy     Auto-Select 19.25 GB

PhysicalDisk1 False   OK               Healthy     Auto-Select 19.25 GB

PhysicalDisk4 False   OK              Healthy     Auto-Select 19.25 GB

2.4 Συμπεριφορά σε βλάβη

Όπως είπαμε και στην αρχή, τα δεδομένα που είναι αποθηκευμένα στο Storage Space με προστασία Three-Way Mirror, είναι εξασφαλισμένα ακόμη και στην περίπτωση βλάβης δύο δίσκων.

Θα προσομοιώσουμε λοιπόν την βλάβη δύο δίσκων της συστοιχίας Three-Way Mirror και θα παρατηρήσουμε την συμπεριφορά του Storage Pool και του Storage Space.

Οι ενέργειες που θα γίνουν θα είναι οι εξής

  • Αφαίρεση δίσκων
  • Επαναφορά δίσκων
  • Αφαίρεση και αντικατάσταση με νέους δίσκους
  • Προσθήκη του χαλασμένων δίσκων, μετά την αντικατάσταση τους

2.4.1       Αφαίρεση

Η αφαίρεση των δίσκων και συγκεκριμένα των δύο τελευταίων, γίνεται με την παρακάτω εντολή στον Hyper-V Host

Στο Guest VM, διαπιστώνουμε την βλάβη των δίσκων, ως εξής

PS C:> Get-PhysicalDisk | ft -AutoSize

FriendlyName   CanPool OperationalStatus HealthStatus Usage           Size

————   ——- —————– ———— —–           —-

PhysicalDisk2 False   OK                 Healthy     Auto-Select 19.25 GB

PhysicalDisk3 False   OK                 Healthy     Auto-Select 19.25 GB

PhysicalDisk0 False   OK                 Healthy     Auto-Select   127 GB

PhysicalDisk-1 False   Lost Communication Warning     Auto-Select 19.25 GB

PhysicalDisk1 False   OK                 Healthy     Auto-Select 19.25 GB

PhysicalDisk-1 False   Lost Communication Warning     Auto-Select 19.25 GB

Ενώ έχουμε και εγγραφές στο SystemEventLog

PS C:> Get-EventLog -LogName System -Source Disk | fl

Index             : 649

EntryType         : Warning

InstanceId         : 2147745949

Message           : Disk 5 has been surprise removed.

Category           : (0)

CategoryNumber     : 0

ReplacementStrings : {DeviceHarddisk5DR14, 5}

Source             : disk

TimeGenerated     : 23/6/2014 3:23:44 μμ

TimeWritten       : 23/6/2014 3:23:44 μμ

UserName           :

Index             : 648

EntryType         : Warning

InstanceId         : 2147745949

Message           : Disk 4 has been surprise removed.

Category           : (0)

CategoryNumber     : 0

ReplacementStrings : {…DR13, 4}

Source             : disk

TimeGenerated     : 23/6/2014 3:23:43 μμ

TimeWritten       : 23/6/2014 3:23:43 μμ

UserName           :

Η κατάσταση του Storage Pool είναι η εξής

PS C:> Get-StoragePool | ft -AutoSize

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly

———— —————– ———— ———— ———-

StorPool01   Degraded         Warning     False       False

Primordial   OK               Healthy     True         False

Η κατάσταση του Storage Space είναι η εξής

PS C:> Get-Volume S | Get-Partition | Get-Disk | Get-VirtualDisk | ft -AutoSize

FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size

———— ——————— —————– ———— ————– —-

StorSpace01 Mirror               Incomplete       Warning     False         30 GB

Μετά την αφαίρεση του δίσκου λοιπόν, το Storage Pool είναι Degraded (υποβαθμισμένο) και το Storage Space είναι σε κατάσταση προειδοποίησης (Warning).

Η λειτουργική κατάσταση όμως του Storage Space με βαθμό προστασίας Three-Way Mirroring μετά την αφαίρεση δύο δίσκων, είναι καλή και τα δεδομένα που είναι αποθηκευμένα εκεί είναι διαθέσιμα.

2.4.2 Επαναφορά

Τους δίσκους που αφαιρέσαμε στην προηγούμενη δοκιμή τους επαναφέρουμε με την παρακάτω εντολή στον Hyper-Vhost

Στο Guest VM παρατηρούμε την κατάσταση των φυσικών δίσκων

PS C:> Get-PhysicalDisk | ft -AutoSize

FriendlyName CanPool OperationalStatus HealthStatus Usage           Size

———— ——- —————– ———— —–           —-

PhysicalDisk2 False   OK               Healthy     Auto-Select 19.25 GB

PhysicalDisk3 False   OK              Healthy     Auto-Select 19.25 GB

PhysicalDisk0 False   OK               Healthy     Auto-Select   127 GB

PhysicalDisk4 False   OK               Healthy     Auto-Select 19.25 GB

PhysicalDisk1 False   OK               Healthy     Auto-Select 19.25 GB

PhysicalDisk5 False   OK               Healthy     Auto-Select 19.25 GB

Η κατάσταση του Storage Pool είναι

PS C:> Get-StoragePool | ft -AutoSize

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly

———— —————– ———— ———— ———-

StorPool01   OK               Healthy     False       False

Primordial   OK               Healthy     True         False

Και του Storage Space

PS C:> Get-Volume S | Get-Partition | Get-Disk | Get-VirtualDisk | Get-PhysicalDisk | ft -AutoSize

FriendlyName CanPool OperationalStatus HealthStatus Usage           Size

———— ——- —————– ———— —–           —-

PhysicalDisk2 False   OK               Healthy     Auto-Select 19.25 GB

PhysicalDisk3 False   OK               Healthy     Auto-Select 19.25 GB

PhysicalDisk4 False   OK               Healthy     Auto-Select 19.25 GB

PhysicalDisk1 False   OK               Healthy     Auto-Select 19.25 GB

PhysicalDisk5 False   OK               Healthy     Auto-Select 19.25 GB

Επομένως το Storage Subsystem και συγκεκριμένα τα Storage Spaces, κατάλαβαν την επανασύνδεση των δίσκων, έκαναν όλες τις απαραίτητες ενέργειες αποκατάστασης και η κατάσταση της συστοιχίας είναι και πάλι Healthy.

Όλες αυτές οι ενέργειες έγιναν στο παρασκήνιο, ενώ τα δεδομένα μας ήταν συνεχώς διαθέσιμα.

2.4.3 Αφαίρεση και αντικατάσταση με νέους δίσκους

Στην παράγραφο αυτή θα προσομοιώσουμε την ταυτόχρονη βλάβη δύο δίσκων και την αντικατάσταση τους με νέους.

Για την αφαίρεση των δίσκων, χρησιμοποιούμε την παρακάτω εντολή στον Hyper-VHost

Στο Guest VM διαπιστώνουμε την βλάβη με τους τρόπους που παρουσιάστηκαν στην προηγούμενη παράγραφο 2.4.2 Αφαίρεση.

Η κατάσταση λοιπόν της συστοιχίας είναι η εξής

PS C:> Get-Volume S | Get-Partition | Get-Disk | Get-VirtualDisk | ft -AutoSize

FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size

———— ——————— —————– ———— ————– —-

StorSpace01 Mirror               Incomplete       Warning     False         30 GB

Για να αντικαταστήσουμε τους προηγούμενους δίσκους με νέους, πρέπει πρώτα να τους δημιουργήσουμε. Αυτό γίνεται με την εξής εντολή στον Hyper-VHost

 

Ενώ η προσθήκη στο guest VM γίνεται με την παρακάτω εντολή

 

Οι δύο νέοι δίσκοι εμφανίζονται στο Guest VM, όπως φαίνεται παρακάτω

PS C:> Get-PhysicalDisk | ft -AutoSize

FriendlyName   CanPool OperationalStatus HealthStatus Usage           Size

————   ——- —————– ———— —–           —-

PhysicalDisk5 True   OK                 Healthy     Auto-Select   20 GB

PhysicalDisk2 False   OK                Healthy     Auto-Select 19.25 GB

PhysicalDisk3 False   OK                 Healthy     Auto-Select 19.25 GB

PhysicalDisk0 False   OK                 Healthy     Auto-Select   127 GB

PhysicalDisk-1 False   Lost Communication Warning     Auto-Select 19.25 GB

PhysicalDisk4 True   OK                 Healthy     Auto-Select   20 GB

PhysicalDisk1 False   OK                 Healthy     Auto-Select 19.25 GB

PhysicalDisk-1 False   Lost Communication Warning     Auto-Select 19.25 GB

Οι νέοι δίσκοι είναι έτοιμοι να προστεθούν στο StoragePoolκαι να ξεκινήσει η διαδικασία της αποκατάστασης της συστοιχίας.

Πρώτα όμως θα πρέπει να τοποθετηθούν οι «χαλασμένοι» δίσκοι σε κατάσταση Retired. Αυτό γίνεται στο Guest VM ως εξής

 

PS C:> Get-PhysicalDisk | where OperationalStatus -like Lost* | Set-PhysicalDisk -Usage Retired

PS C:> Get-PhysicalDisk | ft -AutoSize

FriendlyName   CanPool OperationalStatus HealthStatus Usage           Size

————   ——- —————– ———— —–           —-

PhysicalDisk5 True   OK                 Healthy     Auto-Select   20 GB

PhysicalDisk2 False   OK                 Healthy     Auto-Select 19.25 GB

PhysicalDisk3 False   OK                 Healthy     Auto-Select 19.25 GB

PhysicalDisk0 False   OK                 Healthy     Auto-Select   127 GB

PhysicalDisk-1 False   Lost Communication Warning     Retired     19.25 GB

PhysicalDisk4 True   OK                Healthy     Auto-Select   20 GB

PhysicalDisk1 False   OK                 Healthy     Auto-Select 19.25 GB

PhysicalDisk-1 False   Lost Communication Warning     Retired     19.25 GB

Προσθέτουμε τους νέους δίσκους στο Storage Pool με την εντολή στο Guest VM

 

Ενώ για να ξεκινήσει η διαδικασία της αποκατάστασης εκτελούμε την παρακάτω εντολή στο Guest VM

 

Με την ολοκλήρωση της αποκατάστασης, η λειτουργική κατάσταση του Storage Space είναι και πάλι καλή (Healthy).

PS C:>

Get-Volume S | Get-Partition | Get-Disk | Get-VirtualDisk | ft -AutoSize

FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size

———— ——————— —————– ———— ————– —-

StorSpace01 Mirror               OK               Healthy     False         30 GB

 

Ελέγχοντας το StoragePool, παρατηρούμε ότι είναι σε κατάσταση Degraded (υποβαθμισμένο)

PS C:> Get-StoragePool | ft -AutoSize

 

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly

———— —————– ———— ———— ———-

StorPool01   Degraded         Warning     False       False

Primordial   OK               Healthy     True         False

 

Αυτό συμβαίνει γιατί περιλαμβάνει και τους δίσκους που έχουν χαλάσει και έχουν αντικατασταθεί

PS C:> Get-StoragePool -FriendlyName StorPool01 | Get-PhysicalDisk| ft -AutoSize

 FriendlyName   CanPool OperationalStatus HealthStatus Usage           Size

————   ——- —————– ———— —–           —-

PhysicalDisk5 False   OK                 Healthy     Auto-Select 19.25 GB

PhysicalDisk2 False   OK                 Healthy     Auto-Select 19.25 GB

PhysicalDisk3 False   OK                Healthy     Auto-Select 19.25 GB

PhysicalDisk-1 False   Lost Communication Warning     Retired     19.25 GB

PhysicalDisk4 False   OK                 Healthy     Auto-Select 19.25 GB

PhysicalDisk1 False   OK                 Healthy     Auto-Select 19.25 GB

PhysicalDisk-1 False   Lost Communication Warning     Retired     19.25 G

Τους δίσκους αυτούς μπορούμε να τους αφαιρέσουμε από το Storage Pool ως εξής

Μετά την αφαίρεση η κατάσταση του Storage Pool είναι και πάλι Healthy

PS C:> Get-StoragePool | ft -AutoSize

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly

———— —————– ———— ———— ———-

StorPool01   OK                Healthy     False       False

Primordial   OK               Healthy     True         False

 Είναι βέβαια περιττό να αναφέρουμε , ότι όλες αυτές οι ενέργειες γίνονταν στο παρασκήνιο ενώ τα δεδομένα μας είναι διαρκώς διαθέσιμα.

2.4.4       Προσθήκη των χαλασμένου δίσκων μετά την αντικατάσταση τους

Στην δοκιμή αυτή θα εξετάσουμε εάν υπάρχει κάποια επίπτωση στην λειτουργική κατάσταση του Storage Space, στην περίπτωση που οι χαλασμένοι δίσκοι, αφού αφαιρέθηκαν και αντικαταστάθηκαν με νέους, επανασυνδεθούν στο Guest VM.

Ξεκινάμε λοιπόν με την προσθήκη αυτών των δίσκων εκτελώντας στον Hyper-V host την εξής εντολή

Αφού προστεθούν οι δίσκοι, στο Guest VM έχουμε την εξής εικόνα

PS C:> Get-PhysicalDisk | ft -AutoSize

FriendlyName CanPool OperationalStatus     HealthStatus Usage           Size

———— ——- —————–     ———— —–           —-

PhysicalDisk5 False   OK                    Healthy     Auto-Select 19.25 GB

PhysicalDisk2 False   OK                   Healthy     Auto-Select 19.25 GB

PhysicalDisk3 False   OK                   Healthy     Auto-Select 19.25 GB

PhysicalDisk0 False   OK                   Healthy    Auto-Select   127 GB

PhysicalDisk7 False   Unrecognized Metadata Unhealthy   Unknown       20 GB

PhysicalDisk4 False   OK                   Healthy     Auto-Select 19.25 GB

PhysicalDisk1 False   OK                   Healthy     Auto-Select 19.25 GB

PhysicalDisk8 False   Unrecognized Metadata Unhealthy   Unknown       20 GB

Παρατηρούμε λοιπόν ότι οι δίσκοι αναγνωρίζονται ως Unhealthy με Unrecognized Metadata, δεδομένα δηλαδή των οποίων την περιγραφή δεν φαίνεται να την γνωρίζει το VM.

Η επανασύνδεση αυτών των δίσκων δεν είχε καμία απολύτως επίπτωση στην λειτουργική κατάσταση του StorageSpace, όπως φαίνεται και παρακάτω

PS C:> Get-Volume S | Get-Partition | Get-Disk | Get-VirtualDisk | ft -AutoSize

FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size

———— ——————— —————– ———— ————– —-

StorSpace01 Mirror               OK               Healthy     False         30 GB

Στην περίπτωση που θέλουμε να χρησιμοποιήσουμε αυτούς τους δίσκους θα πρέπει να κάνουμε επαναφορά (reset) της κατάστασης τους, ως εξής

 

2.5 Βλάβη τριών δίσκων (3) δίσκων

Όπως αναφέραμε στην αρχή, το Three-Way Mirror επιτρέπει την απρόσκοπτη λειτουργία σε περίπτωση βλάβης μέχρι και δύο δίσκων. Εάν υποστούν βλάβη περισσότεροι από δύο (2) δίσκους τότε αναμένεται η συστοιχία να μην λειτουργεί και τα δεδομένα που είναι αποθηκευμένα επάνω της να μην είναι διαθέσιμα.

Αφαιρώντας λοιπόν τρεις δίσκους, μέσω των παρακάτω εντολών στον Hyper-Vhost

Παρατηρούμε ότι το Storage Pool είναι σε κατάσταση εκτεταμένης βλάβης

PS C:> Get-StoragePool | ft -AutoSize

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly

———— —————– ———— ———— ———-

StorPool01   Read-only         Unhealthy   False       False

Primordial   OK               Healthy     True         False

Ενώ το Storage Space δεν υπάρχει

PS C:> Get-Volume S | Get-Partition | Get-Disk | Get-VirtualDisk | Get-PhysicalDisk | ft -AutoSize

Get-Volume : No MSFT_Volume objects found with property ‘DriveLetter’ equal to ‘S’. Verify the value of the property and r

At line:1 char:1

+ Get-Volume S | Get-Partition | Get-Disk | Get-VirtualDisk | Get-PhysicalDisk | f …

+ ~~~~~~~~~~~~

+ CategoryInfo         : ObjectNotFound: (S:Char) [Get-Volume], CimJobException

+ FullyQualifiedErrorId : CmdletizationQuery_NotFound_DriveLetter,Get-Volume

 Εάν επανασυνδέσουμε τους δίσκους στο VM τότε το Storage Pool και το Storage Space θα έρθουν και πάλι σε καλή λειτουργική κατάσταση.

Leave a Reply

Your email address will not be published. Required fields are marked *

(Spamcheck Enabled)