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。
<オール>mdadm --examine --scan > /etc/mdadm.conf mdadm --assemble --scan cat /proc/mdstat
mdadm --stop --scan
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 に複製します。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
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 セットは構成されていません。
/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]
未使用のデバイス:
mdadm --examine --scan >> /etc/mdadm.conf
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 ファイルシステムを作成します。
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 を好きなように変更できます。
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) を実際のカーネル バージョンに置き換えてください。
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 を保存します。
/ 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
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 であると想定しています。デバイス名が異なる場合は変更してください。
<オール>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
parted /dev/sda (parted) mktable msdos (parted) quit
はいと答える 「警告:/dev/sdb の既存のディスク ラベルは破棄され、このディスクのすべてのデータは失われます。続行しますか?」
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.
mdadm --zero-superblock /dev/sda{1..9}
更新をカーネルに送信:
partprobe /dev/sda
sfdisk -d /dev/sdb | sfdisk --force /dev/sdaからパーティション構造をコピーします
fdisk -l
RAID アレイを形成するすべてのパーティションが fd であることを確認します Linux RAID 自動検出パーティション タイプ (「Id」列の値)。タイプ 83 Linux の場合は、fdisk、cfdisk、または parted を使用して「fd」に変更します。例:
変更がある場合は、カーネルに更新を送信します。
partprobe /dev/sda
mdadm --add /dev/md1 /dev/sda1 mdadm --add /dev/md2 /dev/sda2 mdadm --add /dev/md3 /dev/sda3
該当する場合は、他のパーティションについても繰り返します。
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 grub> root (hd0,0) grub> setup (hd0) grub> quit
reboot
mdadm で RAID を有効にした後、最も重要なことは、電子メール アラート通知システムが機能していることを確認することです。 Linux ソフトウェア RAID は、ディスク障害などの RAID アレイで発生する可能性のある問題を自身で監視し、発生する可能性のあるエラーを検出したときに電子メール通知を送信できます。
メール通知が機能していることを確認するには、次のコマンドを発行します:
mdadm --monitor --test --oneshot /dev/md1
/proc/mdstat の内容が記載された電子メールを受信する必要があります。メールが届かない場合は、システムがメールを送信できることを確認し、MAILADDR を確認してください。 mdadm.conf の値 .次のようになります:
MAILADDR [email protected]