zvolのvolblocksize

netatalkでの共有を止めて、zvol+iSCSIへ移行したわけですが、どうにもディスク消費量が大きすぎるのが気になってました。

zfs create -sVにて疎ボリュームで作成したんで、使用したら使用した分だけディスク消費するようにしてました。

すると、実容量に対し管理領域なんかで数%ふえるのはあり得る話しだけども、2TBのファイル置くだけで2.6TBも消費していて明らかにおかしい…。

そんなわけで、volblocksizeを疑ってテストしてみました。

用意した1GBiの書込みファイル。
dd if=/dev/random of=test.data bs=1048576 count=1024

今回は-sオプション使わず、普通にzfs create -V 2Gで確保しました。

blocksizeUSEDREFER
8kB2.06G1.35G
16kB2.03G1.01G
32kB2.02G1.00G
64kB2.01G1.00G
128kB2.01G1.00G
iSCSI経由APFSでmacOSから1GBi書込み後のzfs listの値

FreeBSDでzvolを作成すると、デフォルトではblocksizeは8kBに設定されます。

しかし結果を見てみると、8kBだけ明らかにREFERの上昇が激しいです。

REFERは実際に消費されているサイズというより「書込みで使用済みとなったサイズ」なので、CoW的な動きされると「書込んだけど今は使ってない」領域が存在し、それらがカウントされているのかと思います。

それでも8kBだけこれだけ差があると、ちょっと気持ち悪い…。

blocksizeによる実際のディスク消費量の違いは、USEDの値を見るのが妥当なところかな。それでも8kBだと約3%と、ちょい多い。

パフォーマンスについては、下記のサイトで検証されていて、あんまり影響は無い模様。

https://fefcc.net/archives/478

っていうか、FreeNASでは16kBがデフォルトなんですね。

ディスクケチりたいので128kBにしたいところですが、なんとなくビビって64kBに設定してzvol作り直しましたとさ。

APFS自体がCoWっぽい振舞するので、zfsの疎ボリューム機能使っても無駄にしかならないので、ギリギリサイズで確保して都度、volサイズを拡張することにしました。

おまけ:zvol/iSCSI/APFS運用でのvolサイズ拡張について

ディスク容量が手狭なんで、必要最低限のzvol確保しておいて、足りなくなったらちょっとづつ拡張していく作戦。

試しに# zfs set volsize=2T hddvol/scsivolみたいな感じで拡張してみましたところ、dmesgにこんな感じのログが。

GEOM_PART: zvol/hddvol/scsivol was automatically resized.
  Use `gpart commit zvol/hddvol/scsivol` to save changes or `gpart undo zvol/hddvol/scsivol` to revert them.

GEOM_PARTがサイズの変更を感知して、GPTを修正するかどうか?って聞いてるっぽい。因みに無視して進めようとすると、zvolが使用中とかでアクセス出来ません。

gpart commit zvol/hddvol/scsivolって実行すると、良きに計らってくれるようで。

追記:2020/12/16

容量拡張時には、FreeBSD側でgpart commitしておかないと、Mac側でのボリューム拡張に失敗する模様。

パーティションテーブルもMacの管理下だろう…と、volmode=devとかしてFreeBSD側からのgeom通したパーティション操作禁止したら嵌まった…。

カテゴリー: 未分類 | タグ: , | コメントする

今度こそnetatalkすてすて…?

obsolute Netatalk

netatalkが3.1.12(2018/12)からアップデートが止まったまま。

既に死亡宣告されたPhython2系に依存してる上に、portsとしても2020-09-15には削除予定とマークされてしまってます。

追記:4/27付でPython3.x対応にportsとして更新さてました。

少なくともFreeBSD上では、時々発生する原因不明のSignal11によるcore落ち、不定期におかしくなるEAなど問題山積み。

これはもう、今度こそ捨てるしか無いと決意。

今時のmacOS(Mojave)のafp/smb事情

macOS側としても、ファイル共有への接続がsmb優先になって久しく、このままafpは消えていくんじゃ無いかとも言われてます。

xNIX界隈のmacユーザーに対する認識も「もうsambaあれば十分でしょ?」って雰囲気を感じますが、そう簡単な話でもない。結論から言うと、今時のmacOSにとってsmbはafpを完全に置換え出来ていないし、たぶん今後もずっとそう。

恐らく使っているAPIに依存するのだと思うのですが、ローカルDBを持つアプリ(iTunesとかPhotosとかFinalCutProとか)なんかだと、ファイル共有上でまともに使えるのは、afpしか無いんですわ。

smbはというと、どうもローカルファイルシステムやafpより格下の扱い。ファイルパス指定でなんとなくsmb上のファイル指定できちゃったりするけど、そんなことするとDBに不具合続出。

そもそもそういうアプリは、アプリからファイル選択ダイアログ上開くとafp共有は見えても、smb共有はマウント済みの物も含めて選択出来なくなっています。

案1-ファイル共有経由のSparse image

そんなわけで苦肉の策として、smb上にSparse imageを置き、Sparse image内をAPFSでフォーマットして各ライブラリを配置することに。TimeMachineがやってるやり方ですね。

smb共有をマウントしてからSparse imageを又マウントする訳で、最初に開くまでえらく時間が掛かるんですが、iTunesでライブラリとしてSparse image内のディレクトリを指定しておくと、かってにsmb共有からマウント初めてくれるようです。

Sparse bandle imageとFinderのバグ?の罠

今時ならインクリメンタルバックアップ対応なSparse bandle imageでイメージファイル作成したいところですが、ここにFinder側?の罠が。

Sparse bandle imageで容量が増えてくると、bandsディレクトリ内のファイル数が膨大な数に増えていきます。

どうもね、macOSからsmb共有上にある1ディレクトリ数万件のディレクトリを開くと、smbの接続が強制的に切断されてしまいます。

Windows10からだとそんなことなかったので、どうにもmacOS(10.14.6/Mojave)側のバグ臭い。Catalinaだとどうなんでしょうね。使ってないから知らんけど。

で、Sparse bandle imageだとどうなるかというと…、

  • Finderからimageをダブルクリックして開こうとすると、マウント中にsmb共有が切断されて失敗する。(マウントできない)
  • バックアップしようとimageファイル自体をHDDなどにコピーしようとすると、コピー前にsmb共有が切断されて失敗する。(コピーできない)
  • ディスクユーティリティ.appからimageを開くとマウント出来る。
  • image内のファイルに張ったエイリアス経由でなら、問題なくマウントされる。
  • マウントさえ出来てしまえば、中のファイルアクセスには問題無さそう。

…と、こんな感じ。実用上は問題無さそうだけれども凄く気持ち悪い。

そんなわけでbandleじゃないSparse imageに。ZFSならブロック単位で変更点のスナップショット取ってくれるし。

案2-iSCSIを使う

まぁSparse imageでとりあえずは使えるんですが、ファイル共有の先のイメージファイル開いているもんだから「割と遅い」。

近頃のmacOSでは、互換性の高いafpを放り投げつつ、smbの対応も互換性は格下の扱い。そもそもAppleとしてネットワーク上のストレージどうしたいん?って考えてみると「ファイル共有」ではなくて、SANを使えってのが回答なのかと思い至る。

でもApple謹製のXsanだと個人で使うにはかなり敷居が高い。もっと手軽に…となるとiSCSIに行き着く。

これならOSから見れば、互換性の面ではローカルディスクと遜色ない。

iSCSIイニシエーター

macOS用で使えそうなのはこの二つ。フリーなのはiSCSIInitiatorなんですが、1年半くらい更新が無く、うちのMojaveにはエラーが出てインストールできませんでした。

ちょいお高いんですが、ちゃんとCatalinaまで対応してるglobalSANのを使いました。

GUIあって設定は簡単。

iSCSIターゲット

FreeBSDに付いてくるctld、ボリュームはいつものzfsで。

容量ケチりたいんで、zfs create -sVってして大きめにサイズ割り当てて見るも、後述のAPFS使うと台無し。

4TBの割当てして、2TB書込み>2TB消去>また2TB書込み…ってしようとしたら、zfs側の消費が4TBめい一杯まで増えてる感じ。

APFSではCoWみたいなことするから、APFS上に空き容量あっても読み書きしているうちにzfsの割当て使いきっちゃう様で…。

APFSのサイズ可変機能が便利

iSCSI上のボリュームはAPFSでフォーマットしました。なんでAPFSなのかというと、再フォーマット無しにパーティションサイズを可変できるから。

ディスクユーティリティ.appからはイマイチ操作しずらくコマンドラインのdiskutilの方が直感的に扱えるんですが、中身を維持したままリサイズ可能。十分な空き領域があるなら縮小も可能。

サーバー上の空き容量が心許ないので、いっぺんにiSCSI用に容量割当てするわけにも行かなかったんですが、これでNAS上のiSCSI領域割当てを使用状況に応じて可変出来ます。

そして結論

  • アプリのDB→iSCSI
  • ただのファイル→Samba(+vfs_fruit)
  • TimeMachine→Netatalk継続

こんな感じに

アプリのDB

iSCSIでちょびっとベンチマーク取ったら、Read系はかなり早いんですがランダムライトが異様に遅い。それと、ほぼ毎日macを持ち出してるんですが、その時のmount/unmountもちょっとやりにくい。

使い勝手の面から行くとSparse imageで行きたい所ですが…って、そうするつもりだったんですが、ちょっとUnmountせずにLAN切断しちゃったらSparse imageが吹っ飛んだ…。

それはもう、FirstAidで復旧も出来ずマウントすら出来ないくらい完膚なきまでに…。(壊れる直前のsnapshotあったから事なきを得ましたが…)

そういえばTimeMachineも、数ヶ月に1回くらいのペースで壊れてたんですよね。バックアップなので、またオリジナルから取り直せば良いや…と、余り深刻に考えていませんでしたが。

そんなわけで、アプリのライブラリ関係はiSCSIに。

ただのファイル

そして特に問題の出ない、ただのファイル置き場はSamba(+vfs_fruit)で。

ただね、4.10はまぁ問題なく動いてますが、4.11入れるとmacOSからのフォルダ単位のコピーが失敗したりとか。

具体的にはコピー終わってもフォルダが半透明表示のまま開けない。何かのメタデータ更新失敗している臭い?

追っかけるの面倒だったので、さっくり4.10に戻しました。

どうもこちらも予断を許さない模様。

TimeMachine

巷では「Sambaで置換え可」なんて言われてますが…、

初回作成はSambaから出来ないとか。(2回目以降はSambaからOK)
同じくハマりました。

FreeBSD限定かもしれませんが、ちょっと怖くてTimeMachineをSambaに移行出来ませんでした。


そんなわけでだいぶNetatalk依存減らせましたが、まだまだ全廃には至らず。

う〜ん。

カテゴリー: 未分類 | タグ: , | 1件のコメント

SMR方式という毒

NASのRAIDに入ってるHDDのうちの一つ、もう2年くらい前に買ったST6000DM003、こいつが今更ながらに瓦書き方式と言われるSMRだったということに今更に気付きました。

当時はSMRという言葉すら知らなくて、リビルドする時、異様に遅くて「え?」ってなったんですが、リビルド終わったらそのまま気にしてませんでした。

「普段使い」では殆ど気にならないんですが、ちょっとNASの中身を整理しようと1TBほどローカルHDDに吸い上げて、またNASへ書き戻し…ってやろうとしたら明らかに異常に遅いわけで。

どれくらい遅いかというと、通常30MB/sくらい出てたのがヒトケタMB/sあたりを不安定にふらふらする位の遅さ。しかも書込み中に、同じHDDを参照している他のサービスが次々とタイムアウトによるエラーが頻発。

リビルドは私の時はうまく終わったけれど、場合によってはリビルド中にタイムアウト起こして、そのままHDDのリンク切断、最悪の場合RAIDセット破損…とか。

そんなわけで、巷では「普通に使う分にはさして問題ない」ってやたら強調されているような気がするSMR方式のHDDですが「RAIDでは絶対に使ってはいけないHDD」なわけです。

SMR化を進めるHDDメーカー

安いデスクトップ用のHDDを買って、低い信頼性をRAIDである程度の補償する…っていうのが、コンシューマ的NASの使い方だったんですが、もうそれも出来なくなるわけです。

RAIDで使うなら、プレミア価格の高性能・高信頼HDDを買えと。

HDDメーカーとしては差別化できて願ったり叶ったりなんでしょうね。

カテゴリー: 未分類 | タグ: | コメントする

MY19TE250i現状

広いモトクロスコースなんかだとストックのままで違和感なかったんですが、狭いハード系で乗るとちょっと手強い感じでうまく扱えませんでした。

専用機(レーサー)なんで、あんまり弄る必要無い…と思ってたけれど、ちょっとずつの不満点に、ちょいちょいと手を入れた結果がこちら。

  • Fastwayリンクガード (12.7mmローダウン)
  • 純正ローシート(15mmローダウン)
  • スプリングレート変更 想定重量75~85kg→65kg~75kg
  • FACTORY EXPANSION CHAMBER
  • FMF-POWERCORE-2.1-SILENCER
  • ARC Composite power clutch lever

で、これだけ入れてみたら、自分にとっては良い感じに扱いやすいマシンに仕上がりました。

Fastwayリンクガード/純正ローシート

ローダウンも可能なリンクガード。ほぼガードとしての機能を期待して取付けましたけどね。

最初はリンクガードだけ変えて、ローダウンは12.7mmなんでオマケぐらいに思っていて、あんまり期待してなかったんですが、やっぱりこれだけだと殆ど違いが分からない感じ。

ローシートについては、前のイタリアンハスクの時にも入れていたんですが、ちょっとデメリットが目立っていた為、今のハスクでは最初は入れてませんでした。

なんせ、シートだけで-35mmっていう割と強烈なローシートだったのもあって、シートとステップの間で足が窮屈だったり、相対的にハンドルバーが高くなりすぎて操作しずらかったりとか。

しかし今回は15mmということもあって、ほぼデメリット皆無。リンクによるローダウンと合わせて、足つきが…というより、後述のスプリング変更と一緒に変えたから効果は絶大でバイクが小さくなった感触でした。

スプリングレート変更 想定重量75~85kg→65kg~75kg

外車の標準設定はライーダー重量75~85kgだそうで。

ウチが体重70kgくらいで、聞くところによると「装備込みで75kgくらいになるから標準のままで丁度良い」と言うんだけど、どうしてもそうは思えなくて。

思い切ってスプリングレート下げてみたところ今のところすごく良い感じ。

抽象的な表現でアレですが「なんだか大きなバイクを必死こいて操る」感じが「過不足無く丁度良いサイズ」って感じになりました。

スプリングレートの選定って、体重以外にも「どのくらいスピードを出すか」っていうのも有ると思うんですよね。

一方で、凄く巧い人に乗ってもらったら「なんか重い」の一言。確かに、ちょっと慣れてきたら、サスの動きのテンポが若干遅いかな…という気がしないでもない。

また、荒れた路面のストレート全開走行時に、ちょいフロントが振られやすくなりました。

ただエンデューロだと適度に「ぬるい」感じの方が疲れにくいというのも有りそうだし、リバウンド調整しながら、もうちょっと様子みたいと思います。

FACTORY EXPANSION CHAMBER/FMF-POWERCORE-2.1-SILENCER

“FMF”じゃない方のFactory Chamber。EXC-TPIには設定がないとか。MY17~MY19用。

これはもう「なんで最初から入れてくれなかったんだ!」と思うくらい、必須パーツだと思うんですよ。

ノーマルの特性だと、アクセル開け始めからトルクはあるけど、その上の回転数のトルクの立上がりと比較するとやや控えめ。

フロントアップやヒルクライムの助走など一瞬でアクセル開度決めないといけないとき、ウチにとっては開け足り無かったり開け過ぎたりで、なかなか馴染めなかったのがこれで解決。

レースパーツにありがちなピーキーとは真逆の特性で、極低回転からのモリモリトルク。それも全閉からの開け始めの所からして違う。アイドリング中にブリッピンしただけでもう反応が違うのが分かるレベル。

林道で良く使う「全閉〜ちょっと空け」の領域がむちゃくちゃ扱いやすくなり、ほぼ思った通りのトルクを出せるようになりました。

ARC Composite power clutch lever

フロントアップや半クラの強い味方。これも必須装備にして欲しい感じ。

いわゆるレバー比変更なんですが、油圧クラッチでありながら、レバーの遊びをギリギリまで追い込む調整機能付き。

おかげでレバー比をかなり柔らかい方に取っても、クラッチが切れない!っていうこともなく。

2st250ccのクラッチはやっぱり重いです。

カテゴリー: 未分類 | タグ: , | コメントする