====== RAID-Z Expansionがマージされてた&ファイル名の最大長拡張PRが出来てた ====== もはや旧聞に属する話だが、2023年11月9日のRAID-Z Expansionの[[https://github.com/openzfs/zfs/pull/15022|プルリク]]がついに[[https://github.com/openzfs/zfs/commit/5caeef02fa531238b4554afc977533382e43314f|masterにマージ]]されていた。[[blog:2017:2017-10-27|コンセプトが発表]]されてから足掛け7年、実に長かった。なかなかインパクトのある機能だし仕方ないか。関係者の皆様お疲れ様でございました。 とはいったものの、実際にリリースされて使えるようになるのは、まだ先と思われる。リリース時期に関する最新情報は見つけられなかったのだけど、[[https://docs.google.com/presentation/d/1xSVYa7F4UGgMtLdyzbeUktJIlwtrPBMPIJvGFYjx3Vc/edit#slide=id.g1004023a012_0_4|2021年時点のロードマップ]]ではOpenZFS 3.0で対応予定となっている。どんなに早くても2.3かなー?と思いつつ、どちらのバージョンのブランチもまだ存在しないのが現状。 加えてFreeBSDで使うには、ベースシステムに取り込まれるのを待たなきゃならんわけで、1年以上先なんじゃね?という気がしなくもない(まぁportsから入れればいいんだけども)。首を長くして待ちましょー ついでにプルリク一覧を眺めていたら、ファイル名/ディレクトリ名の最大長を1023バイトに拡張する新しい機能フラグの実装があった⇒[[https://github.com/openzfs/zfs/pull/15921|Longname: files/directories name upto 1023 bytes by tuxoko · Pull Request #15921 · openzfs/zfs]] ZFSのファイル名/ディレクトリ名の最大長は255バイトとされているが、これは''FILE_MAX''だか''PATH_MAX''定数由来の制約らしい。これはUNIX系のファイルシステムにおける典型的な最大長で、通常はほとんど困らないサイズである。 ところが、ファイル名の文字コードとしてUTF-8を使うと話が変わってくる。UTF-8では1文字あたりのバイト数が1~4バイトと可変なので、ワーストケースで63文字しか格納できない。日本語の文字種はおおむね3バイトになるため、85文字で打ち止めとなる。 これでもFreeBSD、Linux単体で使う分にはさほど問題にならないと思うが、Windowsとファイル共有するとだいぶ困ったことになる。 というのもWindows (NTFS)の最大長はUTF-16で255**文字**((260文字という話もある。さらに近年は32768文字に拡張された))なので、ZFSの255**バイト**では全然足りんのです。 まぁ、日常的に85文字を超えるファイル名を使うことは、少なくとも自分は無いけれど、それでも1年に2~3回くらいは困る場面があるんだよね… 上記PRとは別に(?)[[https://github.com/openzfs/zfs/issues/13043|最大長拡張の議論]]もなされており、開発のコアメンバーも認識はしている模様。互換性はどうなるんだとか、最大255文字で決め打ちしてるアプリで扱おうとした時にどうなるんだとか、色々気になる点はあるが、是非とも実現されてほしいところ。 ===== 参考サイト ===== * [[https://github.com/openzfs/zfs/pull/15921|Longname: files/directories name upto 1023 bytes by tuxoko · Pull Request #15921 · openzfs/zfs]] * [[https://github.com/openzfs/zfs/issues/13043|Allow maximum file name length to be increased · Issue #13043 · openzfs/zfs]]