自作NASへの道 part5 「インストール後の初期設定」
インストール後の確認
ネットワークの確認
とりあえず、NASなのでネットワークに接続できているか確認しよう。
デスクトップとしてインストールされているならば、GUI(runlevel 5)で起動してくるはずなので
ブラウザでネットにつながるか確認。
また、別のPCからアクセスできるか確認してみよう。
まずは、IP Addressの確認。
[root@vmsl62 /]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.1.201 Bcast:192.168.1.255 Mask:255.255.255.0
......
......
......
ターミナルソフト(私はputtyを愛用)でアクセスできるか確認。
GUIの確認と設定
GUI(xwindow)をインストールした目的は、いざというとき(メインPCが故障したとき)などに
復旧のためのネット接続を行えるようにするためだ。
CLIとGUIを正常に行き来できるか確認しておこう。
[root@vmsl62 /]# init 3 → CLIへ移行
[root@vmsl62 /]# init 5 → GUIへ移行
特に問題がなければ、起動時の設定をCLIへと変更してしまおう。
(CLIのほうが、何かと安定してオペレーションが可能だからだ。)
viエディタで /etc/inittab の id:5:initdefault: という行を id:3:initdefault: と変更してしまおう。
これで、Reboot後はCLIのログイン画面が表示される。
初期バックアップ
構築の間に、間違った操作などを行いOSの動作が不安定になったときなどのことを考え
OSインストール直後の状態でフルバックアップを行う。
バックアップ領域の作成
まずは、バックアップ用のパーティションを作成。(以下例は、VM上に作成したScientific Linux 6.2の検証環境にて実施)
sdiskコマンドにて、新しいパーティションの作成を行う。
すでに、sda1(/boot)とsda2(/)という2つのパーティションが存在するため、sda3というパーティションを作成する。
[root@vmsl62 /]# fdisk /dev/sda
コマンド (m でヘルプ): p
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 13 102400 83 Linux
/dev/sda2 13 1051 8334336 8e Linux LVMコマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本パーティション (1-4)
p
パーティション番号 (1-4): 3
最初 シリンダ (1051-1560, 初期値 1051):
初期値 1051 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1051-1560, 初期値 1560):
初期値 1560 を使いますコマンド (m でヘルプ): w
パーティションテーブルは変更されました!
新しいパーティションを有効にするには、一度Rebootが必要だ。
Reboot後、パーティションがきちんと作成されているか確認し、そのパーティションにFile Systemを作成する。
適当な場所にマウントポイントを作成し、そこにFile Systemをマウントする。
[root@vmsl62 /]# fdisk -l /dev/sda
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 13 102400 83 Linux
/dev/sda2 13 1051 8334336 8e Linux LVM
/dev/sda3 1051 1560 4089304+ 83 Linux[root@vmsl62 /]# mkfs -t ext4 /dev/sda3
[root@vmsl62 /]# mkdir /backup
[root@vmsl62 /]# mount /dev/sda3 /backup/
[root@vmsl62 /]# df -h
Filesystem Size Used Avail Use% マウント位置
/dev/mapper/os-root 5.9G 3.0G 2.6G 54% /
tmpfs 1002M 112K 1002M 1% /dev/shm
/dev/sda1 97M 28M 65M 30% /boot
/dev/sda3 4.0G 35M 3.8G 1% /backup
バックアップの実施
Linuxには、dumpとrestoreというコマンドが用意されている。
私の環境では、デフォルトでは実装されていなかったため、パッケージからインストールを行った。
[root@vmsl62 /]# yum install dump
dumpコマンドは、指定したパーティションをそのままファイルとして吐き出してくれる。
吐き出されたファイルからrestoreコマンドでパーティションを復元することで、バックアップとリストアを実現している。
ファイル生成中に、パーティション内のファイルにアクセスがあると不整合を起こす可能性があるので
念のため、dumpコマンドを実施する際には、シングルユーザーモードになって行ったほうが良いと思う。
[root@vmsl62 /]# init 1 → シングルユーザーモードへ移行
[root@vmsl62 /]# dump -0uf /backup/fistfile /
数十分程度で、ファイルが作成される。
/backupを確認すると、firstfile というファイルが作成されていると思う。
このファイルは、別のPCに保管しておこう。
いざというとき、このファイルを使用して、今現在の状態へ復元が可能となる。
尚、作成した、パーティションは削除してしまって構わない。
自作NASへの道 part4 「再考」
ハードウェア設計
またまた、とんでもなく間が開いてしまったが、Sandy Bridgeの性能はとてもよく、NASにしておくにはもったいない!
ということで、ハードウェアを組みなおし。
家にあまっているパーツを流用して、再度NAS構築を行うこととする。
OSについて
前回から半年以上経過したわけだが、CentOS 6.2がリリースされている。
ただし、CentOSは6.1リリースの際にちょっとした揉め事があり、一部ユーザーからは不安の声が上がっている。
そのときに、代替ディストリビューションとして注目されたのが、Scientific Linuxだ。
特にどちらの出来が良いということはなく、事実CentOS 6.2はリリースされているため、はっきり言ってどちらでも良いと思う。
CentOSの情報がほぼScientific Linuxにも流用可能なためである。
私は、開発陣の基盤の大きさから、ここではScientific Linuxで構築を進めたいと思う。
尚、6.2はリリースされたばかりで、稼動実績情報などが多くないため、6.1をインストールする。
6.1から6.2へのインストールはさほど手間もかからない。
Scientific Linuxのインストール
CentOSのときと同様、USBからのインストールである。
私はいつも、理研のftpを使わせてもらっている。
ここから、サブディレクトリ 6.1 > x86_64 > iso と進み、SL-6.1-x86_64-xxxx-xx-xx-boot.isoをダウンロードしてくる。
このisoは、インストーラのみで、Linux自体は入ってないため、とても軽い。
これをUSBにコピーし、USB Bootしてインストーラを起動し、ネットワークインストールを実施する。(DVD-ROMをケチってるから(笑)
手順については、自作NASへの道 part3 にて軽く触れているので参照。
以下、インストールイメージは、VMware Playerを使用(したがってディスクサイズなどは実機と差異がある。)
自作NASへの道 part3 「ハードウェア構築&OSインストール」
ハードウェア設計
とんでもなく間が開いてしまったが、VMware上に作成した検証環境で、いろいろと試すことができたので実際にNASの作成に入って行きたいと思う。
ハードウェアスペック
マザーボード / P8H67-M EVO
CPU / Core i5 2500K
Memory / W3U133Q-4G x2個
SSD / RealSSD C300 CTFDDAC064MAG-1G1
HDD / HGST Deskstar 5K 2TB(0S03224) x4個
PCケース / ANTEC P183 V3
Sandy Bridgeの値段が落ちてきたので、Sandy Bridgeで組むことにした。
チップセットはH67を選択した。
これは、映像データをスマートフォンなどで気軽に持ち出す為に、Sandy Bridgeのエンコード機能を使いたいといったところ。
チップセット H67は、倍率クロックアップには対応していないが、倍率フリー版のCPU 2500Kを選んだ理由は、2500Kの方がGPU機能が高いため。(値段も500円程度しか違いがなかったしね。)
SSDはOS領域用、HDDはデータ領域用。
OS領域は頻繁にアクセスがあり、データアクセスへのパフォーマンス低下の可能性を懸念したため。
逆に、データアクセスによりOS(サーバー機能)の遅延の懸念もある為。
OSについて
VMware ESXiの無償化により、NAS自体も仮想化してしまおうかとも考えたが、PCIパススルーの挙動がいまいち安定しないようなので今回は見送った。
ということで、OSは検証環境でも散々使用したCentOSをそのまま使いたいと思う。
ちなみに、ちょうどCentOS 5.6が出たのでこちらを使用した。
CentOSのインストール
さて、上記ハードウェアスペックを見るとお分かりになるかと思うが、DVDドライブはケチってつけていない。
したがって、DVDからのインストールはできない。
選択肢
・PXEインストール
・ネットワークインストール(USBブート)
・USBインストール
PXEインストールは、外部にPXEサーバ(DHCPとTFTP)を立ち上げて、インストールしたいPCをPXEboot(BIOSが対応している必要あり)する必要がある。
追加で何も必要としないため、一番コストを下げることができるが、サーバーの立ち上げが必要となるため若干手間がかかる。
我が家では、ルータがDHCPに役割を担っており、これをDisableにする必要があったため、見送り
※ 参考
ネットワークインストールは、CentOSのネットワークインストーラーをUSBメモリーからBootし、実際のインストールファイルはネットワーク(インターネット or ローカルネットワーク)からダウンロードする。
ネットワークインストーラーは、通常のインストーラーのISOファイルが置いてあるディレクトリと同じ場所に「CentOS-5.*-*******-netinstall.iso」というような名前で置いてある。
インストールは、USBからBootした後ftpなりhttpなりで、インストーラーがある場所を指定する。
※ USB Bootについては、こちらを参照
※ ここで指定するのは、
http://*************/pub/linux/centos/5.*/isos/**** ではなく
http://*************/pub/linux/centos/5.*/os/**** となる。
また、ローカルネットワークにあるISOからネットワークインストールをする場合は、ISOをきちんと展開してftpなりhttpなりで共有すること
※ 後からいくらでも機能の追加はできるのでインストールは最小限に抑えること(最小限のインストールであれば、ISOの2つ目はなくても問題ない)
USBインストールは、上記のネットワークインストールでネットワーク越しにアクセスしたISOをUSBメモリー内に置いて、そこからインストールする。
USBはハードディスクとして認識されているので、ハードディスクからインストールを選択すればOK
多くのサイトでも注意書きされているが、Bootローダーのインストールが曲者である。
インストール中、OSをインストールするハードディスクの選択画面が出てくるがここで目的のハードディスクを選択しただけでは、Bootローダーはそのハードディスクに入らない。
私も同じミスをしたのだが、OSはハードディスク、BootローダーはUSBという状況になってしまった。
注意すべきは、インストール先のハードディスクを選択後、GRUBのインストール画面でもう一度ハードディスクを選択する必要があるということ。
デフォルトでは、USBが選択されているので。
GUIインストーラ / Textインストーラ
今回少しハマってしまったのが、GUIインストーラなのだが、私が組んだこの環境では、CentOSのインストーラにビデオボードのドライバがないらしく、GUIインストールを選択した瞬間、画面が真っ暗になりインストールが停止したように見えてしまう。
原因がわからず何度も方法を変え、インストールを試みたが解決はTextインストーラーの選択でできた。
また、Textインストーラを選択後、VNCインストールを選ぶと自動でVNCサーバが立ち上がり、別の端末からGUIインストールすることが可能だ。
これは、PCが直接描写しているわけではないので、ビデオカードのドライバがなくとも問題なくインストール可能だった。
インストールがうまくいかないときは、より低級な方法でトライするというのは、切り分けの選択肢のひとつだと思う。
CygwinでApache その1
ちょっと間が空きすぎました。
自作NASは環境構築のためにいろいろ試していますが、ちょっと仕事が忙しくUpdateできるほどの記事がかけていない・・・
取り急ぎ、やらなければいけないことを優先させて、ついでにそのことをここにメモりたいと思う。
さて、Windows上でデータベースを構築しインターフェイスとしてブラウザを使いたいと思っているのだが
IIS+Active Perl+PostgreSQLという環境で目的の構成は完成したもののなぜかDBD-Pgの挙動がおかしく、errorを吐く。
http://blog.batarnyo.net/2008/07/28/
こんな記事を発見し、事象はまったく同じである。
DBD-PgPPを試してみたところ、確かに問題なく動くものの " 風が語りかけます、遅い、遅すぎる " といった状況。
もちろん、DBへのアクセスはチューニングすることで改善することはできると思うが、性能的には劣ることと思う。
自分用のDBなので自分さえ我慢すればよい話ではあるのだが、我慢するよりは問題解決をする方が生産的かなと思うので、ちょっと環境を変えて再度チャレンジ!
最高の環境としてはLinux+Apache+Perl+PostgreSQLかなと思っている。
但し、Windows上で動くことは条件なのでこの環境をvm上で動かすって言う選択肢もあると思うのだが、果たしてパフォーマンスが出るのかなっといった不安がある。
そこで、実際にうまくいくものなのかはやってみないとわからないわけだが、Cygwin+Apache+Perl+PostgreSQLという選択肢を考えて見たいと思う。
うまくいくかは・・・本当にやってみないと判らないけど。
サービス起動
さて、サービスを起動する前に、設定に問題がないか確認する。
$ /usr/sbin/httpd2 -k start
httpd2: Could not reliably determine the server's fully qualified domain name, using 192.168.1.2 for ServerName
Bad system call
詠人の環境では二つのエラーが表示される。
httpd2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
については、/etc/hostsに登録した hostname をhttpd.confへ記載する必要がある。
/etc/apache2/httpd.confの
# ServerName gives the name and port that the server uses to identify itself.
#ServerName www.example.com:80
#ServerName hostname:80
#(コメントアウト)を消して、hostname 部分に登録したホストネームを入力。
Bad system call
については、apacheのスタートにはcygserverが起動している必要がある。
環境変数 CYGWIN に server を設定しておく必要がある。
でcygserverの設定を実施
$ cygserver-config
Do you want to install cygserver as service?
(Say "no" if it's already installed as service) (yes/no) yes
あとは、$ cygserver & でバックグラウンドでcygserverを起動すれば
$ /usr/sbin/httpd2 -k start で何もエラーが帰ってこなければOK
詠人の環境では $ cygserver-config 実行時に
cygrunsrvがないと怒られてしまった。
cygwinのsetup.exeからAdminのなかのcygrunsrvをインストール後、$ cygserver-config 実行で無事設定できた。
Windowsのサービス上ではCYGWIN cygserver
ここで自動起動に設定しておけば、わざわざ起動する必要もなし。
ApacheもWindowsのサービスとして設定できる。
$ cygrunsrv -I httpd -d "CYGWIN httpd" -p /usr/sbin/httpd2
これで、Windowsサービスとして操作ができる。
ちなみに
$ cygrunsrv -S httpd → サービススタート
$ cygrunsrv -Q httpd → 設定確認
$ cygrunsrv -L → 全サービス確認
$ cygrunsrv -R httpd → サービス削除
$ cygrunsrv -E httpd → サービスストップ
Windows 2000 server メモ
アカウント追加
Administratorでログインし、コンピュータの管理 > ローカルユーザとグループ > ユーザーを選択
右クリックし新しいユーザを追加。
リモートデスクトップ設定
"アプリケーションの追加と削除" から "Windows コンポーネントの追加と削除" を選択し
ターミナルサービスを選択、Install。
コンパネから管理ツールで、ターミナルサービス構成を選択。
ツリー配下にある接続を選択すると、"RDP-Tcp"という項目があるのでプロパティを表示し、アクセス許可のタブを選択し、追加ボタンでUserを追加する。
後は、アクセス許可を与えれば、リモートデスクトップ経由でのアクセスが可能となる。
検証環境の構築 part3「インストール後の設定」
初期設定
SSHのログインが遅い
LinuxのInstallが終わったら後の設定は、ターミナルソフト(teraterm とか putty とか)から行うのが楽なわけだが、いまいちログインが遅い。
user IDの入力もpasswordの入力もすんなり通るけど、実際にログインが完了するまでが遅い。
そんなときには、以下の魔法を唱えるとログインが早くなる。
/etc/ssh/sshd_config の中身の " #UseDNS yes " という項目を見つけたら、 " UseDNS no " へと書き換える。 /etc/resolv.conf の中身の不要なDNSサーバを削除する。(DNSサーバがないなら中身は空でもOK)
上手くいけば、瞬間的にログインが成功し、プロンプトが返ってくるはずである。
文字化けする。
Server側のエンコードとターミナル側のエンコードの違いで容易に文字化けしてしまう。
楽チンなのは、Server側を英語にしてしまうこと
$ df >> こいつが文字化け $ export LANG=en_US $ df >> 文字化けが直る
しかし、これだと一時的に直っただけでRebootするとまた文字化けしてしまうので、恒久的に英語にしてしまうには
/etc/sysconfig/i18n の中身を ' LANG="ja_JP.eucJP" ' などから ' LANG="en_US" ' へと変更してしまいましょう。
但し、私は今回、このLinuxをNASとして使用するわけだが、NASということは当然外部からファイルの書込み読込みがある。
そのファイルは、日本語で書き込まれる可能性もあるため、私はここでは言語設定を ' LANG="ja_JP.UTF-8" 'とする。
すると文字化けが発生するので、ターミナルソフト側も文字コードを合わせておく。(puttyでは、UTF-8/Auto-Detect Japanese という設定がある。)
検証環境の構築 Part 2「OSのインストール」
CentOSのInstall
基本的な部分のInstallは、Installerの流れに沿って適当に設定を行えば良いと思う。
HDDの設定部分のみ記載する。
基本的な流れは
- boot用パーティションはDiskの最先端に 100MBを全Diskに4重Mirror
- OS用パーティションはRAID5で、LVM上にSWAP領域とroot領域
- NAS用パーティションは、RAID5でLVM上にとりあえず1ファイルシステム
VMwareの設定が上手くいっていれば、4本のDisk Driveが見えているはずである。
今回は、SCSI接続(Default Recomend)のDriveなので、sda, sdb, sdc, sdd が認識されていればOK。
全てのDiskを選択し、"パーティションレイアウトの再認識と変更"へCheckをいれ、次へ