LinuxでRAIDを設定する方法 Step by Step Guide

このチュートリアルでは、LinuxでRAIDレベル(0、1、5)を表示、リスト、作成、追加、削除、サイズ変更、フォーマット、マウント、設定する方法を実践例を使ってステップごとに説明します。

RAIDとはRedundant Array of Independent Disksの略で、独立したディスクの冗長配列のことです。 ハードウェア RAID とソフトウェア RAID の 2 種類があります。

Hardware RAID

Hardware RAID は、複数のハードディスクから構築される物理ストレージ デバイスです。 システムに接続すると、すべてのディスクがシステム上で1つのSCSIディスクとして表示されます。 システムの観点からは、通常の SCSI ディスクとハードウェア RAID デバイスの間に違いはありません。

Hardware RAID は、独立したディスクサブシステムとリソースを備えており、システムはハードウェア RAID デバイスを単一の SCSI ディスクとして使用できます。 ハードウェア RAID は、電力、RAM、CPU などのシステムからのリソースを一切使用しません。 ハードウェア RAID は、システムに余分な負荷をかけません。

Software RAID

Software RAID は、システム内の接続ディスクから構築される論理ストレージ デバイスです。 これは、システムからすべてのリソースを使用します。 これは、低パフォーマンスを提供しますが、コストはかかりません。 このチュートリアルでは、ソフトウェアRAIDを作成し管理する方法を詳しく説明します。

このチュートリアルは、「Linuxディスク管理を例を使って簡単に説明する」の記事の最後の部分です。

Linux Disk Management Tutorial

これは、この記事の最初の部分です。 BIOS、UEFI、MBR、GPT、SWAP、LVM、RAID、プライマリーパーティション、拡張パーティション、Linuxファイルシステムタイプなど、Linuxディスク管理の基本概念を説明します。

fdiskコマンドでLinuxディスクパーティションを管理

これはこの記事の第2部分です。 このパートでは、Linuxでfdiskコマンドからプライマリ、拡張、および論理パーティションを作成する方法を、例を挙げて順を追って説明します。

Manage Linux Disk Partition with gdisk Command

この記事の第3パートです。 LinuxでgdiskコマンドからGPT(GUIDパーティションテーブル)パーティションを作成する方法を、例を使って順を追って説明します。

Linux Disk Management with parted command

この記事の4番目の部分です。 このパートでは、Linuxでpartedコマンドからプライマリ、拡張、論理、GPTパーティションを作成する方法を例を使ってステップバイステップで説明します。

How to create SWAP partition in Linux

この記事の第5部です。 このパートでは、Linuxでスワップパーティションを作成する方法を、スワップメモリーの増加、マウント、クリアの方法などの基本的なスワップ管理タスクを含めて、例を使って説明します。 このパートでは、Linux で LVM をステップバイステップで設定および管理する方法など、LVM の基本的な概念について例を挙げて詳しく説明します。

RAID の基本概念

RAID デバイスは複数の方法で構成することが可能です。 構成に応じて、10段階のレベルに分類することができます。 RAID レベルについて詳しく説明する前に、RAID 構成で使用されるいくつかの重要な用語について簡単に見てみましょう。 – RAID 構成で使用されるデータ ブロックのサイズです。 チャンクサイズが 64KB の場合、1MB (1024KB/64KB) の RAID アレイには 16 チャンクが存在します。 – RAIDアレイの追加ディスクです。

Mirroring: – この機能が有効な場合、同じデータのコピーが他のディスクにも保存されます。 これは、ちょうどバックアップのためにデータの追加コピーを作成するようなものです。

ストライピング: – この機能が有効な場合、データはすべての利用可能なディスクにランダムに書き込まれます。 これは、ちょうどすべてのディスク間でデータを共有するようなもので、すべてのディスクが等しく満たされます。

Parity: – これは、保存されたパリティ情報から失われたデータを再生成する方法です。 これらのレベルのうち、レベル 0、レベル 1、およびレベル 5 のみが Red Hat Linux で主に使用されます。

RAID レベル 0

このレベルは、パリティなしのストライピングを提供します。 パリティデータを保存せず、読み込みと書き込みを同時に行うため、他のレベルよりはるかに高速に動作します。 このレベルでは、少なくとも2台のハードディスクが必要です。 このレベルでは、すべてのハードディスクが均等に充填されます。 読み取りと書き込みの速度が重要な場合、このレベルを使用する必要があります。 このレベルを使用する場合は、常に別のデータバックアッププランを導入してください。 アレイの単一ディスク障害により、データが完全に失われます。

RAID Level 1

このレベルは、ストライピングなしでパリティを提供します。 すべてのデータを2台のディスクに書き込みます。 1台のディスクが故障または取り外されても、もう1台のディスクにすべてのデータが残っています。 このレベルでは、2台のハードディスクが必要です。 つまり、2台のハードディスクを使用する場合は4台のハードディスクを、1台のハードディスクを使用する場合は2台のハードディスクを配置しなければなりません。 1台目のハードディスクには元のデータが保存され、もう1台には1台目のハードディスクの正確なコピーが保存されます。 データは2回書き込まれるため、パフォーマンスが低下します。 データの安全性を重視する場合のみ、このレベルを使用する必要があります。

RAID レベル 5

このレベルは、パリティとストライピングの両方を提供します。 少なくとも 3 台のディスクが必要です。 パリティデータはすべてのディスクに等しく書き込まれます。 1 台のディスクに障害が発生した場合、残りのディスクにあるパリティデータからデータを再構築することができます。 これにより、整合性とパフォーマンスの両方が実現されます。

ハードウェア RAID デバイスを使用する場合は、予備のディスクを備えたホットスワップ可能なハードウェア RAID デバイスを使用します。 また、ホットスワップ可能なデバイスであるため、サーバーがまだ動作している間に、故障したデバイスを交換することができます。

RAID デバイスが適切に構成されていれば、オペレーティングシステムの観点からは、ソフトウェア RAID とハードウェア RAID に違いはありません。

Linux ではソフトウェア RAID を設定するための md カーネルモジュールが提供されていますが、このモジュールは RAID デバイスがソフトウェア RAID であるかハードウェア RAID であるかに関わらず、OS は通常のハードディスクとして RAID デバイスにアクセスします。 ソフトウェア RAID を使用するためには、2 つ以上のストレージ デバイスの複合である RAID md デバイスを設定する必要があります。

ステップごとのソフトウェア RAID の設定方法

このチュートリアルでは、練習用に未パーティションのディスク領域または追加のハードディスクがあると仮定しています。 VMware workstationのような仮想ソフトウェア上でこのチュートリアルを行う場合は、システムに3つのハードディスクを追加してください。 仮想システムにハードディスクを追加する方法については、このチュートリアルの最初の部分を参照してください。 物理マシン上でこのチュートリアルを実行する場合は、追加のハードディスクを取り付けます。 練習用にUSBスティックやペンドライブを使用することができます。

それぞれのディスクのサイズは 2GB です。 fdisk -l コマンドを使用すると、接続されているすべてのハードディスクを一覧表示できます。

また、lsblk コマンドを使用すると、接続されているすべてのストレージ デバイスの構造的な概要を表示することができます。

上の出力でわかるように、それぞれ 2G サイズの 3 つの未パーティション化ディスクがあります。 Linuxでパッケージをインストールし管理する方法については、次のチュートリアルを参照してください。

How to configure YUM Repository in RHEL
RPM Command Explained with Example

This tutorial I assume that mdadm package is installed.The software RAID working before we start with software RAID.To learn how to install and manage package in linux.

RAID 0 アレイの作成

ディスクまたはパーティションで RAID 0 アレイを作成することができます。 両方のオプションを理解するために、2 つの別々の RAID 0 アレイを作成します; 1 つはディスクで、もう 1 つはパーティションで作成します。 RAID 0アレイは少なくとも2つのディスクまたはパーティションを必要とします。 ここでは、/dev/sdc と /dev/sdd のディスクを使用してディスクから RAID 0 アレイを作成することにします。 dev/sdbに2つのパーティションを作成し、後でそれらを使用してパーティションから別のRAID 0アレイを作成することにします。

ディスクから RAID 0 アレイを作成するには、次のコマンドを使用します

#mdadm --create --verbose /dev/ --level= --raid-devices= 

このコマンドについて詳しく理解しましょう

mdadm:- これはメインコマンド

–create:- このオプションを使用して新しい md (RAID) デバイスを作成します。

–verbose:- このオプションは、プロセスのリアルタイム更新を表示するために使用します。

/dev/:- この引数は RAID アレイの名前と場所を提供するために使用します。

–level=:- このオプションと引数は、作成したい RAID レベルを定義するために使用します。

–raid-devices=:- このオプションと引数は、このデバイスで使用したいストレージデバイスまたはパーティションの数を指定するために使用します。

:- このオプションは、ストレージデバイスの名前と場所を指定するために使用されます。

次のコマンドは、ディスク /dev/sdc と /dev/sdd から md0 名で RAID 0 アレイを作成するために使用されます。

アレイを確認するには、次のコマンドを使用します。

上記の出力は、RAID レベル 0 構成の 2 つのディスク (sdd と sdc) から RAID アレイ md0 が正常に作成されたことを確認しています。

Creating RAID 0 Array with partitions

fdiskコマンドで1GiBパーティションを作成

デフォルトでは、すべてのパーティションはLinux標準として作成されます。 パーティションタイプをRAIDに変更し、パーティションを保存します。 fdisk ユーティリティを終了し、partprobe コマンドを実行して、ランタイムカーネルパーティションテーブルを更新します。

fdisk コマンドとそのサブコマンドを詳しく学ぶには、fdisk コマンドでパーティションを作成して管理する方法をステップごとに説明するこのチュートリアルの後半を参照してください。

もう1つパーティションを作成しますが、今回はpartedコマンドを使用します。

partedコマンドを詳しく学ぶには、partedコマンドによるディスク管理の手順を説明したこのチュートリアルの4番目の部分を参照してください。

同じコマンドを使用して、パーティションから RAID アレイを作成します。

mdadm コマンドで新しい RAID アレイを作成する場合、提供したデバイスまたはパーティションに署名を行います。 どのパーティションタイプを使うかは重要ではありませんが、重要なことは、パーティションに重要なデータが含まれていてはいけないということです。

Creating File system in RAID Array

RAID アレイをデータ保存に使用するには、有効なファイルシステムが含まれている必要があります。

#mkfs –t 

md0 を ext4 ファイルシステムで、md1 を xfs ファイルシステムでフォーマットしましょう。

RAID 0 アレイは使用可能な状態になりました。 Linuxのファイルシステム(プライマリディレクトリ構造)は、ルート(/)ディレクトリから始まり、すべてのものはその下かそのサブディレクトリに入ります。

Temporary mounting RAID 0 Array

次のコマンドは、アレイを一時的にマウントするために使用します。

#mount 

マウントコマンドには、いくつかのオプションと引数がありますが、別のチュートリアルで別途説明したいと思います。

what to mount :- これは配列です。

where to mount :- これはマウントされたリソースにアクセスするために使用されるディレクトリです。

一度マウントすると、マウントしたディレクトリで実行するすべてのアクションはマウントしたリソースで実行されます。 それでは、実際に理解してみましょう。

  • /ディレクトリにマウントディレクトリを作成
  • Mount /dev/md0 array
  • 内容をリストアップ
  • テストディレクトリとファイルを作成
  • 再度内容をリストアップ
  • Un->
  • List the content in a /ディレクトリを作成
  • List the content in a /ディレクトリを作成
  • List the /dev/md0 arrayを作成。dev/md0 配列をマウントし、再度内容を表示します
  • 今度は /dev/md1 配列をマウントし、内容を表示します
  • 再びテストディレクトリとファイルを作成します。 ファイルとディレクトリには異なる名前を使用します
  • List the content
  • Un-mount the /dev/md1 array and list the content again

次の図は、この演習をステップごとに示しています

上の図が示すように、マウント ディレクトリで行った操作はすべてそれぞれの配列で実際に実行されました。

一時的なマウント オプションは、時々アクセスする配列に適しています。 システムを再起動するたびに、一時的にマウントされたすべてのリソースが自動的にアンマウントされます。

Mounting RAID Array permanently

ファイルシステム内の各リソースは、UUID と呼ばれる一意の ID を持っています。 アレイを永続的にマウントする場合、その名前の代わりに UUID を使用する必要があります。 バージョン7以降、RHELでもデバイス名の代わりにUUIDを使用します。

UUIDはUniversally Unique Identifierの略です。 UUIDはUniversal Unique Identifierの略で、16進数で表される128ビットの数値です。 しかし、動的な環境では、常にUUIDを使用する必要があります。 動的な環境では、デバイス名はシステム起動時に毎回変更される可能性があります。 例えば、システムに追加のSCSIディスクを接続した場合、/dev/sdbという名前になります。 このディスクはそのデバイス名で恒久的にマウントしました。 ここで、誰かがこのディスクを取り外し、同じスロットに新しいSCSIディスクを取り付けたとします。 新しいディスクも /dev/sdb という名前になります。 古いディスクと新しいディスクの名前は同じなので、新しいディスクは古いディスクの場所にマウントされます。 このように、デバイス名を変更すると、動的な環境では深刻な問題が発生する可能性があります。 しかし、この問題はUUIDで解決できる。

静的な環境では、リソースをマウントするためにデバイス名を考慮することができます。

すべてのパーティションの UUID を知るには、blkid コマンドを使用できます。

一度UUIDがわかれば、デバイス名の代わりにそれを使用することができます。

  • blkidコマンドでアレイのUUIDを表示します。
  • アレイのUUIDをコピーします。
  • マウントコマンドでアレイをマウントします。 UUID を入力する代わりに paste オプションを使用します。

次の図は上記の手順を示しています

システムは起動時に /etc/fstab ファイルを見て、ファイルシステムに自動的にマウントする必要のあるデバイス(パーティション、LV、スワップまたはアレイ)を見つけます。 デフォルトでは、このファイルにはインストール時に作成されたパーティション、論理ボリューム、スワップスペースのエントリがあります。 追加のデバイス(アレイ)を自動的にマウントするには、このファイルにそのデバイスのエントリを作成する必要があります。

マウントしたいもの

Dump support

番号 ファイル 説明
1 マウントしたいデバイスです。
2 マウント先 デバイスをマウントするLinuxファイルシステム内のディレクトリです。
3 ファイルシステム デバイスのファイルシステムタイプ
4 オプション mount コマンド同様、マウントプロセスを制御するにはここでサポートされるオプションも使用可能です。 このチュートリアルでは、デフォルトのオプションを使用します。
5 このデバイスのダンプを有効にするには、1を使用します。 ダンプを無効にするには0を使用します。
6 Automatic check マウント時にこのデバイスをチェックするかしないかを指定します。 無効にするには 0 を、有効にするには 1 (ルートパーティション用) または 2 (ルートパーティション以外のすべてのパーティション用) を使用します。

最近作成したアレイをマウントするためのディレクトリをいくつか作成しましょう

fstabファイルのバックアップを取り、編集用に開きます

アレイ用のエントリーを作成してファイルを保存してください。

For demonstration purpose I used both device name and UUID to mount the partitions.After saving always check the entries with mount -a command.私は、デモのために、パーティションをマウントするのに、デバイス名とUUIDの両方を使いました。 このコマンドは、/etc/fstab ファイルにリストされているすべてをマウントします。

mount -a コマンドの出力でエラーが発生した場合、システムを再起動する前に修正してください。 このコマンドを使用して、すべてのパーティションが正しくマウントされていることを確認できます。

上記の出力により、すべてのパーティションが正しくマウントされていることが確認できます。 両方の RAID デバイスを一覧表示してみましょう。

How to delete RAID Array

マウントされたアレイを削除することはできません。 この演習で作成したすべてのアレイをアンマウントします

以下のコマンドでRAIDアレイを停止します

#mdadm --stop /dev/

マウントディレクトリを取り外して元のfstabファイルをコピーして戻します。

元の fstab ファイルのバックアップを取っていない場合、作成したこのファイルからすべてのエントリを削除します。

最後に、この練習で使用したすべてのディスクをリセットします。

dd コマンドはディスクを復元する最も簡単な方法です。 ディスクユーティリティは、その設定パラメータをスーパーブロックに格納します。 通常、スーパーブロックのサイズはKB単位で定義されているので、各ディスクの最初の10MBのスペースをNULLバイトで上書きするだけです。 ddコマンドを詳しく学ぶには、このチュートリアルの第5部でこのコマンドを詳しく説明しています。

ここでシステムを再起動し、df -hコマンドをもう一度使用して、この演習で作成したすべてのRIADデバイスがなくなったことを確認します。

RAID 1およびRAID 5アレイの作成方法

同じ手順を実行すれば、RAID 1 または RAID 5 アレイが作成されます。 mdadm –create コマンドを除いて、すべての手順とコマンドは同じになります。 このコマンドでは、RAID レベル、ディスクの数、および関連するディスクの場所を変更する必要があります。

/dev/sddおよび/dev/sdbディスクからRAID 1アレイを作成するには、次のコマンド

/dev/sdb1 および /dev/sdb2 パーティションから RAID 1アレイを作成するには、次のコマンド

を使用します。 command

以前に同じディスクやパーティションを使用して RAID アレイを作成し、そのディスクやパーティションにまだメタデータ情報がある場合、メタデータの警告が表示されることがあります。 私たちは、10MB の開始領域のみをクリーニングし、残りの領域はそのままにしていることを忘れないでください。

/dev/sdb, /dev/sdc, /dev/sdd ディスクから RAID 5 アレイを作成するには、次のコマンドを使用します。 そのため、ここでは 3 つのディスクを使用します。

/dev/sdb1、/dev/sdb2、および /dev/sdb3 パーティションから RAID 5 アレイを作成するには、次のコマンドを使用します

不要なエラーを避けるために、新しい練習で使う前に常にディスクを復元します

これまでこのチュートリアルで RAID アレイの作成、マウントおよび削除方法を学習してきました。 次のセクションでは、RAID アレイの管理方法とトラブルシューティングについて説明します。 このセクションでは、少なくとも1つのアレイが設定されていることを前提としています。 デモンストレーションのために、最後に設定した(3パーティションのRAID 5)の例を使用します。

このディレクトリにダミーデータを置いてみましょう。

私は ls コマンドのマニュアルページを /testingdata/manual-of-ls-command ファイルにリダイレクトしています。

RAIDデバイスの詳細を表示する方法

以下のコマンドは、RAIDデバイスの詳細情報を表示するために使用されます。

#mdadm --detail /dev/

この情報には、RAID レベル、アレイ サイズ、使用可能な合計サイズからの使用サイズ、このアレイの作成に使用したデバイス、現在使用中のデバイス、予備デバイス、故障したデバイス、チャンク サイズ、アレイの UUID などの多くの情報が含まれています。

RIAD でディスクまたはパーティションを追加する方法

RAID デバイスがデータでいっぱいになった、またはアレイのディスクが故障したなど、RAID デバイスのサイズを増加しなければならない状況がいくつかあります。 RAID デバイスの容量を増やすには、既存のアレイにディスクまたはパーティションを追加する必要があります。

実行中の例では、/dev/sdb ディスクを使って 3 つのパーティションを作成しました。 dev/sdc と /dev/sdd は、まだ使用可能です。 このArrayに追加する前に、それらをクリーンアップすることを確認します。 前回はddコマンドでディスクのクリーニングを行いました。 このコマンドを再度使用するか、次のコマンドを使用します。

#mdadm --zero-superblock /dev/

ディスクにスーパーブロックがあるかどうかを確認するには、次のコマンドを使用します。

#mdadm --examine /dev/

次の図は、両方のディスクに対する両方のコマンドの使用方法を示しています。

#mdadm --manage /dev/ --add /dev/

Let’s add /dev/sdc disk in this array and confirm the same.

Right now this disk has been added as a spare disk.This command is used to add additional disk in existing array.

#mdadm --manage /dev/ --add /dev/

このディスクは、既存のアレイに追加ディスクとして使用します。

ディスクが故障し、スペア ディスクが利用可能な場合、RAID は自動的に最初の利用可能なスペア ディスクを選択し、故障したディスクを交換します。

バックアップのために、アレイに別のディスクを追加し、このディスクを使ってアレイのサイズを大きくしてみましょう。 以下のコマンドは、RAID デバイスのサイズを大きくするために使用されます。

#mdadm --grow --raid-devices= /dev/

RAID は、すべてのデバイスを順番に並べます。 この順序は、アレイに追加されるディスクの順序から作られます。 このコマンドを使用すると、RAID はアクティブなデバイスに次の作業デバイスを追加します。

次の図は、このコマンドを説明しています

上の出力でわかるように、ディスクはアレイに追加されて、アレイのサイズは正常に増加します。

Removing faulty device

予備デバイスが利用できる場合、RAID は自動的に欠陥デバイスを予備デバイスと置き換えます。 エンドユーザーには何の変化も見えません。 彼は通常通りデータにアクセスすることができます。

現在、アレイには使用可能なスペアディスクがありません。 ディスクが故障すると、RAID はそのディスクを故障デバイスとしてマークします。 一度マークされると、安全に取り外すことができます。 メンテナンスまたはトラブルシューティングの目的でアレイから作業中のデバイスを削除する場合は、削除する前に必ずそのデバイスを故障したデバイスとしてマークする必要があります。 デバイスが故障デバイスとしてマークされると、故障デバイスからのすべてのデータは作業デバイスに再構築されます。

ディスクを故障デバイスとしてマークするには、次のコマンドを使用します。

上記の出力で、アレイがまだ有効なデータを含んでいることを確認しました。

上の出力で、アレイの配列の4番目のデバイスsdcが故障デバイスとしてマークされたことが確認されました。 このプロセスでは、手動操作は必要ありません。

最後に、データがまだアレイに存在することを確認します。

上記の出力は、アレイにまだ有効データが含まれていることを確認します。

コメントを残す

メールアドレスが公開されることはありません。