man ntfs-3g
big_writes
マウントオプションが良いように見えます。
big_writes
This option prevents fuse from splitting write buffers into 4K
chunks, enabling big write buffers to be transferred from the
application in a single step (up to some system limit, generally
128K bytes).
記載されている欠点はありません。いつインストールを避けたいですか big_writes
?
答え1
本当に良い質問ですね。私がここで見たところによると、おそらく欠点はありません。
big_writes
2008年当時、まず、FUSEに追加してください。ミクロスはこう言いました。
2.6.26以前は、統合は単一ページ書き込み要求のみをサポートしていました。理論的には、すべてのサーキットブレーカファイルシステムは4kを超える書き込みをサポートできる必要があります。これを防ぐAPIには何もないからです。 残念ながら、NTFS-3Gには、親書き込み操作によってファイルシステムが破損する可能性がある既知の状況があります。 大規模な書き込み要求のテストが不足しているため、エラーが発生する可能性がある他のファイルシステムもあります。
カーネルのアップグレード時にこの問題を回避するには、デフォルトで大文字の操作を無効にし、ファイルシステムでそれを有効にするフラグを設定します。
特定の問題はNTFS-3Gに次param.h
のように文書化されています。
/* * Use of big write buffers * * With small volumes, the cluster allocator may fail to allocate * enough clusters when the volume is nearly full. At most a run * can be allocated per bitmap chunk. So, there is a danger when the * number of chunks (capacity/(32768*clsiz)) is less than the number * of clusters in the biggest write buffer (131072/clsiz). Hence * a safe minimal capacity is 4GB */ #define SAFE_CAPACITY_FOR_BIG_WRITES 0x100000000LL
現在、big_writesを要求する前にfs容量が少なくとも4 GBであることを確認して、この制限を防ぎます。だから安全です。
実はトゥッセラ開いてみることをお勧めします。NTFS-3GがCPUを多用する場合:
回避策:書き込みを要求するソフトウェアが大きなブロックをサポートしている場合は、マウントオプション "big_writes"を使用すると通常CPU使用率が低下します。
未来
~からlibfuse 3.0.0(2016)big_writes
常にオン:
インストール
-o big_writes
オプションが削除されました。今は常にアクティブです。書き込み要求のサイズを制限するファイルシステムでは、この-o max_write=<N>
オプションを使用する必要があります。犯罪
しかし、libfuse3はまったく新しい世代であり、ntfs-3gはそれに対するビルドをまったくサポートしていません。誤って新しい1MiB書き込みバッファ(libfuse 3.6.0)をntfs-3gの内部ミニlibfuse2にバックポートしました。これを使用するには、ここからインポートできます。
- https://github.com/AOSC-Dev/ntfs-3g/commit/96f6fbedaf7aad70b4a4c39d8dd4a637a63beec1
- https://github.com/AOSC-Dev/ntfs-3g/commit/6aa576ae2a13fb636bff65bcb2701e731d2f5a94
はい、書き込みサイズ/ボリュームサイズ制限をリファクタリングしたことを覚えています。はい、最新のRyzenでも大容量ファイルの書き込みが高速です。
PS:ntfs-3gにlibfuse3サポートを追加する予定ですが、実際の締め切りはありません。 Tuxeraは明らかにそのような変化に興味がなく、フォークに名前を付けることは私に少し過度です。