渡米生活。(日記)

渡米生活。本家から切り離しました。あまり渡米生活に関係のないプログラムネタや音楽ネタなど。

Scientific Linux 6.3 またはCentOS7インストールログ3:software raid の設定とnfs mount

Linux設定の続き。

HDD5台でsoftware raid 5を組む

まず、5台のHDDをsoftware raid用にフォーマットする。fdiskを使う。
最初の1台目のデバイスが/dev/sdbとする。

fdisk /dev/sdb

...何か英語でいってくるかも

コマンド (m でヘルプ): m
コマンドの動作
   a   ブート可能フラグをつける
   b   bsd ディスクラベルを編集する
   c   dos 互換フラグをつける
   d   領域を削除する
   l   既知の領域タイプをリスト表示する
   m   このメニューを表示する
   n   新たに領域を作成する
   o   新たに空の DOS 領域テーブルを作成する
   p   領域テーブルを表示する
   q   変更を保存せずに終了する
   s   空の Sun ディスクラベルを作成する
   t   領域のシステム ID を変更する
   u   表示/項目ユニットを変更する
   v   領域テーブルを照合する
   w   テーブルをディスクに書き込み、終了する
   x   特別な機能 (エキスパート専用)

コマンド (m でヘルプ): p
領域番号 (1-4): 1
最初 シリンダ (1-17365, default 1): < enterを押す
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-17365, default 17365): < enterを押す
Using default value 17365

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

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

大体こんな感じで完了。同じ作業を他の4つのHDD(sdc, sdd, sde, sdf)でも繰り返す。

mdadmを使ってRaid 5 にまとめ、マウントする

mdadm -C /dev/md0 -l5 -n5 -f /dev/sd[bcdef]1

とやると、デバイス名/dev/md0 で1つのディスクとして見える。

ところで、このRAIDの設定というのは、一度書き込まれると残っているものらしい。
システムをクリーンインストールでアップデートして、RAID5のデータも書き直しかな、と思ったが、元と同じ配置でHDDをセットしたら、何もしなくても勝手に1つのデバイスとして認識した。ただし、デバイス名は何故か/dev/md127になっていた。

ここまでできたら、自動マウントの設定。/dataにマウントするものとする。
/etc/mdadm.confというファイルを作り、以下の情報を記入。

# vi /etc/mdadm.conf
DEVICE /dev/sd[bcdef]1
ARRAY /dev/md0 devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1,/dev/sdf1

更に、/etc/fstabに以下の情報を追加。

# vi /etc/fstab
/dev/md0     /data     ext4     defaults   1   2

初回は自分の手でマウントする。

# mkdir /data
# mount -a

ファイルサーバでnfsサーバの設定。

rootで作業。
/etc/exportsを変更。以下の行を加えると、ファイルサーバ上の/dataディレクトリにアクセス可能になる。(XXX.XX.XX.XXXはマウントを許すIP)
IPとカッコの間にスペースをあけないこと(違う意味になる)

/data XXX.XX.XX.XXX(rw,sync) XXX.XXX.XX.XXX(rw,sync)

他のマシンから見たときにrootによるアクセスを許す場合は、no_root_squashオプションをつける。

見せる相手が沢山の場合は、たとえば

/data 192.168.1.0/24(rw,sync,no_root_squash)

のようにも書ける。
ただしこれは、自分の(ローカル)IPが192.168.1.1等で、ぶら下がっているマシンが192.168.1.2, 192.168.1.3...といった場合。


サービスの再起動

# service nfs restart

クライアント側の設定

autofsをインストール。2行目は再起動後に勝手に立ち上がるようにする設定。

# yum install autofs
#systemctl enable --now autofs

Scientific Linux 6のみ)
nfs4を動かすと、何をやっても(no_all_squashをサーバー側でたてていても)マウント側でnobodyの持ち物になってしまうので、nfs3を動かす設定にする。
(nfs4はuidとは異なったファイルで所有者を判断しているらしいが、その設定方法がわからない。ndf3でも、サーバーごとにuidやgidが異なっていたら正しいユーザの持ち物としてマウントされないので注意。)

CentOS7ではこのバグは直っている模様なので、変更の必要なし。

# vi /etc/nfsmount.conf

Defaultvers=4 のコメントアウトを外し、
Defaultvers=3  に変更

autofsのダイレクトマップを使う。

/etc/auto.masterに以下の行を追加

ScientificLinux 6

# vi /etc/auto.master

# mount data dir
/-       /etc/auto.data    -rw,intr

# 以下の行はコメントアウト(NIS, NIS+を使わない場合)
#+auto.master

CentOC7

# vi /etc/auto.master

# mount data dir
/-       /etc/auto.data


/etc/auto.dataを作成し、以下の1行を記入して保存。

# vi /etc/auto.data
/data -ftype=nfs,rw 192.168.1.1:/data

192.168.1.1はこの場合ファイルサーバのIP.

最後にデーモンを再起動。

ScientificLinux 6

# /etc/rc.d/init.d/autofs restart

CentOS7

# systemctl start autofs

以上