大容量HDDが安価になってきて、時代はTBは当たり前になってきました。
実際、1TBのデータをコピーしようとすると、とてつもない時間を有するのですが、それでも、データは減ることは無く、膨らみ続けていきます。
みなさんは、自分のデータをどのように管理していますか?
スマホのデータは、AppleやGoogleのストレージサービスを利用しているかと思いますが、無料枠はどこも5GBぐらいで、ハナクソぐらいの容量しか無いため、写真や動画をよく撮る人であれば、ソッコーでいっぱいになってしまいます。
そして有料の1TBぐらいのプランに入らざるをえないのですが、Dropboxもevernoteも個人的には、どのストレージも漏洩の心配もさることながら、サブスクリプションモデルを使い続けるぐらいなら、自宅でHDDを構築したほうが電気代はかかるけどよっぽど便利に扱えるというのはエンジニアならではの思考かもしれません。
Raid10をUSBでサーバーにつないだ結果・・・
以前に8TBを4台購入してきて、Raid10環境を構築したという事をブログに書きましたが、
[Server] 大容量ディスク(8TB)を4台購入してRaid10構築(自宅NAS)にチャレンジ
構築はできたのだが、大きな問題として、再起動したら、Raidドライブが認識されないという事態になっていました。
色々なサイトを調査しながら、mdadmで構築したRaid10ドライブを再起動しても問題なく、サーバーが認識するための長い道のり(実際には1日フルぐらい)をご紹介します。
フォーマットが終わってからの作業
前回記事で、フォーマットをするまでの手順を紹介していますが、フォーマットが完了してから何をすればいいかを書いていませんでした。
フォーマットが終わったことを確認するには、次のコマンで行います。
cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sdc1[0] sdf1[3] sde1[2] sdd1[1]
15627788288 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
bitmap: 2/117 pages [8KB], 65536KB chunk
unused devices: <none>
そして、ディスクの情報を見るには以下のコマンドです。
$ mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Apr 19 07:18:49 2019
Raid Level : raid10
Array Size : 15627788288 (14903.82 GiB 16002.86 GB)
Used Dev Size : 7813894144 (7451.91 GiB 8001.43 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Wed May 1 12:33:55 2019
State : active
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Name : debian:0 (local to host debian)
UUID : dfd3c5c7:600d865d:a4d628f7:66fe6232
Events : 175917
Number Major Minor RaidDevice State
0 8 33 0 active sync set-A /dev/sdc1
1 8 49 1 active sync set-B /dev/sdd1
2 8 65 2 active sync set-A /dev/sde1
3 8 81 3 active sync set-B /dev/sdf1
他にもシステムの全てのストレージを確認するには、以下のコマンドです。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 230.5G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda3 8:3 0 1023.5K 0 part
sdb 8:16 0 7.3T 0 disk /mnt/usb
sdc 8:32 0 7.3T 0 disk
└─sdc1 8:33 0 7.3T 0 part
└─md0 9:0 0 14.6T 0 raid10
sdd 8:48 0 7.3T 0 disk
└─sdd1 8:49 0 7.3T 0 part
└─md0 9:0 0 14.6T 0 raid10
sde 8:64 0 7.3T 0 disk
└─sde1 8:65 0 7.3T 0 part
└─md0 9:0 0 14.6T 0 raid10
sdf 8:80 0 7.3T 0 disk
└─sdf1 8:81 0 7.3T 0 part
└─md0 9:0 0 14.6T 0 raid10
さらにパーティションの確認をするには以下のコマンド
$ cat /proc/partitions
major minor #blocks name
8 0 250059096 sda
8 1 241690624 sda1
8 2 1 sda2
8 3 1023 sda3
8 16 7814026584 sdb
8 32 7814026584 sdc
8 33 7814025216 sdc1
8 48 7814026584 sdd
8 49 7814025216 sdd1
8 80 7814026584 sdf
8 81 7814025216 sdf1
8 64 7814026584 sde
8 65 7814025216 sde1
9 0 15627788288 md0
さらに、uuidの確認をするには・・・
$ ls -l /dev/disk/by-uuid/
lrwxrwxrwx 1 root root 9 5月 1 18:41 194c208e-4ad4-4c0c-a21c-db3bafb20dcb -> ../../sdb
lrwxrwxrwx 1 root root 9 5月 1 18:42 253f25c0-2761-463e-8108-2799b08fac61 -> ../../md0
lrwxrwxrwx 1 root root 10 5月 1 18:41 8d696f8b-590c-4302-8bb1-4d807f2d39c2 -> ../../sda1
こんな情報も見ることができます。
そして、起動時にマウントを自動でやってもらうには、/etc/fstabに以下のような情報を追記しておきます。
$ vi /etc/fstab
/dev/md0 /mnt/usb2 ext4 defaults 0 0
ちゃんと登録できたら、fstabのマウントを確認するには以下のコマンドを実行します。
$ mount -a
無事にマウント出来ていることを確認しましょう。
$ df -lha
ファイルシス サイズ 使用 残り 使用% マウント位置
rootfs - - - - /
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
udev 10M 0 10M 0% /dev
devpts 0 0 0 - /dev/pts
tmpfs 808M 9.5M 799M 2% /run
/dev/sda1 227G 43G 173G 20% /
securityfs 0 0 0 - /sys/kernel/security
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
cgroup 0 0 0 - /sys/fs/cgroup/systemd
pstore 0 0 0 - /sys/fs/pstore
cgroup 0 0 0 - /sys/fs/cgroup/cpuset
cgroup 0 0 0 - /sys/fs/cgroup/cpu,cpuacct
cgroup 0 0 0 - /sys/fs/cgroup/devices
cgroup 0 0 0 - /sys/fs/cgroup/freezer
cgroup 0 0 0 - /sys/fs/cgroup/net_cls,net_prio
cgroup 0 0 0 - /sys/fs/cgroup/blkio
cgroup 0 0 0 - /sys/fs/cgroup/perf_event
systemd-1 - - - - /proc/sys/fs/binfmt_misc
hugetlbfs 0 0 0 - /dev/hugepages
mqueue 0 0 0 - /dev/mqueue
debugfs 0 0 0 - /sys/kernel/debug
/dev/sdb 7.3T 5.8T 1.2T 84% /mnt/usb
/dev/md0 15T 9.1M 14T 1% /mnt/usb2
binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
色々なドライブを読み込んでいるのですが、/dev/md0がちゃんとマウントできているのが分かります。
そして再起動してみて、最終確認してみたところ・・・起動障害を興して、レスキューモードでしか立ち上がりませんでした・・・orz
fstabに追記した記述をコメントアウトして立ち上げ直したところ、起動はできるが、「/dev/md0」が消えていました。
しかし心配しなくても大丈夫です。一度フォーまっtおしたraidドライブは以下のコマンドで復活できます。
mdadm -A /dev/md0 /dev/sd[cdef]1
さらにその後で、マウントも正常に行なえます。
原因究明
どうやら、mdadm.confにuuidなどの情報を追加しておくのがセオリーのようですが、今回のドライブは外付けハードディスク(4枚入り)のものだったため、usbで接続してありました。
md0を起動時に設定するのは、mdadmの仕事なのですが、どうやらudbが起動するよりも前に処理をしているらしく、どのような設定をしても、usbで接続している限り、mdadmが起動時に自動認識してくれる事はなさそうです。
biosで、hddよりも再起にusbを読み込ませて見ても駄目で、やはりosのブート処理で順番変更ができないと手の打ちようがありません。
解決方法
これを解決するには、起動時にコマンドを実行できる、「/etc/rc.local」ファイルに起動したタイミングで発動させるスクリプトを記述するのが一番はやく確実な方法であることが判明しました。
$ vi /etc/rc.local
mdadm -A /dev/md0 /dev/sd[cdef]1
mount /dev/md0 /mnt/usb2
exit 0
上記のような内容で2行追記して、再起動してみたところ、無事に起動時に何もしなくてもドライブを認識した状態のままで起動することができました。
ソフトウェアRaidは、一度ちゃんと操作してみたかったので、非常に今回の作業は勉強になりましたが、扱いやすさから、HW-RAIDの外付けドライブを購入した方が、無駄な時間を費やさなくていいのでは・・・と考えずにはいられませんでした。
次回は8台装着できるドライブを買って、10TBx8台とかのチャレンジをしてみたいですね。
その頃には、10TBや12TBの販売価格が今の8TBぐらいの値段に落ち着いてきたら・・・という事が条件ですが。
0 件のコメント:
コメントを投稿