2012秋のファイルサーバ復旧 15 HDDにCentOSインストール

CentOSはHDDにインストールすることにしました。
バックアップはUbuntuのLiveCDとかLiveUSBでDD。
Windows上のDDでスワップを扱えなかったのでは?という問題は実際にやってみないとわからないのでノチホド検証を。

さて、インストールはするのですが、バックアップしやすいように領域はできる限り少なめにします。

今までは4GBのUSBメモリにいれていたのでそれで余裕のはず。
しかし、実際どこまで減らせるのか?が気になったので今の16GBのUSBメモリに入れているシステム領域はどれくらい使っているのか?を見てみます。

# df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/sda3             14729016   1311604  12657136  10% /
/dev/sda1               101086     12180     83687  13% /boot
tmpfs                  1020808         0   1020808   0% /dev/shm
/dev/sdb             2884285104 1170653640 1567118136  43% /var/storage/00/main
/dev/sdc             2884285104 1168471600 1569300176  43% /var/storage/00/mirror
/dev/sdd             2884285104 2566032992 171738784  94% /var/storage/01/main
/dev/sde             2884285104 2565883832 171887944  94% /var/storage/01/mirror
/dev/sdf             2884285104 2232040272 505731504  82% /var/storage/02/main
/dev/sdg             2884285104 2231173704 506598072  82% /var/storage/02/mirror

dfした結果はこんな感じです。



/boot に12MB、 / に1.3GBを使ってます。
あとはスワップ用に512MBを確保してありました。

/bootは12MBしかつかってませんが、こいつはジリジリと増えていくものなので少なすぎると困るはずです。
今まではなんとなく512MBも取ってましたが、ぐぐってみるとみんな100MBくらいにしているようです。

なので同じように100MBにした場合はだいたい

100MB + 2048MB(/に余裕をもたせて700MBほどプラス) + 512MB = 2660MB

になります。
/var/logを外付けHDDにしない、となるとやっぱりこれくらいは必要?
と思ったのですが、じゃあ実際今はどんだけ使ってるんだろうということで確認。
ログはシンボリックリンクで外付けHDDに飛ばしているので確認先をちょっと変更。

# du /var/storage/00/main/var.log
8       /var/storage/00/main/var.log/samba/cores/nmbd
8       /var/storage/00/main/var.log/samba/cores/smbd
24      /var/storage/00/main/var.log/samba/cores
156     /var/storage/00/main/var.log/samba
12      /var/storage/00/main/var.log/pm
24      /var/storage/00/main/var.log/prelink
1800    /var/storage/00/main/var.log

たった1.8メガでした。
こりゃあどう考えても700メガも要らないだろうと、そしてスワップももっと減らしてもいいだろうということで減らしてみるとだいたいこんなもんが妥当じゃないかと思われます。たぶん。
実際やってみないとわかりませんが。

/boot  100MB
/     1800MB (余裕が 500MBほど)
swap   128MB
合計  2028MB

合計だいたい2Gです。これならまるごとDDしてもすぐ終わるサイズ。

ここで気になったのが、書き換えが頻発するのは / の領域のみ。
スワップが全然発生しなかったりする場合もあるはず。
というか2GBもあればスワップなんかめったに発生しません。

となるとSSDだった場合、/のパーティションばっかり消耗してしまうのではないか?という疑問が出てきます。

そんな疑問は愚問でした。
そんなだれでも思いつきそうな疑問なんかもともと想定されていたんですね。
当たり前といえば当たり前。

SSDで領域分割しても寿命に影響ないの?:PC Online

これで不安は解消されたのでインストール作業開始です。
もう何度もやっているので先に手順を整理しておきます。

  1. netインストールのCDからCentOS5.8をインストール
  2. /tmpをtmpfsへ
  3. wgetをインストール
  4. webminのyum用レポジトリを追加
  5. 署名のキーを追加
  6. yumでwebminインストール
  7. webからアクセスしてログイン
  8. 不要なサービスを停止
  9. Sambaをインストール
  10. SELinuxをオフ
  11. シャットダウン
  12. HDDを接続
  13. 電源をON
  14. fstabでHDDのマウント先を指定
  15. Samba設定
  16. ミラーリングのcron登録
  17. SVNをインストールして設定
  18. SVNバックアップをcron登録

こんなかんじです。
ログの外出しはやめたのでその作業は無くなってます。
毎回なんで wget 入れるんだっけ?と忘れてしまっているのですが、yumにwebminのレポジトリを追加したあとの証明書をインストールするためです。

では開始。

インストールは何度もやっているのでいつもどおり。

メモ: 2012秋のファイルサーバ復旧 03 CentOS6.3入れます→5.8にします

パーティションは今回はいつもと違うので画面写真を。

パーティション設定

インストールが終わったらsshでWindowsから入ってtmpfsの設定。

メモ: 2012秋のファイルサーバ復旧 11 tmpをtmpfsへ

# mv /tmp/* /dev/shm/
# mv /tmp/.ICE-unix /dev/shm/
# mv /tmp/.font-unix /dev/shm/
# rmdir /tmp
# ln -s /dev/shm /tmp
# ls -la / | grep tmp
lrwxrwxrwx   1 root root     8 11月  4 20:16 tmp -> /dev/shm

wgetをインストール。

# yum install wget

webminをインストール

メモ: 省エネファイルサーバ構築 21 CentOS 5.6 webmin インストール

webmin用のリポジトリを設定

# vi /etc/yum.repos.d/webmin.repo
[Webmin]
name=Webmin Distribution Neutral
#baseurl=http://download.webmin.com/download/yum
mirrorlist=http://download.webmin.com/download/yum/mirrorlist
enabled=1

証明書を取得してインストール

# cd /usr/local/src
# wget http://www.webmin.com/jcameron-key.asc
# rpm --import jcameron-key.asc
# yum install webmin

インストールにちょっと時間がかかるみたいなので待機。
しかしここまでプチフリっぽい動きは一切なし。
やっぱりUSBメモリの読込の遅さが問題だったんだなあとわかりました。

インストールが終わったのでブラウザからログインしてみると、XSS対策のためにこのモジュールを入れなさいというメッセージが出てきたのでインストール。

Change Passwords というモジュールを入れろというメッセージ

インストール完了

不要なサービスの停止。
不要なものにチェックし、Stopではなく、Disable No and On Boot ボタンをクリック。
何が不要なのかは↓の投稿を参照します。

メモ: 省エネファイルサーバ構築 22 CentOS 5.6 不要なサービスの停止

sambaのインストール

メモ: 省エネファイルサーバ構築 25 CentOS 5.6 samba インストール

Un-used Modules > Samba Windows File Sharing

インストールされてないのでリンクをクリックしなさいといわれるのでクリック

Windows Networking Options
Workgroup MYGROUP → WORKGROUP
Server name d525mw

user synchronisation
Add a Samba user when a Unix user is added Yes
Change the Samba user when a Unix user is changed Yes
Delete the Samba user when a Unix user is deleted Yes
Deleting the roaming profile when a Unix user is deleted Yes
Rename the roaming profile when a Unix user is renamed Yes
Group SID or RID for new users  Default

System > Users and Group でlinuxのユーザを追加 (kmd)
Username kmd
Shell /sbin/nologin
Password No login allowed
Primary group Existing group users
Create home directory? No
Copy template files to home directory? No
Create user in other modules? No

Edit Config File
passdb backend = smbpasswd に変更

Convert Users でsambaにユーザを反映
Unix users to convert All except listed users and UID ranges -499
Update existing Samba users from their Unix details No
Add new Samba users from the Unix user list Yes
Delete Samba users who do not exist under Unix No
For newly created users, set the password to: No password

sambaユーザの編集画面からパスワード変更
Password New password XXXXXXXXXXXXXX
Password never expires

プリンタが不要なので Share Name が Printer となっているものを削除

不要なサービス停止をした画面で、今度はsmbを自動起動スルようにしておきます。

sambaの基本的な設定はこれで終わり。

SELinuxを無効化します。

# vi /etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled

コレで一旦電源を切ってHDDを全部接続します。
そして起動。

マウント先のディレクトリを作成します。

# mkdir -p /var/storage/00/main
# mkdir -p /var/storage/01/main
# mkdir -p /var/storage/02/main
# mkdir -p /var/storage/02/mirror
# mkdir -p /var/storage/01/mirror
# mkdir -p /var/storage/00/mirror
# chmod 777 /var/storage/00/main
# chmod 777 /var/storage/01/main
# chmod 777 /var/storage/02/main
# chmod 777 /var/storage/02/mirror
# chmod 777 /var/storage/01/mirror
# chmod 777 /var/storage/00/mirror

HDDのマウント先をfstabに追記します。

# vi /etc/fstab
LABEL=00main            /var/storage/00/main    ext3    defaults        0 0
LABEL=00mirror          /var/storage/00/mirror  ext3    defaults        0 0
LABEL=01main            /var/storage/01/main    ext3    defaults        0 0
LABEL=01mirror          /var/storage/01/mirror  ext3    defaults        0 0
LABEL=02main            /var/storage/02/main    ext3    defaults        0 0
LABEL=02mirror          /var/storage/02/mirror  ext3    defaults        0 0

保存したら再起動して自動マウントさせます。

sambaの設定をします。

メモ: 2012秋のファイルサーバ復旧 09 samba設定

Create a new file share のリンクをクリックして、下記の内容で3つ設定

Share name : storage-00
Directory to share : /var/storage/00/main/data
Automatically create directory : Yes
Create with owner : root
Create with permissions : 755
Create with group : root
Available? : Yes
Browseable? : Yes
Share Comment : (blank)

Share name : storage-01
Directory to share : /var/storage/01/main/data
Automatically create directory : Yes
Create with owner : root
Create with permissions : 755
Create with group : root
Available? : Yes
Browseable? : Yes
Share Comment : (blank)

Share name : storage-02
Directory to share : /var/storage/02/main/data
Automatically create directory : Yes
Create with owner : root
Create with permissions : 755
Create with group : root
Available? : Yes
Browseable? : Yes
Share Comment : (blank)

作成した storage-00から02の Security and Access Control を変更。

Writable? : Yes
Revalidate users? : Yes

同様に File Permissions も変更。

Force Unix user : root

最後にごみ箱の設定

Edit Config File を開いて
storage-00から02までの場所に下記の内容を追記します。

vfs objects = recycle
recycle:repository = .recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = no
recycle:maxsize = 0

そしてsamba再起動。

ところで、「ごみ箱」と言ってますがWindowsのゴミ箱には入ってくれません。
sambaで設定したディレクトリのルートに「.recycle」というディレクトリが作成されてファイルがコピーされるだけです。
これはWindowsの仕様で、ネットワーク上の領域はファイルを削除したらその場で削除、となっていてサーバ上にローカルのHDDと同じようにゴミ箱ディレクトリがあっても無視されてしまうのです。
残念です。

ついにsambaの最後の設定です。
ミラーリングスクリプトをcron登録します。

が、前回のスクリプトだとrsyncインストールし忘れたときの rsync : command not found というエラーメッセージがログにでません。
標準出力に出てしまうためです。
なので一部修正します。
元ネタはこちら メモ: 2012秋のファイルサーバ復旧 09 samba設定

rsyncの行の最後に 2>&1 をつけてます。

#!/bin/bash

# log directory
log_dir="/var/storage/00/main/scripts/log"
if [ ! -d $log_dir ]
then
mkdir $log_dir
fi

# log file path
log_file=$log_dir"/sync_storage_"`date +%Y%m%d%H%M`".log"

# start
echo "### Start sync storage ##########" >> $log_file
date >> $log_file

# check dupe
running=`pgrep -fo $0`
if [ $$ != $running ]
then
echo "### Already running : $running ###" >> $log_file
exit 1
fi

# exec rsync
rsync -av --delete /var/storage/00/main/data /var/storage/00/mirror >> $log_file 2>&1
rsync -av --delete /var/storage/00/main/svn /var/storage/00/mirror >> $log_file 2>&1
rsync -av --delete /var/storage/01/main/data /var/storage/01/mirror >> $log_file 2>&1
rsync -av --delete /var/storage/02/main/data /var/storage/02/mirror >> $log_file 2>&1

# end
echo "### End sync storage ############" >> $log_file
date >> $log_file

exit 0

rsyncのインストール

# yum install rsync

cronのインストール

# yum install vixie-cron

cronに登録

#crontab -e
0 13 * * 1-5 /var/storage/00/main/scripts/sync_storage.sh

これでsambaの設定は終わりです。
最後にsubversionを入れます。

# yum install subversion

インストールが完了したら自動起動の設定を入れます。

リポジトリ自動設定用コンフィグファイルを作成してサービス登録し、起動します。

# vi /etc/sysconfig/svnserve
OPTIONS="--root=/var/storage/00/main/svn/repos"

# chkconfig svnserve on
# service svnserve start

これでインストール作業は全て完了です。
次回はHDDからSSDにDDしてみます。

ところで今回から成功した手順だけをまとめた記事には「成功手順」のラベルをつけました。
あとでヘッダのメニューにも成功手順用のリンクを付けておこうと思います。
完全に自分用ですが。

コメント