‘Advanced Format’ タグのついている投稿

FreeNAS 0.7.2 (FreeBSD) で WD20EARS (Advanced Format) を使う (MBR用)

2010年4月30日 金曜日

単一MBRパーティションで作成する場合は、fdiskでデフォルトスライスを
作成してbsdlabelで調整します。

# fdisk -BI /dev/ad4
# bsdlabel -w /dev/ad4s1
# fdisk -s /dev/ad4
/dev/ad4: 3876021 cyl 16 hd 63 sec
Part        Start        Size Type Flags
   1:          63  3907029105 0xa5 0x80
# bsdlabel /dev/ad4s1
# /dev/ad4s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a: 3907029089       16    unused        0     0
  c: 3907029105        0    unused        0     0         # "raw" part, don't edit
 

この段階で上記のような設定になります。63セクタがパーティション開始、
BSDパーティションが16セクタから(先頭から見ると63+16=79セクタ目)
になります。
4Kセクタに合わせるために開始セクタを+1(80セクタ/4K=512×8/8×10)して、
サイズを-1します。fstypeに4.2BSDを指定します。

※ fsize bsizeは指定しなくても大丈夫なようです。newfsで指定するので。

# bsdlabel -e /dev/ad4s1

で直接ディスク上を編集するか、一旦ファイルに落として編集後にそれを
書き込み(リストア)します。

# bsdlabel /dev/ad4s1 > label.txt
# EDIT label.txt
# bsdlabel -R /dev/ad4s1 label.txt

今回はファイルで行いました。書き込むファイルはこんな感じ。

# cat label.txt
# /dev/ad4s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a: 3907029088       17    4.2BSD        0     0
  c: 3907029105        0    unused        0     0         # "raw" part, don't edit
 

できたらそのパーティションに対して書き込みテストを実行してみます。

# dd if=/dev/zero of=/dev/ad4s1a bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 93.156833 secs (92209388 bytes/sec)
 

満足いく結果になったら4Kフラグメントでフォーマットします。

# newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4s1a

最後にラベルが書き込み出来ないと文句を言われます。
が、無視します。(理由はわからない)
同様に書き込みテストを行います。

# mkdir /mnt2
# mount /dev/ad4s1a /mnt2
# dd if=/dev/zero of=/mnt2/test.data bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 91.816939 secs (93555009 bytes/sec)
 

複数のパーティションを作成したい場合は、最初のoffset以外に * を指定して
自動計算させる事ができます。
以下の例は /に512MB, swapに4GB, /varに4GB, /tmpに1GB, /usrに20GB,
残りを/homeに割り当てようと意図した構成です。

# cat label.txt
# /dev/ad4s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:     512M       17    4.2BSD        0     0
  b:       4G        *      swap        0     0
  c: 3907029105        0    unused        0     0         # "raw" part, don't edit
  d:       4G        *    4.2BSD        0     0
  e:       1G        *    4.2BSD        0     0
  f:      20G        *    4.2BSD        0     0
  g:        *        *    4.2BSD        0     0

# bsdlabel -R /dev/ad4s1 label.txt
# bsdlabel /dev/ad4s1
# /dev/ad4s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  1048576       17    4.2BSD        0     0     0
  b:  8388608  1048593      swap
  c: 3907029105        0    unused        0     0         # "raw" part, don't edit
  d:  8388608  9437201    4.2BSD        0     0     0
  e:  2097152 17825809    4.2BSD        0     0     0
  f: 41943040 19922961    4.2BSD        0     0     0
  g: 3845163104 61866001    4.2BSD        0     0     0
 

作成できたら、swap以外のパーティションにnewfsを実行します。

# newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4s1a
# newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4s1d
# newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4s1e
# newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4s1f
# newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4s1g

補足:
通常の/パーティションはSoftupdateを有効にしないので、
newfsで-Uを付けないか、すでに作成した場合は、

# tunefs -n disable /dev/ad4s1a

で無効にしたほうが良いかもしれません。

FreeNAS 0.7.2 (FreeBSD) で WD20EARS (Advanced Format) を使う (GPT用)

2010年4月30日 金曜日

よくよく考えたら、VT6421AにつなぐためにOPT1で1.5Gbpsに制限していたことを失念していました。
気を取り直して、3Gbpsに戻して、接続先を玄人志向のSATA3I2-PCIeに変更してやり直しました。
(テスト書き込みサイズは前回と同じ8GBです。)
なお、ベンチマークには影響しないと思いますが以下のケースを利用しています。
EZ-RC01-BK トレイ不要リムーバブルケース

gpt コマンドを使って開始セクタを4K(512×8)の倍数である40に調整します。
そして4Kフラグメントでフォーマットします。

# gpt destroy /dev/ad4
# gpt create /dev/ad4
# gpt add -b 40 -s 3907029056 /dev/ad4
# newfs -S 4096 -b 32768 -f 4096 -O 2 -U -m 8 -o time /dev/ad4p1
# gpt show /dev/ad4
       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34           6
          40  3907029056      1  GPT part - FreeBSD UFS/UFS2
  3907029096          39
  3907029135          32         Sec GPT table
  3907029167           1         Sec GPT header
 

diskinfoによる情報:

# diskinfo -tv ad4
ad4
        512             # sectorsize
        2000398934016   # mediasize in bytes (1.8T)
        3907029168      # mediasize in sectors
        3876021         # Cylinders according to firmware.
        16              # Heads according to firmware.
        63              # Sectors according to firmware.
        ad:WD-WCAVY2947600      # Disk ident.

Seek times:
        Full stroke:      250 iter in   8.237599 sec =   32.950 msec
        Half stroke:      250 iter in   5.843690 sec =   23.375 msec
        Quarter stroke:   500 iter in   9.792176 sec =   19.584 msec
        Short forward:    400 iter in   2.864924 sec =    7.162 msec
        Short backward:   400 iter in   2.071866 sec =    5.180 msec
        Seq outer:       2048 iter in   0.329293 sec =    0.161 msec
        Seq inner:       2048 iter in   0.291931 sec =    0.143 msec
Transfer rates:
        outside:       102400 kbytes in   0.975746 sec =   104945 kbytes/sec
        middle:        102400 kbytes in   1.210277 sec =    84609 kbytes/sec
        inside:        102400 kbytes in   2.118571 sec =    48334 kbytes/sec
 

ddによるRAWデバイス読み書きの結果:

# dd if=/dev/zero of=/dev/ad4p1 bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 92.930809 secs (92433658 bytes/sec)
# dd if=/dev/zero of=/dev/ad4p1 bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 93.116164 secs (92249661 bytes/sec)
# dd if=/dev/zero of=/dev/ad4p1 bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 92.697650 secs (92666153 bytes/sec)

# dd if=/dev/ad4p1 of=/dev/null bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 78.864713 secs (108919874 bytes/sec)
# dd if=/dev/ad4p1 of=/dev/null bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 78.826804 secs (108972255 bytes/sec)
# dd if=/dev/ad4p1 of=/dev/null bs=1m count=8k
8192+0 records in
8192+0 records out
8589934592 bytes transferred in 78.814522 secs (108989237 bytes/sec)
 

上記のように、WD20EARSでは、パーティション先頭8GBの領域に対して、
リード108MB/s、ライト92MB/sぐらいは出るようです。