メインコンテンツに移動

マウント

CentOS8, FreeIPAでautomountを使い,ホームフォルダーをファイル共有によって一元化する.

ええっと.うちの本番サーバーでは

  • /net     ネットワークで共有してるディスク
  • /local   ローカルマシンのディスク

になっているから,とりあえず,それを実現しよう.RedHatE8のガイドが見つからないので,RedHat7のガイドを見たが時間の無駄であった.

で, いったいどうしろと?

こういう場合,何が必要かを整理し,その作業を探す方が良かろう.

  • ディスクを提供する側が,NFSサーバーを設定し.ディスクを共有する
  • 提供を受ける側は,そのディスクを利用するように設定

で, 提供を受ける設定とは

auto.master

/-           /etc/auto.localを見たまえ
/misc     /etc/auto.miscを見たまえ
/net        yp:auto.homeを見たまえ

auto.home

sun0     -fstype=nfs4,rw,hard,intr,rsize=4096,wsize=4096      sun0:/disk1
・・・

つまり, [フォルダー名   マウントオプション     提供ディスク]の羅列である. /net/フォルダー名 にアクセスがあると, autofs が提供ディスクをマウントオプションを使ってマウントする仕組みだ.

思い出せ, 1993年だ

ええっとえええっと・・・autofsのインダイレクトマップとダイレクトマップの違い忘れた. 

マップ, つまり,写像ってわけだ.だから\[x\to f(x)\]であって,\(x\in A, y=f(x)\in B\)で\(A\)を定義域, \(B\)を値域と呼ぶべきところ, データベース業界では,\(A\)の要素を「キー」, 対応する\(B\)を「値バリュー」と呼ぶ仕様だった. で,

  • キーが絶対パス (/media/usb とか)のやつをダイレクトマップ
  • キーがマップ自身の属性値(例えば/miscとか)の相対パス(キーがcdromなら,属性値/miscと合わせ技で /misc/cdromになる)ってやろうがインダイレクト

・・・思い出した.こんな仕方もないものに,わざわざ名前つけるなよ,と思ったもんだ.

で,今回は・・・・サーバーの手順が不明だ.RedHatのガイドに記載があった:

NIS サーバーには、ユーザー、グループ、ホスト、netgroup、および自動マウントマップの情報が含まれます。これらのエントリータイプはいずれも IdM に移行することができます。

つまり,NISと同等のマップは提供するが,記述がないNFSサービスを提供する気は無い,ということですよね.ということは,提供側は,古式ゆかしくNFSエクスポートすれば良いのではないでしょうか?

 マップの編集

Webサイトで設定

【Network Services】【Automount】にマウントメニューがある. 

location

【default】をクリックすると, 【Automount Maps】が出る:

automount

インダイレクト・マップを追加してみる.【Add】で

auto.home

で,こうなる:

fig2

作成したマップをクリックし,エントリーを【Add】で作成する.

例えば ホスト【h223.229.249.10.1016485.vlan.kuins.net】が公開している /disk0 を【ib2007a】としてマウントできるように設定するには

mount

 

最後に重要なポイント:

  • デフォルトで設定されているダイレクトマップ 【auto.direct】はデータが一つもない.データが一つもないとエラーしてautofsが止まってしまう.使わないのであれば, 【auto.direct】マップを削除すること!
  • 【auto.direct】マップを削除すると,【auto.master】の中のエントリー番号【/-】が嘘になる.使用しないのであれば,削除すること!エラーするから!

NFS利用しますよ設定

マップはできましたが,ディスクを共有するには,全マシーンでNFSを設定する必要がありやす.

ディスク提供側で実施 デイスク利用側で実施

ipa-server, ipa-clientのどちらかが完了した段階で, NFSはインストールされている. そこでいきなり実行する:

ipa-cient-automount
Searching for IPA server...
IPA server: DNS discovery
Location: default
Continue to configure the system with these values? [no]: yes
Configured /etc/idmapd.conf
Restarting sssd, waiting for it to become available.
Started autofs

NFSサーバー設定

ディスク提供側で実施 

/etc/exports に提供にあたっての権利関係を指定する:

/export  10.249.229.0/24(rw,fsid=0)  提供する親フォルダは/exportで,提供先IPアドレス/ネットマスクが10.249.229.0/24
/export/disk0  10.249.229.0/24(rw,nohide)  disk0を読み書き可能で提供する.        
/export/packages  10.249.229.0/24(rw,nohide,no_root_squash)  packagesを読み書き可能で提供する. 管理者IDを抹消せず,木馬の進入を許可

localhostからもマウントする場合は:

/export  10.249.229.0/24(rw,fsid=0)  localhost(rw,fsid=0)
/export/disk0  10.249.229.0/24(rw,nohide) localhost(rw,nohide)          
/export/packages 10.249.229.0/24(rw,nohide,no_root_squash)

記述が終わったら,実際に提供するブツを用意しないとやばい. これは /etc/fstab に記述する. 例えば

UUID=あんたのUUID /local/disk0 xfs defaults,usrquota,grpquota 0 0    必要なら追加ディスクをマウント
/local/disk0 /export/disk0 none bind 0 0    そのディスクをdisk0として大公開
/local/disk0 /disk0 none bind 0 0
/local/packages   /export/packages     none bind 0 0   システムディスクのフォルダーを大公開 

ま,こんな感じか..緑色の不思議な/disk0は,後で説明する.

mkdir /export
mkdir /disk0
mkdir /export/disk0
...
mount -a
exportfs -a
firewall-cmd --add-service=nfs --permanent
firewall-cmd --reload
systemctl start nfs-server
systemctl enable nfs-server   <-- 再起動しても有効にする

できたかな?

自分でマウント: mount localhost:/disk0 /mnt   ---- OK!

他人がマウント: mount 10.249.229.223:/disk0 /mnt  --- OK!

さて,上の /disk0 設定であるが,これはローカルのディスクをNFSを経由しないでマウントするための設定である.autofsは次のような動作をする:

  • /net/KEY フォルダーにアクセスがあった!
  • 上のマップを参照すると, KEYは, ホスト名 MACHINE のディスク名 /DISK であることがわかったとする.
    • もしMACHINEが自分でないなら,何の躊躇もなくNFSを経由して/DISKを提供してもらう.
    • もしMACHINEが自分自身であれば,NFSを経由すると速度が低下してしまう.そこで,/DISKが利用できるか?調べる
      • つまり, 提供しているディスク名 /DISK がローカルファイルシステムに存在するなら使う
      • 存在しなければ,諦めてローカルマシンにNFSで提供してもらう
    • もちろんNFSアクセスでは爆遅になってしまうので,提供しているディスク/DISK がローカルファイルシステムにも存在した方が良い.
    • そこで, /export/DISK と同じ内容を /DISK にバインド設定しておく.

動作確認

設定が終わったら,全マシンで

systemctl reload autofs   ← restart しても reload はされないので,必ず,reload
sytemctl restart autofs

すると,上で指定した /net フォルダーが全てのマシンに出現し,cd /net/ディスク名 によってファイル共有が実現される.やったー!メーッチャ簡単やんけー すげーすげー

つぎはレプリケーションだ.

なお,ユーザー登録した tom くんが(ホームディレクトリを /net/ib2007a/tom に変更したら)正常にログインできることろも確認した.