可用性グループの構成の高可用性とデータの保護High availability and data protection for availability group configurations

このトピックに適用されますはいSQL Server (Linux の場合のみ)ありませんAzure SQL DatabaseありませんAzure SQL Data Warehouseありません。並列データ ウェアハウス THIS TOPIC APPLIES TO: yesSQL Server (Linux only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

この記事では、Linux サーバー上の SQL Server Always On 可用性グループのサポートされる展開構成を表示します。This article presents supported deployment configurations for SQL Server Always On availability groups on Linux servers. 可用性グループには、高可用性とデータ保護がサポートしています。An availability group supports high availability and data protection. 障害の自動検出、自動フェールオーバー、およびフェールオーバー後に透過的な再接続は、高可用性を実現します。Automatic failure detection, automatic failover, and transparent reconnection after failover provide high availability. 同期されたレプリカは、データ保護を提供します。Synchronized replicas provide data protection.

Windows Server フェールオーバー クラスター (WSFC)、高可用性の一般的な構成を使って 2 つのレプリカを同期し、3 番目のサーバーまたはファイル共有クォーラムを提供します。On a Windows Server Failover Cluster (WSFC), a common configuration for high availability uses two synchronous replicas and a third server or file share to provide quorum. ファイル共有監視は、たとえば、可用性グループの構成で、同期の状態と、レプリカのロールを検証します。The file-share witness validates the availability group configuration - status of synchronization, and the role of the replica, for example. この構成により、セカンダリ レプリカのフェールオーバー ターゲットがある最新のデータと可用性グループ構成の変更として選択します。This configuration ensures that the secondary replica chosen as the failover target has the latest data and availability group configuration changes.

WSFC では、可用性グループ レプリカと、ファイル共有のミラーリング監視サーバーの間でフェールオーバーの判別に構成メタデータを同期します。The WSFC synchronizes configuration metadata for failover arbitration between the availability group replicas and the file-share witness. 可用性グループは、WSFC では、ときに、SQL Server インスタンスは、master データベースに構成メタデータを格納します。When an availability group is not on a WSFC, the SQL Server instances store configuration metadata in the master database.

たとえば、Linux クラスター上の可用性グループはCLUSTER_TYPE = EXTERNALします。For example, an availability group on a Linux cluster has CLUSTER_TYPE = EXTERNAL. WSFC フェールオーバーについて交渉することはありません。There is no WSFC to arbitrate failover. ここでは、構成メタデータの管理し、SQL Server インスタンスで保持されます。In this case the configuration metadata is managed and maintained by the SQL Server instances. このクラスターに、ミラーリング監視サーバーではない、ため構成状態のメタデータを格納する 3 番目の SQL Server インスタンスが必要です。Because there is no witness server in this cluster, a third SQL Server instance is required to store configuration state metadata. 次の 3 つすべての SQL Server インスタンスは、同時に、クラスターの分散メタデータ ストレージを提供します。All three SQL Server instances together provide distributed metadata storage for the cluster.

クラスター マネージャーでは、可用性グループ内の SQL Server のインスタンスのクエリを実行でき、高可用性を維持するためにフェールオーバーを調整することができます。The cluster manager can query the instances of SQL Server in the availability group, and orchestrate failover to maintain high availability. Linux クラスターのペースは、クラスター管理者です。In a Linux cluster, Pacemaker is the cluster manager.

SQL Server 2017 CU 1 を持つ可用性グループの高可用性を有効にCLUSTER_TYPE = EXTERNALの 2 つの同期レプリカに加えて、レプリカの構成のみです。SQL Server 2017 CU 1 enables high availability for an availability group with CLUSTER_TYPE = EXTERNAL for two synchronous replicas plus a configuration only replica. SQL Server Express エディションを含む SQL Server 2017 CU1 またはそれ以降のすべてのエディションで、構成のみのレプリカをホストできます。The configuration only replica can be hosted on any edition of SQL Server 2017 CU1 or later - including SQL Server Express edition. レプリカの構成のみでは、master データベース内の可用性グループに関する構成情報を保持が、可用性グループ内のユーザー データベースが含まれていません。The configuration only replica maintains configuration information about the availability group in the master database but does not contain the user databases in the availability group.

既定のリソース設定の構成の影響How the configuration affects default resource settings

SQL Server 2017 が導入されています、REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITクラスター リソース設定します。SQL Server 2017 introduces the REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT cluster resource setting. この設定は、指定したセカンダリ レプリカの書き込み数、プライマリ レプリカは、各トランザクションをコミットする前にログに記録するトランザクション データを保証します。This setting guarantees the specified number of secondary replicas write the transaction data to log before the primary replica commits each transaction. 外部のクラスター マネージャーを使用する場合、この設定は高可用性とデータ保護の両方に影響します。When you use an external cluster manager, this setting affects both high availability and data protection. 設定の既定値は、クラスター リソースの作成時に、アーキテクチャに依存します。The default value for the setting depends on the architecture at the time the cluster resource is created. エージェント インストールすると、SQL Server リソースのmssql-server-ha-可用性グループのクラスター リソースを作成、クラスター マネージャーの可用性の検出し構成と設定をグループ化REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITそれに応じて。When you install the SQL Server resource agent - mssql-server-ha - and create a cluster resource for the availability group, the cluster manager detects the availability group configuration and sets REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT accordingly.

リソースのエージェント パラメーターの構成でサポートされている場合REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITが高可用性とデータ保護を提供する値に設定します。If supported by the configuration, the resource agent parameter REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is set to the value that provides high availability and data protection. 詳細については、次を参照してください。ペースの SQL Server の理解リソース エージェントです。For more information, see Understand SQL Server resource agent for pacemaker.

次のセクションでは、クラスター リソースの既定の動作を説明します。The following sections explain the default behavior for the cluster resource.

高可用性、データ保護、および読み取りのスケールの特定のビジネス要件に対応する可用性グループの設計を選択します。Choose an availability group design to meet specific business requirements for high availability, data protection, and read-scale.

次の構成は、可用性グループのデザイン パターンと、各パターンの機能について説明します。The following configurations describe the availability group design patterns and the capabilities of each pattern. これらの設計パターンを持つ可用性グループに適用CLUSTER_TYPE = EXTERNAL高可用性ソリューションにします。These design patterns apply to availability groups with CLUSTER_TYPE = EXTERNAL for high availability solutions.

  • 次の 3 つの同期レプリカThree synchronous replicas
  • 2 つの同期レプリカTwo synchronous replicas
  • 2 つのレプリカを同期および構成の唯一の複製Two synchronous replicas and a configuration only replica

次の 3 つの同期レプリカThree synchronous replicas

この構成は、次の 3 つの同期レプリカで構成されます。This configuration consists of three synchronous replicas. 既定では、高可用性とデータ保護を提供します。By default, it provides high availability and data protection. 読み取りスケールも提供します。It can also provide read-scale.

3 つのレプリカ

次の 3 つの同期レプリカがある可用性グループには、読み取りのスケール、高可用性、およびデータ保護を提供できます。An availability group with three synchronous replicas can provide read-scale, high availability, and data protection. 次の表では、可用性の動作について説明します。The following table describes availability behavior.

読み取りのスケールread-scale 高可用性 (& a)High availability &
データの保護data protection
データの保護Data protection
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= 00 1*1* 22
プライマリ停止Primary outage 手動フェールオーバー。Manual failover. データが失われる可能性があります。Might have data loss. 新しいプライマリが R が付けられます。New primary is R/W. 自動フェールオーバー。Automatic failover. 新しいプライマリが R が付けられます。New primary is R/W. 自動フェールオーバー。Automatic failover. 前のプライマリが復旧し、セカンダリとして可用性グループに参加するまでは、新しいプライマリをユーザー トランザクションで使用できません。New primary is not available for user transactions until former primary recovers and joins availability group as secondary.
1 つのセカンダリ レプリカ停止One secondary replica outage プライマリが R 付けられます。Primary is R/W. プライマリが失敗した場合はない自動フェールオーバー。No automatic failover if primary fails. プライマリが R 付けられます。Primary is R/W. プライマリにも失敗した場合はない自動フェールオーバー。No automatic failover if primary fails as well. プライマリでは、ユーザー トランザクションで使用できません。Primary is not available for user transactions.

* 既定値* Default

2 つの同期レプリカTwo synchronous replicas

この構成は、データの保護を実現します。This configuration enables data protection. 他の可用性グループ構成のように読み取りのスケールを有効にできます。Like the other availability group configurations, it can enable read-scale. 2 つの同期レプリカの構成は、自動の高可用性を提供しません。The two synchronous replicas configuration does not provide automatic high availability.

2 つの同期レプリカ

2 つの同期レプリカがある可用性グループは、読み取りのスケールとデータ保護を提供します。An availability group with two synchronous replicas provides read-scale and data protection. 次の表では、可用性の動作について説明します。The following table describes availability behavior.

読み取りのスケールread-scale データの保護Data protection
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= 0 *0 * 11
プライマリ停止Primary outage 手動フェールオーバー。Manual failover. データが失われる可能性があります。Might have data loss. 新しいプライマリが R が付けられます。New primary is R/W. 自動フェールオーバー。Automatic failover. 前のプライマリが復旧し、セカンダリとして可用性グループに参加するまでは、新しいプライマリをユーザー トランザクションで使用できません。New primary is not available for user transactions until former primary recovers and joins availability group as secondary.
1 つのセカンダリ レプリカ停止One secondary replica outage 読み取り/書き込み、データの損失を不安定な実行は、プライマリのです。Primary is R/W, running exposed to data loss. プライマリはセカンダリあって回復するまではユーザー トランザクションで使用できません。Primary is not available for user transactions until secondary recovers.

* 既定値* Default

注意

上記のシナリオでは、SQL Server 2017 CU 1 より前の動作です。The preceding scenario is the behavior prior to SQL Server 2017 CU 1.

2 つのレプリカを同期および構成の唯一の複製Two synchronous replicas and a configuration only replica

2 つ (以上) の同期レプリカと構成のレプリカにのみ可用性グループは、データ保護を提供し、高可用性も提供します。An availability group with two (or more) synchronous replicas and a configuration only replica provides data protection and may also provide high availability. 次の図は、このアーキテクチャを表します。The following diagram represents this architecture:

可用性グループの唯一の構成

  1. セカンダリ レプリカへのユーザー データの同期レプリケーション。Synchronous replication of user data to the secondary replica. 可用性グループ構成のメタデータも含まれています。It also includes availability group configuration metadata.
  2. 可用性グループ構成のメタデータの同期レプリケーション。Synchronous replication of availability group configuration metadata. ユーザー データは含まれません。It does not include user data.

可用性グループのダイアグラムでは、プライマリ レプリカはセカンダリ レプリカと構成の唯一のレプリカの両方に構成データをプッシュします。In the availability group diagram, a primary replica pushes configuration data to both the secondary replica and the configuration only replica. セカンダリ レプリカでは、ユーザー データも受信します。The secondary replica also receives user data. レプリカの構成のみが、ユーザー データを受信していません。The configuration only replica does not receive user data. セカンダリ レプリカは同期の可用性モードです。The secondary replica is in synchronous availability mode. レプリカの構成のみでは、可用性グループ - 可用性グループに関するメタデータのみのデータベースは含まれません。The configuration only replica does not contain the databases in the availability group - only metadata about the availability group. レプリカの構成のみで構成データは同期的にコミットされます。Configuration data on the configuration only replica is committed synchronously.

注意

構成のみのレプリカと、availabilility グループは、SQL Server 2017 CU1 を新しいです。An availabilility group with configuration only replica is new for SQL Server 2017 CU1. 可用性グループ内の SQL Server のすべてのインスタンスは、SQL Server 2017 CU1 をする必要がありますまたはそれ以降。All instances of SQL Server in the availability group must be SQL Server 2017 CU1 or later.

既定値REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITは 0 です。The default value for REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is 0. 次の表では、可用性の動作について説明します。The following table describes availability behavior.

高可用性 (& a)High availability &
データの保護data protection
データの保護Data protection
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= 0 *0 * 11
プライマリ停止Primary outage 自動フェールオーバー。Automatic failover. 新しいプライマリが R が付けられます。New primary is R/W. 自動フェールオーバー。Automatic failover. 新しいプライマリでは、ユーザー トランザクションで使用できません。New primary is not available for user transactions.
セカンダリ レプリカの停止Secondary replica outage プライマリ ファイル グループは読み取り/書き込みを実行して公開されているデータの損失を (プライマリが失敗し、回復することはできません) です。Primary is R/W, running exposed to data loss (if primary fails and cannot be recovered). プライマリにも失敗した場合はない自動フェールオーバー。No automatic failover if primary fails as well. プライマリでは、ユーザー トランザクションで使用できません。Primary is not available for user transactions. プライマリにも失敗した場合にフェールオーバーするレプリカがありません。No replica to fail over to if primary fails as well.
構成のみのレプリカの停止Configuration only replica outage プライマリが R 付けられます。Primary is R/W. プライマリにも失敗した場合はない自動フェールオーバー。No automatic failover if primary fails as well. プライマリが R 付けられます。Primary is R/W. プライマリにも失敗した場合はない自動フェールオーバー。No automatic failover if primary fails as well.
同期セカンダリ + の構成のみのレプリカの停止Synchronous secondary + configuration only replica outage プライマリでは、ユーザー トランザクションで使用できません。Primary is not available for user transactions. 自動フェールオーバーはありません。No automatic failover. プライマリでは、ユーザー トランザクションで使用できません。Primary is not available for user transactions. レプリカにフェールオーバーする場合はプライマリでも失敗しません。No replica to failover to if primary fails as well.

* 既定値* Default

注意

構成のみのレプリカをホストする SQL Server のインスタンスは、他のデータベースをホストすることもできます。The instance of SQL Server that hosts the configuration only replica can also host other databases. 1 つ以上の可用性グループの構成のみデータベースとして参加できます。It can also participate as a configuration only database for more than one availability group.

必要条件Requirements

  • 構成の唯一のレプリカを可用性グループ内のすべてのレプリカは、SQL Server 2017 CU 1 またはそれ以降である必要があります。All replicas in an availability group with a configuration only replica must be SQL Server 2017 CU 1 or later.
  • SQL Server の任意のエディションでは、SQL Server Express を含む、構成のみレプリカをホストできます。Any edition of SQL Server can host a configuration only replica, including SQL Server Express.
  • 可用性グループには、プライマリ レプリカに加えて - には、少なくとも 1 つのセカンダリ レプリカが必要があります。The availability group needs at least one secondary replica - in addition to the primary replica.
  • 構成の唯一のレプリカは、SQL Server のインスタンスごとのレプリカの最大数になるまではカウントされません。Configuration only replicas do not count towards the maximum number of replicas per instance of SQL Server. SQL Server の standard エディションで許容される最大 3 つのレプリカが、SQL Server Enterprise Edition には最大 9 ができます。SQL Server standard edition allows up to three replicas, SQL Server Enterprise Edition allows up to 9.

考慮事項Considerations

  • 可用性グループにつき 2 つ以上の構成のみのレプリカです。No more than one configuration only replica per availability group.
  • 構成の唯一のレプリカは、プライマリ レプリカにすることはできません。A configuration only replica cannot be a primary replica.
  • 構成の唯一のレプリカの可用性モードを変更することはできません。You cannot modify the availability mode of a configuration only replica. 同期または非同期のセカンダリ レプリカの構成のみのレプリカから変更するには、構成のみのレプリカを削除し、必要な可用性モードのセカンダリ レプリカを追加します。To change from a configuration only replica to a synchronous or asynchronous secondary replica, remove the configuration only replica, and add a secondary replica with the required availability mode.
  • 構成の唯一のレプリカの可用性グループ メタデータと同期しています。A configuration only replica is synchronous with the availability group metadata. ユーザー データがありません。There is no user data.
  • 1 つのプライマリ レプリカと 1 つの構成のみのレプリカがないセカンダリ レプリカを可用性グループが正しくありません。An availability group with one primary replica and one configuration only replica, but no secondary replica is not valid.
  • SQL Server Express edition のインスタンスに可用性グループを作成できません。You cannot create an availability group on an instance of SQL Server Express edition.

ペースに対する SQL Server エージェントのリソースを理解します。Understand SQL Server resource agent for pacemaker

SQL Server 2017 CTP 1.4 追加sequence_numbersys.availability_groupsレプリカがプライマリ レプリカとが最新であるかのセカンダリを識別するペースを許可します。SQL Server 2017 CTP 1.4 added sequence_number to sys.availability_groups to allow Pacemaker to identify how up-to-date secondary replicas are with the primary replica. sequence_number 最新であるか、ローカルの可用性グループのレプリカを表す単調に増加する bigint 型の値です。sequence_number is a monotonically increasing BIGINT that represents how up-to-date the local availability group replica is. ペースの更新プログラム、sequence_number可用性グループの構成変更のたびにします。Pacemaker updates the sequence_number with each availability group configuration change. 構成の変更には、フェールオーバー、レプリカの追加または削除などがあります。Examples of configuration changes include failover, replica addition, or removal. 数が、プライマリ上で更新し、セカンダリ レプリカにレプリケートします。The number is updated on the primary, then replicated to secondary replicas. このため、最新の状態の構成を持つセカンダリ レプリカは、プライマリと同じシーケンス番号です。Thus a secondary replica that has up-to-date configuration has the same sequence number as the primary.

最初は送信をプライマリ レプリカを昇格するペースが決定したら、事前昇格すべてのレプリカに通知します。When Pacemaker decides to promote a replica to primary, it first sends a pre-promote notification to all replicas. レプリカは、シーケンス番号を返します。The replicas return the sequence number. 次に、ペースが実際には、レプリカはプライマリに昇格しようとするとき、レプリカのみ昇格自体のシーケンス番号が、すべてのシーケンス番号の最も高い場合。Next, when Pacemaker actually tries to promote a replica to primary, the replica only promotes itself if its sequence number is the highest of all the sequence numbers. 独自のシーケンス番号が一番大きいシーケンス番号が一致しない場合、レプリカは、昇格操作を拒否します。If its own sequence number does not match the highest sequence number, the replica rejects the promote operation. この方法により、最大のシーケンス番号を持つレプリカだけがプライマリに昇格できるようになるため、データの損失が回避されます。In this way only the replica with the highest sequence number can be promoted to primary, ensuring no data loss.

このプロセスでは、以前のプライマリと同じシーケンス番号を持つプロモーションの利用可能な少なくとも 1 つのレプリカが必要です。This process requires at least one replica available for promotion with the same sequence number as the previous primary. ペース リソース エージェント セットを使用すると、REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITになるようには、少なくとも 1 つの同期セカンダリ レプリカは最新であり、既定では、自動フェールオーバーのターゲットに使用できます。The Pacemaker resource agent sets REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT such that at least one synchronous secondary replica is up-to-date and available to be the target of an automatic failover by default. 各監視のアクションの値にREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT計算 (および必要に応じて更新) します。With each monitoring action, the value of REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is computed (and updated if necessary). REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT値は 2 で 'の同期レプリカの数' 割った値します。The REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT value is 'number of synchronous replicas' divided by 2. フェールオーバー時に、リソースのエージェントが必要です (total number of replicas - REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITレプリカ) に応答する、事前の通知を昇格します。At failover time, the resource agent requires (total number of replicas - REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT replicas) to respond to the pre-promote notification. 最高の値を持つレプリカsequence_numberがプライマリに昇格します。The replica with the highest sequence_number is promoted to primary.

たとえば、次の 3 つの同期レプリカの 1 つのプライマリ レプリカと 2 つの同期セカンダリ レプリカを可用性グループです。For example, An availability group with three synchronous replicas - one primary replica and two synchronous secondary replicas.

  • REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT 1 になります。(3 -> 1 の 2/)。REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is 1; (3 / 2 -> 1).

  • 事前昇格アクションに応答するレプリカの必要な数は 2 です。(3-1 = 2)。The required number of replicas to respond to pre-promote action is 2; (3 - 1 = 2).

このシナリオでは、2 つのレプリカは、フェールオーバーをトリガーする応答する必要です。In this scenario, two replicas have to respond for the failover to be triggered. 最新の状態にして、応答、プライマリ レプリカの停止後に自動フェールオーバーを正常に実行、両方のセカンダリ レプリカが必要な事前の通知を昇格します。For successful automatic failover after a primary replica outage, both secondary replicas need to be up-to-date and respond to the pre-promote notification. Online と同期する場合は、同じシーケンス番号があります。If they are online and synchronous, they have the same sequence number. 可用性グループを使用して、それらの 1 つ昇格させます。The availability group promotes one of them. 応答するセカンダリ レプリカの 1 つだけの場合、事前昇格アクション、リソース エージェントは、応答したセカンダリが最高の sequence_number され、フェールオーバーがトリガーされないことを保証ことはできません。If only one of the secondary replicas responds to the pre-promote action, the resource agent cannot guarantee that the secondary that responded has the highest sequence_number, and a failover is not triggered.

重要

REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT が 0 の場合、データ損失のリスクがあります。When REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is 0 there is risk of data loss. プライマリ レプリカの停止中に、リソースのエージェントに自動的にフェールオーバーは発生しません、します。During a primary replica outage, the resource agent does not automatically trigger a failover. プライマリへの回復を待つか、手動フェールオーバーを使用することができますFORCE_FAILOVER_ALLOW_DATA_LOSSです。You can either wait for primary to recover, or manually fail over using FORCE_FAILOVER_ALLOW_DATA_LOSS.

既定の動作をオーバーライドして、可用性グループ リソースも設定することもできますREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT自動的にします。You can choose to override the default behavior, and prevent the availability group resource from setting REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT automatically.

次のスクリプト セットREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITという名前の可用性グループに対して、0 に<**ag1**>です。The following script sets REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT to 0 on an availability group named <**ag1**>. 実行する前に、<**ag1**> を実際の可用性グループの名前に置き換えます。Before you run replace <**ag1**> with the name of your availability group.

sudo pcs resource update <**ag1**> required_synchronized_secondaries_to_commit=0

可用性グループ構成の実行に基づいて、既定値に戻すには。To revert to default value, based on the availability group configuration run:

sudo pcs resource update <**ag1**> required_synchronized_secondaries_to_commit=

注意

上記のコマンドを実行すると、プライマリが一時的に降格セカンダリ、し、もう一度昇格されます。When you run the preceding commands, the primary is temporarily demoted to secondary, then promoted again. リソースの更新では、すべてのレプリカを停止し、再起動が発生します。The resource update causes all replicas to stop and restart. 新しい値REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT、瞬時にないレプリカが再起動したら、のみ設定します。The new value forREQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT is only set once replicas are restarted, not instantaneously.

参照See also

Linux 上の可用性グループAvailability groups on Linux