Linuxで4kセクタのHDDを使ったソフトウェアRAIDの設定方法。
既にOSをブートさせるDISKは別に存在している前提での作業。
最初にmdadmをインストール。
sudo apt-get install mdadm
今回はkvmのイメージ用に用意している為、消費電力を下げるために2.5inchのSeagate製 500G HDDを2台手配しました。システム全体の消費電力は、HDDにフルに負荷がかかっているRAID構成時でも32w程度(ワットチェッカーで計測)でした。優秀です。
富士通 格安サーバ(N54L)構成 | |
---|---|
CPU | Intel(R) Pentium(R) CPU G620 @ 2.60GHz(TX100 S3のデフォルトのCPU) |
メモリ | 4G ECC |
起動ディスク(USB) | SuperTalent Express ST1 USB3.0対応 フラッシュメモリ 16GB |
HDD(録画ファイル) | ST500LT012 |
HDD(KVMイメージ) | ST500LT012 2台(RAID) |
その他 | pt3 SCR3310-NTTCom |
消費電力(通常/RAID同期時) | 22w/31w |
一般的なLinuxのハードウェア構成ですが、Linux自体はUSBメモリにインストールしていおり、更に消費電力を下げる為の各種設定を行っています。その為、各HDDへのアクセスが無いときには低消費電力での運用となる為、特に処理をしていない状態だと22w程度と、やけに消費電力が低いです。HDD3台でPT3搭載でこの消費電力はちょっと自慢です。 |
RAID1用に使うHDDは2台で下記の通り。
/dev/sdb /dev/sdc
partedで4kセクタ用にパーティションを作成する。
/dev/sdb、/dev/sdc共に、下記のようにパーティションを作成する。
parted -a optimal /dev/sdb GNU Parted 2.3 /dev/sdb を使用 GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。 (parted) mklabel gpt (parted) unit s (parted) mkpart primary 2048s 100% (parted) align-check opt 1 1 aligned (parted) set 1 raid on (parted) quit 通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
fdisk -l /dev/sdb 警告: GPT (GUID パーティションテーブル) が '/dev/sdb' に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。 Disk /dev/sdb: 500.1 GB, 500107862016 bytes ヘッド 255, セクタ 63, シリンダ 60801, 合計 976773168 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト ディスク識別子: 0x00000000 デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 1 976773167 488386583+ ee GPT パーティション 1 は物理セクタ境界で始まっていません:
chunkサイズの単位はkで、OSを入れるわけではなく、KVMのイメージを格納するのが目的なので、512kで指定する。未指定の場合には64kがデフォルト値となる。
mdadmでRAID1構成を組む
mdadm --create --verbose /dev/md127 --chunk=512 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
RAIDのステータスを確認する。
500Gの2.5inchHDDなので、大体1時間強で初期化が完了するとのこと。
cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md127 : active raid1 sdc1[1] sdb1[0] 488254272 blocks super 1.2 [2/2] [UU] [=>...................] resync = 7.7% (37934144/488254272) finish=69.5min speed=107893K/sec unused devices:
ファイルシステムの作成。ext4で作成する。
mkfs.ext4 -m 0 -b 4096 /dev/md1
速度を計測しておく。
hdparm -Tt /dev/md1
fstabにUUID指定でマウントポイントを記載する
/etc/fstabに新しいmd127を記載して、起動時にマウントするようにする為に、UUIDを調べる。
sudo tune2fs -l /dev/md127 | grep UUID Filesystem UUID: d9c88fc4-ffdf-45d9-8cb8-7f88325ebd24
# 取り合えず、/imagesにマウントするようにしているが、適宜マウントポイントは変更すること。 mkdir /images vi /etc/fstab
# 元々あった部分 UUID=e9ba7772-f22b-4f8b-b006-b4b2a5a6416e / ext4 relatime,errors=remount-ro 0 1 UUID=5f217639-7c4e-43a2-babc-848f36a8dad4 /video ext4 relatime,errors=remount-ro 0 1 /dev/shm /tmp tmpfs size=512m 0 0 /dev/shm /var tmpfs size=768m 0 0 # 今回、md127として追加したRAID1のボリューム UUID=d9c88fc4-ffdf-45d9-8cb8-7f88325ebd24 /images ext4 relatime 0 1
mkdir /images vi /etc/fstab
cat /proc/mdstatの結果が完了になるまで待ってから再起動して、マウントできることを確認する。今回、ついうっかりマウントポイントを作成する前に再起動させてしまい、s(skip)を押下して再起動後、ディレクトリを作成し直した。そのようなうっかりミスの場合には、ssh接続のみで起動画面を見れないとはまるので注意。