使用したマシンは以下のとおり。ってprtdiagが正常に出ていませんが・・・、プロセッサは標準のAMD Athlon™ プロセッサー 1640B(2.7GHz、512KB L2)。
root@opensolaris:~# uname -a SunOS opensolaris 5.11 snv_101b i86pc i386 i86pc root@opensolaris:~# prtdiag -v System Configuration: HP ProLiant ML115 G5 BIOS Configuration: HP O18 05/26/2008 BMC Configuration: IPMI 2.0 (KCS: Keyboard Controller Style) ==== Processor Sockets ==================================== Version Location Tag -------------------------------- -------------------------- PROCESSOR ==== Memory Device Sockets ================================ Type Status Set Device Locator Bank Locator ----------- ------ --- ------------------- ---------------- Unknown in use 1 DIMM1 Unknown in use 1 DIMM2 Unknown in use 1 DIMM3 Unknown in use 1 DIMM4 ==== On-Board Devices ===================================== ==== Upgradeable Slots ==================================== ID Status Type Description --- --------- ---------------- ---------------------------- 1 available PCI PCI Slot 2 available PCI Express PCIE X1 3 available PCI Express PCIE X8 4 available PCI Express PCIE X16formatでのUSBメモリの初期化手順は下記のとおり。KingstonのUSBメモリ2Gが3つ接続されています。
root@opensolaris:~# format -e AVAILABLE DISK SELECTIONS: 0. c3t0d0 <DEFAULT cyl 19454 alt 2 hd 255 sec 63> /pci@0,0/pci103c,1714@5/disk@0,0 1. c3t1d0 <DEFAULT cyl 60797 alt 2 hd 255 sec 126> /pci@0,0/pci103c,1714@5/disk@1,0 2. c4t0d0 <DEFAULT cyl 60797 alt 2 hd 255 sec 126> /pci@0,0/pci103c,1714@5,1/disk@0,0 3. c4t1d0 <DEFAULT cyl 60797 alt 2 hd 255 sec 126> /pci@0,0/pci103c,1714@5,1/disk@1,0 4. c6t0d0 <Kingston-DataTraveler2.0-PMAP cyl 965 alt 2 hd 128 sec 32> /pci@0,0/pci103c,1714@2,1/hub@8/storage@2/disk@0,0 5. c7t0d0 <Kingston-DataTraveler2.0-PMAP cyl 965 alt 2 hd 128 sec 32> /pci@0,0/pci103c,1714@2,1/hub@8/storage@3/disk@0,0 6. c8t0d0 <Kingston-DataTraveler2.0-PMAP cyl 966 alt 2 hd 128 sec 32> /pci@0,0/pci103c,1714@2,1/hub@8/storage@4/disk@0,0 Specify disk (enter its number): 4 selecting c6t0d0 format>fdisk SELECT ONE OF THE FOLLOWING: 1. Create a partition 2. Specify the active partition 3. Delete a partition 4. Change between Solaris and Solaris2 Partition IDs 5. Exit (update disk configuration and exit) 6. Cancel (exit without updating disk configuration)で、fdiskコマンドにより2Gのメモリを100%使用してパーティションを作成します。キーボードでは、3, 1, y, 1, 100, y と順に入力。その後labelコマンドでlabel設定したら完了。この作業を3つのUSBメモリに対して行います。
[disk formatted] No fdisk solaris partition found. Total disk size is 968 cylinders Total disk size is 968 cylinders Cylinder size is 4096 (512 byte) blocks Cylinders Partition Status Type Start End Length % ========= ====== ============ ===== === ====== === 1 Active Solaris2 1 967 967 100 format> label [0] SMI Label [1] EFI Label Specify Label type[0]: 0 Ready to label disk, continue? y format>quitでは、はじめにUSBメモリ1本で書き込み速度測定。この値と比べていきます。
root@opensolaris:/# zpool create -f usbflush c6t0d0 root@opensolaris:/# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT rpool 149G 6.39G 143G 4% ONLINE - usbflush 1.88G 73.5K 1.87G 0% ONLINE - root@opensolaris:/# time mkfile 1g /usbflush/1g real 3m50.635s user 0m0.003s sys 0m0.353sRAID0のUSBメモリ2本で書き込み速度測定。おっ!
root@opensolaris:/# zpool create -f usbflush c6t0d0 c7t0d0 root@opensolaris:/# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT rpool 149G 6.39G 143G 4% ONLINE - usbflush 3.75G 75K 3.75G 0% ONLINE - root@opensolaris:/# time mkfile 1g /usbflush/1g real 1m47.244s user 0m0.003s sys 0m0.355sRAID0のUSBメモリ3本で書き込み速度測定。おおっ!
#zpool create -f usbflush c6t0d0 c7t0d0 c8t0d0 # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT rpool 149G 6.38G 143G 4% ONLINE - usbflush 5.62G 84K 5.62G 0% ONLINE - root@opensolaris:/usbflush# time mkfile 1g ./1g real 1m5.408s user 0m0.004s sys 0m0.368sRAID1のUSBメモリ2本で書き込み速度測定。う~ん。こうなるよね。
root@opensolaris:/# zpool create -f usbflush mirror c6t0d0 c7t0d0 root@opensolaris:/# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT rpool 149G 6.39G 143G 4% ONLINE - usbflush 1.88G 73.5K 1.87G 0% ONLINE - root@opensolaris:/# time mkfile 1g /usbflush/1g real 3m53.042s user 0m0.003s sys 0m0.352sRAIDZのUSBメモリ3本で書き込み速度測定。おおお!
root@opensolaris:/# zpool create -f usbflush raidz c6t0d0 c7t0d0 c8t0d0 root@opensolaris:/# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT rpool 149G 6.39G 143G 4% ONLINE - usbflush 5.62G 141K 5.62G 0% ONLINE - root@opensolaris:/# time mkfile 1g /usbflush/1g real 2m48.438s user 0m0.004s sys 0m0.366sというわけで、結果としてはRAID0のUSBメモリ3本が一番速い。とは言えRAID0はメモリに障害が起きた場合に復旧できないので、RAID1かRAIDZを使うと思うんだけど、でRAID1よりもRAIDZの方が速かった。(予想できる内容だったけど、一応検証しないとね・・・)
簡単に説明すると、
RAID0は1つのデータを複数のストレージにまたがって読み書きするため、1ストレージあたりの読み書きする量が少なくなり、読み書きする時間が減る。2ストレージ使った時は1ストレージの約1/2の時間。3ストレージ使った場合は1ストレージ約1/3の時間。
RAID1は1つのデータを2つのストレージにそれぞれ同じ内容を書き込むため、1ストレージの時と読み書きする時間が変わらない。
RAIDZは3ストレージの場合、1つのデータを2ストレージと、データ復旧用のパリティとして1ストレージに書き込むため、RAID0のように1ストレージに書き込む量が少なくなるため速くなる。約2/3の時間かな。
ZFSは、今の環境に不満があれば環境を拡張できるのがいい。あと、RAIDZで組まれた複数のストレージプールを、RAID0で組み合わせることもできるので、もっと効率の良いストレージプールを作ることもできる。素晴らしい!
是非!!
下記のサイトを参考にさせて頂きました。
Solaris ZFS 管理ガイド
USBメモリで ZFS ! : やっぱり Sun がスキ!
OpenSolarisの本
OpenSolarisスタートアップバイブル
この本読んでみたい
Solaris ZFS Essentials (Solaris Series)