プロフィール

けい

Author:けい
公開したWebサービス・アプリ一覧はこちら

※2014年12月、私が個人で開発したWebサービス・アプリへの
累計アクセス数は8億を超えました。
負荷対策頑張ります。日々精進していきます!!


■■■ 業務経歴 ■■■
社会人1年目:携帯電話開発。画面周りを1年間
2年目 :海外向け携帯電話ミドルウェア開発
     ブラウザとプロトコルスタック周り
2年目後半~:携帯電話の通信専用チップ開発
3年目:カーナビ。画面周りの開発
3年目後半~:BDビデオカメラ
     組み込みLinux カーネルと
     ドライバの開発。
4年目12月:プロジェクト途中で退社
~ここまではC、またはC++で開発~

~ここからJavaがメインの開発~
4年目1月:Web系の会社に転職
       ~4ヶ月間の研修
5年目5月:製造業向け生産管理システム開発
6年目9月:証券会社向けシステム開発
7年目10月~携帯電話向けコミックサイトの運用・開発
8年目12月:プロジェクト途中で退社

~ここからPHPがメインの開発~
8年目1月~仲介手数料が無料の不動産屋の社内SEに転職
交渉しほぼ完全に裁量労働が可能な立場になる。
業務内容はシステム全般ですが、
最近はSEO対策の作業が多いです。
現在14年目 まだ、しばらくはこの会社に居るつもりです。

あと、全ての記事がリンクフリーです。

最近の記事

過去ログ

全ての記事を表示する

全ての記事を表示する

カテゴリー

FC2カウンター

RSSフィード

【予測外】ブログに書いた批判的な記事を削除します【影響でかすぎ】

どうも。けいです。
ブログに書いたいくつかの批判的な記事を削除しています。
別にどこかから圧力があったわけではないのですが、自分のブログの影響力は相当大きいらしく、
以前記事にした会社名などを検索すると小さな会社のトップページやプレスリリースよりも上位に
私のブログが表示されたりするようなのです。

で、それが褒めている記事ならば問題ないのですが、批判的な記事の場合
最悪、その記事が小さな会社にとって致命傷となりかねません。
私が叩いているサービスだったり、会社だったりに対する記事に嘘は無いのですが、
やはりGoogleで検索してその会社のトップページよりも上位に来てしまうようだと、
社会的な責任を感じてしまいます。

なので、小さな会社に対する批判的な記事は今後は控えるようにします。
スポンサーサイト
コメント(0)   2007.11.29    [ Myカテゴリ:時事・駄文 ]

Galatea Talkで音声合成してみる。

今回はGalatea Projectの成果物の一つであるGalatea Talkをインストールしてみました。
この作業が予想よりもずいぶん重い作業で、依存するライブラリやソフトウェアの数が10個程度。
おまけに2003年以降あまりメンテナンスがされていないようで、予想よりもはるかに時間がかかってしまいました。

目的:Galatea Talkを用いて音声合成を行うこと

その為に必要なアプリ
ChaSen - 形態素解析ツール     最小単位の単語を見つけ出すツール
+ Darts:Double-Array [Aoe 1989]を構築するための シンプルな C++ Template Library.
+ 辞書、IPA辞書などの何らかの辞書が必要です。
IPADic - IPA辞書   ChaSenで使用する辞書
ChaOne - 音韻交替処理プログラム  アクセントを作り出す
     + libxslt - ChaOne 本体の変換ロジックはすべて XSLT で書かれている。このため、
ChaOne in C のコンパイル及び実行には、Gnome プロジェクトで開発された
XSLT Cライブラリである libxsltが必要となる
speakers - 話者モデル

で、これらをAPTを使って楽してインストールしようとしていたのですが、
うまくいかんのですよ。
ディストリビューションに付属の辞書なんかも使えるかと思いきや、
文字コードがUTF8だったりして(Galatea TalkはEUC-JPまたはShiftJISしか動かない)、
いちいちどこに展開されたのかわからない
パッケージを追いかけるくらいならば
ソースからインストールしたほうが楽なことに気がついたのは
5,6時間が経過してからでした。

ということで、一つづつメイクしていくことにしました。
まずはChaSenから
Dartsのダウンロード

Dartsのインストール
% ./configure
% make
% make check
% sudo make install

Chasenのダウンロード

Chasenのインストール
% ./configure
% make
% sudo make install

IPA辞書のインストール

% ./configure
% make
% make check
% sudo make install

chaoneのダウンロード

chaoneのインストール(これはchaoneのファイルパスが変わるたびに以下の作業が必要になる。)
$ ./configure
$ ./make


speakersのダウンロード
これは展開するだけでOK



gtalkのダウンロード

gtalkのインストール
main.cの227行目のSetRun を小文字のsetRunに変更する。
227 void SetRun( char *rel, char *val);

変更後
227 void setRun( char *rel, char *val);

その後、以下のコマンドを実行する。
$ ./configure
$ make


ssm.confを以下のように設定する。
$ cat ./ssm.conf
# configuratiuon file for gtalk (GalateaTalk)

# path name of 'chasen'
CHASEN: /usr/local/bin/chasen

# configuration file for 'chasen'
CHASEN-RC: ./chasenrc
#CHASEN-RC: /usr/local/etc/chasenrc

# command of running 'chaone'
CHAONE: ../chaone-1.3.0b2/chaone

# path name of 'chaone.xsl' (only for library-based version)
#CHAONE-XSL-FILE: ../chaone-1.2.0/chaone_t_EUC-JP.xsl

# default for numbers and alphabets
NUMBER: DECIMAL
ALPHABET: WORD
DATE: YMD
TIME: hms

# dictionary
#DICTIONARY: ./gtalk-eucjp.dic

# automatic play of synthesized speech
AUTO-PLAY: NO

# time delay [msec] for autuomatic play
AUTO-PLAY-DELAY: 250

# file of phoneme list
PHONEME-LIST: mono.lst

# parameter files for each speaker
#SPEAKER-ID: male01
#GENDER: male
#DUR-TREE-FILE: ../speakers/male01/tree-dur.inf
#PIT-TREE-FILE: ../speakers/male01/tree-lf0.inf
#MCEP-TREE-FILE: ../speakers/male01/tree-mcep.inf
#DUR-MODEL-FILE: ../speakers/male01/duration.pdf
#PIT-MODEL-FILE: ../speakers/male01/lf0.pdf
#MCEP-MODEL-FILE: ../speakers/male01/mcep.pdf

# parameter files for each speaker
SPEAKER-ID: female01
GENDER: female
DUR-TREE-FILE: ../speakers/female01/tree-dur.inf
PIT-TREE-FILE: ../speakers/female01/tree-lf0.inf
MCEP-TREE-FILE: ../speakers/female01/tree-mcep.inf
DUR-MODEL-FILE: ../speakers/female01/duration.pdf
PIT-MODEL-FILE: ../speakers/female01/lf0.pdf
MCEP-MODEL-FILE: ../speakers/female01/mcep.pdf




gtalkのソースディレクトリは以下のchasenrcを以下のように設定する。
chasenrcはEUCで保存することに注意してください。
$ cat chasenrc
;;
;; chasenrc for unidic-1.3.0
;; chaOne用
;;
;(GRAMMAR /usr/local/lib/chasen/dic/ipadic)
(GRAMMAR /usr/local/lib/chasen/dic/ipadic)
;(GRAMMAR /usr/local/lib/chasen/dic/unidic)
(DADIC chadic)

(UNKNOWN_POS (名詞))
;(UNKNOWN_POS (名詞))

(OUTPUT_FORMAT "%m\n")

(OUTPUT_COMPOUND "SEG")

(BOS_STRING "\n")
(EOS_STRING "
\n")

(DEF_CONN_COST 10000)
(POS_COST
((*) 1)
((UNKNOWN) 30000)
)

(CONN_WEIGHT 1)
(MORPH_WEIGHT 1)
(COST_WIDTH 0)

(ANNOTATION
(("<" ">") "%m\n")
(("\"") "%m\n")
)


テストしてみる。
読ませる文章は以下。
$ cat test.txt
set Text = 武術の神と言われる亀仙人より強い天津飯でも歯が立たないドラムを瞬殺した悟空が8年修行して、同じ位の強さのピッコロと二人がかりでやっと倒したラディッツと匹敵する戦闘力を持つ栽培マンをあっさり倒した天津飯・ピッコロ等が束になってもないナッパを悠々倒した悟空の2倍以上強いベジータがかなりパワーアップしても全く相手にならない強さのリクームを一撃で倒した悟空が更にパワーアップしても、それを半分の力で殺せるフリーザをあっという間にバラバラにして消した未来のトランクスでさえ仲間と束になってもない人造人間17・18号に匹敵する強さを持った神コロでもない程に生体エネルギーを吸って強くなったセルと互角の16号を大きく越える17号吸収態セルを子供扱い出来る精神との部屋パワーアップ後のベジータと随分差がある悟空でも勝てない完全セルを一方的に痛めつけることが出来るブチ切れ悟飯をも越えたベジータが命を賭けても倒せなかった魔人ブウが更に凶悪になったブウと互角以上の戦いをしたゴテンクスよりも強くなった悟飯でも全く歯が立たないゴテンクス&ピッコロ吸収ブウが更に悟飯を吸収して強化しても全く歯が立たないベジット。
set Save = ../hoge.raw
set Run = EXIT

$ ./gtalk -C ./ssm.conf < ../test.txt
rep Run = LIVE
set Text = 武術の世噺世錣譴覽祇膺佑茲蟠・づ慶堵咾任盪??・・燭覆ぅ疋薀爐鮗PRON SYM="シュンサツ">瞬殺した悟空靴董・韻鍵未龍・気離團奪灰蹐伴PRON SYM="フタリ">二人がかりでやっと倒したラディッツと匹敵する戦闘力を持つ栽培マンをあっさり倒 PRON SYM="カナワ">敵ないナッパを悠々倒した悟空の2倍以上強いベジータがかなりパワアップしても全く相 魄豬發播櫃靴深PRON SYM="ゴクウ">悟空が更にパワーアップしても、それを半分の力で殺せるフリザをあっという間にバラバラにして消したRON SYM="カナワ">敵ない人造人間17・18号に匹敵する強さを持った神コロでも ネルギーを吸っ洞・・覆辰織札襪噺潦僂留6号を大きく越える17号吸収態セルを子供扱い出来る精神との部屋パワーアッ RON SYM="ゴクウ">悟空でも勝てない完全セルを一方的に痛めつけることが出来るブチ切れ悟飯を吸収して強化しても全く歯が立たないベジット。
rep Speak.stat = PROCESSING
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 助詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown katsuyoukei ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown hinshi ... unk
Unknown hinshi ... 名詞-一般
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown hinshi ... 名詞-一般
Unknown katsuyougata ... unk
Unknown katsuyougata ... unk
Unknown hinshi ... unk
* yomi is NOT katakana ... ・ (a1,a6)
* yomi is NOT katakana ... ・ (a1,a6)
rep Text.text = 武術の神と言われる亀仙人より強い天津飯でも歯が立たないドラムを瞬殺した悟空が8年修行して、同じ位の強さのピッコロと二人がかりでやっと倒したラディッツと匹敵する戦闘力 を持つ栽培マンをあっさり倒した天津飯・ピッコロ等が束になってもないナッパを悠々倒した 悟空の2倍以上強いベジータがかなりパワーアップしても全く相手にならない強さのリクームを一撃で倒した悟空が更にパワーアップしても、それを半分の力で殺せるフリーザをあっという間にバラバラにして消した未来のトランクスでさえ仲間と束になっ てもない人造人間17・18号に匹敵する強さを持った神コロでもない程に生体エネルギーを吸って強くなったセルと互角の16号を大きく越える17号吸収態セルを子供扱い出来る精神との部屋パワーアップ後のベジータと随分差がある悟空でも勝てない完全セルを一方的に痛めつけることが出来るブチ切れ悟飯をも越えたベジータが命を賭けても倒せなかった魔人ブウが更に凶悪になったブウと互角以上の戦いをしたゴテンクスよりも強くなった悟飯でも全く歯が立たないゴテンクス&ピッコロ吸収ブウが更に悟飯を吸収して強化しても全く歯が立たないベジット。
rep Speak.text = 武術の神と言われる亀仙人より強い天津飯でも歯が立たないドラムを瞬殺した悟空が8年修行して、同じ位の強さのピッコロと 二人がかりでやっと倒したラディッツと匹敵する戦闘力を持つ栽培マンをあっさり倒した天津飯ピッコロ等が束になっても敵ないナッパを悠々倒した悟空の2倍以上強いベジータがかなりパワーアップしても全く相手にならない強さのリクームを一撃で倒した悟空が更にパワーアップしても、それを半分の力で殺せるフリーザをあっという間にバラバラにして消した未来のトランクスでさえ仲間と束になっても敵ない人造人間十七十八号に匹敵する強さを持った神コロ様でも敵ない程に生体エネルギーを吸って強くなったセルと互角の十六号を大きく越える十七号吸収態セルを子供扱い出来る精神と時の部屋パワーアップ後のベジータと随分差がある悟空でも勝てない完全体セルを一方的に痛めつけることが出来るブチ切れ悟飯をも越えたベジータが命を賭けても倒せなかった魔人ブウが更に凶悪になったブウと互角以上の戦いをしたゴテンクスよりも強くなった悟飯でも全く歯が立たないゴテンクス&ピッコロ吸収ブウが更に悟飯を吸収して強化しても全く歯が立たないベジット。
rep Text.pho = sil[10] b[45] u[65] j[80] u[60] ts[120] u[40] n[50] o[80] k[110] a[55] m[60] i[65] t[90] o[50] i[80] w[55] a[70] r[35] e[70] r[45] u[75] k[110] a[55] m[55] e[75] s[105] e[100] N[60] n[40] i[95] N[90] y[55] o[70] r[45] i[75] ts[120] u[45] y[70] o[85] i[60] t[90] e[100] N[50] sh[120] i[85] N[50] h[80] a[95] N[90] d[30] e[60] m[65] o[85] h[105] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] d[60] o[70] r[35] a[90] m[60] u[65] o[120] sh[120] u[85] N[45] s[95] a[60] ts[120] u[60] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] g[55] a[85] h[105] a[60] ch[115] i[40] n[50] e[105] N[50] sh[120] u[50] gy[85] o[55] o[70] sh[60] I[35] t[75] e[85] pau[70] o[55] n[55] a[85] j[80] i[75] k[110] u[40] r[35] a[90] i[65] n[50] o[90] ts[120] u[45] y[70] o[90] s[105] a[55] n[55] o[80] p[110] i[65] cl[75] k[100] o[50] r[35] o[75] t[90] o[90] f[60] U[40] t[75] a[50] r[40] i[65] g[55] a[70] k[85] a[50] r[40] i[65] d[50] e[60] y[80] a[80] cl[75] t[100] o[55] t[85] a[65] o[105] sh[60] I[35] t[75] a[50] r[50] a[75] d[50] i[65] cl[75] ts[90] U[40] t[75] o[90] h[95] i[65] cl[75] t[100] e[55] k[75] I[40] s[95] u[40] r[40] u[75] s[105] e[100] N[55] t[90] o[60] o[70] ry[70] o[70] k[85] u[45] o[120] m[65] o[75] ts[90] U[40] s[95] a[65] i[60] b[50] a[85] i[65] m[55] a[105] N[75] o[110] a[95] cl[30] s[145] a[50] r[40] i[65] t[90] a[65] o[105] sh[60] I[35] t[75] a[75] t[90] e[100] N[50] sh[120] i[85] N[50] h[80] a[95] N[60] pau[120] p[175] i[65] cl[75] k[100] o[50] r[35] o[75] t[85] o[60] o[70] g[55] a[80] t[90] a[55] b[50] a[70] n[60] i[60] n[50] a[80] cl[75] t[100] e[55] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[95] i[65] n[50] a[80] cl[75] p[100] a[65] o[120] y[95] u[50] u[70] y[95] u[50] u[60] t[85] a[65] o[105] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] n[50] o[90] n[60] i[65] b[50] a[85] i[100] i[70] j[80] o[80] o[70] ts[120] u[40] y[70] o[55] i[60] b[50] e[85] j[80] i[80] i[60] t[90] a[65] g[55] a[85] k[110] a[55] n[55] a[70] r[40] i[65] p[90] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[60] sh[60] I[35] t[75] e[55] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[85] u[65] a[95] i[60] t[90] e[55] n[60] i[60] n[50] a[70] r[35] a[70] n[55] a[85] i[100] ts[120] u[45] y[70] o[90] s[105] a[55] n[55] o[70] r[50] i[65] k[90] u[65] u[60] m[60] u[65] o[120] i[80] ch[115] i[50] g[65] e[70] k[105] i[40] d[50] e[90] t[90] a[65] o[105] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] p[90] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[60] sh[60] I[35] t[75] e[55] m[65] o[90] pau[30] s[95] o[50] r[35] e[55] o[120] h[105] a[100] N[85] b[50] u[100] N[55] n[50] o[80] ch[90] I[45] k[75] a[50] r[35] a[75] d[50] e[70] k[110] o[50] r[35] o[75] s[105] e[50] r[40] u[60] f[95] u[40] r[40] i[80] i[70] z[75] a[110] o[100] a[95] cl[75] t[100] o[65] y[95] u[50] u[60] m[55] a[70] n[60] i[65] b[50] a[70] r[35] a[90] b[50] a[70] r[35] a[70] n[60] i[75] sh[60] I[35] t[75] e[75] k[110] e[65] sh[60] I[35] t[75] a[75] m[60] i[65] r[35] a[90] i[65] n[50] o[90] t[90] o[50] r[35] a[105] N[60] k[75] U[40] s[95] u[40] d[50] e[90] s[105] a[65] e[70] n[55] a[70] k[85] a[55] m[55] a[75] t[90] o[75] t[90] a[55] b[50] a[70] n[60] i[60] n[50] a[80] cl[75] t[100] e[55] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[85] i[60] j[105] i[90] N[85] z[70] o[70] o[70] n[60] i[95] N[80] g[50] e[105] N[80] j[60] u[80] u[60] n[50] a[70] n[55] a[80] pau[80] j[75] u[80] u[70] h[80] a[60] ch[115] i[50] g[60] o[90] o[70] n[60] i[65] h[95] i[65] cl[75] t[100] e[55] k[75] I[40] s[95] u[40] r[40] u[75] ts[120] u[45] y[70] o[90] s[105] a[70] o[120] m[65] o[80] cl[75] t[100] a[75] k[110] a[55] m[60] i[65] k[90] o[50] r[35] o[75] s[105] a[55] m[55] a[75] d[50] e[60] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[85] i[60] h[95] o[60] d[50] o[70] n[60] i[75] s[105] e[65] i[60] t[90] a[90] i[100] e[70] n[55] e[70] r[40] u[65] g[65] i[80] i[70] o[105] s[115] u[50] cl[75] t[100] e[85] ts[120] u[45] y[75] o[70] k[85] u[40] n[50] a[80] cl[75] t[100] a[75] s[105] e[50] r[40] u[60] t[90] o[75] g[80] o[75] k[85] a[55] k[85] u[40] n[50] o[80] j[105] u[80] u[70] r[35] o[70] k[85] u[50] g[60] o[90] o[100] o[100] o[70] o[95] k[105] i[50] k[75] U[40] k[75] o[60] e[80] r[45] u[75] j[105] u[80] u[60] n[50] a[70] n[55] a[80] g[60] o[90] o[65] ky[120] u[50] u[70] sh[120] u[65] u[60] t[85] a[90] i[60] s[105] e[50] r[40] u[65] o[120] k[110] o[50] d[50] o[80] m[65] o[85] a[85] ts[90] U[40] k[75] a[90] i[60] d[50] e[70] k[105] i[35] r[45] u[75] s[105] e[65] i[60] sh[120] i[85] N[55] t[90] o[75] t[90] o[50] k[105] i[40] n[50] o[80] h[90] e[65] y[80] a[80] p[85] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[50] g[60] o[75] n[55] o[80] b[70] e[85] j[80] i[80] i[60] t[90] a[55] t[90] o[75] z[75] u[65] i[60] b[50] u[100] N[45] s[95] a[60] g[55] a[75] a[90] r[40] u[65] g[60] o[75] k[85] u[65] u[60] d[50] e[60] m[65] o[85] k[110] a[50] t[85] e[55] n[55] a[85] i[60] k[110] a[100] N[90] z[70] e[105] N[55] t[90] a[90] i[60] s[105] e[50] r[40] u[65] o[120] i[90] cl[75] p[100] o[60] o[70] t[85] e[55] k[105] i[40] n[50] i[90] i[60] t[90] a[55] m[55] e[75] ts[90] U[40] k[75] e[50] r[45] u[75] k[110] o[50] t[85] o[65] g[55] a[80] d[60] e[70] k[105] i[40] r[40] u[65] b[50] u[60] ch[115] i[50] g[65] i[65] r[35] e[80] g[60] o[80] h[80] a[95] N[90] o[125] m[65] o[85] k[110] o[90] e[70] t[90] a[75] b[70] e[85] j[80] i[80] i[60] t[90] a[65] g[55] a[85] i[65] n[50] o[70] ch[115] i[45] o[120] k[110] a[50] k[85] e[55] t[90] e[55] m[65] o[90] t[90] a[65] o[70] s[105] e[55] n[55] a[70] k[85] a[65] cl[75] t[100] a[75] m[55] a[85] j[80] i[90] N[85] b[50] u[50] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] ky[120] o[55] o[95] a[95] k[85] u[40] n[50] i[60] n[50] a[80] cl[75] t[100] a[75] b[70] u[50] u[60] t[90] o[75] g[80] o[75] k[85] a[55] k[85] u[65] i[70] j[80] o[80] o[70] n[55] o[90] t[90] a[50] t[85] a[55] k[85] a[90] i[80] o[120] sh[60] I[35] t[75] a[75] g[95] o[75] t[85] e[95] N[60] k[75] U[40] s[95] u[40] y[70] o[70] r[40] i[60] m[65] o[90] ts[120] u[45] y[75] o[70] k[85] u[40] n[50] a[80] cl[75] t[100] a[75] g[80] o[80] h[80] a[95] N[90] d[30] e[70] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[75] U[40] h[80] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] g[80] o[75] t[85] e[95] N[60] k[75] U[40] s[95] u[65] a[110] N[90] d[30] o[80] p[105] i[65] cl[75] k[100] o[50] r[35] o[70] ky[120] u[50] u[70] sh[120] u[65] u[60] b[50] u[50] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] g[60] o[80] h[80] a[95] N[75] o[125] ky[145] u[50] u[70] sh[120] u[65] u[70] sh[60] I[35] t[75] e[75] ky[145] o[60] o[70] k[85] a[65] sh[60] I[35] t[75] e[55] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[75] U[40] h[80] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] b[70] e[85] j[80] i[55] cl[75] t[100] o[65] pau[95] sil[10]
rep Speak.pho = sil[10] b[45] u[65] j[80] u[60] ts[120] u[40] n[50] o[80] k[110] a[55] m[60] i[65] t[90] o[50] i[80] w[55] a[70] r[35] e[70] r[45] u[75] k[110] a[55] m[55] e[75] s[105] e[100] N[60] n[40] i[95] N[90] y[55] o[70] r[45] i[75] ts[120] u[45] y[70] o[85] i[60] t[90] e[100] N[50] sh[120] i[85] N[50] h[80] a[95] N[90] d[30] e[60] m[65] o[85] h[105] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] d[60] o[70] r[35] a[90] m[60] u[65] o[120] sh[120] u[85] N[45] s[95] a[60] ts[120] u[60] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] g[55] a[85] h[105] a[60] ch[115] i[40] n[50] e[105] N[50] sh[120] u[50] gy[85] o[55] o[70] sh[60] I[35] t[75] e[85] pau[70] o[55] n[55] a[85] j[80] i[75] k[110] u[40] r[35] a[90] i[65] n[50] o[90] ts[120] u[45] y[70] o[90] s[105] a[55] n[55] o[80] p[110] i[65] cl[75] k[100] o[50] r[35] o[75] t[90] o[90] f[60] U[40] t[75] a[50] r[40] i[65] g[55] a[70] k[85] a[50] r[40] i[65] d[50] e[60] y[80] a[80] cl[75] t[100] o[55] t[85] a[65] o[105] sh[60] I[35] t[75] a[50] r[50] a[75] d[50] i[65] cl[75] ts[90] U[40] t[75] o[90] h[95] i[65] cl[75] t[100] e[55] k[75] I[40] s[95] u[40] r[40] u[75] s[105] e[100] N[55] t[90] o[60] o[70] ry[70] o[70] k[85] u[45] o[120] m[65] o[75] ts[90] U[40] s[95] a[65] i[60] b[50] a[85] i[65] m[55] a[105] N[75] o[110] a[95] cl[30] s[145] a[50] r[40] i[65] t[90] a[65] o[105] sh[60] I[35] t[75] a[75] t[90] e[100] N[50] sh[120] i[85] N[50] h[80] a[95] N[60] pau[120] p[175] i[65] cl[75] k[100] o[50] r[35] o[75] t[85] o[60] o[70] g[55] a[80] t[90] a[55] b[50] a[70] n[60] i[60] n[50] a[80] cl[75] t[100] e[55] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[95] i[65] n[50] a[80] cl[75] p[100] a[65] o[120] y[95] u[50] u[70] y[95] u[50] u[60] t[85] a[65] o[105] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] n[50] o[90] n[60] i[65] b[50] a[85] i[100] i[70] j[80] o[80] o[70] ts[120] u[40] y[70] o[55] i[60] b[50] e[85] j[80] i[80] i[60] t[90] a[65] g[55] a[85] k[110] a[55] n[55] a[70] r[40] i[65] p[90] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[60] sh[60] I[35] t[75] e[55] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[85] u[65] a[95] i[60] t[90] e[55] n[60] i[60] n[50] a[70] r[35] a[70] n[55] a[85] i[100] ts[120] u[45] y[70] o[90] s[105] a[55] n[55] o[70] r[50] i[65] k[90] u[65] u[60] m[60] u[65] o[120] i[80] ch[115] i[50] g[65] e[70] k[105] i[40] d[50] e[90] t[90] a[65] o[105] sh[60] I[35] t[75] a[75] g[80] o[75] k[85] u[65] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] p[90] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[60] sh[60] I[35] t[75] e[55] m[65] o[90] pau[30] s[95] o[50] r[35] e[55] o[120] h[105] a[100] N[85] b[50] u[100] N[55] n[50] o[80] ch[90] I[45] k[75] a[50] r[35] a[75] d[50] e[70] k[110] o[50] r[35] o[75] s[105] e[50] r[40] u[60] f[95] u[40] r[40] i[80] i[70] z[75] a[110] o[100] a[95] cl[75] t[100] o[65] y[95] u[50] u[60] m[55] a[70] n[60] i[65] b[50] a[70] r[35] a[90] b[50] a[70] r[35] a[70] n[60] i[75] sh[60] I[35] t[75] e[75] k[110] e[65] sh[60] I[35] t[75] a[75] m[60] i[65] r[35] a[90] i[65] n[50] o[90] t[90] o[50] r[35] a[105] N[60] k[75] U[40] s[95] u[40] d[50] e[90] s[105] a[65] e[70] n[55] a[70] k[85] a[55] m[55] a[75] t[90] o[75] t[90] a[55] b[50] a[70] n[60] i[60] n[50] a[80] cl[75] t[100] e[55] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[85] i[60] j[105] i[90] N[85] z[70] o[70] o[70] n[60] i[95] N[80] g[50] e[105] N[80] j[60] u[80] u[60] n[50] a[70] n[55] a[80] pau[80] j[75] u[80] u[70] h[80] a[60] ch[115] i[50] g[60] o[90] o[70] n[60] i[65] h[95] i[65] cl[75] t[100] e[55] k[75] I[40] s[95] u[40] r[40] u[75] ts[120] u[45] y[70] o[90] s[105] a[70] o[120] m[65] o[80] cl[75] t[100] a[75] k[110] a[55] m[60] i[65] k[90] o[50] r[35] o[75] s[105] a[55] m[55] a[75] d[50] e[60] m[65] o[85] k[110] a[55] n[55] a[80] w[55] a[70] n[55] a[85] i[60] h[95] o[60] d[50] o[70] n[60] i[75] s[105] e[65] i[60] t[90] a[90] i[100] e[70] n[55] e[70] r[40] u[65] g[65] i[80] i[70] o[105] s[115] u[50] cl[75] t[100] e[85] ts[120] u[45] y[75] o[70] k[85] u[40] n[50] a[80] cl[75] t[100] a[75] s[105] e[50] r[40] u[60] t[90] o[75] g[80] o[75] k[85] a[55] k[85] u[40] n[50] o[80] j[105] u[80] u[70] r[35] o[70] k[85] u[50] g[60] o[90] o[100] o[100] o[70] o[95] k[105] i[50] k[75] U[40] k[75] o[60] e[80] r[45] u[75] j[105] u[80] u[60] n[50] a[70] n[55] a[80] g[60] o[90] o[65] ky[120] u[50] u[70] sh[120] u[65] u[60] t[85] a[90] i[60] s[105] e[50] r[40] u[65] o[120] k[110] o[50] d[50] o[80] m[65] o[85] a[85] ts[90] U[40] k[75] a[90] i[60] d[50] e[70] k[105] i[35] r[45] u[75] s[105] e[65] i[60] sh[120] i[85] N[55] t[90] o[75] t[90] o[50] k[105] i[40] n[50] o[80] h[90] e[65] y[80] a[80] p[85] a[65] w[55] a[90] a[95] a[95] cl[75] p[100] u[50] g[60] o[75] n[55] o[80] b[70] e[85] j[80] i[80] i[60] t[90] a[55] t[90] o[75] z[75] u[65] i[60] b[50] u[100] N[45] s[95] a[60] g[55] a[75] a[90] r[40] u[65] g[60] o[75] k[85] u[65] u[60] d[50] e[60] m[65] o[85] k[110] a[50] t[85] e[55] n[55] a[85] i[60] k[110] a[100] N[90] z[70] e[105] N[55] t[90] a[90] i[60] s[105] e[50] r[40] u[65] o[120] i[90] cl[75] p[100] o[60] o[70] t[85] e[55] k[105] i[40] n[50] i[90] i[60] t[90] a[55] m[55] e[75] ts[90] U[40] k[75] e[50] r[45] u[75] k[110] o[50] t[85] o[65] g[55] a[80] d[60] e[70] k[105] i[40] r[40] u[65] b[50] u[60] ch[115] i[50] g[65] i[65] r[35] e[80] g[60] o[80] h[80] a[95] N[90] o[125] m[65] o[85] k[110] o[90] e[70] t[90] a[75] b[70] e[85] j[80] i[80] i[60] t[90] a[65] g[55] a[85] i[65] n[50] o[70] ch[115] i[45] o[120] k[110] a[50] k[85] e[55] t[90] e[55] m[65] o[90] t[90] a[65] o[70] s[105] e[55] n[55] a[70] k[85] a[65] cl[75] t[100] a[75] m[55] a[85] j[80] i[90] N[85] b[50] u[50] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] ky[120] o[55] o[95] a[95] k[85] u[40] n[50] i[60] n[50] a[80] cl[75] t[100] a[75] b[70] u[50] u[60] t[90] o[75] g[80] o[75] k[85] a[55] k[85] u[65] i[70] j[80] o[80] o[70] n[55] o[90] t[90] a[50] t[85] a[55] k[85] a[90] i[80] o[120] sh[60] I[35] t[75] a[75] g[95] o[75] t[85] e[95] N[60] k[75] U[40] s[95] u[40] y[70] o[70] r[40] i[60] m[65] o[90] ts[120] u[45] y[75] o[70] k[85] u[40] n[50] a[80] cl[75] t[100] a[75] g[80] o[80] h[80] a[95] N[90] d[30] e[70] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[75] U[40] h[80] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] g[80] o[75] t[85] e[95] N[60] k[75] U[40] s[95] u[65] a[110] N[90] d[30] o[80] p[105] i[65] cl[75] k[100] o[50] r[35] o[70] ky[120] u[50] u[70] sh[120] u[65] u[60] b[50] u[50] u[60] g[55] a[80] s[105] a[50] r[35] a[70] n[60] i[65] g[60] o[80] h[80] a[95] N[75] o[125] ky[145] u[50] u[70] sh[120] u[65] u[70] sh[60] I[35] t[75] e[75] ky[145] o[60] o[70] k[85] a[65] sh[60] I[35] t[75] e[55] m[65] o[85] m[55] a[80] cl[75] t[100] a[55] k[75] U[40] h[80] a[60] g[55] a[80] t[90] a[50] t[85] a[55] n[55] a[85] i[60] b[70] e[85] j[80] i[55] cl[75] t[100] o[65] pau[95] sil[10]
rep Text.dur = 79670
rep Speak.dur = 79670
rep Speak.stat = READY
set Save = ../hoge.raw
set Run = EXIT
rep Run = EXIT


成功。作成した音声ファイルはこちら

Galatea Talkによる音声合成はこれにて終了。
コメント(0)   2007.11.23    [ Myカテゴリ:試してみた ]

ソフトウェアRAIDはRAIDレベルを複合させるべきである。

先日作成した自作PCはDevice Mapperを用いてRAID0 * 4台でアクセスしており、
アクセス速度が平均270MB/sec くらいです。
この結果には非常に満足していたのですが、RAIDについて考えていくうちに、
Device Mapperを用いるよりも、mdを用いたRAIDレベル複合型の方が効率がいいことに気がつきました。

というのも、各RAIDレベルの欠点をほぼ完璧に補うような使い方が
MDを用いたソフトウェアの複合RAIDならば可能だからです。
(DeviceMapperはHDD単位でRAIDレベルを決めなければならないので
欠点を補うことができない)

RAID0の利点と欠点
 利点:読み書き共に最も高速
 欠点:信頼性無し
 向いている用途:読み書きが頻繁に発生する、どうでもいいデータ。
       例:コンパイル、エンコード、デコード、変換などの重い作業やスワップ。

RAID10
 利点:読み書き共にそこそこ高速で、信頼性がある
 欠点:使用可能な容量は 一台のHDDの容量 * HDDの台数 / 2
    速度は一台のHDDの速度 * HDDの台数 / 2
    つまりHDDの性能の半分しか使えない。
 向いている用途:読み書きが発生する重要なデータ
       例:CVS、FTP、samba, SQLサーバやログファイルなど

RAID5
 利点:読み込みがかなり高速で、信頼性がある
 欠点:書き込みが遅すぎる。どのくらい遅いのかと言うと、
    パリティチェックがあるため、HDD一台で使用しているときよりも書き込みは遅い。
 向いている用途:読みこみのみが発生するデータ
       例:Webサーバー

実際にシステムを使用状況を調べてみると、
9割方のIOアクセスが読み取りであることがわかった。
ということはほとんどのディレクトリをRAID5にすることができ、
残りの1割をRAID10にすればいいのだ。
そして、作業用スペースはRAID0にする。(オリジナルデータはRAID10のCVSに保存)

実際に試してみた。
リソースはHDDは250GB * 5台。内訳:ATA1台、SATA4台。

全てのディスクのパーティションは以下のように分割した。
1 1513MB -- RAID0用
2 8743MB -- RAID10用
3 239799MB -- RAID5用

RAID10は2で割り切れる台数でしかRAIDを組めないので、
SATA 4台でRAID10を組み、ATAの2はルートパーティションとした。


ファイルシステムの作成
※mdを使用する場合にはファイルシステムの作成後にmd Arrayを作らないと、
容量がおかしくなるので必ずファイルシステム作成後にArrayを作ること!

sudo mkfs.reiserfs /dev/hda1
sudo mkfs.reiserfs /dev/sda1
sudo mkfs.reiserfs /dev/sdb1
sudo mkfs.reiserfs /dev/sdc1
sudo mkfs.reiserfs /dev/sdd1
sudo mkfs.reiserfs /dev/sda2
sudo mkfs.reiserfs /dev/sdb2
sudo mkfs.reiserfs /dev/sdc2
sudo mkfs.reiserfs /dev/sdd2
sudo mkfs.reiserfs /dev/hda3
sudo mkfs.reiserfs /dev/sda3
sudo mkfs.reiserfs /dev/sdb3
sudo mkfs.reiserfs /dev/sdc3
sudo mkfs.reiserfs /dev/sdd3


Arrayの作成
RAID0の作成
$ sudo mdadm --create --verbose /dev/md1 --level=0 --raid-devices=5 /dev/hda1 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: chunk size defaults to 64K
mdadm: /dev/hda1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/hda1 appears to be part of a raid array:
level=raid0 devices=5 ctime=Wed Oct 31 22:05:42 2007
mdadm: /dev/sda1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/sdb1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/sdc1 appears to contain a reiserfs file system
size = 1477888K
mdadm: /dev/sdd1 appears to contain a reiserfs file system
size = 1477888K
Continue creating array? y
mdadm: array /dev/md1 started.


RAID10の作成
$ sudo mdadm --create --verbose /dev/md2 --level=10 --raid-devices=4 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2
mdadm: layout defaults to n1
mdadm: chunk size defaults to 64K
mdadm: /dev/sda2 appears to contain a reiserfs file system
size = 8538496K
mdadm: /dev/sdb2 appears to contain a reiserfs file system
size = 8538496K
mdadm: /dev/sdc2 appears to contain a reiserfs file system
size = 8538496K
mdadm: /dev/sdd2 appears to contain a reiserfs file system
size = 8538496K
mdadm: size set to 8538432K
Continue creating array? y
mdadm: array /dev/md2 started.

RAID5の作成
$ sudo mdadm --create --verbose /dev/md3 --level=5 --raid-devices=5 /dev/hda3 /dev/sda3 /dev/sdb3 /dev/sdc3 /dev/sdd3
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: /dev/hda3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/hda3 appears to be part of a raid array:
level=raid5 devices=5 ctime=Thu Nov 1 22:36:39 2007
mdadm: /dev/sda3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/sdb3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/sdc3 appears to contain a reiserfs file system
size = 234179456K
mdadm: /dev/sdd3 appears to contain a reiserfs file system
size = 234179456K
mdadm: size set to 234179392K
Continue creating array? y
mdadm: array /dev/md3 started.

RAID5はパリティの作成があるので、ここで20分くらい待つ。
作成状況は以下のコマンドで確認できる。

$ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md3 : active raid5 sdd3[5] sdc3[3] sdb3[2] sda3[1] hda3[0]
936717568 blocks level 5, 64k chunk, algorithm 2 [5/4] [UUUU_]
[=====>...............] recovery = 28.6% (67002024/234179392) finish=40.8min speed=68165K/sec

md2 : active raid10 sdd2[3] sdc2[2] sdb2[1] sda2[0]
17076864 blocks 64K chunks 2 near-copies [4/4] [UUUU]

md1 : active raid0 sdd1[4] sdc1[3] sdb1[2] sda1[1] hda1[0]
7389120 blocks 64k chunks

unused devices:



/dev/mdX のパーティションの作成
この時点では/dev/md0 のファイルシステムタイプは決まっていないので、
cfdisk /dev/md0 などでファイルシステムのタイプを決める。
sudo cfdisk /dev/md1
sudo cfdisk /dev/md2
sudo cfdisk /dev/md3

/dev/mdXへのファイルシステムの作成
sudo mkfs.reiserfs /dev/md1
sudo mkfs.reiserfs /dev/md2
sudo mkfs.reiserfs /dev/md3

これで作成完了!


そして、気になるベンチは・・・
RAID0 5台 /dev/md1

$ sudo hdparm -ft /dev/md1

/dev/md1:
Timing buffered disk reads: 1024 MB in 3.00 seconds = 341.32 MB/sec


RAID10 4台 /dev/md2
$ sudo hdparm -ft /dev/md2

/dev/md2:
Timing buffered disk reads: 542 MB in 3.00 seconds = 180.57 MB/sec

RAID5 5台 /dev/md3
$ sudo hdparm -ft /dev/md3

/dev/md3:
Timing buffered disk reads: 810 MB in 3.01 seconds = 269.48 MB/sec


うん。ほぼ予想道理の結果となった。
システム起動時に自動的にマウントされるように/etc/fstabの編集を行う。

$ cat /etc/fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/hda2 / reiserfs notail 0 1
/dev/md1 /mnt/raid0 reiserfs defaults 0 0
/dev/md2 /mnt/raid10 reiserfs defaults 0 0
/dev/md3 /mnt/raid5 reiserfs defaults 0 0


これで何の作業を行うにしても、ディスクに関しては
通常の2倍(raid10)~5倍(RAID0)程度高速に作業ができる環境の出来上がりです。

2007/12/09 追記
いつからかわからないが、いつも間にか
/dev/hda3 がRAID5から外れてしまっていた。
チャンスとばかりにベンチマークを取ると、108MB/s のアクセス速度であった。
へ~。RAID5は障害が起きると、アクセス速度が激遅になるので
すぐにわかると言っていた人もおりましたが、この速度だと微妙かも。
(実際私も気がつきませんでしたし)

以下のコマンドを実行し復旧した。

% sudo mdadm /dev/md3 -a /dev/hda3

復旧度は以下のコマンドで確認する。
% cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md3 : active raid5 hda3[5] sda3[1] sdd3[4] sdc3[3] sdb3[2]
936717568 blocks level 5, 64k chunk, algorithm 2 [5/4] [_UUUU]
[>....................] recovery = 4.1% (9733504/234179392) finish=54.1min speed=69056K/sec

md2 : active raid10 sda2[0] sdd2[3] sdc2[2] sdb2[1]
17076864 blocks 64K chunks 2 near-copies [4/4] [UUUU]

md1 : active raid0 hda1[0] sdd1[4] sdc1[3] sdb1[2] sda1[1]
7389120 blocks 64k chunks

unused devices:

2008/08/25 追記
 10ヶ月ほど使用してみても、壊れることは無く安定して動作している。
ただ、使用していて、うっかりやってしまったミスがあるので、
注意点として報告しておこうと思う。

・カーネルを再構築して再起動した際、再構築のオプションなどにミスがあると、
ルートパーティションにあるRAIDアレイが全てぶっ飛ぶ。

・aptitude install でうっかりカーネルをインストールしてしまった場合、
ルートパーティションにあるRAIDアレイが全てぶっ飛ぶ。

私の場合、xen-hypervisor-3.0.3-1-i386-pae がカーネルだと気がつかなかったのですよ。
そのおかげで、再起動したらエラーが大量に発生し、
ルートパーティションにあるRAIDアレイが通常のファイルシステムとしてマウントされ、
データが吹っ飛びました。

RAID5 と RAID10は復旧可能だったのですが、RAID0は完全にお亡くなりになりました・・・


2010/11/28 追記
とうとう、HDD自体が完全にお亡くなりになりました。
めったに起きる現象ではないので、記録として残しておきます。

lfll@debian:~/src$ cat /proc/mdstat
Personalities : [raid10] [raid6] [raid5] [raid4]
md1 : active raid5 sda2[0] hda2[5](F) sdd2[3] sdc2[2] sdb2[1]
965056256 blocks level 5, 64k chunk, algorithm 2 [5/4] [UUUU_]

md2 : active raid10 hda1[5](F) sdd1[4] sdc1[3] sdb1[2] sda1[1]
7329280 blocks 64K chunks 2 near-copies [5/4] [_UUUU]

unused devices:

hdaが壊れたのですが、ディスクが壊れた場合には(F)のマークがついており、
アレイから外れていることがすぐに分かります。
アレイから外れただけならばアレイに追加すれば良いのですが、
今回は不良ブロックが大量にあり、完全に壊れておりました。

lfll@debian:~/src$ sudo badblocks -sv /dev/hda| more
Checking blocks 0 to 244198583
Checking for bad blocks (read-only test): 0 0.00% done, 0:00 elapsed
1
2
3
4




コメント(1)   2007.11.03    [ Myカテゴリ:試してみた ]
Template Designed By
ぐらいんだぁ