月別アーカイブ: 2015年8月

XPパソコンをLinux RAID1 & ファイルサーバー化(活用検討)

以前Windows XP Dynabook Satellite で、Linuxによるプリンターサーバーの検討をしました。Linuxは手続きが簡単なようで実は細かく、特に周辺機器には簡単にはつながりませんでした。当初の目的は古いパソコンをLinux化して、USBプリンタを動かすことでしたがかなり汗をかきました。印刷する方法は見つかったものの、途中でDynabookが故障し一部未達成で終わっていました。

_MG_0030<Photo Data>2015/08/28 「伊豆かつらぎ山」山頂(標高452m)より駿河湾を望む。正面右手あたりに雄大な富士山が見えるはずでしたが残念ながら霞に終わりました。
Canon EOS5D MarkII EF24-105mm f/4L IS USM 1/1250 f4 84mm ISO125
ここは自問自答です。「決められた中で答えを出すのではなく、人は新しきことを踏破し先に進まねばなりません(なにが言いたいのやら、、、(~_~;))」。

2000年初期の頃のDynabookです。キーの一部sとかdといった良く使用するキーが動かなくなりました。廃棄と決め、中のHDDのリセットのついでにと基板を剥がして清掃していくらか未入力となる場合もありましたがある程度使える感じとなり、やり残した検討に再チャレンジです。

再びLinux USBポートです。
外付けUSB-HDDをDynabookにつなぎます。この外付けHDDをファイル共有にし、さらにもう一台USB HDDを追加しミラーリングさせいわゆるRAID1にしてみようというものです。古い機種は、内蔵HDDが小型です。この機種も40GBしかありません。Windows7はもちろん入りません。
でもLinuxはとても軽く、なんなく収納できます。動作も高速です。大容量のデータが必要な時はこうして外付けUSB HDDに収めればいいのです。

ファイルサーバーはSamba、RAIDはmdadmを用いることにしました。Sambaについては下記のVine Linux4入門キットを参考にしました。

素人の検討故、間違っているところもあると思います。備忘録を含めた諸検討を以下簡単にご紹介致します。

Dynabook XP のハード構成は下記の通りです。


Dynabook Satellite J32 モデル:160L/5
  Windows XP Pro Service Pack2、Pentium M 1.6GHz 、1.4GBメモリー、XGA、40GB HDD、  CD-RWドライブ


USB-HDD 2台をRAID1にするには「HDDは同じもの」というルールがありますが、1台は壊れたPCから取り出した2.5″内臓HDDをケースに入れた290GBのもの。もう1台はIOデータの外付け300GBです。

Dynabookに電源を投入する前にUSB-HDDをつなぎます。Dynabookは昨年インストールしたVine Linux 6.2が入っています(Vine 4がCDドライブでブートできる最小のOSでした。アップデートでVine 6まで上げていきます。)。

<OSのアップデート>
スーパーユーザーでターミナルを起動し下記を実行します。
# apt-get update
# apt-get dist-upgrade

端末から
# df -h
としてデバイスの状況を見てみます。

ファイルシステム サイズ 使用 残り 使用% マウント位置
rootfs 34G 2.3G 30G 8% /
/dev/root 同上 同上 同上 同上 同上
/dev/sda1 201M 40M 152M 21%  /boot

USB-HDDは見えていません。sdaが内蔵HDDの様です。USB-HDD1台目を「sdb」、2台目を「sdc」にしてみることにします。
USB-HDDのフォーマットは不明です。USEDでLinuxでは読み取れないフォーマットだと思います。既設パーテーションがあるはずです。先ずパーテーションを削除しremakeします。

<USB-HDDの初期化>

# fdisk /dev/sdb
コマンド (m でヘルプ): d
選択したパーティション 1
コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本パーティション (1-4)
p
パーティション番号 (1-4, 初期値 1): 1
最初 セクタ (2048-625142447, 初期値 2048): 2048
Last セクタ, +セクタ数 or +size{K,M,G} (2048-625142447, 初期値 625142447): 625142447

次に、作成したパーテーション1を、tコマンドで16進fdを入力し、このHDDを「Linux raid 自動検出モード」にします。最終的にwコマンドで書き込み終了させます(書き込み終了した段階で有効になります)。
もう一台のUSB-HDD、sdcもsdbと同様、fdiskで初期化します。

初期化後のHDDは以下のようにsdb、sdcがデバイスとして登録されました。

デバイスブート 始点 終点 ブロック Id システム
/dev/sdb1 2048 625142447 312570200 fd Linux raid 自動検出
/dev/sdc1 2048 586072367 293035160 fd Linux raid 自動検出

<mdadmによるRAID1作成>
RAIDを作成するコマンドmdadmもapt-getでアップデート、アップグレードを行います。最新のものがダウンロード出来た場合インストールします。

# mdadm –create /dev/md0 –level-raid1 –raid-devices=2 /dev/sdb /dev/sdc

次にRAID1のmd0をext3フォーマットします。
# mke2fs -j /dev/md0

ファイルサーバーの共有ディレクトリ/share1(本例は/share1としました)を作ります。
# mkdir /share1

/share1にRAID md0をマウントし、結果をmdadm.confに書き込みます。
# mount -t /dev/md0 /share1
# mount -t ext3 /dev/md0 /share1
# mdadm –detail –scan > /etc/mdadm.conf

次回以降RAIDが自動起動する様に「fstab」を修正します。
# vi /etc/stab
fstab最終行に以下の追記をします。
# dev/md0 /share1 ext3 defaults 0 0
0と0の間はスペース、それ以外はTAB区切りです。

ここまでの操作でどうなっているか、RAID1の状態を見てみます。
# cat /proc/mdstat

Personalities : [raid1]
md0 : active raid1 sdc[1] sdb[0]
293036096 blocks [2/2] [UU]
[>………………..] resync = 3.6% (10600128/293036096) finish=250.3min speed=18799K/sec

unused devices: <none>
うまくRAID1の同期が始まっています。この時点の同期化はまだ全体の3.6%。終了まで4時間以上かかる様です。

<RAID1の内訳>
同期が完了する頃合いでRAID1の状況をmdadmのdetailで確認します。

# mdadm –detail /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Sat Aug 29 14:37:51 2015
Raid Level : raid1
Array Size : 293036096 (279.46 GiB 300.07 GB)
Used Dev Size : 293036096 (279.46 GiB 300.07 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Sat Aug 29 21:13:12 2015
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

UUID : (UUIDはここに出力されますが、固有IDにつきdeleteしています。)
Events : 0.20

Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc

MacのソフトウェアRAIDは単にオンラインと表示されるだけですが、Linuxは細かい出力ですね。

<samba設定>
続いてファイル共有サーバーsambaです。RAID1のディレクトリをファイルサーバー化します。sambaもapt-getコマンドで最新にし、必要ならインストールします。インストールされたSambaのVersionは 3.6.24 -1vl6でした。

共有フォルダーは上記で/share1としました。ディレクトリがまだ出来ていないときは以下のように作成し書き込みの権限を与えます。
# mkdir /share1
# chmod 777 /share1

次に、sambaのconfigファイルをsmb.conf~origとしてバックアップをとり、smb.confを編集します。
# vi /etc/samba/smb.conf

[global]
unix charset = UTF-8
dos charset = cp932

Network-Related Optionでは、workgroupをWindowsに合わせてWORKGROUPとします。クライアントPCに見えるファイルサーバーの名前をDynaserverとしました。
次に、sambaに接続を許可するアドレスを規定します。クライアントのIPアドレスが192.168.12.5の場合、hosts allow = 192.168.12.または192.168.12.5とします。

Network-Related Optionsの例です。記載以外はdefaultsにします。
workgroup = WORKGROUP
server string = Samba Server Version %v

netbios name = Dynaserver
hosts allow = 127. 192.168.xx. (xxは使用するルーター配下のIPアドレスを元に設定します)
hosts deny = all

Logging OptionはDefault、Standalone Server Optionsは、最初は暫定でsecurity = share の設定にします。この接続は、samba 3.6.xでは推奨されていません。接続テストを終えたらよりセキュアな接続に切り替えます。

Standalone Server Optionsを以下に設定します。
security = share

さらに、Domain Members Optionsから最終行まではDefaultsとします。
最終行に共有設定を追記します。
[Share]
path = /share1
writable = yes
create mode = 0777
directory mode = 0777
guest ok = yes
guest only = yes
share modes = yes

以上を保存してviを終了します。
スクリーンショット 0027-08-31 12.15.14

<自動起動optionの設定>
Linuxシステムのシステム→設定→ユーザ向け→自動起動するアプリケーションにsmb、nmbを登録します。Vine Linux6.3ではsmb、nmbの起動ファイルは、/etc/rc.d/init.d/にあります。(2015/09/08ミス修正。誤 rc.f → 正 rc.d)

<ファイヤウォール設定追加>
システムのファイヤウォールに、sambaのポートを解放する登録を行います。信頼できるサービスsambaにチェックを入れます。更に、ファイヤウォールをONにします。(システム→システム管理→セキュリティーレベルとファイヤウォールで設定します)

rebootして再起動します。

上のスクリーンショットはMacのファインダーから見たRAID1共有ディレクトリの中身です。Dynabook、Mac、Windowsなどからアクセス、編集、削除、保存など可能となっています。

<評価まとめ>
クライアント(Mac、Win機)、サーバー(Dynabook J32 Linux)とした時、双方が無線LAN接続によるネットワークを構成しているとき、それぞれ別のSSID経由でLANが構築されているときは、遅延によってサーバー接続が不安定またはつながらないことがありました。大容量ファイルを安定に転送するには有線LANがベターです。無線LANを使用するときは低速でも構いませんが、サーバーとクライアントは同一のSSIDに設定するのが良いと思われます。

[パスワード型設定への変更及びhomeディレクトリの追加:2015/09/08]
サーバー・クライアント間の接続を、encrypt パスワード方式に変更しました。

<最終版smb.confは以下です。>
[global]

unix charset =UTF-8
dos charset =cp932
workgroup =WORKGROUP

netbios name = DYNASERVER
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
idmap config * : backend = tdb
security = user
hosts allow = 127. 192.168.xx. (適宜変更下さい)
encrypt passwords = yes

[homes] 

 comment = Home Directories
 read only = No
 browseable = No

;[printers]
load printers = no
; printable = Yes

; print ok = Yes
; browseable = No
; available = No

[Share]
path = /share1
writable = yes

create mode = 0777
directory mode = 0777
share modes = yes
guest only = Yes
guest ok = Yes

smb.confは以上です。(homeディレクトリが不要な場合、上記[homes]関係行は全て行頭コメントにします。)

IDとパスワードが必要になります。Sambaのクライアントのアカウントとパスワード設定はSWAT(http://localhost:901)、またはターミナルで設定します。
自分の場合SWATはうまく起動できず、MIRACLE LINUXさんのサイトを参考に立ち上げました。SWATでの手続きは、Dynabook LinuxでSWAT初期画面が出たらrootアカウントで入ります。
コマンドで設定する場合、クライアント用Linuxユーザーとパスワード、同じユーザーのsambaユーザー、パスワードを下記の様に設定します。

Dynabookのターミナルで、まずLinux USER のname1を作ります。
# useradd name1
# pdbedit -Lでname1が登録されたかどうか確認します。登録できていたら次にsamba USERとして登録します。Linux name1とSambaのname1は同じにします。
# pdbedit -a name1
パスワードも求められますので、自分で決めて入力します。
パスワードや管理方法としてグループアカウントを作る方法、コマンドからsamba USERを追加する方法「ももいろテクノロジー」さんなどが参考になりますので紹介させて頂きます。

[Linuxサーバー機からの印刷は最終的に Cups Printer LBP3100を使用しました:2015/09/03]
手持ちのWifi対応ネットワークプリンタはLinuxはサポートされていません。サーバーからの印刷は旧型機ですがキヤノンLBP3100を使用するkとにしました。このプリンターの設定については別投稿に掲載していますので立ち上げる方は参照下さい。
注意事項として、手持ちのLBP3100は国内販売ながらUSBポートにつなぐと、LBP3100-LBP3108-LBP3150の択一名で表示されます(欧州版かもしれません)。しかし、ドライバーはLBP3100しか手に入りません。プリンタメニューの択一表記は消さずに無視します。Linuxドライバーをインストールするとシステム→システム管理→印刷にLBP3100が表出します。クリックして下記のデバイスURIを設定して下さい。
ccp:/localhost:59687/dev/usb/lp0

また、CupsプリンターをつなぐUSBポートは再電源投入後でもつながるポートを探しておきます。プライオリティーの低いポートでは翌日印刷されません。また、Cupsドライバーをインストールしただけでは動きません。Vine Linuxのサイトからcapt.shをダウンロードしインストールします。本内容も実行される場合は上記投稿をご参照下さい。

[Windows8 PCをクライアントとしてつないでみる:2015/09/08]
Windows8 PCにもつな異で見ました。事前にWindows機のアカウントユーザー名、Sambaユーザー及びパスワードを登録後、サーバーにつなぎます。パスワード設定方法は上記をご参照下さい。
スクリーンショット (2)サーバーのディレクトリ作成、ファイルの直接編集、再保存などMac同様特に問題なく出来ました(左のスクリーンショット参照方)。

サーバーの堅牢性、障害、復旧などは別途検討後reportします。

本稿は実施検証が不足しています。皆様で本例のRAIDをご検討される場合その点を加味されて試行されるようお願いいたします。
尚、ご質問などはお手数ですがFKMコンサルティングのメールフォームのページからお送り下さい。

以下のサイト及び書籍を参考とさせて頂きました。
参考URL:http://inaz2.hatenablog.com/entry/2013/07/07/054616(ももいろテクノロジー)
林 雅人、伊藤 銀次著 Vine Linux 4入門キット 秀和システム (Chapter10 ファイルやプリンタのネットワーク共有他)
http://users.miraclelinux.com/technet/faq/data/00010.html (ミラクルリナックス)
URL:http://d.hatena.ne.jp/akihito_sado/20120722/p1 (へっぽこSEブログ)
URL:http://qiita.com/mken/items/659edf3257cc2f1211a5 (ソフトウェアRAIDの初期設定と運用 -mdadm)
三宅 英明 大角 祐介著 新しいLinuxの教科書 SB Creative
URL:http;//www.virment.com/config-sambaserver/ (sambaサーバーによるファイル共有環境の構築手順メモ)

2015/08/30 1st 初稿
2nd 2015/08/31 修正追加
3rd 2015/09/01 samba接続に関する修正
4th 2015/09/02 接続方法の変更
5th 2015/09/03 LBP3100Cupsプリンタの追加
6th 2015/09/8 WindowsPCとの接続による追記と訂正
7th 2015/09/10 リンク先追加
8th 2015/09/26 文書追加
9th 一部見直し 2015/10/08
10th 字句訂正他 2016/01/09
K.Fukuma