Недавно я занялся преобразованием пары зеркальных массивов RAID1 в один большой пул хранения. У меня есть два диска по 2 ТБ и два диска по 3 ТБ, всего 10 ТБ, что при зеркалировании должно дать мне 5 ТБ полезного пространства.
Я запустил пул хранения с двух дисков 2 ТБ и одного из двух дисков 3 ТБ, используя последний диск 3 ТБ в качестве резервной копии старых данных для перехода в новое объединенное хранилище. Я настроил виртуальный диск как «зеркальный» поверх нового пула, и у меня было чуть меньше 3 ТБ полезного пространства.
После перемещения резервной копии с дополнительного диска 3 ТБ в новый пул я очистил ее и добавил в пул. Однако сейчас я не могу расширить зеркальный виртуальный диск, чтобы воспользоваться дополнительным пространством.
К сожалению, я не могу публиковать изображения из-за моей стартовой репутации, но мой пул показывает емкость 9,09 ТБ и 2,64 ТБ свободного места. При попытке расширить виртуальный диск максимально допустимый размер составляет 3,22 ТБ, всего лишь на волосок больше, чем до того, как я добавил диск 3 ТБ. Физические диски показывают, что почти ни один из новых дисков не используется, а остальные заполнены.
Я читал в другом месте, что количество столбцов может ограничивать то, как вы можете расширять виртуальные диски, но мое количество столбцов установлено на 1, что должно позволять расширение на любое количество дисков.
Вот вывод PowerShell моего виртуального диска:
ObjectId : {1}\\SERVER\root/Microsoft/Windows/Storage/Providers_v2\SPACES_VirtualDisk.ObjectId
="{fdf741fe-cae8-11e4-80b4-806e6f6e6963}:VD:{d734cabd-cabf-11e4-80bf-000c41ebb9a3}{
d734cad6-cabf-11e4-80bf-000c41ebb9a3}"
PassThroughClass :
PassThroughIds :
PassThroughNamespace :
PassThroughServer :
UniqueId : D6CA34D7BFCAE41180BF000C41EBB9A3
Access : Read/Write
AllocatedSize : 3545495502848
DetachedReason : None
FootprintOnPool : 7090991005696
FriendlyName : McAfee Primary
HealthStatus : Healthy
Interleave : 262144
IsDeduplicationEnabled : False
IsEnclosureAware : False
IsManualAttach : False
IsSnapshot : False
LogicalSectorSize : 4096
Name :
NameFormat :
NumberOfAvailableCopies :
NumberOfColumns : 1
NumberOfDataCopies : 2
OperationalStatus : OK
OtherOperationalStatusDescription :
OtherUsageDescription :
ParityLayout : Unknown
PhysicalDiskRedundancy : 1
PhysicalSectorSize : 4096
ProvisioningType : Fixed
RequestNoSinglePointOfFailure : False
ResiliencySettingName : Mirror
Size : 3545495502848
UniqueIdFormat : Vendor Specific
UniqueIdFormatDescription :
Usage : Other
WriteCacheSize : 0
PSComputerName :
А вот вывод PowerShell для пула:
PS H:\> Get-StoragePool -FriendlyName "McAfee Primary Pool"
FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly
------------ ----------------- ------------ ------------ ----------
McAfee Primary Pool OK Healthy False False
PS H:\> Get-StoragePool -FriendlyName "McAfee Primary Pool" | FL
ObjectId : {1}\\SERVER\root/Microsoft/Windows/Storage/Providers_v2\SPACES_StoragePool.ObjectId
="{fdf741fe-cae8-11e4-80b4-806e6f6e6963}:SP:{d734cabd-cabf-11e4-80bf-000c41ebb9a3}"
PassThroughClass :
PassThroughIds :
PassThroughNamespace :
PassThroughServer :
UniqueId : {d734cabd-cabf-11e4-80bf-000c41ebb9a3}
AllocatedSize : 7092601618432
ClearOnDeallocate : False
EnclosureAwareDefault : False
FriendlyName : McAfee Primary Pool
HealthStatus : Healthy
IsClustered : False
IsPowerProtected : False
IsPrimordial : False
IsReadOnly : False
LogicalSectorSize : 4096
Name :
OperationalStatus : OK
OtherOperationalStatusDescription :
OtherUsageDescription :
PhysicalSectorSize : 4096
ProvisioningTypeDefault : Fixed
ReadOnlyReason : None
RepairPolicy : Parallel
ResiliencySettingNameDefault : Mirror
RetireMissingPhysicalDisks : Auto
Size : 9998683865088
SupportedProvisioningTypes : {Thin, Fixed}
SupportsDeduplication : False
ThinProvisioningAlertThresholds : {70}
Usage : Other
Version : Windows Server 2012 R2
WriteCacheSizeDefault : Auto
WriteCacheSizeMax : 107374182400
WriteCacheSizeMin : 0
PSComputerName :
FileSystem : Unknown
Есть идеи, как я могу вернуть себе место?
Я столкнулся с той же проблемой. Комментарий Неографа в данном случае неуместен, он говорит о традиционном зеркальном отображении дисков Windows Server, а не о дисковых пространствах. Thin Provisioning в этом случае также не имеет значения. Вы можете использовать это как обходной путь, но я думаю, что более осторожное планирование будет лучше как с точки зрения бюджета, так и с точки зрения производительности, просто прочтите, и вы увидите.
После некоторого времени, потраченного на чтение и экспериментирование с Server Manager, я думаю, что понял, что происходит. Дело в том, что в SS есть такая штука, которая называется «колонны». Это определяет, на скольких дисках чередуются данные. Если ваш виртуальный диск был создан с 4 столбцами, данные распределяются только по 4 дискам с просто макет (например, RAID0) или 8 дисков с Двустороннее зеркало (т.е. RAID10), но не все из них. Это может сбить с толку тех, кто пришел из традиционного HW RAID (например, я), но так оно и есть.
Примечание: с этого момента я буду называть количество столбцов размером столбца, потому что для меня это гораздо более интуитивно понятно.
Так или иначе, размер столбца также определяет, как вы можете расширить виртуальный диск. Очевидно, что если ваш текущий виртуальный диск имеет группы из 4 дисков (= размер столбца равен 4), вы не можете добавить «половину» группы, добавив 2 новых диска. Таким образом, количество дисков, необходимых для расширения, в основном
n x NumberOfColumns x NumberOfDataCopies
Таким образом, если у вас есть двустороннее зеркало и размер столбца равен 1, вы можете добавлять только пары дисков. Если ваше зеркало имеет размер столбца 3, вы можете добавить только 6, 12, 18 или около того дисков.
Насколько я понимаю, размер столбца по умолчанию для виртуального диска - это количество дисков, разделенное на количество копий, но не более 8, например если у вас 10 дисков в двустороннем зеркале, размер столбца будет 5, если у вас 16 дисков, размер столбца будет 8, но если у вас 24 диска, размер столбца по-прежнему будет 8 - по умолчанию. Примечание: вы можете проверить эти числа в свойствах виртуального диска (Число столбцов и NumberOfDataCopies свойства undes подробности).
А вот и головная боль:
Итак, чтобы это было правильно настроено, вам нужно удалить:
т.е. все. В качестве примечания, размер полосы (называемый Размер чередования в SS) также недоступен, если использование диска установлено автоматически.
Теперь вы можете задаться вопросом, зачем кому-то использовать для размера столбца что-то большее, чем 1. Ответ, конечно, производительность. Чем больше размер столбца, тем выше производительность. На самом деле, это может быть довольно драматично, вот тест с размером столбца 1 и 6:
Планировать нужно с умом. Используйте столбец большого размера только в том случае, если вы точно знаете, что сможете позволить себе приобрести большое количество дисков, когда на диске закончится место.
Несколько хороших статей по теме:
Я пока не могу проголосовать против, но хочу подчеркнуть, что основной информация в посте bviktors неверна - он по-прежнему думать в Рейд говоря вы не можете расширить половину дисковой группы:
Следовательно, чтобы расширить пул хранения из 4 столбцов - вам не нужно Добавить 4 диска - нужно только убедиться, что у вас есть 4 диска с оставшимся дисковым пространством в пуле!
Итак, если 1 заполнен, но у 3 осталось свободное место, пул снова станет работоспособным после добавления Один Диск!
(Это позволяет смешивать емкость по желанию - нет необходимости поддерживать ограничение рейда равных размеров диска)
Как Лучшая практика, вы всегда должны добавлять Больше диски, чем #NumberOfDataCopies * #NumberofColumns было бы:
Рассмотрим диск с двумя колонками и двумя копиями - для этого требуется минимум из 4 дисков. Если вы потеряете один диск, вы все равно сможете получить доступ к своим данным, но вы больше не сможете ничего писать, потому что у вас не осталось 4 столбцов, где можно было бы хранить данные!
Предположим, вы бы добавили 5 дисков в этот пул (который будет использоваться в зависимости от размера подсистемой дисковых пространств, заполненный наилучшим образом, чтобы все диски работали на 100% одновременно) - потеря одного диска по-прежнему сохраняет ваши данных - и поддерживает работу вашего пула для новых записей, потому что вы по-прежнему осталось минимум 4 столбца.
Кроме того, это позволяет вам немедленно перестроить пул в случае отказа одного диска, без необходимости сначала покупать новый диск!
Set-PhysicalDisk -FriendlyName "BrokenDisk" -Usage Retired
Get-PhysicalDisk -FriendlyName "BrokenDisk" | Get-VirtualDisk | Repair-VirtualDisk -AsJob
Теперь данные будут «перемещены» на оставшиеся диски, если останется достаточно места. После перестройки:
$disk = Get-PhysicalDisk -FriendlyName "BrokenDisk"
Remove-PhysicalDisk -StoragePoolFriendlyName "My Pool" -PhysicalDisks $disk
(Вы можете использовать тем же команды для вывода «функциональных» дисков из эксплуатации и перемещения данных на другие диски - это позволит что-то подобное перераспределение данных, как только вы добавляете диск - но в конце у вас всегда будет один диск «пустой». Однако в вашем случае это не сработает из-за небольшого количества дисков. Например, в пуле из 10 дисков вы можете освободить диск объемом 2 ТБ, распределив всего 200 МБ на каждый другой диск. Повторный запуск операции теперь будет записывать предпочтение на пустой диск. Storage Spaces в основном всегда говорит: «Я должен написать: 8 блоков (NumberOfColumns * NumberOfDataCopies) размером 64 КБ (Interleave / Number of Columns) каждый - дайте мне 8 отдельных дисков из 10 дисков с наименьшим процентным использованием, так что я могу закинуть туда данные! ")
В вашем примере упоминается:
Я запустил пул хранения с двух дисков 2 ТБ и одного из двух дисков 3 ТБ, используя последний диск 3 ТБ в качестве резервной копии старых данных для перехода в новое объединенное хранилище. Я настроил виртуальный диск как «зеркальный» поверх нового пула, и у меня было чуть меньше 3 ТБ полезного пространства.
Вы начали с 2 + 2 + 3 ТБ - в дисковых пространствах теперь будет помещаться примерно на 1/3 больше данных на диск 3 ТБ, чем на другие диски, в то время как поддержание необходимое зеркало, чтобы они заполнялись равномерно.
(«2 копии данных, 1 столбец: я должен написать: 2 блока (NumberOfColumns * NumberOfDataCopies) размером 256 КБ (чередование / количество столбцов) каждый - дайте мне 2 отдельных диска из 3 дисков с наименьшим процентным использованием , так что я могу закинуть туда данные! ")
Физические диски показывают, что почти ни один из новых дисков не используется, а остальные заполнены.
Теперь ваши диски «почти заполнены», и вы добавили «новый» диск:
disk | size | usage
1 | 2TB | 1.9 TB
2 | 2TB | 1.9 TB
3 | 3TB | 2.8 TB
4 | 3TB | 0 TB
Теперь помните, что у вас есть зеркальный виртуальный диск: если вы собираетесь расширить этот диск, для дисковых пространств потребуется два, по крайней мере, 1 МБ на двух дисках, чтобы расширить виртуальный диск на 1 МБ
Теперь ваш пул будет делать следующее: КАЖДЫЕ записанные данные поступают на диск 4 - и каждая записанная КОПИЯ идет на 1,2 или 3, так как это даст вам большинство доступное дисковое пространство.
При расширении (фиксированного) this будет вычислено следующее уравнение:
MAX_EXTEND = Math.MIN(100+100+200 , 3000) = 400 MB
А с тонким резервом может быть расширен за пределы доступного физического размера - он просто перестанет принимать данные, как только будет записано 400 МБ!
Следовательно, при свободном дисковом пространстве 100 + 100 + 200 ваш виртуальный диск может быть только вырос на 400 МБ, потому что тогда диски 1,2,3 заполнены - а на диске 4 осталось 2,6 ТБ. Больше нет места для хранения двойного зеркала.
Теперь вам просто нужно добавить 1 диск - скажем, 8 ТБ, чтобы иметь возможность снова расширить виртуальный диск на 2,6 ТБ (2,6 на диске 4 и 2,6 на «новом диске 8 ТБ»).