GNU/Linux >> Linux の 問題 >  >> Linux

既存の稼働中の RedHat / CentOS システムを作成して RAID 1 / RAID 10 に移行

Linux システムには、Linux ソフトウェア RAID とも呼ばれる MD デバイスを介したソフトウェア RAID のサポートが組み込まれています。 Red Hat Enterprise Linux (RHEL) や CentOS などのほとんどの Linux ディストリビューションでは、オペレーティング システムのインストール中に RAID アレイを簡単にセットアップできます。ただし、複数のハード ディスク ドライブを備えた完全に機能する稼働中のシステムが既にあるが、これまでは単一ディスク システムで実行している場合、単一ディスクから RAID への変換には、システム障害のリスクと可能性がさらに大きくなります。

RAID は、データの冗長性とパフォーマンスの向上という点でメリットがあり、ミッション クリティカルなサーバーに推奨されるセットアップです。たとえば、RAID 1 はミラー化されたセットを生成し、単一のディスク障害に耐えることができますが、読み取り要求はアレイ内の任意のディスクで処理できるため、パフォーマンスが向上する可能性があります。 RAID 10 (RAID 1+0) は、ミラーリングされたセットのストライプ、または RAID 1 ミラーリングされたセットの RAID 0 であり、より優れたスループットと待ち時間を提供し、ミラーがすべてのドライブを失うことがない限り、複数のディスク障害を許容します。

このチュートリアルでは、CentOS / RedHat が既にインストールされている現在稼働中のシステムで、2 台のディスク システムで RAID 1 または 4 台のディスク システムで RAID 10 を手動で作成する方法について、手順を追って説明します。 GRUB ブートローダーは、いずれかのハード ドライブに障害が発生した場合でもシステムを起動できるように構成されています。これは、Web ホスティング会社から契約している専用サーバーでコンソールにアクセスできない場合に特に便利です。これにより、インストール中に RAID デバイスを作成できなくなります。

現在実行中のシステムをデータ損失なしで RAID に移行するための最初のフェーズは、現在のすべてのデータが劣化した RAID に確実に複製されるようにすることです。このチュートリアルでは、/dev/sda1 として 477 MB の /boot パーティション、/dev/sda2 として 900 GB を超える /root パーティション、/dev/sda3 に 4 GB のスワップ領域、および別のパーティションが付属するシステムで作業します。 /dev/sda4 拡張パーティションでホストされる 4GB /tmp 論理パーティション /dev/sda5。

<オール>
  • 現在実行中の既存の RAID デバイスがないことを確認します。 /etc/mdadm.conf ファイルの内容と cat /proc/mdstat の結果 空である必要があり、構成ファイルまたは自動的に配列が検出されない必要があります。
    mdadm --examine --scan > /etc/mdadm.conf
    mdadm --assemble --scan 
    cat /proc/mdstat
  • 予防措置として、シャットダウンできる (つまり、現在使用されていない) すべてのアレイをシャットダウンします:
    mdadm --stop --scan
  • 次のコマンドを使用して、ディスクのパーティション テーブルを MBR に変更します。ディスクに GTP パーティション テーブルがない場合は、この手順をスキップしてください。
    parted /dev/sdb
    (parted) mktable msdos
    (parted) quit

    はいと答える 「警告:/dev/sdb の既存のディスク ラベルは破棄され、このディスクのすべてのデータは失われます。続行しますか?」

    更新をカーネルに送信:

    partprobe /dev/sdb

    該当する場合は、他のドライブ (/dev/sdc と /dev/sdd など) に対してコマンドを繰り返します。

  • 必要に応じてハード ドライブをパーティション分割します。

    このチュートリアルでは、次のコマンドを使用して、既存のドライブ /dev/sda と同一のパーティションを作成します:

    sfdisk -d /dev/sda | sfdisk --force /dev/sdb

    該当する場合は、他のドライブ、つまり /dev/sdc および /dev/sdd に対してコマンドを繰り返します。

    ヒント「fdisk」を使用して手動でパーティションを作成している場合、追加のハード ドライブが複数ある場合は、上記の「sfdisk」コマンドを使用してパーティション構造を他のディスクに複製できます。たとえば、「sfdisk -d /dev/sdb | sfdisk –force /dev/sdc” は、/dev/sdb のパーティションを /dev/sdc に複製します。
  • パーティション タイプを Linux RAID 自動検出に変更します。これを行うには、特定のハードディスクを「fdisk」します。たとえば、
    fdisk /dev/sdb

    次に、t を発行します コマンド:

    Command (m for help): t
    Partition number (1-5): 1
    Hex code (type L to list codes): fd
    Changed system type of partition 1 to fd (Linux raid autodetect)

    ディスク上の残りのパーティションについて、このプロセスを繰り返します。次に、変更を永続化します:

    Command (m for help): w

  • 以前に「新しい」ディスクに RAID が設定されていた場合に備えて、新しいディスクの RAID を削除します:
    mdadm --stop --scan
    mdadm --zero-superblock /dev/sdb{1..9}

    そして、更新をカーネルに送信します:

    partprobe /dev/sdb

    該当する場合は、他のドライブ (/dev/sdc と /dev/sdd など) に対してコマンドを繰り返します。

  • 必要なモジュールをカーネルにロードします:
    modprobe raid0
    modprobe raid1
    modprobe raid10

    ここで「cat /proc/mdstat」を実行すると、次のようなものが表示されるはずです:

    <ブロック引用>

    パーソナリティ :[raid0] [raid1] [raid10]
    未使用のデバイス:

    RAID 関連モジュールはカーネルにロードされていますが、RAID セットは構成されていません。

  • 1 つのドライブ (つまり、現在 OS と共にインストールされ、起動に使用されている /dev/sda) がないため、RAID デバイスを劣化状態で作成します。 CentOS と RedHat バージョン 5.0 および 6.0 はデフォルトで Grub 0.97 を使用しているため、「-metadata=0.9」を指定して古いバージョンのスーパーブロックを使用します。そうしないと、Grub が「filesystem type unknown, partition type 0xfd」エラーで応答し、インストールを拒否する場合があります。さらに、mdadm はブート アレイに対する警告も鳴らします。このアレイは先頭にメタデータがあり、ブート デバイスとして適していない可能性があります。このデバイスに「/boot」を保存する場合は、ブートローダーが md/v1.x メタデータを認識できるようにするか、–metadata=0.90 を使用してください。パラメータは Grub2 では必要ありません。次の構文は、4 つのディスクで RAID10 アレイを構築していることを前提としています。オプションを「–level=1」に変更してディスクが 2 つしかない場合は、RAID1 に変更し、存在しないディスク パーティションを削除します。

    /boot には、RAID1 を使用します:

    mdadm --create --verbose /dev/md1 --metadata=0.9 --level=1 --raid-devices=4 missing /dev/sdb1 /dev/sdc1 /dev/sdd1

    / root には、意図したとおりに RAID10 を使用します:

    mdadm --create --verbose /dev/md2 --metadata=0.9 --level=10 --raid-devices=4 missing /dev/sdb2 /dev/sdc2 /dev/sdd2

    配列の作成を続行するかどうかを尋ねられたら、Y(es) と答えます .プロセスを繰り返して、スワップ スペースや他のパーティション用の RAID アレイを作成します (利用可能な場合)。

    注:mdadm が /dev/sdbX で応答すると、RAID アレイは拡張パーティション上に作成できません。このアレイには適していません。
  • 次のコマンドで結果を確認:
    cat /proc/mdstat

    出力は次のようになります:

    <ブロック引用>

    [raid0] [raid1] [raid10]
    md5 :アクティブな raid10 sdd5[3] sdc5[2] sdb5[1]
    4189184 ブロック 512K チャンク 2 ニアコピー [4/3] [_UUU]

    md2 :アクティブな raid10 sdd2[3] sdc2[2] sdb2[1]
    1939915776 ブロック 512K チャンク 2 ニアコピー [4/3] [_UUU]
    ビットマップ:15/15 ページ [60KB]、65536KB チャンク

    md1 :アクティブな raid1 sdd1[3] sdc1[2] sdb1[1]
    511936 ブロック [4/3] [_UUU]

    md3 :アクティブな raid10 sdd3[3] sdb3[1] sdc3[2]
    8387584 ブロック 512K チャンク 2 ニアコピー [4/3] [_UUU]

    未使用のデバイス:

  • 現在の RAID 構成から mdadm.conf を作成します:
    mdadm --examine --scan >> /etc/mdadm.conf
  • 新しい RAID デバイスにファイルシステムを作成します:
    mkfs.ext4 /dev/md1 # You may want to use mkfs.ext2 for ext2 filesystem for /boot
    mkfs.ext4 /dev/md2 # ext4 filesystem for / root
    mkswap /dev/md3 # Swap space

    作成された他の新しい RAID アレイに ext4 ファイルシステムを作成します。

  • /etc/fstab のデバイス エントリを置き換えます 新しい RAID デバイスを使用します。そのためには、まず次を実行します:
    blkid | grep /dev/md

    次のような新しいソフトウェア RAID デバイスの UUID を含む出力が返されます:

    <ブロック引用>

    /dev/md1:UUID=”1234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”ext4”
    /dev/md2:UUID=”2234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”ext4”
    /dev/md3:UUID=”3234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”スワップ”
    /dev/md5:UUID=”4234abcd-12ab-12ab-12ab-123456abcdef” TYPE=”ext4”

    /etc/fstab 内 、さまざまなマウント ポイントを含む行を、対応する新しい /dev/mdX 新しい RAID ファイルシステムの UUID、つまり「UUID=」の後の値に変更します。たとえば、

    UUID=2234abcd-12ab-12ab-12ab-123456abcdef /       ext4   defaults              1 1
    UUID=1234abcd-12ab-12ab-12ab-123456abcdef /boot   ext4   defaults              1 2
    UUID=4234abcd-12ab-12ab-12ab-123456abcdef /tmp    ext4   noexec,nosuid,nodev   1 2
    UUID=3234abcd-12ab-12ab-12ab-123456abcdef swap    swap   defaults              0 0

    tmpfs、devpts、sysfs、proc などはそのままにしておきます。もちろん、自分が何をしているのかわかっている場合や、根本的に異なるファイルシステムを使用している場合は、fstab を好きなように変更できます。

  • initrd を更新し、新しい mdadm.conf で initramfs を再構築します:
    mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.old
    dracut --mdadmconf  --add-drivers "raid1 raid10" --filesystems "ext4 ext3 swap tmpfs devpts sysfs proc" --force /boot/initramfs-$(uname -r).img $(uname -r)

    注:特に LiveCD でコマンドが機能しない場合は、$(uname -r) を実際のカーネル バージョンに置き換えてください。

  • /boot/grub/menu.lst 内 、カーネルの UUID またはラベル エントリの値を、RAID アレイまたは /dev/md2 の / (ルート ディレクトリ) の UUID に変更します (/boot が別のパーティションにマウントされている場合は変更します)。例:
    title CentOS (2.6.32-504.3.3.el6.x86_64)
            root (hd0,0)
            kernel /vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=UUID=2234abcd-12ab-12ab-12ab-123456abcdef rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet
            initrd /initramfs-2.6.32-504.3.3.el6.x86_64.img

    または、

    title CentOS (2.6.32-504.3.3.el6.x86_64)
            root (hd0,0)
            kernel /vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=/dev/md2 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet
            initrd /initramfs-2.6.32-504.3.3.el6.x86_64.img

    NO rn_NO_DM であることを確認してください と rn_NO_MD ブート パラメーターは、カーネルのオプションとしてリストされていません。編集が終了したら、更新された menu.lst を保存します。

  • 既存のパーティション上の既存のデータを新しいソフトウェア RAID パーティションに手動で複製します。

    / root (/dev/md2、そうでない場合は適宜変更):

    mkdir /mnt/raid
    mount /dev/md2 /mnt/raid
    cd /mnt/raid
    cp -ax / .
    sync

    /ブートの場合:

    rm -rf /mnt/raid/boot
    mkdir /mnt/raid/boot
    mount /dev/md1 /mnt/raid/boot
    cd /mnt/raid/boot
    cp -ax /boot/* .
    sync

    SELinux では、touch /mnt/raid/.autorelabel も実行します。 /ブート用。

    /var、/home など、さらに多くのパーティションが使用可能な場合は、これらのファイル システムに対してプロセスを繰り返します。例:

    rm -rf /mnt/raid/home
    mkdir /mnt/raid/home
    mount /dev/md1 /mnt/raid/home
    cd /mnt/raid/home
    cp -ax /home/* .
    sync
    ヒント ファイルを新しい RAID アレイにコピーおよび複製するには、さまざまな方法があります。例:

    rsync -avxHAXS --delete --progress / /mnt/raid
    tar -C / -clspf - . | tar -xlspvf -
    find / -depth -xdev | cpio -pmd /mnt/raid
  • すべてのディスクの MBR に Grub 0.97 をインストールして、ディスクの 1 つに障害が発生した場合でもシステムを起動できるようにします。これを行うには、次の手順を実行する必要があります::
    grub
    grub> root (hd0,0)
    grub> setup (hd0) 
    grub> root (hd1,0)
    grub> setup (hd1)
    grub> root (hd2,0)
    grub> setup (hd2)
    grub> root (hd3,0)
    grub> setup (hd3)
    grub> quit

    ハード ドライブが 2 台しかない場合は、hd2 と hd3 をスキップしてください。

  • サーバーを再起動します。サーバーが戻ってこない場合に備えてすべてをバックアップしてから、
    reboot
    を発行します。
  • 現在実行中のシステムでの Linux ソフトウェア RAID サポートの構成の最初の部分が完了しました。サーバーが復旧した場合は、次の手順に進み、不足しているハードディスク (システムを最初に実行していた /dev/sda など) を RAID アレイに再度追加します。次のガイドでは、RAID アレイに追加されていない残りのディスクが /dev/sda であると想定しています。デバイス名が異なる場合は変更してください。

    <オール>
  • サーバーの起動後、ファイルシステムが RAID アレイ (つまり、/dev/md0、/dev/md1…./dev/md3) にマウントされていることを確認します。
    df -h

    期待される結果:

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/md2        1.8T  1.2G  1.7T   1% /
    tmpfs           3.9G     0  3.9G   0% /dev/shm
    /dev/md1        477M   76M  377M  17% /boot
    /dev/md5        3.9G  8.1M  3.7G   1% /tmp 
  • 次のコマンドを使用して、ディスクのパーティション テーブルを MBR に変更します。ディスクに GTP パーティション テーブルがない場合は、この手順をスキップしてください。
    parted /dev/sda
    (parted) mktable msdos
    (parted) quit

    はいと答える 「警告:/dev/sdb の既存のディスク ラベルは破棄され、このディスクのすべてのデータは失われます。続行しますか?」

  • /dev/sda:
    fdisk /dev/sda
    の既存のパーティションをすべて削除します。
    Command (m for help): d
    Partition number (1-5): 1
    
    Command (m for help): d
    Partition number (1-5): 2
    
    Command (m for help): d
    Partition number (1-5): 3
    
    Command (m for help): d
    Partition number (1-5): 4
    
    Command (m for help): d
    Partition number (1-5): 5
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
  • ディスク上の RAID をすべて削除します:
    mdadm --zero-superblock /dev/sda{1..9}

    更新をカーネルに送信:

    partprobe /dev/sda
  • /dev/sdb:
    sfdisk -d /dev/sdb | sfdisk --force /dev/sda
    からパーティション構造をコピーします
  • ラン:
    fdisk -l

    RAID アレイを形成するすべてのパーティションが fd であることを確認します Linux RAID 自動検出パーティション タイプ (「Id」列の値)。タイプ 83 Linux の場合は、fdisk、cfdisk、または parted を使用して「fd」に変更します。例:

    変更がある場合は、カーネルに更新を送信します。

    partprobe /dev/sda
  • /dev/sda のパーティションをそれぞれの RAID アレイに追加してアレイを完成させます (RAID10 では 4 ディスク、RAID1 では 2 ディスク):
    mdadm --add /dev/md1 /dev/sda1
    mdadm --add /dev/md2 /dev/sda2
    mdadm --add /dev/md3 /dev/sda3

    該当する場合は、他のパーティションについても繰り返します。

  • 次のコマンドで RAID リカバリ プロセスの進行状況を確認します:
    cat /proc/mdstat

    出力は次のようになります:

    <ブロック引用>

    [raid0] [raid1] [raid10]
    md5 :アクティブな raid10 sdd5[3] sdc5[2] sdb5[1]
    4189184 ブロック 512K チャンク 2 ニアコピー [4/3] [_UUU]

    md2 :アクティブな raid10 sdd2[3] sdc2[2] sdb2[1]
    1939915776 ブロック 512K チャンク 2 ニアコピー [4/3] [_UUU]
    [====>……………………………….] 回復 =37.8% (177777777/388888888) 終了 =60.5 分 速度 =100000K/秒
    ビットマップ:15/15 ページ [60KB]、65536KB チャンク

    md1 :アクティブな raid1 sdd1[3] sdc1[2] sdb1[1]
    511936 ブロック [4/3] [_UUU]

    md3 :アクティブな raid10 sdd3[3] sdb3[1] sdc3[2]
    8387584 ブロック 512K チャンク 2 ニアコピー [4/3] [_UUU]

    未使用のデバイス:

    ヒント次のコマンドを使用して、/proc/mdstat ファイルの内容を継続的に更新できます。このコマンドは 5 秒間隔で更新されます:

    watch -n 5 cat /proc/mdstat
  • grub を使用して /dev/sda MBR にブート レコードを再作成し、システムがどのディスクでも起動できるようにします:
    grub
    grub> root (hd0,0)
    grub> setup (hd0) 
    grub> quit
  • すべての RAID アレイを復旧したら、システムの再起動を実行します。
    reboot
  • システムが復旧してオンラインになったとき、おめでとうございます。ソフトウェア RAID で実行されています。
  • mdadm で RAID を有効にした後、最も重要なことは、電子メール アラート通知システムが機能していることを確認することです。 Linux ソフトウェア RAID は、ディスク障害などの RAID アレイで発生する可能性のある問題を自身で監視し、発生する可能性のあるエラーを検出したときに電子メール通知を送信できます。

    メール通知が機能していることを確認するには、次のコマンドを発行します:

    mdadm --monitor --test --oneshot /dev/md1

    /proc/mdstat の内容が記載された電子メールを受信する必要があります。メールが届かない場合は、システムがメールを送信できることを確認し、MAILADDR を確認してください。 mdadm.conf の値 .次のようになります:

    MAILADDR [email protected]

    Linux
    1. RedhatLinuxで仮想化を構成する方法

    2. Centos8をAlmaLinux8.3に移行する方法

    3. CentOS / Fedora / RedHat(RHEL)のキックスタートファイルを作成する方法

    1. Linux / CentOS / Redhat/Ubuntuでスワップを増やす方法

    2. CentOS/RHEL 8 で既存の Iptables ルールを Nftables に移行する方法

    3. RedHat / CentOS :mdadm によるソフトウェア RAID の管理

    1. CentOS8からRockyLinux8に移行する方法

    2. Linux:スワップ パーティションを作成しませんか?

    3. EFI システム パーティションを作成する方法は?