前回でパーツを組み込み、ハード的には完成しましたが、もとどおりに使用するためにはOSのインストールと設定の復旧が必要です。
2012年にサーバーを構築して以来、ずっとCentOS6.2を使用していましたが、ハードウェアを一新したのでCentOS7の最新版を使用することにします。CentOS8にしなかったのはネットの情報量がCentOS7の方が多かったからです。うまくいかない時に頼りになるのはネットの情報なので..。
ダウンロードはhttps://www.centos.org/download/から行います。ISOイメージをUSBメモリに書き込むのですが、ここで一点注意が必要です。ISOイメージをUSBメモリに書き込むツールは世の中にたくさんありますがCentOS7のISOイメージを書き込むには特定のツールを使用する必要があります。CentOSの公式サイトでサポートされているのは以下のツールです。
Fedora LiveUSB Creator
Win32 Disk Imager
Rawrite32
dd for Windows
私は当初上記と異なるツールを使って書き込みましたが見事に失敗しました。これはCentOS7のISOイメージにWindowsツールの多くが認識できない特殊な形式のパーティションが存在するためです。
インストール作業自体は他のサイトに詳しい情報があるのでここでは割愛しますが、概ね以下の状態でインストールを行いました。
(1)ブート用ドライブだけにしておく
(2)GUIベースの管理ツールをインストール
(3)ファイルサーバー用のパッケージをインストール
さすがにUSBメモリからのインストールは早く、30分程度でインストールが終わりました。
インストール後の諸設定を終えたあと、いったんシャットダウンして全てのデータディスクをスロットにさして再起動します。
自分としてはここが一番緊張したのですが、驚いたことに何の操作をすることもなくRAIDを再認識しました。本来は以下のコマンドを発行します。
# mdadm –assemble
OS起動スクリプトに上記コマンドが含まれているものと思われます。何にせよ一番大事なデータが無事引き継がれたことが確認できました。
(1)ユーザー、グループ情報関連
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/homeディレクトリ
/etc/samba/ディレクトリの各ファイル
/var/lib/samba/private/passdb.tdb
/var/lib/samba/private/secrets.tdb
# smbd -b|grep PRIVATE_DIR
PRIVATE_DIR: /var/lib/samba/private
(1)設定ファイルのバックアップをscp等でサーバーにコピーしておく(ここでは/tmpとします)
(1)rootユーザーでログイン、ターミナル(端末)を2画面起動する
(2)homeディレクトリのバックアップ(tarアーカイブ)をコピー
# cp /tmp/home.tar /home/
# tar xvf home.tar
(3)ユーザー情報の復旧(passwd)
# cp /etc/passwd /etc/passwd.ori
# vi /tmp/passwd ーー元のサーバーのpasswdファイルを開く
# vipw -p ーー新サーバーのpasswdファイルを開く
移行したいユーザーの行をコピペし、ファイルを閉じる
(4)ユーザー情報の復旧(shadow)
# cp /etc/shadow /etc/shadow.ori
# vi /tmp/shadow ーー元のサーバーのshadowファイルを開く
# vipw -s ーー新サーバーのshadowファイルを開く
移行したいユーザーの行をコピペし、ファイルを閉じる
(5)ユーザー情報の復旧(group)
# cp /etc/group /etc/group.ori
# vi /tmp/group ーー元のサーバーのgroupファイルを開く
# vipw -g ーー新サーバーのgroupファイルを開く
移行したいユーザーの行をコピペし、ファイルを閉じる
(6)ユーザー情報の復旧(gshadow)
# cp /etc/gshadow /etc/gshadow.ori
# vi /tmp/gshadow ーー元のサーバーのgshadowファイルを開く
# vigr -s ーー新サーバーのgshadowファイルを開く
移行したいユーザーの行をコピペし、ファイルを閉じる
ユーザー、グループ情報の復旧作業で気をつけなければならないのは、決して古いファイルで新サーバーのファイルを置き換えないということです。仮にこれをやってしまうとサーバーが起動しなくなります。
(1)新サーバー上のファイルをバックアップ
# cp /etc/samba/lmhosts /etc/samba/lmhosts.ori
# cp /etc/samba/smb.conf /etc/samba/smb.conf.ori
# mv /var/lib/samba/private/passdb.tdb /var/lib/samba/private/passdb.tdb.ori
# mv /var/lib/samba/private/secrets.tdb /var/lib/samba/private/secrets.tdb.ori
(2)元のサーバーのファイルをコピー
# cp /tmp/lmhosts /etc/samba/
# cp /tmp/smb.conf /etc/samba/
# cp /tmp/smbusers /etc/samba/
# cp /tmp/passdb.tdb /var/lib/samba/private/
# cp /tmp/secrets.tdb /var/lib/samba/private/
(3)ユーザーが存在することを確認する
# pdbedit -L
(4)sambaサービスを有効にする
# systemctl enable smb.service
# systemctl enable nmb.service
# systemctl restart smb.service
# systemctl restart nmb.service
(5)ファイアウォール設定でsambaサービスのアクセスを許可する
GUIで可能です。(アプリケーション>諸ツール>ファイアウォール)
この時点でファイルサーバーとしてクライアントからログイン可能になります。
ただし、実際にアクセスするとエラーになるのでSElinuxの設定をします。
(6)SElinux設定を変更してsambaサービスによるアクセスを許可する
# setsebool -P samba_export_all_rw on ーーアクセス許可
# getsebool -a |grep samba_export_all_rw ーー設定の確認
SElinuxのbooleanの定義とその意味はなかなか分かりづらいので以下のリンクを参考にしました。
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/managing_confined_services/sect-managing_confined_services-samba-booleans