今回はDragonFlay BSD 5.
HAMMER2ファイルシステムの使い方
DragonFly BSD 5.
dfly50# mount da0s1d on / (hammer2, local) ← ここ devfs on /dev (devfs, nosymfollow, local) /dev/da0s1a on /boot (ufs, local) /build/usr.obj on /usr/obj (null) /build/var.crash on /var/crash (null) /build/var.cache on /var/cache (null) /build/var.spool on /var/spool (null) /build/var.log on /var/log (null) /build/var.tmp on /var/tmp (null) tmpfs on /tmp (tmpfs, local) procfs on /proc (procfs, local) dfly50#
この領域はhammer2(8)コマンドで制御できます。ZFSにおけるzfs(8)コマンドやzpool(8)コマンドに相当するコマンドです。hammer2(8)コマンドはサブコマンドを指定して操作するタイプのコマンドで、
| hammer2サブコマンド | 操作内容 |
|---|---|
| connect ターゲット | クラスタリンクへ追加 |
| chaindump パス | インメモリチェーントポをダンプ |
| destroy パス | ディレクトリエントリの削除 |
| disconnect ターゲット | クラスタリンクの削除 |
| hash ファイル名 | ディレクトリハッシュの出力 |
| info [デバイスファイルパス] | H2パーティション情報の表示 |
| mountadd [デバイスファイルパス] | H2パーティションのすべての@LOCALをマウント |
| status [パス] | アクティブクラスタステータスを表示 |
| pfs-list [パス] | PFS一覧表示 |
| pfs-clid ラベル | 指定したPFSに対するクラスタIDを表示 |
| pfs-fsid ラベル | 指定したPFSに対するプライベートIDを表示 |
| pfs-create ラベル | PFSの作成 |
| pfs-delete ラベル | PFSの削除 |
| snapshot パス [ラベル] | PFSまたはディレクトリのスナップショットを作成 |
| service | サービスデーモンを起動 |
| stat [パス] | inodeクォータ情報および設定情報を表示 |
| leaf | pfs leafデーモンを起動 |
| shell [ホスト] | デバッグシェルへ接続 |
| debugspan ターゲット | ターゲットへ接続しCONN/ |
| rsainit | rsaフィールドを初期化 |
| show デバイスファイルパス | Raw hammer2メディアダンプ |
| freemap デバイスファイルパス | Raw hammer2メディアダンプ |
| setcomp 圧縮アルゴリズム[:レベル] パス | 圧縮アルゴリズムおよび圧縮レベルを指定 |
| setchech チェックアルゴリズム パス | チェックアルゴリズムを指定 |
| clrcheck パス | チェックコードオーバーライドをクリア |
| setcrc32 パス | チェックアルゴリズムをcrc32へ変更 |
| setxxhash64 パス | チェックアルゴリズムをxxhash64へ変更 |
| setsha192 パス | チェックアルゴリズムをsha192へ変更 |
| bulkfree パス | バルクフリーパスを実行 |
たとえばpfs-listサブコマンドを使えば次のようにpfsが表示されます。
dfly50# hammer2 pfs-list Type ClusterId (pfs_clid) Label SNAPSHOT b04ae3f9-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055702 MASTER 3876b8e5-ca2c-11e7-8720-010c290d16d7 ROOT SNAPSHOT b222e9dd-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055705 SNAPSHOT d59b6e60-cfc5-11e7-b9d5-010c290d16d7 ROOT.20171123.054345 MASTER 3876b6f3-ca2c-11e7-8720-010c290d16d7 LOCAL SNAPSHOT b17f2aa9-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055704 dfly50#
infoサブコマンドを使うと次のようにデバイスファイルパスを指定しての出力が可能です。
dfly50# hammer2 info /dev/da0s1d
/dev/da0s1d:
ROOT.20171123.055702
ROOT
ROOT.20171123.055705
ROOT.20171123.054345
LOCAL
ROOT.20171123.055704
dfly50#
snapshotサブコマンドは次のようにスナップショットを作成するコマンドです。
dfly50# hammer2 snapshot / created snapshot ROOT.20171123.055800 dfly50# hammer2 snapshot / created snapshot ROOT.20171123.055801 dfly50# hammer2 snapshot /usr created snapshot ROOT.20171123.055803 dfly50#
作成したスナップショットはpfs-listで確認できます。
dfly50# hammer2 pfs-list Type ClusterId (pfs_clid) Label SNAPSHOT d30dc465-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055800 SNAPSHOT b04ae3f9-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055702 MASTER 3876b8e5-ca2c-11e7-8720-010c290d16d7 ROOT SNAPSHOT b222e9dd-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055705 SNAPSHOT d59b6e60-cfc5-11e7-b9d5-010c290d16d7 ROOT.20171123.054345 SNAPSHOT d3a59daf-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055801 MASTER 3876b6f3-ca2c-11e7-8720-010c290d16d7 LOCAL SNAPSHOT d4f68f5d-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055803 SNAPSHOT b17f2aa9-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055704 dfly50# hammer2 pfs-delete ROOT.20171123.054345 dfly50# hammer2 pfs-list Type ClusterId (pfs_clid) Label SNAPSHOT d30dc465-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055800 SNAPSHOT b04ae3f9-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055702 MASTER 3876b8e5-ca2c-11e7-8720-010c290d16d7 ROOT SNAPSHOT b222e9dd-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055705 SNAPSHOT d3a59daf-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055801 MASTER 3876b6f3-ca2c-11e7-8720-010c290d16d7 LOCAL SNAPSHOT d4f68f5d-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055803 SNAPSHOT b17f2aa9-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055704 dfly50#
snapshotサブコマンドはラベル名を指定して作成することも可能で、
dfly50# hammer2 pfs-list Type ClusterId (pfs_clid) Label SNAPSHOT d30dc465-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055800 SNAPSHOT b04ae3f9-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055702 SNAPSHOT 2f413921-cfc8-11e7-b9d5-010c290d16d7 ROOT.20171123.060035 SNAPSHOT 7b21d515-cfc8-11e7-b9d5-010c290d16d7 snapshottest-2 MASTER 3876b8e5-ca2c-11e7-8720-010c290d16d7 ROOT SNAPSHOT 25a47ba9-cfc8-11e7-b9d5-010c290d16d7 ROOT.20171123.060018 SNAPSHOT 6b4a3550-cfc8-11e7-b9d5-010c290d16d7 snapshottest-1 SNAPSHOT b222e9dd-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055705 SNAPSHOT d3a59daf-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055801 MASTER 3876b6f3-ca2c-11e7-8720-010c290d16d7 LOCAL SNAPSHOT d4f68f5d-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055803 SNAPSHOT b17f2aa9-cfc7-11e7-b9d5-010c290d16d7 ROOT.20171123.055704 dfly50#
スナップショットはマウントすることでアクセスが可能です。マウントにはmount_
dfly50# mount_hammer2 @snapshottest-1 /mnt dfly50# ls /mnt/snaptest/ a dfly50# umount /mnt dfly50#
dfly50# mount_hammer2 @snapshottest-2 /mnt dfly50# ls /mnt/snaptest/ b dfly50# umount /mnt dfly50#
新しいディスクをHAMMER2の対象とするには、
dfly50# newfs_hammer2 /dev/da1s0
newfs_hammer2: WARNING: HAMMER2 VFS not loaded, cannot get version info.
Using version 1
Volume /dev/da1s0 size 20.00GB
---------------------------------------------
version: 1
total-size: 20.00GB (21474836480 bytes)
boot-area-size: 64.00MB
aux-area-size: 256.00MB
topo-reserved: 80.00MB
free-space: 19.61GB
vol-fsid: 255ea42f-cfc9-11e7-b9d5-010c290d16d7
sup-clid: 255ea434-cfc9-11e7-b9d5-010c290d16d7
sup-fsid: 255ea439-cfc9-11e7-b9d5-010c290d16d7
PFS "LOCAL"
clid 2560d105-cfc9-11e7-b9d5-010c290d16d7
fsid 2560d10e-cfc9-11e7-b9d5-010c290d16d7
PFS "DATA"
clid 2560d150-cfc9-11e7-b9d5-010c290d16d7
fsid 2560d154-cfc9-11e7-b9d5-010c290d16d7
dfly50#
dfly50# mount_hammer2 /dev/da1s0 /mnt dfly50# df -h Filesystem Size Used Avail Capacity Mounted on da0s1d 16.6G 473M 16.1G 3% / devfs 1024B 1024B 0B 100% /dev /dev/da0s1a 1022M 154M 786M 16% /boot /build/usr.obj 16.6G 473M 16.1G 3% /usr/obj /build/var.crash 16.6G 473M 16.1G 3% /var/crash /build/var.cache 16.6G 473M 16.1G 3% /var/cache /build/var.spool 16.6G 473M 16.1G 3% /var/spool /build/var.log 16.6G 473M 16.1G 3% /var/log /build/var.tmp 16.6G 473M 16.1G 3% /var/tmp tmpfs 486M 0B 486M 0% /tmp procfs 4096B 4096B 0B 100% /proc /dev/da1s0@DATA 19.6G 0B 19.6G 0% /mnt dfly50# mount da0s1d on / (hammer2, local) devfs on /dev (devfs, nosymfollow, local) /dev/da0s1a on /boot (ufs, local) /build/usr.obj on /usr/obj (null) /build/var.crash on /var/crash (null) /build/var.cache on /var/cache (null) /build/var.spool on /var/spool (null) /build/var.log on /var/log (null) /build/var.tmp on /var/tmp (null) tmpfs on /tmp (tmpfs, local) procfs on /proc (procfs, local) /dev/da1s0@DATA on /mnt (hammer2, local) dfly50#
クラスタの利用はまだできないとされていたので使えるのはこのあたりということになります。ZFSの場合はzpool(8)でストレージデバイスやストレージソースをストレージプールに追加していき、
今のところHAMMER2ファイルシステムで実装されている機能はZFSで実装されている機能の一部といったところです。おいしいところだけピンポイントで実装し、
FreeBSD勉強会
12月7日(木)19:00~ 第68回 BSDTW 2017から注目点紹介+α(ヴァル研 セミナールーム)
2017年11月11~12日に台湾の台北において開催された
本勉強会への参加者には抽選か勝ち抜きかでデーモンTシャツなどのグッズをお渡しします :)
参加登録はこちらから。
FreeBSD勉強会 発表者募集
FreeBSD勉強会では発表者を募集しています。FreeBSDに関して発表を行いたい場合、
