はじめに
今回はVMware vSphere 上の理HDDのボリュームをCentOSの仮想マシンに割り当てて、RAID1(ミラーリング)バックアップディスクを作成し、万が一の自体にも対応できるようディスクの2重化体制を行いたいと思います。
構成
CentOS 6.5 64bit版(VMWare vsphere上のVM)
※今回、筆者の構成はvsphere上の物理HDDを対象の仮想マシンに割り当てを行いました。
物理サーバご利用の場合、適宜調整していただければと思います。
まずは作業前の状態です。
ここからRAID1ディスクの作成を行います。
[root@manage ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 45G 5.9G 37G 14% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 485M 58M 402M 13% /boot
RAID1ディスクの作成
dmesg コマンドで増設したHDDが現在認識しているかを確認します。
筆者環境の場合、sdb(900GB)とsdc(900GB)が増設分のHDDとなります。
[root@manage ~]# dmesg | grep sd sd 2:0:0:0: [sda] 104857600 512-byte logical blocks: (53.6 GB/50.0 GiB) sd 2:0:0:0: [sda] Write Protect is off sd 2:0:0:0: [sda] Mode Sense: 61 00 00 00 sd 2:0:1:0: [sdb] 1887436800 512-byte logical blocks: (966 GB/900 GiB) sd 2:0:0:0: [sda] Cache data unavailable sd 2:0:0:0: [sda] Assuming drive cache: write through sd 2:0:1:0: [sdb] Write Protect is off sd 2:0:1:0: [sdb] Mode Sense: 61 00 00 00 sd 2:0:1:0: [sdb] Cache data unavailable sd 2:0:1:0: [sdb] Assuming drive cache: write through sd 2:0:0:0: [sda] Cache data unavailable sd 2:0:0:0: [sda] Assuming drive cache: write through sda: sd 2:0:1:0: [sdb] Cache data unavailable sd 2:0:1:0: [sdb] Assuming drive cache: write through sdb: unknown partition table sd 2:0:2:0: [sdc] 1887436800 512-byte logical blocks: (966 GB/900 GiB) sd 2:0:2:0: [sdc] Write Protect is off sd 2:0:2:0: [sdc] Mode Sense: 61 00 00 00 sda1 sda2 sd 2:0:2:0: [sdc] Cache data unavailable sd 2:0:2:0: [sdc] Assuming drive cache: write through sd 2:0:1:0: [sdb] Cache data unavailable sd 2:0:1:0: [sdb] Assuming drive cache: write through sd 2:0:1:0: [sdb] Attached SCSI disk sd 2:0:2:0: [sdc] Cache data unavailable sd 2:0:2:0: [sdc] Assuming drive cache: write through sdc: sd 2:0:0:0: [sda] Cache data unavailable sd 2:0:0:0: [sda] Assuming drive cache: write through sd 2:0:0:0: [sda] Attached SCSI disk sd 2:0:2:0: [sdc] Cache data unavailable sd 2:0:2:0: [sdc] Assuming drive cache: write through sd 2:0:2:0: [sdc] Attached SCSI disk dracut: Scanning devices sda2 for LVM logical volumes VolGroup/lv_swap VolGroup/lv_root sd 2:0:0:0: Attached scsi generic sg1 type 0 sd 2:0:1:0: Attached scsi generic sg2 type 0 sd 2:0:2:0: Attached scsi generic sg3 type 0 EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: SELinux: initialized (dev sda1, type ext4), uses xattr
fdisk コマンドでディスクの詳細を確認します。
[root@manage ~]# fdisk -l ディスク /dev/sda: 53.7 GB, 53687091200 バイト ヘッド 64, セクタ 32, シリンダ 51200 Units = シリンダ数 of 2048 * 512 = 1048576 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x000a82d6 デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 2 501 512000 83 Linux パーティション 1 は、シリンダ境界で終わっていません。 /dev/sda2 502 51200 51915776 8e Linux LVM パーティション 2 は、シリンダ境界で終わっていません。 ディスク /dev/sdb: 966.4 GB, 966367641600 バイト ヘッド 255, セクタ 63, シリンダ 117487 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00000000 ディスク /dev/sdc: 966.4 GB, 966367641600 バイト ヘッド 255, セクタ 63, シリンダ 117487 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00000000 ディスク /dev/mapper/VolGroup-lv_root: 49.0 GB, 48997859328 バイト ヘッド 255, セクタ 63, シリンダ 5956 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00000000 ディスク /dev/mapper/VolGroup-lv_swap: 4160 MB, 4160749568 バイト ヘッド 255, セクタ 63, シリンダ 505 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00000000
引き続き、fdiskコマンドでRAID用のディスク領域の作成をします。
筆者環境の対象はsdbとsdcです。
下記内容は /dev/sdb のみですが、同じく /dev/sdc も同じ作業をします。
[root@manage ~]# fdisk /dev/sdb デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも 含んでいません 新たに DOS ディスクラベルをディスク識別子 0xb3c027fb で作成します。 あなたが書き込みを決定するまで、変更はメモリ内だけに残します。 その後はもちろん以前の内容は修復不可能になります。 警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって 正常になります 警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを 強く推奨します。 and change display units to sectors (command 'u'). コマンド (m でヘルプ): m コマンドの動作 a ブート可能フラグをつける b bsd ディスクラベルを編集する c dos 互換フラグをつける d 領域を削除する l 既知の領域タイプをリスト表示する m このメニューを表示する n 新たに領域を作成する o 新たに空の DOS 領域テーブルを作成する p 領域テーブルを表示する q 変更を保存せずに終了する s 空の Sun ディスクラベルを作成する t 領域のシステム ID を変更する u 表示/項目ユニットを変更する v 領域テーブルを照合する w テーブルをディスクに書き込み、終了する x 特別な機能 (エキスパート専用) コマンド (m でヘルプ): l 0 空 24 NEC DOS 81 Minix / 古い bf Solaris 1 FAT12 39 Plan 9 82 Linux スワッ c1 DRDOS/sec (FAT- 2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 40 Venix 80286 84 OS/2 隠し C: c6 DRDOS/sec (FAT- 4 FAT16 <32M 41 PPC PReP Boot 85 Linux 拡張領 c7 Syrinx 5 拡張領域 42 SFS 86 NTFS ボリュ da 非 FS デー 6 FAT16 4d QNX4.x 87 NTFS ボリュ db CP/M / CTOS / . 7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux プレー de Dell ユーテ 8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt 9 AIX ブート 50 OnTrack DM 93 Amoeba e1 DOS access a OS/2 ブート 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad eb BeOS fs e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT f W95 拡張領 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC 11 隠し FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor 12 Compaq 診断 61 SpeedStor a9 NetBSD f4 SpeedStor 14 隠し FAT16 <3 63 GNU HURD また ab Darwin ブー f2 DOS セカン 16 隠し FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS 17 隠し HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST SmartSleep 70 DiskSecure Mult b8 BSDI スワッ fd Linux raid 自 1b 隠し W95 FAT3 75 PC/IX bb 隠し Boot Wiz fe LANstep 1c 隠し W95 FAT3 80 古い Minix be Solaris ブー ff BBT 1e 隠し W95 FAT1 コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本パーティション (1-4) p パーティション番号 (1-4): 1 最初 シリンダ (1-117487, 初期値 1): 初期値 1 を使います Last シリンダ, +シリンダ数 or +size{K,M,G} (1-117487, 初期値 117487): 初期値 117487 を使います コマンド (m でヘルプ): t 選択した領域 1 16進数コード (L コマンドでコードリスト表示): fd 領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました コマンド (m でヘルプ): w パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 ディスクを同期しています。
RAID用のディスクの準備が出来ました。
[root@manage ~]# fdisk -l /dev/sdb ディスク /dev/sdb: 966.4 GB, 966367641600 バイト ヘッド 255, セクタ 63, シリンダ 117487 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0xb3c027fb デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 1 117487 943714296 fd Linux raid 自動検出 [root@manage ~]# [root@manage ~]# fdisk -l /dev/sdc ディスク /dev/sdc: 966.4 GB, 966367641600 バイト ヘッド 255, セクタ 63, シリンダ 117487 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0xa6b0a5eb デバイス ブート 始点 終点 ブロック Id システム /dev/sdc1 1 117487 943714296 fd Linux raid 自動検出
これからRAID1のディスクを作成します。
mdadmコマンドでRAID1(ミラーリング)を作成します。
[root@manage ~]# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb1 /dev/sdc1 mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 Continue creating array? Continue creating array? (y/n) y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
コマンド実行後、環境次第によっては相当時間がかかるので時間に余裕があるなら1日放置でも良いかもしれません。
尚、RAID1作成の進捗状況については下記コマンドを実行することにより、状況を確認できます。
resync 部分が100%になるまでしばらく待ちます。
[root@manage ~]# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdc1[1] sdb1[0] 943583040 blocks super 1.2 [2/2] [UU] [>....................] resync = 0.3% (3179968/943583040) finish=1278.1min speed=12261K/sec
RAID1の作成が完了したらファイルシステムを作成します。
[root@manage ~]# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdc1[1] sdb1[0] 943583040 blocks super 1.2 [2/2] [UU] unused devices: <none>
今回筆者の作成するファイルシステムはext4ですが、適宜変更してください。
[root@manage ~]# mke2fs -t ext4 /dev/md0 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 58974208 inodes, 235895760 blocks 11794788 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 7199 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848 Writing inode tables: 4376/7199
ファイルシステムが作成でき次第、ディスクを /mnt/md0 へマウントします。
マウント場所は適宜調整してください。
[root@manage ~]# mkdir /mnt/md0 [root@manage ~]# mount -t ext4 /dev/md0 /mnt/md0 [root@manage ~]# cat /proc/mounts | grep md0 /dev/md0 /mnt/md0 ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0 [root@manage ~]# df -h | grep md /dev/md0 886G 4.2G 837G 1% /mnt/md0
マウント後、サーバの再起動などにより自動的にマウントできるよう fstab に記述しておきます。
特段、サーバ再起動して問題ない環境であればサーバ再起動後、自動的にマウントされているか確認して終了です。
[root@manage ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Sun Sep 28 18:48:59 2014 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/VolGroup-lv_root / ext4 defaults 1 1 UUID=a73b2e4f-81b3-4eb1-a2c1-d4e8b8fd27e2 /boot ext4 defaults 1 2 /dev/mapper/VolGroup-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/md0 /mnt/md0 ext4 defaults 0 0
おまけ
RAID1ボリュームの追加がてら、余っているHDDも増設しました。
しばらくは容量に困らないのではと思います。
[root@manage ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 45G 11G 33G 25% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 485M 58M 402M 13% /boot /dev/md0 886G 4.2G 837G 1% /mnt/md0 /dev/sdd1 296G 3.5G 277G 2% /mnt/sdd1 /dev/sde1 296G 191M 281G 1% /mnt/sde1
まとめ
RAID1(ミラーリング)バックアップを構成して、万が一の自体にも対応できるバックアップ体制となりました。
筆者の環境では物理サーバを利用しての導入でしたが、AWSのEBSをRAID構成にすることも可能です。
また、ディザスタリカバリとして「Amazon S3」や「Amazon Glacier」へのバックアップも最近の案件として増えております。
データがなくなったら最後、万が一のために保険はとっておきましょう。
[amazonjs asin=”4798043591″ locale=”JP” title=”CentOS7で作るネットワークサーバ構築ガイド (Network server construction gu)”]
[amazonjs asin=”4800711258″ locale=”JP” title=”実践! CentOS 7 サーバー徹底構築”]