CentOS HDD増設+RAID1

サーバーに1TBのHDDを2台増設し、RAID1を構築、ストレージとして利用する。
CentOSでソフトウェアRAIDの構築を参考に作業。

HDDの認識を確認する

[root@microserver ~]# fdisk -l

ディスク /dev/sda: 500.1 GB, 500107862016 バイト
ヘッド 255, セクタ 63, シリンダ 60801
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000a159b

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1               1       60802   488385536   8e  Linux LVM

ディスク /dev/sdb: 1000.2 GB, 1000204886016 バイト
ヘッド 255, セクタ 63, シリンダ 121601
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
ディスク識別子: 0x00000000


ディスク /dev/sdc: 1000.2 GB, 1000204886016 バイト
ヘッド 255, セクタ 63, シリンダ 121601
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
ディスク識別子: 0x00000000


ディスク /dev/sdd: 163.9 GB, 163928604672 バイト
ヘッド 255, セクタ 63, シリンダ 19929
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x245aa53b

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdd1   *           1          64      512000   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sdd2              64       19930   159572992   8e  Linux LVM

一応シリアルナンバーを控えていたがそこまで確認するまでもなく、容量で一目瞭然。
hdparmでシリアルナンバーを表示できるらしい。
対象のHDDがどのディスクとして認識されているのか確認する。
今回は

  • sdb
  • sdc

の2台。

HDDへテーブル情報の書き込み

[root@microserver ~]# fdisk /dev/sdb
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルをディスク識別子 0x674ef44e で作成します。
あなたが書き込みを決定するまで、変更はメモリ内だけに残します。
その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
      強く推奨します。 and change display units to
         sectors (command 'u').

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-121601, 初期値 1):
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-121601, 初期値 121601):
初期値 121601 を使います

コマンド (m でヘルプ): t
選択した領域 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

2つ目も同じ。

[root@microserver ~]# fdisk /dev/sdc
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルをディスク識別子 0x8aa1c07e で作成します。
あなたが書き込みを決定するまで、変更はメモリ内だけに残します。
その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
      強く推奨します。 and change display units to
         sectors (command 'u').

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-121601, 初期値 1):
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-121601, 初期値 121601):
初期値 121601 を使います

コマンド (m でヘルプ): t
選択した領域 1
16進数コード (L コマンドでコードリスト表示): fd
領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

ディスク情報確認

[root@microserver ~]# fdisk -l

ディスク /dev/sda: 500.1 GB, 500107862016 バイト
ヘッド 255, セクタ 63, シリンダ 60801
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x000a159b

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1               1       60802   488385536   8e  Linux LVM

ディスク /dev/sdb: 1000.2 GB, 1000204886016 バイト
ヘッド 255, セクタ 63, シリンダ 121601
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
ディスク識別子: 0x674ef44e

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1               1      121601   976760001   fd  Linux raid 自動検出
Partition 1 does not start on physical sector boundary.

ディスク /dev/sdc: 1000.2 GB, 1000204886016 バイト
ヘッド 255, セクタ 63, シリンダ 121601
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
ディスク識別子: 0x8aa1c07e

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdc1               1      121601   976760001   fd  Linux raid 自動検出
Partition 1 does not start on physical sector boundary.

RAIDアレイ作成

[root@microserver ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[bc]1
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? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

RAIDアレイ作成状況を確認する

[root@microserver ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
      976628736 blocks super 1.2 [2/2] [UU]
      [=>...................]  resync =  7.3% (72244992/976628736) finish=107.5min speed=140164K/sec

unused devices: 

それなりに時間がかかるようなので、しばらく待つ。
適宜進捗を確認して、終了したら次の作業に移る。

設定ファイルに追記する

[root@microserver ~]# mdadm --detail --scan >> /etc/mdadm.conf

フォーマットする

[root@microserver ~]# mkfs -t ext3 /dev/md0

マウント設定を記述する

[root@microserver ~]# vi /etc/fstab
#RAID1
/dev/md0                [マウント先フォルダのパス]                   ext3 0 2

末尾2つの数字は「ダンプフラグ」と「読み込み優先度」。
今回の目的はストレージ(データ置き場)なので、ダンプは不要(0)。
システムドライブではないので優先度を主要デバイス(2)に設定。
データしか置かない場合はそれ以外のデバイス(3)。

設定がめんどくさいので、既に作成済みのsamba共有フォルダの中に新しくフォルダを作成し、とりあえずのマウント先とした。

容量の表示が、作成済みのsamba共有フォルダがあるHDDの容量になっている。
のちのち問題になりそうなので、きちんと設定したい。