[ VMware vSphere ] 物理HDDのボリュームをCentOSの仮想マシンに割り当てる

[ VMware vSphere ] 物理HDDのボリュームをCentOSの仮想マシンに割り当てる

はじめに

今回は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」へのバックアップも最近の案件として増えております。

データがなくなったら最後、万が一のために保険はとっておきましょう。