LSI(Avago)の SAS 9300-9i(HBA) を入手した
マザーボード上のSATAポートでzfsを組んでも構わないのだが、2.5インチ8本エンクロージャを再活用するために導入
sataポート追加のpcieカードでもよかったのだが
ベンチマーク結果ubuntu/zfs/bonnie++
ストレージプール容量追加ubuntu/zfs/HDD追加
btrfsubuntu/btrfs
8本のHDD(2.5inch)はubuntu/hw-raidにて使用後、HBAに付け替えた。software-raidとして認識されたが、
root@e:~# mdadm --manage /dev/md126 --stop
root@e:~# cat /proc/partitions
major minor #blocks name
(略
8 96 976762584 sdg
8 32 976762584 sdc
8 0 976762584 sda
8 64 976762584 sde
8 16 976762584 sdb
8 112 976762584 sdh
8 80 976762584 sdf
8 48 976762584 sdd
root@e:~#
とsoftware-raidを停止させ、各HDDのパーティションテーブルを gpt へ変更した
だが、別にパーティションは切っていない。
root@e:~# parted /dev/sda
GNU Parted 3.2
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p
モデル: ATA TOSHIBA MQ01ABD1 (scsi)
ディスク /dev/sda: 1000GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: loop
ディスクフラグ:
番号 開始 終了 サイズ ファイルシステム フラグ
1 0.00B 1000GB 1000GB xfs
(parted) mklabel gpt
警告: いま存在している /dev/sda のディスクラベルは破壊され、このディスクの全データが失われま す。続行しますか?
はい(Y)/Yes/いいえ(N)/No? y
(parted) q
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
root@e:~#
ここで一旦マシンを再起動させ software-raid の構成が途絶えたことを確認。
単純に
root@e:~# apt-get install zfsutils-linux
でインストールできた。
/dev/sdaから/dev/sdhまでの8本のHDD(2.5inch)がある。
RAID6相当というかパリティを2つ持たせたいので、「raidz2」なストレージプール(tank)を作るには
root@e:~# zpool create tank raidz2 /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh
root@e:~# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
tank 7.25T 828K 7.25T - 0% 0% 1.00x ONLINE -
root@e:~#
root@e:~# zpool status tank
pool: tank
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
sdh ONLINE 0 0 0
errors: No known data errors
root@e:~#
これと共にストレージプール(tank)がファイルシステムに登録される
ありがいたいのやら、やや微妙
root@e:~# df -lTh -F zfs
Filesystem Type Size Used Avail Use% Mounted on
tank zfs 5.0T 128K 5.0T 1% /tank
root@e:~#
サブボリュームを作成して、それを特定のマウントポイントに当てるには
root@e:~# zfs create tank/export
root@e:~# df -lTh -F zfs
Filesystem Type Size Used Avail Use% Mounted on
tank zfs 5.0T 256K 5.0T 1% /tank
tank/export zfs 5.0T 256K 5.0T 1% /tank/export
root@e:~#
root@e:~# zfs umount tank/export
root@e:~# df -lTh -F zfs
Filesystem Type Size Used Avail Use% Mounted on
tank zfs 5.0T 256K 5.0T 1% /tank
root@e:~#
root@e:~# mkdir /export
root@e:~# zfs set mountpoint=/export tank/export
root@e:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 845K 4.99T 205K /tank
tank/export 205K 4.99T 205K /export
root@e:~# df -lTh -F zfs <--- ファイルシステムにはまだ反映されていない
Filesystem Type Size Used Avail Use% Mounted on
tank zfs 5.0T 256K 5.0T 1% /tank
root@e:~# zfs mount tank/export <--- ここでファイルシステムに反映される
root@e:~# df -lTh -F zfs
Filesystem Type Size Used Avail Use% Mounted on
tank zfs 5.0T 256K 5.0T 1% /tank
tank/export zfs 5.0T 256K 5.0T 1% /export
root@e:~#
「tank」をそのまま/exportにすればいいのでは?と思えるが、tankは「ストレージプール」で、そこから切り出した領域をファイルシステムに供出する形なので、このまま。
ルートディスクのSSDに 133 GB ほどの空きがある。これをcacheにしてみた
まずそのデバイスを用意した。
root@e:~# parted /dev/sdi
GNU Parted 3.2
/dev/sdi を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) unit s
(parted) p
モデル: ATA TOSHIBA THNSNH51 (scsi)
ディスク /dev/sdi: 1000215216s
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 2048s 1050623s 1048576s fat32 EFI System Partition boot, esp
2 1050624s 2099199s 1048576s ext4 boot msftdata
3 2099200s 270534655s 268435456s xfs root msftdata
4 270534656s 404752383s 134217728s xfs var msftdata
5 404752384s 471861247s 67108864s linux-swap(v1) swap
6 471861248s 740296703s 268435456s xfs home msftdata
(parted) mkpart
パーティションの名前? []? cache
ファイルシステムの種類? [ext2]? zfs
開始? 740296704s
終了? -1s
警告: 740296704s から 1000215215s (740296704 から 1000215215 セクタ)までのパーティションを指定されました。
可能な中で最も近いものは 740296704s から 1000215182s (740296704 から 1000215182 セクタ)になります。
それでもかまいませんか?
はい(Y)/Yes/いいえ(N)/No? yes
(parted) unit GB
(parted) p
モデル: ATA TOSHIBA THNSNH51 (scsi)
ディスク /dev/sdi: 512GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 0.00GB 0.54GB 0.54GB fat32 EFI System Partition boot, esp
2 0.54GB 1.07GB 0.54GB ext4 boot msftdata
3 1.07GB 139GB 137GB xfs root msftdata
4 139GB 207GB 68.7GB xfs var msftdata
5 207GB 242GB 34.4GB linux-swap(v1) swap
6 242GB 379GB 137GB xfs home msftdata
7 379GB 512GB 133GB zfs cache
(parted) q
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
root@e:~#
作ったデバイス /dev/sdi7 を zpool に cache として加える
root@e:~# zpool add tank cache /dev/sdi7
root@e:~# zpool status
pool: tank
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
sdh ONLINE 0 0 0
cache
sdi7 ONLINE 0 0 0
errors: No known data errors
root@e:~#
cacheデバイスを外すには
root@e:~# zpool remove tank sdi7
root@e:~# zpool status
pool: tank
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
sdh ONLINE 0 0 0
errors: No known data errors
root@e:~#