Windows server пул дисков

Содержание
  1. Общие сведения о кворуме кластеров и пулов Understanding cluster and pool quorum
  2. Общие сведения о кворуме кластера Cluster quorum overview
  3. Рекомендации по кворуму кластера Cluster quorum recommendations
  4. Как работает кворум кластера How cluster quorum works
  5. Динамический следящий сервер Dynamic witness
  6. Динамическое поведение кворума Dynamic quorum behavior
  7. Примеры Examples
  8. Два узла без следящего сервера. Two nodes without a witness.
  9. Два узла с следящим сервером. Two nodes with a witness.
  10. Три узла без следящего сервера. Three nodes without a witness.
  11. Три узла с следящим сервером. Three nodes with a witness.
  12. Четыре узла без следящего сервера Four nodes without a witness
  13. Четыре узла с следящим сервером. Four nodes with a witness.
  14. Пять узлов и больше. Five nodes and beyond.
  15. Типы следящего сервера кворума Quorum witness types
  16. Общие сведения о кворуме пула Pool quorum overview
  17. Как работает кворум пула How pool quorum works
  18. Примеры Examples
  19. Четыре узла с симметричным макетом. Four nodes with a symmetrical layout.
  20. Четыре узла с симметричным разметкой и сбоем диска. Four nodes with a symmetrical layout and drive failure.
  21. Четыре узла с несимметричным макетом. Four nodes with a non-symmetrical layout.

Общие сведения о кворуме кластеров и пулов Understanding cluster and pool quorum

Применяется к: Windows Server 2019, Windows Server 2016 Applies to: Windows Server 2019, Windows Server 2016

Отказоустойчивая кластеризация Windows Server обеспечивает высокий уровень доступности для рабочих нагрузок. Windows Server Failover Clustering provides high availability for workloads. Эти ресурсы считаются высокодоступными, если узлы, на которых размещены ресурсы, работают; Однако кластер обычно требует более половины выполняемых узлов, что называется наличием кворума. These resources are considered highly available if the nodes that host resources are up; however, the cluster generally requires more than half the nodes to be running, which is known as having quorum.

Кворум предназначен для предотвращения сценариев с разделением , которые могут возникнуть, если в сети есть секция и подмножества узлов не могут взаимодействовать друг с другом. Quorum is designed to prevent split-brain scenarios which can happen when there is a partition in the network and subsets of nodes cannot communicate with each other. Это может привести к тому, что оба подмножества узлов пытаются владеть рабочей нагрузкой и запись на тот же диск, что может привести к многочисленным проблемам. This can cause both subsets of nodes to try to own the workload and write to the same disk which can lead to numerous problems. Однако это предотвращается концепцией кворума отказоустойчивой кластеризации, которая приводит к тому, что только одна из этих групп узлов продолжает работать, поэтому только одна из этих групп останется в сети. However, this is prevented with Failover Clustering’s concept of quorum which forces only one of these groups of nodes to continue running, so only one of these groups will stay online.

Кворум определяет количество сбоев, в течение которых кластер может оставаться в сети. Quorum determines the number of failures that the cluster can sustain while still remaining online. Кворум предназначен для решения проблемы связи между подмножествами узлов кластера, так что несколько серверов не пытаются одновременно разместить группу ресурсов и записывать их на один и тот же диск. Quorum is designed to handle the scenario when there is a problem with communication between subsets of cluster nodes, so that multiple servers don’t try to simultaneously host a resource group and write to the same disk at the same time. Используя эту концепцию кворума, кластер принудительно останавливает службу кластеров в одном из подмножеств узлов, чтобы убедиться, что существует только один истинный владелец определенной группы ресурсов. By having this concept of quorum, the cluster will force the cluster service to stop in one of the subsets of nodes to ensure that there is only one true owner of a particular resource group. После того как остановленные узлы снова взаимодействуют с основной группой узлов, они автоматически повторно присоединяются к кластеру и запускают службу кластеров. Once nodes which have been stopped can once again communicate with the main group of nodes, they will automatically rejoin the cluster and start their cluster service.

В Windows Server 2019 и Windows Server 2016 есть два компонента системы с собственными механизмами кворума: In Windows Server 2019 and Windows Server 2016, there are two components of the system that have their own quorum mechanisms:

  • Кворум кластера. это работает на уровне кластера (т. е. Вы можете потерять узлы и оставить кластер неизменным). Cluster Quorum: This operates at the cluster level (i.e. you can lose nodes and have the cluster stay up)
  • Кворум пула. это происходит на уровне пула, если включен Локальные дисковые пространства (т. е. можно потерять узлы и диски, чтобы они оставались в пуле). Pool Quorum: This operates on the pool level when Storage Spaces Direct is enabled (i.e. you can lose nodes and drives and have the pool stay up). Пулы носителей были разработаны для использования как в кластеризованных, так и в некластеризованных сценариях, поэтому у них есть другой механизм кворума. Storage pools were designed to be used in both clustered and non-clustered scenarios, which is why they have a different quorum mechanism.

Общие сведения о кворуме кластера Cluster quorum overview

В таблице ниже приводятся общие сведения о результатах кворума кластера для каждого сценария. The table below gives an overview of the Cluster Quorum outcomes per scenario:

Узлы сервера Server nodes Может содерживаться сбоя одного узла сервера Can survive one server node failure Может сосуществовать один сбой узла сервера, а затем другой Can survive one server node failure, then another Может содерживаться двух сбоев одновременного узла сервера Can survive two simultaneous server node failures
2 2 50/50 50/50 Нет No Нет No
2 + следящий сервер 2 + Witness да Yes Нет No Нет No
3 3 Да Yes 50/50 50/50 Нет No
3 + следящий сервер 3 + Witness да Yes да Yes Нет No
4 4 Да Yes да Yes 50/50 50/50
4 + следящий сервер 4 + Witness да Yes да Yes да Yes
5 и выше 5 and above да Yes да Yes да Yes

Рекомендации по кворуму кластера Cluster quorum recommendations

  • При наличии двух узлов требуетсяследящий сервер. If you have two nodes, a witness is required.
  • При наличии трех или четырех узлов настоятельно рекомендуется использоватьследящий сервер. If you have three or four nodes, witness is strongly recommended.
  • Если у вас есть доступ к Интернету, используйте ** следящий сервер облака .** If you have Internet access, use a cloud witness
  • Если вы находитесь в среде ИТ с другими компьютерами и общими папками, используйте файловый ресурс-свидетель If you’re in an IT environment with other machines and file shares, use a file share witness

Как работает кворум кластера How cluster quorum works

Если происходит сбой узлов или если какое-либо подмножество узлов теряет связь с другим подмножеством, остальные узлы должны убедиться, что они составляют большую часть кластера, чтобы остаться в сети. When nodes fail, or when some subset of nodes loses contact with another subset, surviving nodes need to verify that they constitute the majority of the cluster to remain online. Если они не могут проверить, они будут переведены в автономный режим. If they can’t verify that, they’ll go offline.

Но концепция большинства работает только в том случае, если общее число узлов в кластере нечетное (например, три узла в кластере из пяти узлов). But the concept of majority only works cleanly when the total number of nodes in the cluster is odd (for example, three nodes in a five node cluster). Итак, как насчет кластеров с четным числом узлов (скажем, кластером из четырех узлов)? So, what about clusters with an even number of nodes (say, a four node cluster)?

Существует два способа, с помощью которых кластер может сделать Общее число нечетных голосов: There are two ways the cluster can make the total number of votes odd:

  1. Во-первых, его up можно добавить, добавив следящий сервер с дополнительным проголосуем. First, it can go up one by adding a witness with an extra vote. Для этого требуется настройка пользователя. This requires user set-up.
  2. Кроме того, он может Перейти на другой узел, отменив один несчастливый голос узла (происходит автоматически по мере необходимости). Or, it can go down one by zeroing one unlucky node’s vote (happens automatically as needed).

Когда работоспособные узлы успешно проверяют, что они являются большинством, определение большинства обновляется так, чтобы быть в выжившие объекты поколений. Whenever surviving nodes successfully verify they are the majority, the definition of majority is updated to be among just the survivors. Это позволяет кластеру потерять один узел, затем другой, другой и т. д. This allows the cluster to lose one node, then another, then another, and so forth. Эта концепция общего числа голосов , адаптированных после последовательных сбоев, называется динамическим кворумом. This concept of the total number of votes adapting after successive failures is known as Dynamic quorum.

Динамический следящий сервер Dynamic witness

Динамический следящий сервер переключает голос следящего сервера, чтобы убедиться, что Общее число голосов нечетное. Dynamic witness toggles the vote of the witness to make sure that the total number of votes is odd. Если число голосов нечетное, следящий сервер не имеет голоса. If there are an odd number of votes, the witness doesn’t have a vote. Если имеется четное число голосов, следящий сервер имеет голосование. If there is an even number of votes, the witness has a vote. Динамический следящий сервер значительно снижает риск отказа кластера из-за сбоя следящего сервера. Dynamic witness significantly reduces the risk that the cluster will go down because of witness failure. Кластер принимает решение, следует ли использовать голосование следящего сервера в зависимости от числа узлов голосования, доступных в кластере. The cluster decides whether to use the witness vote based on the number of voting nodes that are available in the cluster.

Динамический кворум работает с динамическим следящим сервером, как описано ниже. Dynamic quorum works with Dynamic witness in the way described below.

Динамическое поведение кворума Dynamic quorum behavior

  • Если у вас четное число узлов и следящий сервер, один узел получает свой голос, равный нулю. If you have an even number of nodes and no witness, one node gets its vote zeroed. Например, только три из четырех узлов получают голоса, поэтому Общее число голосов равно трем, а два выжившие объекты поколений с голосовыми данными считаются большинством. For example, only three of the four nodes get votes, so the total number of votes is three, and two survivors with votes are considered a majority.
  • При наличии нечетного числа узлов и отсутствия следящего сервера все они получают голоса. If you have an odd number of nodes and no witness, they all get votes.
  • Если у вас четное число узлов плюс следящий сервер, то в нембудет нечетные голос. If you have an even number of nodes plus witness, the witness votes, so the total is odd.
  • При наличии нечетного числа узлов и следящего сервера следящий сервер не проголосует. If you have an odd number of nodes plus witness, the witness doesn’t vote.

Динамический кворум позволяет назначать голосование на узел динамически, чтобы избежать потери большинства голосов и разрешать кластеру работать с одним узлом (который называется Last-Man). Dynamic quorum enables the ability to assign a vote to a node dynamically to avoid losing the majority of votes and to allow the cluster to run with one node (known as last-man standing). Возьмем в качестве примера кластер из четырех узлов. Let’s take a four-node cluster as an example. Предположим, что для кворума требуется 3 голоса. Assume that quorum requires 3 votes.

В этом случае кластер был бы отключен, если вы потеряли два узла. In this case, the cluster would have gone down if you lost two nodes.

Однако динамический кворум предотвращает возникновение этого события. However, dynamic quorum prevents this from happening. Общее число голосов , необходимых для кворума, теперь определяется на основе числа доступных узлов. The total number of votes required for quorum is now determined based on the number of nodes available. Таким образом, при использовании динамического кворума кластер будет оставаться даже в случае утери трех узлов. So, with dynamic quorum, the cluster will stay up even if you lose three nodes.

Приведенный выше сценарий применяется к общему кластеру, в котором не включена Локальные дисковые пространства. The above scenario applies to a general cluster that doesn’t have Storage Spaces Direct enabled. Однако при включении Локальные дисковые пространства кластер может поддерживать только два сбоя узла. However, when Storage Spaces Direct is enabled, the cluster can only support two node failures. Это объясняется в разделе кворум пула. This is explained more in the pool quorum section.

Примеры Examples

Два узла без следящего сервера. Two nodes without a witness.

Голосование в одном узле обнуляется, поэтому голосом большинства выдается всего один голос. One node’s vote is zeroed, so the majority vote is determined out of a total of 1 vote. Если узел, не использующий голосование, неожиданно выходит из строя, выжившую» имеет 1/1, а кластер остается неработоспособным. If the non-voting node goes down unexpectedly, the survivor has 1/1 and the cluster survives. Если узел голосования неожиданно выходит из строя, выжившую» имеет 0/1, а кластер выходит из строя. If the voting node goes down unexpectedly, the survivor has 0/1 and the cluster goes down. Если узел голосования правильно включен, голосование передается на другой узел, и кластер остается неустойчивым. If the voting node is gracefully powered down, the vote is transferred to the other node, and the cluster survives. Именно поэтому важно настроить следящий сервер. This is why it’s critical to configure a witness.

  • Может содерживаться одного сбоя сервера: 50% шансов. Can survive one server failure: Fifty percent chance.
  • Может выдерживать один сбой сервера, а второй — нет. Can survive one server failure, then another: No.
  • Может выдерживать две ошибки сервера одновременно: нет. Can survive two server failures at once: No.

Два узла с следящим сервером. Two nodes with a witness.

Оба узла проголосуют и голоса следящего сервера, поэтому большинство из них выдается из 3 голосов. Both nodes vote, plus the witness votes, so the majority is determined out of a total of 3 votes. Если один из узлов выходит из строя, выжившую» имеет 2/3, а кластер остается неработоспособным. If either node goes down, the survivor has 2/3 and the cluster survives.

  • Может содерживаться одного сбоя сервера: Да. Can survive one server failure: Yes.
  • Может выдерживать один сбой сервера, а второй — нет. Can survive one server failure, then another: No.
  • Может выдерживать две ошибки сервера одновременно: нет. Can survive two server failures at once: No.

Три узла без следящего сервера. Three nodes without a witness.

Все узлы проголосуют, поэтому большая часть состоит из трех голосов. All nodes vote, so the majority is determined out of a total of 3 votes. Если какой либо узел выходит из строя, выжившие объекты поколений составляет 2/3, а кластер остается неработоспособным. If any node goes down, the survivors are 2/3 and the cluster survives. Кластер преобразуется в два узла без следящего сервера — в этом случае вы находитесь в сценарии 1. The cluster becomes two nodes without a witness – at that point, you’re in Scenario 1.

  • Может содерживаться одного сбоя сервера: Да. Can survive one server failure: Yes.
  • Может выдерживать один сбой сервера, а второй — 50% шансов. Can survive one server failure, then another: Fifty percent chance.
  • Может выдерживать две ошибки сервера одновременно: нет. Can survive two server failures at once: No.

Три узла с следящим сервером. Three nodes with a witness.

Все узлы проголосуют, поэтому следящий сервер изначально не проголосу. All nodes vote, so the witness doesn’t initially vote. Большая часть состоит из всего 3 голосов. The majority is determined out of a total of 3 votes. После одного сбоя кластер содержит два узла с следящим сервером, который возвращается к сценарию 2. After one failure, the cluster has two nodes with a witness – which is back to Scenario 2. Итак, теперь два узла и голосование за следящего сервера. So, now the two nodes and the witness vote.

  • Может содерживаться одного сбоя сервера: Да. Can survive one server failure: Yes.
  • Может выдерживать один сбой сервера, а затем другой: Да. Can survive one server failure, then another: Yes.
  • Может выдерживать две ошибки сервера одновременно: нет. Can survive two server failures at once: No.

Четыре узла без следящего сервера Four nodes without a witness

Голосование одного узла обнуляется, поэтому большинство из них выдается всего за 3 голоса. One node’s vote is zeroed, so the majority is determined out of a total of 3 votes. После одного сбоя кластер превратится в три узла, и в сценарии 3. After one failure, the cluster becomes three nodes, and you’re in Scenario 3.

  • Может содерживаться одного сбоя сервера: Да. Can survive one server failure: Yes.
  • Может выдерживать один сбой сервера, а затем другой: Да. Can survive one server failure, then another: Yes.
  • Может выдерживать две ошибки сервера одновременно: 50% шансов. Can survive two server failures at once: Fifty percent chance.

Четыре узла с следящим сервером. Four nodes with a witness.

Все узлы являются голосовыми и голосовыми, поэтому большинство из них выдается всего 5 голосов. All nodes votes and the witness votes, so the majority is determined out of a total of 5 votes. После одного сбоя вы находитесь в сценарии 4. After one failure, you’re in Scenario 4. После двух одновременных сбоев вы переходите к сценарию 2. After two simultaneous failures, you skip down to Scenario 2.

  • Может содерживаться одного сбоя сервера: Да. Can survive one server failure: Yes.
  • Может выдерживать один сбой сервера, а затем другой: Да. Can survive one server failure, then another: Yes.
  • Может выдерживать две ошибки сервера одновременно: Да. Can survive two server failures at once: Yes.

Пять узлов и больше. Five nodes and beyond.

Все узлы проголосуют или все, кроме одного голоса, независимо от того, что это делает. All nodes vote, or all but one vote, whatever makes the total odd. Локальные дисковые пространства не может одновременно справиться с более чем двумя узлами, поэтому на этом этапе следящий сервер не нужен и не полезен. Storage Spaces Direct cannot handle more than two nodes down anyway, so at this point, no witness is needed or useful.

  • Может содерживаться одного сбоя сервера: Да. Can survive one server failure: Yes.
  • Может выдерживать один сбой сервера, а затем другой: Да. Can survive one server failure, then another: Yes.
  • Может выдерживать две ошибки сервера одновременно: Да. Can survive two server failures at once: Yes.

Теперь, когда мы понимаем, как работает кворум, давайте взглянем на типы следящих серверов кворума. Now that we understand how quorum works, let’s look at the types of quorum witnesses.

Типы следящего сервера кворума Quorum witness types

Отказоустойчивая кластеризация поддерживает три типа следящих серверов кворума: Failover Clustering supports three types of Quorum Witnesses:

  • Облако-свидетель — хранилище больших двоичных объектов в Azure доступно для всех узлов кластера. Cloud Witness — Blob storage in Azure accessible by all nodes of the cluster. Он хранит сведения о кластеризации в файле следящего сервера. log, но не сохраняет копию базы данных кластера. It maintains clustering information in a witness.log file, but doesn’t store a copy of the cluster database.
  • Файловый ресурс-свидетель — общая папка SMB, настроенная на файловом сервере под управлением Windows Server. File Share Witness – A SMB file share that is configured on a file server running Windows Server. Он хранит сведения о кластеризации в файле следящего сервера. log, но не сохраняет копию базы данных кластера. It maintains clustering information in a witness.log file, but doesn’t store a copy of the cluster database.
  • Диск-свидетель — небольшой кластерный диск, который находится в группе доступных кластеров хранения. Disk Witness — A small clustered disk which is in the Cluster Available Storage group. Этот диск обладает высокой доступностью и может отработки отказа между узлами. This disk is highly-available and can failover between nodes. Он содержит копию базы данных кластера. It contains a copy of the cluster database. С Локальные дисковые пространства не поддерживается диск-свидетель. A Disk Witness isn’t supported with Storage Spaces Direct.

Общие сведения о кворуме пула Pool quorum overview

Мы только что говорили о кворуме кластера, который работает на уровне кластера. We just talked about Cluster Quorum, which operates at the cluster level. Теперь давайте подробно рассмотрим кворум пула, который работает на уровне пула (т. е. Вы можете потерять узлы и диски и оставить пул в состоянии). Now, let’s dive into Pool Quorum, which operates on the pool level (i.e. you can lose nodes and drives and have the pool stay up). Пулы носителей были разработаны для использования как в кластеризованных, так и в некластеризованных сценариях, поэтому у них есть другой механизм кворума. Storage pools were designed to be used in both clustered and non-clustered scenarios, which is why they have a different quorum mechanism.

В таблице ниже приводятся общие сведения о результатах кворума пула для каждого сценария. The table below gives an overview of the Pool Quorum outcomes per scenario:

Узлы сервера Server nodes Может содерживаться сбоя одного узла сервера Can survive one server node failure Может сосуществовать один сбой узла сервера, а затем другой Can survive one server node failure, then another Может содерживаться двух сбоев одновременного узла сервера Can survive two simultaneous server node failures
2 2 Нет No Нет No Нет No
2 + следящий сервер 2 + Witness да Yes Нет No Нет No
3 3 Да Yes Нет No Нет No
3 + следящий сервер 3 + Witness да Yes Нет No Нет No
4 4 Да Yes Нет No Нет No
4 + следящий сервер 4 + Witness да Yes да Yes да Yes
5 и выше 5 and above да Yes да Yes да Yes

Как работает кворум пула How pool quorum works

При сбое дисков или невозможности подмножества дисков связаться с другим подмножеством, остальные диски должны убедиться, что они составляют большую часть пула, чтобы остаться в сети. When drives fail, or when some subset of drives loses contact with another subset, surviving drives need to verify that they constitute the majority of the pool to remain online. Если они не могут проверить, они будут переведены в автономный режим. If they can’t verify that, they’ll go offline. Пул — это сущность, которая переходит в автономный режим или остается в сети в зависимости от наличия достаточного количества дисков для кворума (50% + 1). The pool is the entity that goes offline or stays online based on whether it has enough disks for quorum (50% + 1). Владелец ресурса пула (активный узел кластера) может быть + 1. The pool resource owner (active cluster node) can be the +1.

Но кворум пула работает иначе из кворума кластера следующими способами. But pool quorum works differently from cluster quorum in the following ways:

  • пул использует один узел в кластере как следящий, чтобы выдерживать половину дисков (этот узел является владельцем ресурса пула). the pool uses one node in the cluster as a witness as a tie-breaker to survive half of drives gone (this node that is the pool resource owner)
  • в пуле отсутствует динамический кворум the pool does NOT have dynamic quorum
  • в пуле не реализована собственная версия удаления голоса the pool does NOT implement its own version of removing a vote

Примеры Examples

Четыре узла с симметричным макетом. Four nodes with a symmetrical layout.

Каждый из 16 дисков имеет один голос, а два узла также имеют один голос (так как он является владельцем ресурса пула). Each of the 16 drives has one vote and node two also has one vote (since it’s the pool resource owner). Большая часть состоит из всего 16 голосов. The majority is determined out of a total of 16 votes. Если узлы три и четыре пути вниз, то в работающем подмножестве будет 8 дисков, а владелец ресурса пула — 9/16 голосов. If nodes three and four go down, the surviving subset has 8 drives and the pool resource owner, which is 9/16 votes. Таким образом, пул остается неработоспособным. So, the pool survives.

  • Может содерживаться одного сбоя сервера: Да. Can survive one server failure: Yes.
  • Может выдерживать один сбой сервера, а затем другой: Да. Can survive one server failure, then another: Yes.
  • Может выдерживать две ошибки сервера одновременно: Да. Can survive two server failures at once: Yes.

Четыре узла с симметричным разметкой и сбоем диска. Four nodes with a symmetrical layout and drive failure.

Каждый из 16 дисков имеет один голос, а узел 2 также имеет один голос (так как он является владельцем ресурса пула). Each of the 16 drives has one vote and node 2 also has one vote (since it’s the pool resource owner). Большая часть состоит из всего 16 голосов. The majority is determined out of a total of 16 votes. Сначала диск 7 выйдет из строя. First, drive 7 goes down. Если узлы три и четыре пути вниз, то в работающем подмножестве будет 7 дисков, а владелец ресурса пула — 8/16 голосов. If nodes three and four go down, the surviving subset has 7 drives and the pool resource owner, which is 8/16 votes. Таким образом, пул не имеет большинства и не выходит из строя. So, the pool doesn’t have majority and goes down.

  • Может содерживаться одного сбоя сервера: Да. Can survive one server failure: Yes.
  • Может выдерживать один сбой сервера, а второй — нет. Can survive one server failure, then another: No.
  • Может выдерживать две ошибки сервера одновременно: нет. Can survive two server failures at once: No.

Четыре узла с несимметричным макетом. Four nodes with a non-symmetrical layout.

Каждый из 24 дисков имеет один голос, а два узла также имеют один голос (так как он является владельцем ресурса пула). Each of the 24 drives has one vote and node two also has one vote (since it’s the pool resource owner). Большая часть состоит из всего 24 голосов. The majority is determined out of a total of 24 votes. Если узлы три и четыре пути вниз, то в работающем подмножестве будет 8 дисков, а владелец ресурса пула — 9/24 голосов. If nodes three and four go down, the surviving subset has 8 drives and the pool resource owner, which is 9/24 votes. Таким образом, пул не имеет большинства и не выходит из строя. So, the pool doesn’t have majority and goes down.

  • Может содерживаться одного сбоя сервера: Да. Can survive one server failure: Yes.
  • Может содерживаться одного сбоя сервера, а затем другой: * * зависит от * * (не может выдерживаться, если оба узла три и четыре выходят из строя, но могут содержаться в других сценариях. Can survive one server failure, then another: **Depends **(cannot survive if both nodes three and four go down, but can survive all other scenarios.
  • Может выдерживать две ошибки сервера одновременно: * * зависит от * * (не может выдерживаться, если оба узла три и четыре выходят из строя, но могут продолжать работать во всех других сценариях). Can survive two server failures at once: **Depends **(cannot survive if both nodes three and four go down, but can survive all other scenarios.
Читайте также:  Windows 10 не видит wifi adapter
Оцените статью