なにを今更 Squid なんだ。という事を突っ込まれそうですが、SUSE Linux に Squid を導入してみました

2000 年前後のインターネット回線はまだ128K などの低速回線だったし、ウェブサイトも固定コンテンツだったため、それなりにこの種のネットワークアクセラレータも必要でした。

しかし、その後、ブログ、SNS、動画配信、ユーザー嗜好やロケーション公告など、利用者側のニーズが変わってきたし、合わせてサービスも変化しました。回線も高速化すると、ウェブアクセラレータの必要性も下がります。

しかし、最近はタブブラウザばかりで、クラッシュした後自動保存したページを一気に開いたりすると、ストレスが貯まります。

-ちなみに-

以前は Novell BorderManger や volera excelerator などの爆速プロクシキャッシュを使う時、「プロクシ認証」をさせてIPアドレスではなく「誰がどこのサイトを閲覧したか」を記録するようなシステムを作り、このやり方が一時、流行りましたが、最近はあまりそのような話は聞きません。個人情報保護対策はどこへ行ったのでしょう。

しかし、まだ大手のISPなどでは Squid などのアクセラレータにコンテンツフィルタを組み込んで利用しているところもあるでしょう。先年まで日本通信の b-mobile を使っていましたが「高速化のお知らせ」というメールがきたので見てみると、何のことはないただのプロクシの設定方法を説明したものでした。ユーザ側サイトでプロクシを使うことよりも、WEBアクセラレータとしてISP側やサイト側が導入するケースに絞られてしまいました。

しかし、タブブラウザはじめ、LAN内のユーザが複数のPCやタブレットなどを利用すると、LANからインターネットへのトラフィックは一気に上昇します。

私は東京めたりっく以来のADSL回線なので、それほど不便は感じてきていませんでしたが、最近はやれディストリビューションのダウンロードだとかクラウドだとかを考えると、ちょっと回線効率を考えるようになります。結局ちょっと下調べものはモバイル3Gルータをつかうことになります。

もっとも100Kmしか出ない車にで東名高速に乗っていて200Km出る車に乗り換えると、確かに感動しますが、そうなると今度は300Km出る車に乗りたくなるわけで、その後は高速道路でパトカーで高速機動隊が赤旗振って待っていたというオチもありますから、「凡人余計なことを考えるべからず」で今の回線をどううまく使うかを考えています。

--
ということで今回は SUSE Linux に Suquid を導入してみました。

-インストール-
YaST > Software Management から Squid を Search します。本来は yast2-squid はチェックされているはずなのですが時折チェックが外れていることがあるので、確認してチェックします。
a0056607_15273553.jpg

Acept すると Squid がインストールされます。

あとは YaST の Squid アイコンから設定を行います。

-HTTP ポート
a0056607_15295024.jpg

デフォルトで300番台のポートが降られているのでここでは 80 に変えました。

-ACL
デフォルトでは xx許可>xx許可xx許可>あとは全て拒否(Deny) なので、全て許可(Any;allow) としました。最近は Google のように SSL 接続しか許可しないところも多く、デフォルトでは Google にアクセスできません。ホワイトリストを作っていくのも大変です。
a0056607_15351468.jpg

ということで、どうせ所内のネットワークだし、「性善説」をとることにしました。

※ちなみに ssl 通信はクライアント側で使わない設定にしたほうが Google さんには確実につながるようです。(チェックははずしておくこと)
a0056607_15472259.jpg


-キャッシュ
キャッシュディレクトリば /var/cache/squid です。できれば、このディレクトリを別なデバイスを使ってマウントしておくことをお勧めします。 df -h コマンドを使って空き容量を確認してMB単位で与えます。ここでは仮想環境なので 10G のディスクを /var/cache/squid にマウントして 9990Mb 与えました。
a0056607_15583966.jpg


-保存して起動
あとは、 Save & restart するだけです。 When Booting もチェックしておきます。
a0056607_15413441.jpg


-入れてみて-

-決して早くなるわけではない-

いまどきのウェブサービスは動的なコンテンツが多いので、静的な画像や同じ広告のバナーを表示するのは速いことは早いのですが、html ソース自体が二度目のアクセスで書き換えられるケースも多く、決して「早くなった」ということはありません。逆にキャッシュされた差分の更新のため、ページの表示が一時停止してしまい、リロードなどが必要なケースも増えます。特にウェブページの先頭に別サイトへの広告リンクやSNSへのリンクがあるサイトはあまり高速化されません。

そもそもローカルキャッシュが先に使われるわけですから、同じページを見たときに「早い」と思うか「遅い」と感じるかは、そもそもPC自体の使い方、性能の問題です。プロクシが間に入る分、オーバーヘッドがあるので、一概に「早く快適」になるものではありません。

かつて「爆速キャッシュ」だった NetWare ベースの BorderManager とは時代も機材も状況も違うので、構内LANエッジとしての Squid の効果はあまりないように思えます。

個人的には Squid よりも、エッジの効率化を目的としたキャッシュアプライアンンスを導入したほうがよいように思います。


- PCが安定した -

早くなるか > ほとんど No です。何しろプロクシがあっても、ローカルキャッシュの方がよいに決まっています。

 ディストリビューションのダウンロードなどは、「あまりいじらない」仮想PCで行うのが一番確実なのですが、LAN内に「暴れん坊PC」が一台あるとたちまち回線は混雑してくれます。彼らが動画サイトなどにアクセスすると、他でダウンロードが途切れたりするのですが、構内LANにあるキャッシュを経由するようになると、トラフィックの交通整理をしてくれるためなのか、非常に安定した速度でダウンロードしてくれます。また、利用者のPCとサイトの接続をプロクシが代理応答するわけですから、たとえ遅くてもユーザシステムの通信負荷は若干減ります。実際 Proxy を使ってみてもらうと、よく落ちていたシステムが安定したという話は聞きます。逆に「プチフリーズしたか」という面もあります。

もちろん「暴れん坊」のアクセスは途切れたりするわけですが、これはこれで「ルールを守って100Kmで走ろう」ということであれば、仕方のないことです。

高速道路には、日常物資を運ぶトラックも走っているというわけです。

-再起動するとダウンロードがエラーになる-

当たり前ですが、Squid は設定を変更して再起動すると、これまでキャッシュ経由してダウンロードしていたリクエストは全部キャンセルされます。設定の変更は十分な計画とテストを行うべきでしょう。

-明示的にキャッシュを指定する必要がある-

アプリケーションによっては明示的にキャッシュサーバを指定しなければならないものがあります。

Windows 本題のIE や Chrome, Safari や SUSE Linux 本体はシステムのデフォルトを使用しますが Firefox(手動設定かシステムデフォルトとの切り替えはユーザ任意) Opera は自分で設定する必要があります。他のアプリケーション、特にアップデート系のアクセスは不明です。グループポリシーで設定できないと、ユーザに明示的に利用させるしかないでしょう。

100 台のマシンに Google Chrome を導入する際にダウンロードできるのは「本体」ではなくインストーラだけです。インストーラが Google さんから本体をダウンロードさせます。

アプリケーションではプロクシを使った場合どのような結果になるか、明らかにしている場合もあれば、まったく公開していない場合もあります。アナライザで調べるしか方法はありません。

簡単にボタンひとつで変更ができればよいのですが、プロクシの設定は管理者権限が必要なので、一般ユーザ権限でプロクシの設定を変えることはできないのは何とかしたいものです。

一応 tcpmon などのツールで見る限り、これらのアプリケーションのアップデートはシステムのデフォルトプロクシを使っているようですが例外も多くあります。Windows Update Server 並に利用中のアプリケーションのアップデートが始まったら、ユーザになるべく同じ時間帯にアップデートさせれば、効果はあるのかもしれません。

一番よいのは、トランスペアレントプロクシを使うことですが、耐障害性を考えると複数用意したいところです。しかし複数用意するとキャッシュ効果も下がるため、お勧めできるものでもありません。また、ネットワークの設計がかなり複雑になります。凝ったネットワークデザインは「マニアック」に陥りやすく運用面でトラブルが出るとお手上げになります。

ただし、全てのトラフィックがプロクシを経由するため、通信状況(ログ)の把握やブラックリストの管理は容易になります。

-キャッシュ容量-

これだけ光だDSLだ動画だSNSだとなると、今まで数Gもあれば良かったキャッシュ容量も膨大になります。本当に「効果」を感じるには数百Gバイト単位でウェブキャッシュを使う必要がありそうです。

たとえば、3G通信などは3Gバイトの転送制限をしている、あるいはOCNの光通信では月間アップロード量が30Gあると「お仕置き」が待っているように、1日1人1Gというのが最低の目安だとすれば、100人で1日100Gは最低。できれば1Tくらいのキャッシュ容量がなければ「快適になった」という実感はなさそうです。

となると squid 本体が動作するどこかのディスクにキャッシュを用意しなければならないということになります。デフォルトは /var/cache/squid なので、ここだけ別パーティション、別デバイスとするべきでしょう。しかし、iSCSI デバイスなどを使う限り、ローカルLAN内のトラフィックを増やすだけなので、DAS接続したドライブを使うべきなのかもしれません。


-それでも入れて見るべきかウェブキャッシュ-

これは技術の問題よりモラルの問題かもしれません。固定専用回線であっても、上位のISPがパンクするようでは意味がないので、クラウドを有効活用するには、少しでも自分たちの回線の「効率化」と「整流化」を考えても良いと思います。

ここでもし自分たちのためにウェブキャッシュを導入しようとするならば、自分たちの構内に置かなければまったく意味がないということです。データセンターにウェブキャッシュをおきたいというお客様がいましたが、データセンター自体、巨大なウェブキャッシュを持っているだろうから、まったく効果はありません。センターと構内を結ぶエッジに置くべきものです。

-DNSと同居-

ウェブキャッシュはDNSと同居させるのが一番楽な方法です。アドレスクエリを内部で処理できるため、余分なトラフィックを作らないでしょう。ただし、DNS本体が肥大化するため、この点でも設計は結構難しいかもしれません。


-問題はCIFSのアクセラレーション-

これは現実にお客様で聞いた話なのですが、某社の高価なCIFSアクセラレータを100人程度のリモートオフィスに導入したところ、全く役に立たなかったという話を聞いたことがあります。結局、そこでは全社的に Novell iFolder を導入しました。(現在はオープンソース化されています)結局 Windowsサーバ + CIFS を諦めて、全社的に Novell NCP (Port 524) を使った OES サーバを利用することになったようでした。結果的には CIFS キャッシュより NCP プロトコルの方が効率は良かったようです。エッジの効率化はまだまだ問題が多そうです。


islandcenter.jp
[PR]
by islandcenter | 2012-11-30 18:18 | プライベートクラウド

SUSE Linux でトラフィックを監視するには iftop ツールをインストールします。

YaST > Search で 'iftop' を検索して、スペースキーで選択し Accept します。

a0056607_16234989.jpg


-i のパラメータとして eth0 などインターフェース名を指定します。

sles11:/ # iftop -i br1 <-- ここでは br1 を指定
interface: br1
IP address is: 192.168.1.220
MAC address is: yy:yy:yy:xx:xx:xx

このような感じでトラフィック監視を行います。白い部分はグラフです。
a0056607_16251944.jpg


q で終了します。


--Key word-

SUSE SLES Linux ネットワーク負荷監視 iftop インストール 使い方

islandcenter.jp
[PR]
by islandcenter | 2012-11-25 17:22 | SUSE | Trackback | Comments(0)

ディスクの IO 転送状態を調べるには iostat コマンドを使います。iostat は sysstat パッケージに含まれているので、yast > Software Management より search > 'sysstat' をセットして、スペースキーで選んでインストール(Accept) します。

a0056607_1364711.jpg


help を見てみます。

sles11:/mnt/sdd # iostat -help
Usage: iostat [ options ] [ [ ] ]
Options are:
[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ]
[ [ ... ] | ALL ] [ -p [ | ALL ] ]

/dev/sdf -> dev/sdd にコピー中の状態です。

-hm 1 オプションを使います。 h(人が読める形式) m(MB) 1 (秒おき) で調べます。

sles11:/mnt/sdd # iostat -hm 1
Linux 3.0.13-0.27-xen (sles11) 11/24/12 _x86_64_


avg-cpu: %user %nice %system %iowait %steal %idle
0.25 0.00 9.45 64.93 0.25 25.12

Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 5.00 0.00 0.02 0 0
sdb 0.00 0.00 0.00 0 0
sdc 0.00 0.00 0.00 0 0
sde 0.00 0.00 0.00 0 0
sdd 118.00 0.00 66.69 0 66
sdf 203.00 90.09 0.00 90 0

:
: 中略
:


^C <------ ^C で中止します。
sles11:/mnt/sdd #

sdf から sdd へ読み出し/書き込みが行われています。

この例では -hm 1 オプションで1秒おきに表示を更新していますが、間隔が短すぎると数字がコロコロと変わってしまいます。 10 秒程度の更新間隔にすると、大量のファイルを操作している間の平均速度がわかります。

a0056607_1952932.jpg


大体、シーケンシャルアクセスで R/W 40-70MB/sec 程度が2012年現在では一般的な安価な SATA ディスクとコントローラの性能のようです。1つのコントローラで R/W の合計が最大 70MB/Secほどで出るとかなり性能を出し切っている感があります。 (ディスクの回転数や世代などによりかなり大雑把です)


tps(転送速度) の値が大きく出ているようであれば、性能の良いディスクということになるようです。


-Key Word-

SUSE SLES Linux iostat コマンド HDDの性能を調べる 転送速度

islandcenter.jp
[PR]
by islandcenter | 2012-11-24 13:08 | SUSE | Trackback | Comments(0)

SUSE Linux (SLES) のサーバーの管理に PUTTY を使うことは手軽でよろしいのですが、いつも「文字化けする」とか「罫線が化ける」などの苦情が耐えないので、デフォルトから変えたいポイントを押さえておきましょう。

-文字化け-
SUSE は UTF-8なので文字コードを UTF-8 に変えます。
a0056607_15401144.jpg


-文字フォントのサイズ-
デフォルトでは文字フォントが小さすぎる場合、Apperance のフォントを選びフォントサイズを大きくします。
a0056607_1541143.jpg


-スクロールバックの行数-
どのようなメッセージが出たのかダンプして報告してほしいのですが、Copy all to Clipboard をしようとしたらバッファから消えていた、というがっかりにならないよう、デフォルトのスクロールバック数を 200 -> 2,000 行くらいまで増やします。
a0056607_1545895.jpg


-YaSTのライン化け-
a0056607_1621045.jpg

普段は UTF-8 で利用し、YaST などのツールを使う場合は Defaault の "use font encording" に文字コードを変えます。それ以外は UTF-8 にしておくと良いでしょう。左上隅のアイコンから設定を変えることが出来ます。
a0056607_15472496.jpg


-設定をクリアしたい-
この状態で Default Setting を "save" するとレジストリに書き込まれます。

初期化してしまいたい場合 regedit から PUTTY を探して "sessions" キーを削除します。
a0056607_15484440.jpg



-keyword-

SUSE SLES Linux Putty 文字化け 罫線化け


islandcenter.jp
[PR]
by islandcenter | 2012-11-23 15:56 | SUSE | Trackback | Comments(0)

SUSE Linux での dd_rescue

私はいつも、新しいHDDに Linux を導入するとき、必ず 10G 程度の「パーティション化されていない」領域を残しておきます。これは「何かあったとき」にシステムを新規のパーティションにインストールすれば、「何とかなるかも知れない」ためのものです。

ということで「何か」ありました。ディスクのI/Oエラーです。

こういうときに役立つのが dd_rescue で、よく knoppix のライブCDで起動して使うケースが多いようです。以前「それでもお前はサーバーか」というような安物サーバーを修復するために使ったことがあります。それも方法の一つですが、どうせなら SUSE でやるのが粋というものです。なぜ粋なのかは聞かないでください。ライブCDで起動したのでは、ログファイルの保存ができません。シャットダウンする前にUSBメモリなどのどこかに保管する必要があります。

dd_rescue ddrescueは dd コマンドと違い、I/O エラーが出ても、リトライしてスキップしてくれたり、ログを取りながら実行すれば、 ^C で強制終了したところから再開してくれたりするようで、非常に強力なツールです。Windows ユーザにも教えてあげたい優れたツールです。

もっとも、救えるものは「救えるファイル」だけなので、そこは諦めるしかありません。セクタエラーが出て、/ (root)パーティション がマウントできない、と言った事態には対処できないのでご注意ください。

ちなみに Linux だけではなく Windows もディスク丸ごとバックアップできるので、修復用マシンに用意しておいてもいいかも知れません。

もし、サーバに空きパーティションがあれば、そこに New Install でインストールします。ブートローダーが書き換わりましたら、救済用パーティションから起動します。 dd_rescue ddrescueはデフォルトでインストールされないので YaST > SoftwareManagement > Search から 'rescue' などで検索します。インストールの際に、Software オプションでインストールしておいても良いかも知れません。

CUI のYaST ではスペースキーで 'ddrescue' を選ぶとインストールされます。

※ コメントにもご指摘ありましたが SUSE でのパッケージは ddrescue ですが、インストールされるプログラム名、コマンドは /bin/dd_rescue です。一応 GNU GPL2.0 で配布されているものですが一般的な GNU 版とは微妙に違う様です。

a0056607_11595757.jpg


これでインストールできたので、ddescue の学習です。コマンドを叩くと次のようなヘルプが出ます。これが全てですので、救済中にあまりにもすることがないので、意訳してみました。

※あくまでも SUSE での ddrescue です。

※補足
opensuse の"ソフトウェア検索"からブラウザで 1 Click Install も出来ます。YaST のインストーラが立ち上がるので、指示に従ってインストールします。

SUSE 版

ここでは SUSE 版を説明しています(多分.....)

よく使いそうなオプションは太字で記します。
※補足ここまで


--ここから

dd_rescue Version 1.14, garloff@suse.de, GNU GPL
($Id: dd_rescue.c,v 1.59 2007/08/26 13:42:44 garloff Exp $)
dd_rescue copies data from one file (or block device) to another.

使用法: dd_rescue [options] infile outfile

options:

-s ipos 開始位置 ipos入力ファイル(def=0)
-S opos 開始位置中の出力ファイル (def=ipos)
-b softbs コピーブロック・サイズ、(def=65536)
-B hardbs エラーが出たときfallback するブロックサイズ (def=512)、
-e maxerr、maxerrエラー数の後、終了 (def=0=無限大:つまり終了しない)
-m maxxfer 転送される量の最高値 (def=0=inf)
-y syncfrq 出力ファイルに fsync する呼び出し頻度 (def=512*softbs)
-l logfile エラーと要約を記録するファイル(def="")
-o bbfile 不良ブロックを記録するファイル(def="")
-r 逆方向コピー(def=前から) ※くどいけど注意 - 後ろのブロックからコピーするオプションです。他のディストリビューションの GNU 版では "retry 数"になるようです。
-t 出力ファイルを切り詰める、(def=no)
-d/D 入出力用O_DIRECT使用(def=no)
-w 書き込みエラーで異常終了(def=no)
-a spArseファイル記述(def=no)
-A zeroed のエラーでも常にブロックを書く(def=no)、
-i 対話型:データを上書きする前に尋ねる(def=no)
-f 強制モード: いくつかの Sanity check(まともかどうか)をスキップする(def=no)
-p 維持モード: 所有権などの維持(def=no)
-q quiet モード: 表示なし
-v verbose モード: 表示あり
-V バージョン表示して終了
-h このヘルプを表示して終了
注:
サイズは、ユニットb(=512)、k(=1024)、M(=1024^2)あるいはG(1024^3)バイトの中で与えられるかもしれません。
それが必ずしも異常終了しないか、出力を切り詰めないので(Trancate)、このプログラムはI/Oエラーの場合にはデータを救うのに有用です。

--ここまで

あとは、増設ディスクをつけたり、NASをCIFSマウントするなりして、パーティションを丸ごとファイルにバックアップしてみます。もっとも、その場合、「rescue 用ディスク」「再リカバリ用ディスク」の2台が、しかも、壊れたディスクより容量の大きなものが必要になるので、懐が痛むところです。

次の例は、 sdb1 のパーティションを rescue.img にバックアップする時に実行したものです。通常は sda を sdb にバックアップするのですが、sda より sdb の方がサイズが大きいものを用意するので、残りがもったいない。ということで、パーティション>パーティションではなく、パーティション>ファイル で実行しました。もし、LAN内に空き容量の大きな NAS があれば、マウントしてターゲットとして考えてみるのも手段でしょう。USB 接続も良いのですが、あまり転送速度が出ません。

# ddrescue -v /dev/sdb1 /rescure-dir/rescue.img -l "dd.log" <-- 違うって!
# dd_rescue -v /dev/sdb1 /rescure-dir/rescue.img -l "dd.log"

※実際には -b 655360 を付けて実施しました。

-v をつけないとダンマリとします。必ず付けておきましょう。 -l の後のログファイルは "file" と必ずダブルクォーテーションで囲みます。もし dd_rescue が失敗したり、^C を間違って押してもログファイルがあれば引き続き操作をしてくれるようです。

※ くどいようですが SUSE Linux での例です。他のディストリビューションではかなり「方言」があります。オプションを確認してください。

転送元と転送先を間違えると「がっかり」な悲惨な結果になります。一旦マウントしてみて内容を確認するなり fdisk -l でディスクのサイズや mount コマンドなどで確認するなりの作業をしっかり行ってください。実行する前に、同僚に確認してもらうという事も重要です。

なお、SATA ディスクの場合、エラーの頻度にもよりますが、一時間あたり 30Gb ほど処理してくれるようです。これは、-b オプションをつけないでデフォルトの 65536 で行った場合です。 -b 655360 と十倍にしてみるとかなり速度は上がるようです。大体2~3倍くらいは向上するようです。syncfrq に影響してログがなかなか作成されないようなので、ここまでサイズを大きくする必要はなさそうです。

※ 通常のエンタープライズ向けの SAS Raid のシステムだと I/O エラーはハードウェアが代替してくれるので、タマが壊れない限りお世話にならないかもしれません。

ls -lh コマンドでrescue.img ファイルのサイズが増えていくことで確認します。途中ログが書かれますので、これも cat してみてください。

このような感じで log が作成されます。エラーがぼろぼろ出てきます。デフォルトではすぐに作成されますが、 -b オプションでブロックサイズを大きく取ると、ログの同期 fsync まで数時間かかる場合があるようです。

sles11:/rescue/ # cat dd.log
dd_rescue: (info): about to transfer 0.0 kBytes from /dev/sdc1 to /share/wd3t/rescue1.img
dd_rescue: (info): blocksizes: soft 655360, hard 512
dd_rescue: (info): starting positions: in 0.0k, out 0.0k
dd_rescue: (info): Logfile: dd1.log, Maxerr: 0
dd_rescue: (info): Reverse: no , Trunc: no , interactive: no
dd_rescue: (info): abort on Write errs: no , spArse write: if err
dd_rescue: (info): about to transfer 0.0 kBytes from /dev/sdc1 to /share/wd3t/rescue1.img
dd_rescue: (info): about to transfer 0.0 kBytes from /dev/sdc1 to /share/wd3t/rescue1.img
dd_rescue: (info): blocksizes: soft 655360, hard 512
dd_rescue: (info): blocksizes: soft 655360, hard 512
dd_rescue: (info): starting positions: in 0.0k, out 0.0k
dd_rescue: (info): starting positions: in 0.0k, out 0.0k
dd_rescue: (info): Logfile: dd1.log, Maxerr: 0
dd_rescue: (info): Logfile: dd1.log, Maxerr: 0
dd_rescue: (info): Reverse: no , Trunc: no , interactive: no
dd_rescue: (info): Reverse: no , Trunc: no , interactive: no
dd_rescue: (info): abort on Write errs: no , spArse write: if err
dd_rescue: (info): abort on Write errs: no , spArse write: if err
dd_rescue: (info): ipos: 307510400.0k, opos: 307510400.0k, xferd: 307510400.0k
errs: 0, errxfer: 0.0k, succxfer: 307510400.0k
+curr.rate: 2089kB/s, avg.rate: 20609kB/s, avg.load: 1.4%
dd_rescue: (info): ipos: 307510848.0k, opos: 307510848.0k, xferd: 307510848.0k
* errs: 0, errxfer: 0.0k, succxfer: 307510848.0k
+curr.rate: 657kB/s, avg.rate: 20608kB/s, avg.load: 1.4%
dd_rescue: (warning): /dev/sdc1 (307510848.0k): Input/output error!
Bad block: 615021728
dd_rescue: (info): ipos: 307510880.0k, opos: 307510880.0k, xferd: 307510880.0k
* errs: 1, errxfer: 0.5k, succxfer: 307510848.0k
+curr.rate: 1176kB/s, avg.rate: 20608kB/s, avg.load: 1.4%
dd_rescue: (warning): /dev/sdc1 (307510880.0k): Input/output error!
Bad block: 615021729
dd_rescue: (info): ipos: 307510880.0k, opos: 307510880.0k, xferd: 307510880.0k
* errs: 2, errxfer: 1.0k, succxfer: 307510848.0k
+curr.rate: 1393kB/s, avg.rate: 20608kB/s, avg.load: 1.4%

 :
 : 中略
 :

dd_rescue: (warning): /dev/sdc1 (1805216000.0k): Input/output error!
Bad block: -684535289
dd_rescue: (info): ipos:1932731520.0k, opos:1932731520.0k, xferd:1932731520.0k
errs: 568, errxfer: 284.0k, succxfer:1932731264.0k
+curr.rate: 21527kB/s, avg.rate: 19519kB/s, avg.load: 1.7%
dd_rescue: (info): /dev/sdc1 (1932731904.0k): EOF
Summary for /dev/sdc1 -> /rescue/rescue1.img:
dd_rescue: (info): ipos:1932731904.0k, opos:1932731904.0k, xferd:1932731904.0k
errs: 568, errxfer: 284.0k, succxfer:1932731648.0k
+curr.rate: 4533kB/s, avg.rate: 19519kB/s, avg.load: 1.7%



568個のエラーが出ているようです。


後はこのファイルを mount -o loop コマンドで「読めるかどうかでしょう。

.... うまく行くかどうかは to be continue....

.... -b オプションでブロック数を増やして、30時間後 .....

sles11:/rescuet # ls *.img -lh
-rw-r----- 1 root root 1.8T Nov 14 16:13 rescue1.img
sles11:/rescuet # ls dd1.log -lh
-rw-r----- 1 root root 188K Nov 14 16:13 dd1.log
sles11:/rescuet # mount -t ext3 -o loop rescue1.img /mnt
sles11:/rescuet # ls /mnt
disk2 lost+found
sles11:cd /mnt
sles11:/mnt # ls -alh
total 28K
drwxr-xr-x 4 root root 4.0K Jun 24 17:21 .
drwxr-xr-x 23 root root 4.0K Nov 13 07:08 ..
drwxrwxrwx 48 nobody users 4.0K Oct 12 19:37 disk2
drwx------ 2 root root 16K Feb 28 2011 lost+found

sles11:/mnt #


無事マウントできました。この中からデータを救出するのにまた何日かかるか....

-Key word-

SUSE SLES11 Linux dd_rescue ddrescue

その他の情報はこちら
islandcenter.jp

[PR]
by islandcenter | 2012-11-15 14:04 | SUSE | Trackback | Comments(5)

ここではイントラネットで利用することを目標にCMS(コンテンツ管理システム)の代表である Wordpress を SUSE Linux 11 sp2 (SLES11sp2)に導入する手順を記します。

MySQL の教科書は数々あれど、Wordpress の教科書は数々あれど、両方を扱った良いテキストはほとんどありません。結局どちらの教科書を買ってきても、それぞれが専門書であり、基本的な

「このディストリビューションではどうやって環境を作るの」

という記述はありません。Wordpress の教科書には「ここでは MySQL の設定方法は教えませんよー」とありますし、MySQL の教科書については、プログラミングや管理の方法は書かれていても、インストールの方法さえ書かれていません。もちろん Wordpress って何物だ、の世界です。もっとも練習用に Windows 版のバイナリが添付されていることも多いようです。

事前に MySQL が「動いていて当たり前」で書かれているわけですね。

ぞうは言っても LAMP という言葉に代表されるように MySQL と PHP, Apach の組み合わせは Linux のデフォルトです。

ということで SUSE Linux で Wordpress はどうやってうごかすの? ということで、CMS ソフトウェアの代表である Wordpress をインストールしてみました。


-参考になった資料-

推奨構成とデータベースの作成 <--- おすすめ

Running WordPress on openSUSE

2010年2月のopenSUSE勉強会報告

Changing the Site URL


-SUSE(SLES11sp1)の仮想マシンインストール-

一度やればよいことなのですが、ここは訓練です。 SLES + XEN の基本環境を SSD ドライブの中に用意して、Domain-U をコピーしては、「何度も」練習しました。メモリは 768Mb vcpu:2 です。失敗すると、また仮想マシンをコピーしてやり直しですからね。SLES11sp2 の ISO ファイルを指定して12Gバイト(とりあえず)のシステムを次のように作成します。

- あらかじめ DNS サーバーに ex) wordpress.intra のようにレコードをセットします。DDNSならそれでもよし、ここでは固定IPを使って行います。

- インストール言語は英語、キーボードは日本語
- UTC は使わずハードウェアクロックを JST に設定
- 言語は us_EN, 追加言語として、Japanese を追加
- runlevel は 5 に

ここまでは日本語環境で必要な、デフォルトです。追加として

- software からソフトウェアオプションとして Web & LAMP を指定します。
(MySQL と PHP5 が同時にインストールされます)

インストール中.....

- FireWall, IPv6 は Disable に
- DNS に設定した固定 IP を設定します。

インストール後.....

- YaST > ソフトウェアレポジリトリから > phy://DVD から HTTP:// なり file////.....DVD.ISO などに設定します。ローカルコピーして iso を指定するか http などを使うのが最も良いでしょう。レポジトリからインストール用に使ったメディアを Disable にしておくか、削除します。最終的にはアクティベーションコードを購入して、YaST > カスタマセンターからアップデートします。

- 仮想環境で作る場合はインストール用メディア(ISO)を /etc/xen/vm/.... ファイルから取り除きます。

- NTP サーバーを設定します(LAN内のNTPサーバーが良いでしょう)

- PHP5 を PHP5.3 にアップグレード 5.3 では動きませんでした。
- YsST > Runlevel Editor > MySQL を RunLevel 3,5 で起動させます。デフォルトでは停止しています。

- YaST > HTTP Server で Apache2 を自動起動します。

- その際、同時に PHP scripting を有効に
   PHP が無効な場合 xxxxx.php をダウンロードしようとします。

a0056607_144278.jpg

MySQL はhttp サーバと共にインストールれますが起動されません。runlevel 3,5 で起動させます。

PHP は有効にします。有効にしないと xxxxx.php をブラウザから開くと「ダウンロード」になります。
a0056607_14435125.jpg

apache2 HTTP サーバを YaST からインストールする際に PHP を有効にします。

インストール後であれば YaST > HTTPserver > Server Module から PHP5 を Enable にします。
a0056607_1505690.jpg




-Wordpressのダウンロードとインストール-

Wordpress 日本語公式ページhttp://ja.wordpress.org/
日本語ページから tar.gz 形式のファイルをダウンロードして、/srv/www/htdocs に保存します。保存したファイルは tar 解凍して、 403 にならないよう chown で wwwrun にオーナーを変えます。

※当然、root でログインして作業するわけですから、ファイルコピーなどをした後のオーナーは root のままです。wwwrun に変える必要があります。

http://software.opensuse.org/122/jaから wordpress を検索すると1クリックパッケージもありますが若干古いバージョンのようでした。また1クリックインストールで全部動くわけではありません。やっぱり MySQL の設定だとかなんだとかが必要なのでパッケージのインストールはできても設定まで自動ではやってくれないようです。ということで本家のものを使いました。

wget http://wordpress.org/latest.tar.gz を使ってダウンロードしても良いのですが、日本語が入っていませんでした。



wrps:/srv/www/htdocs # tar zfx wordpress-3.4.2-ja.tar.gz
wrps:/srv/www/htdocs # ls -l
total 4912
-rw-r--r-- 1 root root 2326 Nov 21 2004 apache_pb.gif
-rw-r--r-- 1 root root 2088 Nov 26 2008 apache_pb.png
-rw-r--r-- 1 root root 1797 Nov 26 2008 apache_pb2.gif
-rw-r--r-- 1 root root 1505 Nov 26 2008 apache_pb2.png
-rw-r--r-- 1 root root 2434 Nov 26 2008 apache_pb2_ani.gif
-rw-r--r-- 1 root root 302 Jul 24 2008 favicon.ico
drwxr-xr-x 2 root root 4096 Oct 26 10:22 gif
-rw-r--r-- 1 root root 44 Nov 21 2004 index.html
-rw-r--r-- 1 root root 2356 Feb 24 2009 info2html.css
-rw-r--r-- 1 root root 26 Dec 1 2011 robots.txt
drwxr-xr-x 5 nobody nogroup 4096 Sep 8 13:45 wordpress
<-- Default で作られます。
-rwxr--r-- 1 root root 4970768 Oct 29 09:31 wordpress-3.4.2-ja.tar.gz
wrps:/srv/www/htdocs # chown wwwrun * -R
<--- よく忘れます....

wordpress ディレクトリは解凍すると自動で作成されます。 blogs などの名前に変えても良いでしょう。とりあえずデフォルトで作ってみます。

この時点でローカルホストからブラウザを使って URL に localhost を指定して "It Works !" が表示されるか、 localhost/wordpress/index.php を開けるか確認します。 PHP ファイルをダウンロードしようとすれば、 PHP が有効になっていません。

403 になる場合は /srv/www/htdocs のアクセス権がおかしいので wwwrun に変えましょう。
また、root で解凍すると wp-config.php の作成に失敗します。

※セキュリティの問題が残るかもしれません。コメントください。

※その他、/wordpress に飛ばすよう /srv/www/htdocs/index.html からリダイレクトで飛ばすか、/srv/www/htdocs/ にインストールして /etc/apache2/httpd.conf のデフォルトページ(DirectoryIndex の行)に index.html を削除して index.php を追加するなどしておきます。それでも見る人が見ればこのページは Wordpress を使っているなと解ります。ディレクトリ名やファイル名が決め打ちなので、注意が必要ですね。


-MySQL の設定-

ここでがっちりはまります。 3,000円位はする MySQL の教科書の最初の10ページ目くらいに書かれていることなので、どこかで確認しておいてください。

wrps:/srv/www/htdocs # mysql -u root
<-- SQL モニタを立ち上げます。-p オプションはこの場合はまだ付けません。とりあえずパスワードは後回しにしてみます。


Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.95 SUSE MySQL RPM

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> create database wprs; <--- データベースを作成します。
Query OK, 1 row affected (0.00 sec)

mysql> grant all on wprs.* to 'wpadmin'@'localhost' identified by 'wppasswd';
  <---- ここで「wprsデータベースの全てのテーブル(wprs.*)」 に権限を与えます。これが謎の呪文の正体です。


Query OK, 0 rows affected (0.00 sec)


※wpadmin は任意ですが、後に変更できません。wppasswd も任意ですが、これがデータベースのパスワードになります。 (テキスト保存されるのでセキュリティ上、要注意です) '管理者名'@'localhost' と 'パスワード' がシングルクォーテーションで囲まれているところに注意してください。また、コマンドの最後はセミコロン(;) で終わります。(よく忘れます)


mysql> show databases;
<---- databasesです。

+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
| wprs | <---- できました
+--------------------+
4 rows in set (0.00 sec)



mysql> exit
<---- SQL モニタを終了します。


※ データベースを削除してこの作業をもう一度楽しみたい場合は

mysql > drop database my-wordpress-db;

を実行します。このコマンドも MySQL の本の50ページくらいに書かれています。


-よくはまるトラブル-

- MySQL コマンドの最後を ; で終わらせていない。
- つづりや助詞が間違っている。 on を to にしたとか、そんな間違えです。
- ユーザ名、パスワードはシングルクォーテーションで囲む
- install.php を開くとダウンロードになる <--- Apach2 で PHP を有効にしましょう。
- 403 になる <--- アクセス権が間違っている。 chown wwwrun * -R します。
- wp-config.php が保存できない(インストールでループする) <--- やっぱりアクセス権の問題
- もう一度試して.....
<--- wp-config.php に書き込めない、権限がない。
<--- database ホスト名が一致しない、localhost がとりあえず無難
- MySQL, Apache が動いていない。(インストールしても、YaST でインストールと設定が必要です)
- http://myserver/wordpress/ を開くと 403 になる
 <--- /etc/apache2/httpd.conf のデフォルトページ(DirectoryIndex の行)に index.php を追加しておきます。これがなければデフォルトで index.html を探してしまいます。本体は dir/index.php などにリンクするので必要ないかも知れません。外部に公開するときは要注意ですね。

こんなところでしょうか。ここまで淀みなくできるようになれば、もうコッチのものです

-再起動してみる-

一応お約束として apache2 と mysql を再起動してみます。

wrps:/srv/www/htdocs # /etc/init.d/mysql restart
Restarting service MySQL
Shutting down service MySQL done
Starting service MySQL done
wrps:/srv/www/htdocs # /etc/init.d/apache2 restart
Syntax OK
Shutting down httpd2 (waiting for all children to terminate) done
Starting httpd2 (prefork) done
wrps:/srv/www/htdocs #


-ではブラウザからアクセスを-

ローカルホストのブラウザから

localhst/wordpress/ を開きます。
a0056607_1552476.jpg


SQL モニタで設定した「謎の呪文」データベース名、管理者名、管理パスワード、サーバ名(DNS名)をセットします。
a0056607_15542222.jpg


データベースのホスト名は "localhost" を設定しないと動かないようです。(画面は wrps.intra ですが...)
a0056607_15554697.jpg

※ localhost のブラウザはこれでOKなのですが、外部のブラウザからだと http://localhost/xxxxx が 404 になります。当たり前なのですが..... その際は /srv/www/htdocs/wordpress/wp-config.php を削除して、もう一度やり直してください。


「ようこそ」画面が出てきたらこっちのもの
a0056607_15563270.jpg

※この時点で wp-config.php を削除すると、もう一度楽しめます。

サイトのタイトルと管理者名:パスワードを設定
a0056607_1557364.jpg


これでログインします。
a0056607_15583635.jpg


これで完成
a0056607_1559893.jpg

※このようにレイアウトが壊れている場合は、画像やスタイルのリンク先が 'localhost' になっているからです。これも修正が必要です。

あとは Admin から左側の「人型」アイコンからユーザを追加します。
a0056607_11303839.jpg


-localhostを参照してしまう-
当たり前ですが、コンテンツの一部に"localhost"へのリンクが残るものがあり、これを踏むと当然 404 エラーとなってしまいます。

wp-config.php に

define('WP_HOME', 'http://myserver/wordpress');
define('WP_SITEURL', 'http://myserver/wordpress');

の二行を追加すると良いようです。
Changing the Site URL

あるいは wordpress/wp-config.php を一旦削除して、再セットアップすると正しく動く場合がありました。データベースは残っているので、こちらの方が問題ないようです。

-データの保管場所-

/var/lib/mysql にデータが保存されます。

wrps:/var/lib/mysql # ls -al
total 20564
drwxr-xr-x 7 mysql mysql 4096 Oct 30 10:44 .
drwxr-xr-x 45 root root 4096 Oct 29 09:30 ..
drwx------ 2 mysql mysql 4096 Oct 26 19:36 .protected
drwxr-xr-x 2 mysql mysql 4096 Oct 30 11:43 .tmp
-rw-rw---- 1 mysql mysql 5242880 Oct 30 10:44 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Oct 26 19:36 ib_logfile1
-rw-rw---- 1 mysql mysql 10485760 Oct 30 10:44 ibdata1
drwx------ 2 mysql mysql 4096 Oct 26 19:36 mysql
srwxrwxrwx 1 mysql mysql 0 Oct 30 10:44 mysql.sock
-rw-r--r-- 1 mysql mysql 6 Oct 26 19:36 mysql_upgrade_info
-rw-rw---- 1 mysql mysql 2308 Oct 30 10:44 mysqld.log
-rw-rw---- 1 mysql mysql 740 Oct 30 10:15 mysqld.log-20121030.bz2
-rw-rw---- 1 mysql mysql 5 Oct 30 10:44 mysqld.pid
drwx------ 2 mysql mysql 4096 Oct 26 19:36 test
drwx------ 2 mysql mysql 4096 Oct 30 10:29 wprs
wrps:/var/lib/mysql #


また投稿されたコンテンツは wordpress/wp-content/upload の下に固定データとして残ります。

wrps:/srv/www/htdocs/wordpress/wp-content/uploads/2012/10 # ls -al
total 1432
drwxr-xr-x 2 wwwrun www 4096 Oct 31 13:29 .
drwxr-xr-x 3 wwwrun www 4096 Oct 31 07:25 ..
-rw-r--r-- 1 wwwrun www 8866 Oct 31 13:21 12A25a-150x150.jpg
-rw-r--r-- 1 wwwrun www 21298 Oct 31 13:21 12A25a-300x201.jpg


/srv をバックアップするなり別パーティションとするということです。

-Keyword-

How to install Wordpress on SUSE Linux SLES11 MySQL 403 Forbidden

islandcenter.jp
[PR]
by islandcenter | 2012-11-15 14:03 | SUSE | Trackback | Comments(0)

今のところ SUSE Linux 11 sp2 (SLES11sp2) で 2Tb を超えるディスクでは、パーティションの分割が出来ないようです。

Can't create filesystems larger than 2TB

Chapter 15. Advanced Disk Setup

openSUSE 12.2 では

"To use GPT, run the YaST Partitioner, click the relevant disk name in the System View and choose Expert+Create New Partition Table+GPT."

とありますが SLES11 ではTable+GPT というメニュー自体がないので、2Tbを超えるディスクからブートしてパーティションを分割してインストールすることは出来ないようです。

--
2Tを超えるディスクデバイスへのインストールは問題ないようですが、パーティションを分割してのインストールには問題があるようです。 Proposal しか受け付けないようなので、 Boot 用デバイスと、データ用デバイスは分けて構成するのが問題ないようです。

--
openSUSE 12 でもはまったところですが、UEFI ブートに対応したマザーボードの場合 GRUB のインストールではまりますので、しっかり無効にしておくことです。SUSE12 の GRUB2 は一応 UEFI ブートに対応しているようですが、あまり信頼できないので、無効にしておくことです。CDブートしたときに、おなじみの緑色の壁紙が出てきたらコッチのもの。 EDUI Booting のロゴが出てきたら負けです。

--
技術的に問題ないということと、顧客がハマらない、という意味は違います。顧客がはまることがないよう、一応2Tを超えるディスクはブートドライブとして扱えないと、宣言するのが正解でしょう。
[PR]
by islandcenter | 2012-11-10 20:33 | SUSE | Trackback | Comments(0)

メーカーさんの作った評価資料なので、眉に唾たっぷりつけてご覧ください。

Novell GroupWise 2012とGoogle Mail (Gmail)の比較をご覧ください。

というより、GroupWise は国内未サポート製品なんだけどなぁ。日本語の資料が出てくるのが不思議。
[PR]
by islandcenter | 2012-11-07 02:56 | GroupWise | Trackback | Comments(0)