So-net無料ブログ作成
検索選択
エステ
CG-HDC4EU3500 ブログトップ

CG-HDC4EU3500で使われているコントローラチップ メモ [CG-HDC4EU3500]

ファイルサーバのDASとして利用しているCG-HDC4EU3500ですが
使用しているチップについてのメモです。



使われているコントローラチップはOXUFS936QSEです。

OXUFS936QSE.gif

詳細はこちらに。

ちなみに、
mathey Hydra Super-S LCM MHDR-SC800LCM

mathey Hydra Super-S LCM MHDR-SC800LCM

  • 出版社/メーカー: mathey
  • メディア: エレクトロニクス
こちらも同じチップを使っているようです。

ですので、出来ること・出来ないことが基本同じですね。


そういえば、単体ベンチマークやっていなかったです。CG-HDC4EU3500 [CG-HDC4EU3500]

ネットワーク越しのベンチマークはやっていたのですが、
あまり興味がなかったのか、
CG-HDC4EU3500+HDS722020ALA330×4本 でRAID10構成とした際の
ローカルでの読み書きのベンチマークをやっていなかったので、ちょっと
やってみます♪

まずはbonnei++で。

Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
ss               4G   515  98 222622  44 94591  24  1934  94 240480  27 201.8   4
Latency             21513us     258ms     450ms   23564us   66941us    2159ms
Version  1.96       ------Sequential Create------ --------Random Create--------
ss                  -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 13549  25 254904  99 54590  71 41479  75 310027  98 54502  71
Latency              5360us    1344us     835us     287us      77us      51us

⇒ Sequential Write: 222.622 MB/sec
⇒ Sequential Read: 240.480 MB/sec

ということでしょうか。

なんとなく怪しいので、ddコマンドでも確認してみます。

■dd if=$DISK of=/dev/null bs=$BS count=$COUNT iflag=direct
$BS,$COUNTを変えて、Readスピード測定
10回測定平均
Sequential Read (Block size:4KBytes) 23.18 MB/sec
Sequential Read (Block size:16KBytes) 74.65 MB/sec
Sequential Read (Block size:64KBytes) 160.26 MB/sec
Sequential Read (Block size:256KBytes) 233.38 MB/sec
Sequential Read (Block size:1024KBytes) 246.55 MB/sec

■dd if=/dev/zero of=$DIR/writetest_${BS}_$i bs=$BS count=$COUNT oflag=direct
$BS,$COUNTを変えて、Writeスピード測定
10回測定平均
Sequential Write (Block size:4KBytes) 9.13 MB/sec
Sequential Write (Block size:16KBytes) 40.06 MB/sec
Sequential Write (Block size:64KBytes) 125.36 MB/sec
Sequential Write (Block size:256KBytes) 198.75 MB/sec
Sequential Write (Block size:1024KBytes) 208.98 MB/sec

# $DISK,$DIRはそれぞれ、ターゲットのパーティションディレクトリを指定します。

bonnie++でも、ddでもだいたい同じですか。

ちなみに、bonnie++の1.03系は適切なオプションをつけて実行しないと
キャッシュが効いて数値が大きく出るので注意が必要です[あせあせ(飛び散る汗)]



何度もやってるとさすがに疲れてきたので、スクリプト書きました。
見よう見まねで、しかも、かなーりテキトーに書きましたので、参考程度に。。
ながーいです[たらーっ(汗)]

もっとスマートに書けるんだろうなぁ(^^;)



------------ddコマンドでベンチマークするスクリプト ここから

#!/bin/bash
# HDD Benchmark Test 
# ver. 0.01
# Copyright (R) nao
#

# 文字列から小数へ変換する関数の定義
text2float()
{
# 整数部分と小数部分に分解
INT_TXT=`echo "$1" | cut -d'.' -f1` # 整数部分のテキスト
FLO_TXT=`echo "$1" | cut -d'.' -f2` # 小数部分のテキスト

# 初期化
M=0 # 小数桁数
INT=0 # 整数部分
FLO=0 # 小数部分
NUM=0 # 浮動小数点数化した$1

# INT_TXTからINTを生成
INT=`expr $INT_TXT + 0`

# FLO_TXTからFLOを生成
while :
do
# FLO_TXTの一文字目を取得
FIRST_TXT=`echo "${FLO_TXT}" | cut -c1`
# FIRST_TXTが""でない場合を小数化
if [ "$FIRST_TXT" = "" ]; then
break
else
FIRST=`expr $FIRST_TXT + 0`
FLO=`expr $FLO \* 10 + $FIRST`
M=`expr $M + 1`
FLO_TXT=`echo "${FLO_TXT}" | cut -c2-`
fi
done

while :
do
if [ $M -eq 0 ]; then
break
else
FLO=`echo "scale=6; ${FLO} / 10" | bc`
M=`expr $M - 1`
fi
done

NUM=`echo "scale=6; ${INT} + ${FLO}" | bc`
echo $NUM
}


# 読み取りベンチマークを実行する関数の定義
rbench()
{
# 一時ファイルの初期化
cat /dev/null >"${DIR}/HDDBench_Tmp.txt"

# 読み書き速度の初期化
# 読み書き速度のN回和の初期化
SUM=0

# N1回のテスト実行
for i in `seq 1 $N1`
do
echo -n "="
RESULT=`dd if=$DISK of=/dev/null bs=$BS count=$COUNT iflag=direct 2>&1`
echo "$RESULT" >"$DIR/HDDBench_Tmp.txt" # 値取得用一時ファイルへ書き込み
echo "$RESULT" >>"$DIR/HDDBench_Tmp2.txt" # デバッグ用一時ファイルへ書き込み
VOL=`awk '(NR == 3){ print $1 }' $DIR/HDDBench_Tmp.txt` # 読み書き量(テキスト)
TIME=`awk '(NR == 3){ print $6 }' $DIR/HDDBench_Tmp.txt` # 読み書き時間(テキスト)
VOL=`expr $VOL + 0` # 読み書き量(数値)
TIME=`text2float $TIME` # 読み書き時間(数値)
SPEED=`echo "$VOL / $TIME" | bc` # 読み書き速度
echo "$SPEED" >>"$DIR/HDDBench_Tmp2.txt" # デバッグ用一時ファイルへ書き込み
SUM=`expr $SUM + $SPEED` # 読み書き速度のN回和
sleep 5
echo -n "+"
done

echo -n "  Done.      "

# 平均の読み書き速度の計算
SPEED=`expr $SUM / $N1`

# 適切な単位の計算への置き換え
if [ $SPEED -ge 1000000 ]; then
SPEED=`echo "scale=2; $SPEED / 1000000" |  bc`
SPEED=`echo "$SPEED" MB/sec`
elif [ $SPEED -lt 1000000 -a $SPEED -ge 1000 ]; then
SPEED=`echo "scale=2; $SPEED / 1000" | bc`
SPEED=`echo "$SPEED" KB/sec`
else
SPEED=`echo "$SPEED" B/sec`
fi
echo  $SPEED
}



# 書き込みベンチマークを実行する関数の定義
wbench()
{
# 一時ファイルの初期化
cat /dev/null >"${DIR}/HDDBench_Tmp.txt"

# 読み書き速度の初期化
SPEED=0
# 読み書き速度のN回和の初期化
SUM=0

# N1回のテスト実行
for i in `seq 1 $N1`
do
echo -n "="
RESULT=`dd if=/dev/zero of=$DIR/writetest_${BS}_$i bs=$BS count=$COUNT oflag=direct 2>&1`
echo "$RESULT" >"$DIR/HDDBench_Tmp.txt" # 値取得用一時ファイルへ書き込み
echo "$RESULT" >>"$DIR/HDDBench_Tmp2.txt" # デバッグ用一時ファイルへ書き込み
VOL=`awk '(NR == 3){ print $1 }' $DIR/HDDBench_Tmp.txt` # 読み書き量(テキスト)
TIME=`awk '(NR == 3){ print $6 }' $DIR/HDDBench_Tmp.txt` # 読み書き時間(テキスト)
VOL=`expr $VOL + 0` # 読み書き量(数値)
TIME=`text2float $TIME` # 読み書き時間(数値)
SPEED=`echo "$VOL / $TIME" | bc` # 読み書き速度
echo "$SPEED" >>"$DIR/HDDBench_Tmp2.txt" # デバッグ用一時ファイルへ書き込み
SUM=`expr $SUM + $SPEED` # 読み書き速度のN回和
sleep 5
echo -n "+"
done

echo -n "  Done.      "

# 平均の読み書き速度の計算
SPEED=`expr $SUM / $N1`

# 適切な単位の計算への置き換え
if [ $SPEED -ge 1000000 ]; then
SPEED=`echo "scale=2; $SPEED / 1000000" |  bc`
SPEED=`echo "$SPEED" MB/sec`
elif [ $SPEED -lt 1000000 -a $SPEED -ge 1000 ]; then
SPEED=`echo "scale=2; $SPEED / 1000" | bc`
SPEED=`echo "$SPEED" KB/sec`
else
SPEED=`echo "$SPEED" B/sec`
fi
echo  $SPEED
}



################ ベンチマーク処理の前処理 #################

# 実行オプションの取得
while getopts vn:p:d: opt
do
case $opt in
"n" ) N1=$OPTARG;; # ベンチマークで平均をとる実行回数
"p" ) DISK=$OPTARG;; # ターゲットパーティション 例 /dev/sda1
"d" ) DIR=$OPTARG;; # ターゲットディレクトリ 例 /st1/nao/tmp
"v" ) V=1;; # デバッグモード:一時ファイルを消さない
* ) echo "Usage: $hb [-v] [-n VALUE] [-t partition] [-d directory]" 1>&2
exit 1 ;;
esac
done

# オプション未指定の場合
if [ -z $N1 ]; then
N1=5
fi

if [ -z $DISK ]; then
DISK=/dev/sda1
fi

if [ -z $DIR ]; then
DIR=/tmp
fi


# 古い一時ファイルの削除
if [ -e $DIR/writetest* ]; then
rm -rf $DIR/writetest*
fi

# 一時ファイルの作成
touch "$DIR/HDDBench_Tmp2.txt"

# 一時ファイルの初期化
cat /dev/null >"$DIR/HDDBench_Tmp.txt"
cat /dev/null >"$DIR/HDDBench_Tmp2.txt"

# ベンチマークテスト結果ファイルの作成
touch "$DIR/HDDBench_TestResult.txt"




################ ベンチマークシーケンス #################
echo $'\n'
echo Starting HDD Bench Mark Test ver. 0.01
echo Start : `date`

echo HDD Bench Mark Test ver. 0.01 >"$DIR/HDDBench_TestResult.txt"
echo `date` $'\n' >>"$DIR/HDDBench_TestResult.txt"



###### 読み取りテスト
# ブロックサイズと読み書き回数の定義

SET=("4K" "25000" "16K" "6250" "64K" "1563" "256K" "3907" "1024K" "977")

for i in 0 2 4 6 8

do
BS=${SET[$i]}
COUNT=${SET[$i+1]}

# 画面への表示
echo $'\n'
echo Testing Sequential Read \(Block size:${BS}Bytes\)
rbench

# ベンチマークテスト結果ファイルへの保存
echo Sequential Read \(Block size:${BS}Bytes\) $SPEED >>"$DIR/HDDBench_TestResult.txt"
done



###### 書き込みテスト

for i in 0 2 4 6 8

do
BS=${SET[$i]}
COUNT=${SET[$i+1]}

# 画面への表示
echo $'\n'
echo Testing Sequential Write \(Block size:${BS}Bytes\)
wbench

# ベンチマークテスト結果ファイルへの保存
echo Sequential Write \(Block size:${BS}Bytes\) $SPEED >>"$DIR/HDDBench_TestResult.txt"
done


#################################



# すべての作業終了表示
echo $'\n' 
echo "All Bench Mark Test Finished."
echo Finished : `date`
echo $'\n' 

# デバッグモードでない場合は一時ファイルを消さない
if [ "$V" = "1" ]; then
exit 0
fi

# 一時ファイルの削除
rm -rf $DIR/HDDBench_Tmp.txt*
rm -rf $DIR/HDDBench_Tmp2.txt*
rm -rf $DIR/writetest*

exit 0

------------ここまで

ddコマンドを調べていると、oflag/iflagでsync,directの指定している箇所が
よくわかりませんでしたが、比較的まともな値のでるdirectの方を使っています。
syncにすると何かがキャッシュされているのか、3GB/secとかはじき出しちゃいます[たらーっ(汗)]
syncの意味よくわかりません。。

このスクリプトを適当なファイル名bench.shとかで保存して
chmod 755とかして実行権限を与えてると使えます。
あ、保存した時の改行コードに注意して下さい。LFで。
あと、シェルスクリプトで小数計算するためのbcが必要です。
# apt-get install bc
してください。
Write Testのために2.3GBほどのディスクスペースが必要です。

使い方は、こんな感じです。

$./bench.sh -n 10 -p /dev/sda1 -d /st1/nao/tmp

とするとブロックサイズを4KB,16KB,64KB,256KB,1024KBで100MBまたは
1GBぶん読み書きを、

-p フラグで指定したパーティションの
-d フラグで指定したディレクトリで
-n フラグで指定した回数実施し、その平均を計算して、
-d フラグで指定したディレクトリに
HDDBench_TestResult.txt というファイル名で実行結果を保存します。

これを使って何が起こっても知りません(^ ^;)



RAID5とRAID10によるベンチマークテストの結果 [CG-HDC4EU3500]

前回の続きで、テスト結果です。

ものはこちら。




RAID5の場合
Disk Test 89.00
Sequential 52.82
Uncached Write 22.95 14.09 MB/sec [4K blocks]
Uncached Write 150.70 85.27 MB/sec [256K blocks]
Uncached Read 50.57 14.80 MB/sec [4K blocks]
Uncached Read 174.15 87.52 MB/sec [256K blocks]
Random 282.56
Uncached Write 131.22 13.89 MB/sec [4K blocks]
Uncached Write 257.65 82.48 MB/sec [256K blocks]
Uncached Read 1960.48 13.89 MB/sec [4K blocks]
Uncached Read 466.39 86.54 MB/sec [256K blocks]

RAID10の場合
Disk Test 89.62
Sequential 53.23
Uncached Write 22.50 13.81 MB/sec [4K blocks]
Uncached Write 149.38 84.52 MB/sec [256K blocks]
Uncached Read 54.74 16.02 MB/sec [4K blocks]
Uncached Read 174.33 87.62 MB/sec [256K blocks]
Random 283.24
Uncached Write 131.59 13.93 MB/sec [4K blocks]
Uncached Write 256.68 82.17 MB/sec [256K blocks]
Uncached Read 1985.08 14.07 MB/sec [4K blocks]
Uncached Read 470.91 87.38 MB/sec [256K blocks]

と、まぁ、正直あまり変わらない結果でした(^^;)

一応他の、ベンチマークツールでの結果も掲載しておきます。

AJA System Test
RAID5の場合
スクリーンショット(2010-02-14 1.06.10).png
RAID10の場合
スクリーンショット(2010-02-14 2.47.25).png

QuickBench
RAID5の場合
スクリーンショット(2010-02-14 1.07.38).png
RAID10の場合
スクリーンショット(2010-02-14 2.47.35).png

ただし、複数回テストを行っているうちに、RAID5の方にややパフォーマンスの
低下の傾向がみられました。
10〜20%程度なので誤差の範囲とも考えられますが、一方でRAID10においては、
今回のテストのなかではほとんど見られませんでした。

HDDに対する耐障害性の面から、これからRAID10で運用にはいることにします〜[ぴかぴか(新しい)]
ちなみに、iMac↓のローカルHDDより速いです(^^;)
フクザツな気持ちです。。

APPLE iMac 27インチ 3.06GHz 1.0TB MB952J/A

APPLE iMac 27インチ 3.06GHz 1.0TB MB952J/A

  • 出版社/メーカー: アップル
  • メディア: エレクトロニクス

# このCG-HDC4EU3500自体が故障する可能性も十分にありえますので、
# さらにデータのバックアップをとっておきますが。。。


ちなみに、ヨドバシカメラさんで買いましたが、Amazonの方が5000円くらい安い[あせあせ(飛び散る汗)]
う〜ん。失敗したなー[たらーっ(汗)]
最近よくある、Amazonの方が安かった、っていうパターンです。。



RAID5 と RAID10 でパフォーマンス比較 [CG-HDC4EU3500]

おおざっぱな構成としては

iMac】--【ファイルサーバ】--【DAS】

こんな感じです。


ここで、DASは


Corega 4BAY RAID eSATA/USB2.0 SATA3.5インチHDDケース CG-HDC4EU3500

Corega 4BAY RAID eSATA/USB2.0 SATA3.5インチHDDケース CG-HDC4EU3500

  • 出版社/メーカー: コレガ
  • メディア: エレクトロニクス
こちらで、PCやサーバにeSATA/USBで接続するストレージです。



iMac⇔ファイルサーバ間はいちおう1000Base-Tのイーサネット接続です。
ファイルサーバ⇔DAS間はeSATA接続です。
ファイルサーバ側の口はオンボードのeSATAコネクタに接続されています。
# 詳細は以前のブログにて。

ファイル転送のプロトコルはAFPです。(by netatalk2.0.5)


DASはCG-HDC4EU3500を用いています。
ハードディスクHDS722020ALA330を4本入れて、RAID5または10で
運用しようというもくろみです♪

CG-HDC4EU3500のRAID10は

一般論として、RAID5の方がパリティ計算の分だけRAID10(=1+0)より
遅くなるといわれているようです。

いちおうベンチマークテストしておきます。

ベンチマークにつかうソフトウェアも少しばかり、進歩しました。
というか、見つけてきただけですが。。(^^;)


以前から使っているXbench(無償です)

スクリーンショット(2010-02-14 4.10.54).png

ちょっと前に見つけた、AJA System Test(無償です)

スクリーンショット(2010-02-14 4.15.27).png

ところがこれらですと、Windowsからのベンチマークテストが
できないので、Mac版だけでなく、Windows版もあるのがこちら
Intech Software社のQuickBenchです。($24.95)

スクリーンショット(2010-02-14 4.24.50).png

3つを比較してみましたが、どれを用いてもほぼ同じ結果が得られますので、
簡易的なベンチマークテストとしては、Xbenchの結果を用いることにします♪

結果は次回[揺れるハート]


コレガのDAS CG-HDC4EU3500 をLinuxで認識させましょう [CG-HDC4EU3500]

ものはこちらで、


Corega 4BAY RAID eSATA/USB2.0 SATA3.5インチHDDケース CG-HDC4EU3500

Corega 4BAY RAID eSATA/USB2.0 SATA3.5インチHDDケース CG-HDC4EU3500

  • 出版社/メーカー: コレガ
  • メディア: エレクトロニクス


2TBのディスクを4本入れましたので、

RAID5構成では、使える容量が6TB
RAID10構成では、使える容量が4TB

となります。

# ちなみに、CG-HDC4EU3500 の設定などは、説明書の通りです。
# 難しくありませんが、「背面のRAID設定ボタン」は長押ししましょう。(笑)


いずれも2TBを超えますので、fdiskではパーティションを作れません。

そこで、partedを使って、パーティションを作成します。

# parted /dev/sda

GNU Parted 1.8.8.1.159-1e0e
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) print                                                            
Error: /dev/sda: unrecognised disk label 

おっと、なにか怒られています。
ラベルを書き込みましょう。

(parted) mklabel gpt                                                      
(parted) print                                                            
Model: ATA eSATA-2 External (scsi)
Disk /dev/sda: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags


これでOKです♪

(parted) mkpart                                                           
Partition name?  []?     ←空欄でOK                                                     
File system type?  [ext2]?   ←空欄でOK                                              
Start? 0                                                                  
End? 4001GB                                                               
(parted) print                                                            
Model: ATA eSATA-2 External (scsi)
Disk /dev/sda: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      17.4kB  4001GB  4001GB

(parted) quit 

これだけです[ぴかぴか(新しい)]

つぎはext4でフォーマットします。

# mkfs.ext4 -m 1 /dev/sda1

mke2fs 1.41.9 (22-Aug-2009)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
244187136 inodes, 976732283 blocks
9767322 blocks (1.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
29808 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
102400000, 214990848, 512000000, 550731776, 644972544

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


ちなみに、「-m 1」というオプションは、スーパーユーザー用にリザーブする
領域サイズの指定を行うオプションです。
デフォルトでは5%になっており、4TBの5%って200GBです。
な、なにする用ですか(^^;)?


によれば、断片化を防ぐ効能もあるとか。。
う〜ん、それでも1%にしておきましょう。


あとはマウントするだけです (^_^)

その際、UUIDが必要となります。
「vol_id」なるコマンドもあるようですが、どうも覚えられません。
が、

/dev/disk/by-uuid
 
に認識済みのディスクのUUIDが格納されていますので、いつもここを参照します。

# ls -la /dev/disk/by-uuid
lrwxrwxrwx 1 root root   9 2010-02-14 01:12 0e142fd4-c6c4-43b9-8520-91adeb1cc432 -> ../../md1
lrwxrwxrwx 1 root root  10 2010-02-14 01:50 be4eabea-9f3c-4f7e-8119-08afee3eacd6 -> ../../sda1
lrwxrwxrwx 1 root root   9 2010-02-14 01:12 c18eb71f-5c65-4eea-829d-34678875ec36 -> ../../md0

リンク先までわかり、便利です。

#vi /etc/fstab


UUID=be4eabea-9f3c-4f7e-8119-08afee3eacd6  /st1  ext4  relatime  0  0

を追記します。

これでマウントしましょう〜♪



DASを新調しました [CG-HDC4EU3500]

以前使っていたDASは

センチュリー 裸族の二世帯住宅 CRNS35EU2

センチュリー 裸族の二世帯住宅 CRNS35EU2






こちらですが、いつのまにか、落ちていることがあるので、
こちら↓に新調しました

Corega 4BAY RAID eSATA/USB2.0 SATA3.5インチHDDケース CG-HDC4EU3500

Corega 4BAY RAID eSATA/USB2.0 SATA3.5インチHDDケース CG-HDC4EU3500

  • 出版社/メーカー: コレガ
  • メディア: エレクトロニクス





4ベイあるということで、HDDはこちら↓
日立GST Deskstar 7K2000(2TB/SATA3G/7200rpm/32MB) HDS722020ALA330

日立GST Deskstar 7K2000(2TB/SATA3G/7200rpm/32MB) HDS722020ALA330

  • 出版社/メーカー: 日立グローバルストレージテクノロジーズ
  • メディア: エレクトロニクス
を4つ調達いたしました。ベンチマークはまた後日 [揺れるハート]


DASを選ぶにあたって、
・てごろな価格
RAID10が構築可能
・そこそこの堅牢性
・そこそこのパフォーマンス
を念頭に置いてしらべてみますと、、上記以外に

mathey Hydra Super-S LCM MHDR-SC800LCM

mathey Hydra Super-S LCM MHDR-SC800LCM

  • 出版社/メーカー: mathey
  • メディア: エレクトロニクス
などもありますが、こちらの機種は上記のコレガと同じRAIDコントローラを
使っているようですので、お値段の面からコレガのDASを買いました♪





CG-HDC4EU3500 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。