komeの備忘録

東大院卒外資ITエンジニアの技術ブログ

Ubuntu18.04で4TBのソフトウェアRAID1を組む

システム構成

  • Ubuntu 18.04.1 LTS Desktop
  • SSD: 128GB (Boo用途t)
  • HDD: 4TB x 2 (同一デバイス)

はじめに

今回はHDD2枚をRAID1でミラーリングの構成を作成する。 SSDには既にUbuntuがインストール済みであり、あとからHDD2枚で構成されたRAID1ストレージをシステムに追加して、ストレージの増強をする。 なお今回、それぞれのデバイスは次のディレクトリに割り当てられている。

デバイス ファイル名
SSD /dev/sda
HDD(1) /dev/sdb
HDD(2) /dev/sdc

準備

まずはシステムを最新にして、必要なソフトウェアをインストールする。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install mdadm

HDDのフォーマットとファイルシステムの変更

fdiskでもpartedのどちらでもできそうではあるが、次のサイトの情報によると、2TBを超えるストレージを認識させるためにはpartedでなければいけないらしい。

qiita.com

$ sudo parted /dev/sdb
(parted) unit GB
(parted) mklabel gpt
(parted) mkpart primary xfs 0% 100%
(parted) set 1 raid on
(parted) p
Model: ATA ST4000DM004-2CV1 (scsi)
Disk /dev/sdb: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name       Flags
 1      1049kB  4001GB  4001GB               primary    raid

これと同様の操作を/dev/sdcに対しても行う。

その後以下のコマンドで/dev/sd{b,c}1があることを確認する

$ ls /dev/sd*

mdadmでRAIDアレイを作成

以下のコマンドでRAIDアレイを作成する。

$ sudo mdadm --create /dev/md0 --level=1 --raid-device=2 missing /dev/sdb1

--createで作成するアレイの名前を指定する。更に--levelでRAIDの種類を指定する。今回はミラーリングのRAID1構成のため、ここでは1を指定した。更に--raid-deviceでraidを構成するディスクの台数を指定する。最後の2つの引数は、--raid-deviceで指定した台数分のディスクのファイルパスを指定する。今回は、1台は実際のデバイスである/dev/sdb1を指定して、もう1台は最初は指定しなかった。

これは、最初にこのコマンドで2つのデバイスを指定すると同期が始まり、長い時間待たされてしまうらしいからである。

従って、/dev/md0を作成後、missingにした部分にもう1つのディスクを追加する。

$ sudo mdadm /dev/md0 --add /dev/sdc1

これでraidアレイである/dev/md0が爆誕する。

RAIDアレイのフォーマット

つぎに作成したRAIDアレイを使えるように設定し直す。

$ sudo touch /etc/mdadm.conf
$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf
$ sudo mkfs.ext4 /dev/md0

ちょっと時間がかかる。ファイルサイズにもよると思うが、今回は1分くらいかかった。

マウントと再起動設定

$ sudo blkid | grep md0
/dev/md0: UUID="hogehoge" TYPE="ext4"

ここではUUIDを確認する。この場合は便宜的にhogehogeとなっている。 RAIDアレイは/mnt/storageにマウントすることにしておく。あらかじめここにディレクトリを作成しておく。この場所に関しては、適宜変更しても良い。 これを用いて/etc/fstabに次の1文を追記する。

UUID=hogehoge /mnt/storage ext4 defaults 1 2

そしてマウントする。面倒だったら次のコマンドで全部マウントする。

$ sudo mount -a

/etc/fstabに記述することで再起動時も自動的にマウントされる。

再起動後

無事に全部終わり!と思って再起動後にマウントされたかを確認すると以下のように表示された。

$ df -h
.
.
/dev/md127  3.6T    89M 3.4T    1%  /mnt/storage

/dev/md127!?

となって色々調べたらmd127問題というのがあるらしいことがわかった。

ubuntuforums.org

これに従って対処した。

まず/etc/mdadm.confに作成したファイルを以下のように編集する。必要最低限のものだけ記述すると以下のようになる。

ARRAY /dev/md0 UUID=hugahuga

さらに次のコマンドで何かを更新。そして再起動

$ sudo update-initramfs -u
$ sudo reboot
$ df -h
.
.
/dev/md0 ...

戻った!!

まとめ

4TBを超えるストレージを作成する場合のファイルシステムで若干詰まった。 xfsを指定してそれぞれのディスクを初期化し、さらにこのデバイスを用いてソフトウェアRAIDをするのも少々詰まった。Ubuntu18でやっている例もあんまりなかったので、参考にしてもらえたらよい。

ちなみにmdadmでRAIDアレイを作成する時に片方をmissingにしなくてもよい回避方法を知っている人がいたらぜひ教えてほしい。コメントで知らせてくれると喜びます。

参考にしたサイト

https://increment-log.com/centos7-mdadm-raid/

Linux: 2TB以上あるUSBハードディスクを認識させる方法 - Qiita

[ubuntu] RAID starting at md127 instead of md0