Jump to content
  • entries
    57
  • comments
    2
  • views
    22858

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


kavag

448 views

Γενικά

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

  • Two Way Mirroring
  • Three Way Mirroring και
  • Parity

Υπάρχει μια αντιστοιχία των παραπάνω επιπέδων ασφαλείας με τα γνωστά μας RAID levels, αλλά όχι απόλυτη μια που, όπως θα δούμε, μπορούμε να δημιουργήσουμε ένα Two-Way Mirror με χρήση τριών (3) δίσκων.

Ένα πλήθος με τις συνηθέστερες ερωτήσεις και τις απαντήσεις τους σχετικά με τα Storage Spaces θα βρείτε στο παρακάτω σύνδεσμο :

Storage Spaces Frequently Asked Questions (FAQ)

Ενώ, πολύ χρήσιμος είναι και ο παρακάτω πίνακας στον οποίο παρουσιάζεται ο συσχετισμός των επιπέδων ασφαλείας των Storage Spaces με τον ελάχιστο απαιτούμενο αριθμό δίσκων.Resiliency typeMinimum number of columnsColumn-to-disk correlationMinimum number of disksTwo-way mirror

1

1:2

2

Three-way mirror

1

1:3

5

Parity

3

1:1

3

Για την δημιουργία των Storage Spaces και τους ελέγχους της αντοχής τους, την προσομοίωση δηλαδή της βλάβης, θα χρησιμοποιήσουμε το αγαπημένο μας εργαλείο, το PowerShell, ενώ όλες οι δοκιμές θα διεξαχθούν σε εργαστηριακό περιβάλλον που περιλαμβάνει έναν Windows Server 2012R2 Hyper-V host και ένα Guest VM με Windows Server 2012R21. Έλεγχος αντοχής Two Way Mirroring1.1 Δημιουργία δίσκων

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

<span style="font-family: verdana,geneva;"># Create three VHDX1..3|%{New-VHD -Path "C:Virtual MachinesW2012R2Virtual Hard DisksDisk-$_.vhdx" -LogicalSectorSizeBytes 4096 -PhysicalSectorSizeBytes 4KB -SizeBytes 20GB -Dynamic}# Attach VHDX disks to a VM1..3|%{Add-VMHardDiskDrive -VMName W2012R2 -Path "C:Virtual MachinesW2012R2Virtual Hard DisksDisk-$_.vhdx" -ControllerType SCSI}</span>

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

Το Storage Space υλοποιείται επάνω σε ένα Storage Pool, που το δημιουργούμε με τις παρακάτω εντολές

<span style="font-family: verdana,geneva;"># Create Storage Pool$disks = Get-PhysicalDisk -CanPool $true$StorSubSys  =Get-StorageSubSystem -FriendlyName *Spaces*New-StoragePool -FriendlyName StorPool-01 -PhysicalDisks $disks -StorageSubSystemFriendlyName $StorSubSys.FriendlyName</span>

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

Έχοντας λοιπόν δημιουργήσει το απαιτούμενο Storage Pool, υλοποιούμε το Two-Way Μirror Storage Space, με το απαιτούμενο partition και το drive letter της επιλογής μας, με τις παρακάτω εντολές

<span style="font-family: verdana,geneva;"># Create Storage SpaceNew-VirtualDisk-FriendlyNameStorSpace-01-ResiliencySettingNameMirror-StoragePoolFriendlyNameStorPool-01-UseMaximumSize$DiskNo= (Get-VirtualDisk-FriendlyNameStorSpace-01|Get-Disk).NumberSet-Disk-Number$DiskNo-IsReadOnly0Set-Disk-Number$DiskNo-IsOffline0Initialize-Disk-Number$DiskNo-PartitionStyleMBRNew-Partition-DiskNumber$DiskNo-DriveLetterS-UseMaximumSizeInitialize-Volume-DriveLetterS-FileSystemNTFS-Confirm:$false</span>

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

<span style="font-family: verdana,geneva;"># Display Physical Disks that construct a volumeGet-VolumeS|Get-Partition|Get-Disk|Get-VirtualDisk|Get-PhysicalDisk</span>

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

FriendlyName CanPool OperationalStatus HealthStatus Usage Size

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

PhysicalDisk3 False OK Healthy Auto-Select 19.25 GB

PhysicalDisk1 False OK Healthy Auto-Select 19.25 GB

PhysicalDisk2 False OK Healthy Auto-Select 19.25 GB

1.4 Βλάβη ενός δίσκου

Θα προσομοιώσουμε τις εξής βλάβες ενός από τους δίσκους που απαρτίζουν την συστοιχία και θα παρατηρήσουμε τα αποτελέσματα στο Storage Pool και στο Storage Space.

  1. Αφαίρεση
  2. Επαναφορά
  3. Αφαίρεση και αντικατάσταση με νέο
  4. Προσθήκη του χαλασμένου δίσκου μετά την αντικατάσταση του

1.4.1 Αφαίρεση

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

<span style="font-family: verdana,geneva;"># Remove DiskRemove-VMHardDiskDrive-VMNameW2012R2-ControllerNumber0-ControllerLocation3-ControllerTypeSCSI</span>

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

PS C:Windowssystem32> Get-PhysicalDisk | ft -AutoSize

FriendlyName CanPool OperationalStatus HealthStatus Usage Size

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

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

PhysicalDisk1 False OK Healthy Auto-Select 19.25 GB

PhysicalDisk2 False OK Healthy Auto-Select 19.25 GB

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

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

Index : 456

EntryType : Warning

InstanceId : 2147745949

Message : Disk 3 has been surprise removed.

Category : (0)

CategoryNumber : 0

ReplacementStrings : {DR3, 3}

Source : disk

TimeGenerated : 12/4/2014 9:22:20 πμ

TimeWritten : 12/4/2014 9:22:20 πμ

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

PS C:Windowssystem32> Get-StoragePool | ft -AutoSize

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly

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

Primordial OK Healthy True False

StorPool-01 Degraded Warning False False

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

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

FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size

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

StorSpace-01 Mirror Incomplete Warning False 27 GB

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

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

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

<span style="font-family: verdana,geneva;">Add-VMHardDiskDrive-VMNameW2012R2-Path'C:Virtual MachinesW2012R2Virtual Hard DisksDisk-3.vhdx'-ControllerTypeSCSI-ControllerLocation3</span>

Στο Guest VM παρατηρούμε ότι ο δίσκος έχει επανέλθει

PS C:Windowssystem32> Get-PhysicalDisk | ft -AutoSize

FriendlyName CanPool OperationalStatus HealthStatus Usage Size

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

PhysicalDisk3 False OK Healthy Auto-Select 19.25 GB

PhysicalDisk1 False OK Healthy Auto-Select 19.25 GB

PhysicalDisk2 False OK Healthy Auto-Select 19.25 GB

PhysicalDisk0 False OK Healthy Auto-Select 50 GB

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

PS C:Windowssystem32> Get-StoragePool | ft -AutoSize

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly

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

Primordial OK Healthy True False

StorPool-01 OK Healthy False False

Και του Storage Space

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

FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size

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

StorSpace-01 Mirror OK Healthy False 27 GB

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

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

1.4.3 Αφαίρεση και αντικατάσταση με νέο

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

<span style="font-family: verdana,geneva;">Remove-VMHardDiskDrive-VMNameW2012R2-ControllerNumber0-ControllerLocation2-ControllerTypeSCSI</span>

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

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

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

FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size

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

StorSpace-01 Mirror Incomplete Warning False 27 GB

Προσθέτουμε τον νέο δίσκο στην ίδια θέση που είχε και ο χαλασμένος που αφαιρέθηκε, με τις εξής εντολές στον Hyper-V Host

<span style="font-family: verdana,geneva;">New-vhd-Path'C:Virtual MachinesW2012R2Virtual Hard DisksDisk-2-Repair.vhdx'-LogicalSectorSizeBytes4096-PhysicalSectorSizeBytes4KB-SizeBytes20GB-DynamicAdd-VMHardDiskDrive-VMNameW2012R2-Path'C:Virtual MachinesW2012R2Virtual Hard DisksDisk-2-Repair.vhdx'-ControllerTypeSCSI-ControllerLocation2</span>

Βλέπουμε τον νέο δίσκο στο guest VM

PS C:Windowssystem32> Get-PhysicalDisk | ft -AutoSize

FriendlyName CanPool OperationalStatus HealthStatus Usage Size

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

PhysicalDisk3 False OK Healthy 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

PhysicalDisk0 False OK Healthy Auto-Select 50 GB

PhysicalDisk2 True OK Healthy Auto-Select 20 GB

Για να ξεκινήσει η επιδιόρθωση της συστοιχίας θα πρέπει να αφαιρεθεί ο χαλασμένος δίσκος από το Storage Pool και να προστεθεί ο καινούριος. Αυτό γίνεται με τι εξής εντολές στο Guest VM

<span style="font-family: verdana,geneva;">Get-PhysicalDisk|whereOperationalStatus-likeLost*|Set-PhysicalDisk-UsageRetired</span>

PS C:Windowssystem32> Get-PhysicalDisk | ft -AutoSize

FriendlyName CanPool OperationalStatus HealthStatus Usage Size

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

PhysicalDisk3 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 GB

PhysicalDisk0 False OK Healthy Auto-Select 50 GB

PhysicalDisk2 True OK Healthy Auto-Select 20 GB

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

<span style="font-family: verdana,geneva;">Add-PhysicalDisk-StoragePoolFriendlyNameStorPool-01-PhysicalDisks (Get-PhysicalDisk-CanPool$true)</span>

Για να ξεκινήσει η διαδικασία της αποκατάστασης εκτελούμε την εντολή

<span style="font-family: verdana,geneva;">Repair-VirtualDisk-FriendlyNameStorSpace-01</span>

Μετά την ολοκλήρωση της αποκατάστασης ελέγχουμε την λειτουργική κατάσταση του Storage Space (συστοιχία) ως εξής

PS C:Windowssystem32>

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

FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size

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

StorSpace-01 Mirror OK Healthy False 27 GB

Και του Storage Pool

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

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly

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

StorPool-01 Degraded Warning False False

To storage Pool είναι σε κατάσταση Degraded γιατί περιλαμβάνει τον δίσκο που έχει χαλάσει

PS C:Windowssystem32> Get-StoragePool -FriendlyName StorPool-01 | Get-PhysicalDisk | ft -AutoSize

FriendlyName CanPool OperationalStatus HealthStatus Usage Size

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

PhysicalDisk3 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 GB

PhysicalDisk2 False OK Healthy Auto-Select 19.25 GB

Αφαιρώντας λοιπόν αυτόν τον δίσκο

<span style="font-family: verdana,geneva;">Repair-VirtualDisk-FriendlyNameStorSpace-01</span>

Η κατάσταση της συστοιχίας γίνεται Healthy

PS C:Windowssystem32> Get-StoragePool | ft -AutoSize

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly

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

Primordial OK Healthy True False

StorPool-01 OK Healthy False False

Όλες αυτές οι ενέργειες έγιναν στο παρασκήνιο ενώ τα δεδομένα μας ήταν διαρκώς διαθέσιμα.1.4.4 Προσθήκη του χαλασμένου δίσκου μετά την αντικατάσταση του

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

Προσθέτουμε λοιπόν πάλι τον δίσκο, εκτελώντας στον Hyper-V host

<span style="font-family: verdana,geneva;">Add-VMHardDiskDrive-VMNameW2012R2-Path'C:Virtual MachinesW2012R2Virtual Hard DisksDisk-2.vhdx'-ControllerTypeSCSI</span>

Με την προσθήκη του δίσκου στο VM έχουμε την εξής εικόνα

PS C:Windowssystem32> Get-PhysicalDisk | ft -AutoSize

FriendlyName CanPool OperationalStatus HealthStatus Usage Size

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

PhysicalDisk3 False OK Healthy Auto-Select 19.25 GB

PhysicalDisk1 False OK Healthy Auto-Select 19.25 GB

PhysicalDisk5 False Unrecognized Metadata Unhealthy Unknown 20 GB

PhysicalDisk0 False OK Healthy Auto-Select 50 GB

PhysicalDisk2 False OK Healthy Auto-Select 19.25 GB

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

Για το storage Pool και την συστοιχία δεν έχει αλλάξει τίποτα και είναι σε κατάσταση Healthy

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

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly

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

StorPool-01 OK Healthy False False

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

FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size

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

StorSpace-01 Mirror OK Healthy False 27 GB

Εάν θέλουμε να χρησιμοποιήσουμε αυτόν τον δίσκο, θα πρέπει να γίνει επαναφορά (reset) της κατάστασης του.

Get-PhysicalDisk|whereOperationalStatus-likeUnrecognized*|Reset-PhysicalDisk

Παρατηρούμε λοιπόν ότι η προσθήκη του παλιού δίσκου που ενώ υπήρχε στο Storage Pool και στο Storage Space αφαιρέθηκε και αντικαταστάθηκε με νέο δεν έχει κάποια επίπτωση στην λειτουργία του Storage Space (συστοιχία).1.5 Αφαίρεση δύο (2) δίσκων

To Storage Space που εξετάζουμε είναι τύπου Two-Way Mirror. Αυτός ο τύπος συστοιχίας επιτρέπει την ομαλή λειτουργία σε περίπτωση βλάβης ενός (1) από τους δίσκους που την απαρτίζουν. Εάν υποστούν βλάβη δύο από τους δίσκους της τότε αναμένεται η συστοιχία να μην λειτουργεί και τα δεδομένα που είναι αποθηκευμένα επάνω της να μην είναι διαθέσιμα.

Ετσι εάν αφαιρέσουμε δύο δίσκους, μέσω των παρακάτω εντολών στον Hyper-V host

<span style="font-family: verdana,geneva;">Remove-VMHardDiskDrive-VMNameW2012R2-ControllerNumber0-ControllerLocation1-ControllerTypeSCSIRemove-VMHardDiskDrive-VMNameW2012R2-ControllerNumber0-ControllerLocation2-ControllerTypeSCSI</span>

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

PS C:Windowssystem32> Get-StoragePool | ft -AutoSize

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly

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

Primordial OK Healthy True False

StorPool-01 Read-only Unhealthy False False

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

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

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

value of the property and retry.

At line:1 char:1

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

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

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

+ FullyQualifiedErrorId : CmdletizationQuery_NotFound_DriveLetter,Get-Volume

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

The post Έλεγχος αντοχής των Storage Spaces με την χρήση του PowerShell (Two-Way Mirror) appeared first on Vaggelis Kappas.

 

Source

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...