F2FS

F2FS
開発者サムスン電子モトローラ・モビリティファーウェイグーグル
フルネームフラッシュフレンドリーなファイルシステム
紹介されたv3.8、2012年12月20日[ 1 ] Linux
構造
ディレクトリの内容多段ハッシュテーブル
ファイルの割り当てビットマップ(空き領域)、テーブル
起動可能はい、GRUB 2.04(2019-07-05)以降です。
制限
最大ボリュームサイズ4Kブロックで16TB 、16Kブロックで64TB [ 2 ]
最大ファイルサイズ4Kブロックで3.94TB 、16Kブロックで16TB [ 3 ]
最大ファイルボリュームサイズによって異なります
ファイル名の最大長255バイト[ 4 ]
特徴
記録された日付変更 (mtime)、属性変更 (ctime)、アクセス (atime)
日付解決1ナノ秒
属性POSIX、拡張属性
ファイルシステムの権限POSIX、ACL
透過的な圧縮LZO、LZ4(Linux 5.6以降)[ 5 ] zstd(Linux 5.7以降)[ 6 ]
透過的な暗号化はい
他の
サポートされているオペレーティングシステムLinuxAndroid
Webサイトwww .kernel .org /doc /html /latest /filesystems /f2fs .html

F2FSフラッシュフレンドリーファイルシステム)は、当初はSamsung ElectronicsLinuxカーネル用に開発したフラッシュファイルシステムである。[ 7 ]

F2FS の目的は、モバイル デバイスからサーバーに至るまでのコンピュータ システムで広く使用されているNAND フラッシュ メモリベースのストレージ デバイス (ソリッド ステート ディスクeMMCSDカードなど)の特性を最初から考慮したファイル システムを構築することでした。

F2FSは、新しいストレージ形式に適応したログ構造ファイルシステムアプローチに基づいて設計されました。F2FSの主要開発者であるJaegeuk Kim氏は、F2FSは、ワンダリングツリースノーボール効果や高いクリーニングオーバーヘッドなど、古いログ構造ファイルシステムの既知の問題[ 7 ]を改善していると述べています。さらに、NANDベースのストレージデバイスは、内部ジオメトリやフラッシュメモリ管理方式(フラッシュ変換層(FTL)など)によって異なる特性を示すため、ディスク上のレイアウト設定だけでなく、割り当てやクリーニングアルゴリズムの選択など、さまざまなパラメータをサポートしています。

特徴

デザイン

ディスク上のレイアウト

F2FSはボリューム全体を複数のセグメントに分割し、各セグメントのサイズは2MBに固定されています。セクションは連続したセグメントで構成され、ゾーンは複数のセクションの集合で構成されます。デフォルトでは、セクションとゾーンのサイズは同じに設定されていますが、ユーザーは を使って簡単にサイズを変更できますmkfs

F2FS はボリューム全体を 6 つの領域に分割し、スーパーブロック領域を除くすべての領域は、以下に示すように複数のセグメントで構成されます。

スーパーブロック(SB)
SBはパーティションの先頭に位置します。ファイルシステムの破損を防ぐため、2つのコピーが存在します。SBには、基本的なパーティション情報といくつかのデフォルトのF2FSパラメータが含まれています。
チェックポイント(CP)
CP には、ファイル システム情報、有効な NAT/SIT セットのビットマップ、孤立した inode リスト、および現在アクティブなセグメントの概要エントリが含まれています。
セグメント情報テーブル(SIT)
SIT には、すべてのメイン エリア ブロックの有効なブロック数と有効性ビットマップが含まれています。
ノードアドレステーブル(NAT)
NAT は、メイン エリア ノード ブロックのアドレス テーブルです。
セグメントサマリーエリア(SSA)
SSA には、メイン エリア データとノード ブロックの所有者情報を含むエントリが含まれています。
メインエリア
メイン領域には、ファイルとディレクトリのデータとそのインデックスが含まれます。

ファイルシステムとフラッシュストレージ間の不整合を回避するため、F2FSはCPの開始ブロックアドレスをセグメントサイズに揃えます。また、SSA領域の一部のセグメントを予約することで、メインエリアの開始ブロックアドレスをゾーンサイズに揃えます。

メタデータ構造

F2FSは、ファイルシステムの整合性を維持するためにチェックポイント方式を使用します。マウント時に、F2FSはまずCP領域をスキャンして、有効な最後のチェックポイントデータを見つけようとします。スキャン時間を短縮するために、F2FSはCPのコピーを2つだけ使用します。そのうちの1つは常に有効な最後のデータを示し、これはシャドウコピー機構と呼ばれます。CPに加えて、NATとSITもシャドウコピー機構を使用します。ファイルシステムの整合性を保つために、各CPは有効なNATおよびSITコピーを指します。

インデックス構造

鍵となるデータ構造は「ノード」です。従来のファイル構造と同様に、F2FSには3種類のノード(inode、直接ノード、間接ノード)があります。F2FSは4KBの領域をinodeブロックに割り当て、その中には923個のデータブロックインデックス、2個の直接ノードポインタ、2個の間接ノードポインタ、そして1個の二重間接ノードポインタが含まれます(詳細は後述)。直接ノードブロックには1018個のデータブロックインデックスが含まれ、間接ノードブロックには1018個のノードブロックインデックスが含まれます。したがって、1つのinodeブロック(つまり、1つのファイル)は以下の領域をカバーします。

4 KiB × (923 + 2×1018 + 2×1018 2 + 1018 3 ) = 4,228,213,756 KiB = 4,129,114.996 MiB = 4,032.338863 GiB = 3.937830921 TiB 

すべてのノードブロックはNATによってマッピングされます。つまり、各ノードの位置はNATによって変換されます。F2FSは、ワンダリングツリー問題を軽減するために、リーフデータの書き込みによるノード更新の伝播を遮断することができます。

ディレクトリ構造

ディレクトリ エントリ (dentry) は 11 バイトを占め、次の属性で構成されます。

ディレクトリエントリ構造
ハッシュ ファイル名のハッシュ値
イノ iノード番号
レン ファイル名の長さ
タイプ ディレクトリ、シンボリックリンクなどのファイルの種類。

dentryブロックは214個のdentryスロットとファイル名で構成されます。各dentryが有効かどうかはビットマップで表されます。dentryブロックは4KBの領域を占有し、以下の構成となります。

デントリーブロック(4K)=ビットマップ(27バイト) + 予約済み(3バイト) + dentry (11 * 214 バイト) + ファイル名(8 * 214バイト) 

F2FSはディレクトリ構造に多階層ハッシュテーブルを実装しています。各階層には、以下に示すように、指定された数のハッシュバケットを持つハッシュテーブルがあります。「A(2B)」は、バケットに2つのデータブロックが含まれることを意味します。

学期
Aはバケットを示す
Bはブロックを示す
NはMAX_DIR_HASH_DEPTHを示します
レベル #0 A(2B) レベル #1 A(2B) - A(2B) レベル #2 A(2B) - A(2B) - A(2B) - A(2B) ... レベル #N/2 A(2B) - A(2B) - A(2B) - A(2B) - A(2B) - ... - A(2B) ... レベル #NA(4B) - A(4B) - A(4B) - A(4B) - A(4B) - ... - A(4B) 

F2FS がディレクトリ内のファイル名を見つけると、まずそのファイル名のハッシュ値が計算されます。次に、F2FS はレベル #0 のハッシュテーブルをスキャンし、ファイル名とその inode 番号からなる dentry を探します。見つからない場合、F2FS は次のレベル #1 のハッシュテーブルをスキャンします。このように、F2FS は各レベルのハッシュテーブルを 1 からNまで段階的にスキャンします。各レベルにおいて、F2FS は次の式で決定される 1 つのバケットのみをスキャンする必要があり、これは O(log(ファイル数)) の計算量となります。

レベル #n でスキャンするバケット番号 = (ハッシュ値) % (レベル #n のバケット数) 

ファイル作成の場合、F2FSはファイル名をカバーする連続する空のスロットを探します。F2FSは、ルックアップ操作と同様に、 1からNまでの全レベルのハッシュテーブルで空のスロットを検索します。

デフォルトのブロック割り当て

実行時に、F2FS は「メイン エリア」内の 6 つのアクティブ ログ (Hot/Warm/Cold ノードと Hot/Warm/Cold データ) を管理します。

ブロック割り当てポリシー
ホットノード ディレクトリの直接ノード ブロックが含まれます。
ウォームノード ホット ノード ブロックを除く直接ノード ブロックが含まれます。
コールドノード 間接ノード ブロックが含まれます。
ホットデータ dentry ブロックが含まれます。
ウォームデータ ホット データ ブロックとコールド データ ブロックを除くデータ ブロックが含まれます。
コールドデータ マルチメディア データまたは移行されたデータ ブロックが含まれます。

LFSには、空き領域管理のための2つの方式、スレッドログ方式とコピー&コンパクション方式があります。コピー&コンパクション方式はクリーニングとも呼ばれ、空きセグメントが常に新しいデータの書き込みに利用されるため、シーケンシャル書き込み性能が非常に高いデバイスに適しています。ただし、使用率が高い場合、クリーニングのオーバーヘッドが発生します。一方、スレッドログ方式はランダム書き込みのオーバーヘッドが発生しますが、クリーニングプロセスは必要ありません。F2FSは、コピー&コンパクション方式をデフォルトで採用し、ファイルシステムの状態に応じてポリシーをスレッドログ方式に動的に変更するハイブリッド方式を採用しています。

F2FSを基盤となるフラッシュベースのストレージと整合させるため、F2FSはセクション単位でセグメントを割り当てます。F2FSでは、セクションサイズがFTLのガベージコレクションユニットサイズと同じであると想定しています。FTLのマッピング粒度を考慮して、F2FSはアクティブログの各セクションを可能な限り多くの異なるゾーンに割り当てます。FTLは、マッピング粒度に応じて、アクティブログデータを1つの割り当て単位に書き込むことができます。

洗浄プロセス

F2FSはオンデマンドとバックグラウンドの両方でクリーニングを実行します。オンデマンドクリーニングは、VFS呼び出しを処理するのに十分な空きセグメントがない場合に実行されます。バックグラウンドクリーナーはカーネルスレッドによって実行され、システムがアイドル状態のときにクリーニングジョブをトリガーします。

F2FSは、貪欲アルゴリズムとコストベネフィットアルゴリズムという2つの犠牲セグメント選択ポリシーをサポートしています。貪欲アルゴリズムでは、F2FSは有効なブロック数が最も少ない犠牲セグメントを選択します。コストベネフィットアルゴリズムでは、貪欲アルゴリズムに存在するログブロックスラッシング問題に対処するため、セグメントの経過時間と有効なブロック数に基づいて犠牲セグメントを選択します。F2FSはオンデマンドクリーニングに貪欲アルゴリズムを使用し、バックグラウンドクリーナーではコストベネフィットアルゴリズムを使用します。

F2FSは、ビクティムセグメントのデータが有効かどうかを識別するためにビットマップを管理します。各ビットはブロックの有効性を表し、ビットマップはメインエリアのブロック全体をカバーするビットストリームで構成されています。

採択

携帯電話メーカー

Googleは2014年に Nexus 9で初めてF2FSを採用しました。[ 19 ]しかし、Googleの他の製品では、Pixel 3でF2FSがインライン暗号化ハードウェアサポートで更新される までF2FSは採用されませんでした。 [ 20 ]

Huaweiは2016年の Huawei P9からF2FSを採用している。[ 21 ] [ 22 ] OnePlusはOnePlus 3TでF2FSを採用している。[ 23 ]

Motorola Mobilityは、 2012年からMoto G/E/XおよびDroidスマートフォンでF2FSを使用しています。

ZTEは2019年のZTE Axon 10 ProからF2FSを採用している。 [ 24 ]

Linuxディストリビューション

F2FSは2012年後半にLinuxカーネルに統合されました。[ 25 ]多数のディストリビューションがこれをサポートしています。[ 26 ] [ 27 ] [ 28 ]

詳細な機能の説明

機能名説明カーネルバージョンF2FSツールのバージョンカーネルコミットF2FSツールコミット
親の inode 番号 (pino) ビットが失われました ファイルがリンクされている場合、F2FSは親inode番号を失う可能性があり、リンクされたファイルに対するfsync呼び出しは毎回チェックポイントを実行する必要があります。しかし、チェックポイント後にpinoを回復できる場合は、以降のfsync呼び出しのロールフォワードメカニズムを調整できるため、fsyncのパフォーマンスが大幅に向上します。3.11該当なし354a3399dc6f ("f2fs: fsync 中にチェックポイント後に間違った pino を回復する")該当なし
インライン拡張属性 マウント オプション inline_xattr を追加します。これは、xattr が設定されている場合に有効になります。マウント オプションが有効になっている場合、すべてのファイルに inline_xattrs フラグが付けられます。3.121.2.0444c580f7e9a ("f2fs: インライン xattr のフラグを追加")cd1e470 ("fsck、lib: インライン xattr をサポート")
インラインデータ inline_data マウント オプションを介して、通常の inode/symlink inode 内のインライン データをサポートします。3.141.3.01001b3479ce9 ("f2fs: インラインデータのサポートにフラグとヘルパーを追加")061ee67 ("f2fs-tools: インラインデータチェックを追加")
大きなディレクトリ ルックアップ パフォーマンスのチューニングのために大規模なディレクトリの構造を調整するパラメータを追加します。3.151.4.03843154598a0 ("f2fs: 大規模ディレクトリのサポートを導入")99250ec ("mkfs: 大きなディレクトリをサポート")
大容量 約 3TB を超える大容量ボリュームをサポートします。3.161.4.01dbe4152168d ("f2fs: 大容量ボリュームのサポート")092e3d9 ("mkfs.f2fs: 大容量ボリュームのサポート")
Fsckフラグ 後で fsck.f2fs を実行するためにスーパーブロックに「need fsck」フラグを追加します。このフラグは fsck.f2fs によってのみ削除できます。3.181.4.02ae4c673e3cb ("f2fs: fsck.f2fs を開始するために不整合情報を保持します")7eb6c5a ("fsck.f2fs: auto_fix 機能を追加")
ファストブートフラグ 突然の電源オフ後の起動を高速化するために、チェックポイント書き込みノード サマリーを許可します。3.21.4.1119ee9144534 ("f2fs: UMOUNT と FASTBOOT フラグを分割")b57708a ("dump.f2fs: チェックポイントフラグを表示")
インラインデータ(修正) inline_data 機能の安定性を向上します (ディスク レイアウトを変更します)。3.191.4.1b3d208f96d6b ("f2fs: データ競合と潜在的なバグを回避するために inline_data を再検討する")7279f03 ("fsck.f2fs: 古いパーティションの DATA_EXIST フラグを修正")
インラインdentry ディレクトリ inode へのディレクトリ エントリの保存をサポートします。3.191.4.134d67debe02b ("f2fs: インラインディレクトリ用のインフラストラクチャとヘルパーを追加")6d88640 ("fsck.f2fs: inline_dentry をサポート")
バージョン情報 fsck で更新された現在のカーネル バージョンを保存します。4.21.4.10040b933187b ("f2fs: スーパーブロックに不足しているバージョン情報を追加")6fa2547 ("fsck.f2fs: 新しい変更が行われたときに fsck.f2fs をトリガーする")
初期バージョン情報 フォーマットが実行されたときの Linux カーネルのバージョンを識別します。4.21.4.10040b933187b ("f2fs: スーパーブロックに不足しているバージョン情報を追加")762eedf ("mkfs.f2fs: 初期フォーマット用のカーネルバージョンを指定する")
サイズビットを維持 ロールフォワードリカバリ中に、fallocateで事前割り当てられたファイルサイズが変更されないようにします。ファイルのi_sizeをfallocateによって設定された値に維持する必要がある場合は、ロールフォワードリカバリ中に自動リカバリをオフにする必要があります。4.1該当なし26787236b366 ("f2fs: fallocated i_size の auto_recovery をアクティブ化しない")該当なし
インラインドット '.' または '..' dentry を持たないディレクトリを修正するサポート。ディスクレイアウトが変更されます。4.11.5.0510022a85839 ("f2fs: 欠落したドット デントリーを回復するために F2FS_INLINE_DOTS を追加")f1e4f9c ("fsck.f2fs: 不足しているデントリーを修正")
暗号化 ファイルシステム レベルの暗号化のサポートを有効にします。4.21.5.0cde4de120577 ("f2fs 暗号化: f2fs 暗号化機能のいくつかの定義を宣言する")6e6c713 ("mkfs.f2fs: 暗号化機能を設定する")
ブロックゾーン ブロックゾーン機能をサポートするには、F2FSファイルシステムを指定します。これは複数デバイスの機能に依存します。4.81.7.052763a4b7a21 ("f2fs: 機能フラグでホスト管理SMRを検出する")70a8fc3 ("mkfs/fsck: ホスト管理の smr 機能を追加")
複数のデバイス 複数の物理ストレージデバイスを単一の論理ボリュームとして扱うためのサポートを有効にする4.11.8.03c62be17d4f5 ("f2fs: 複数のデバイスをサポート")de7e07e ("f2fs-tools: 複数のデバイスをサポート")
トリムされた旗 破棄されたブロックの処理を最適化します。このフラグ(CP_TRIMMED_FLAG)により、F2FSカーネルモジュールは、アンマウント前にすべての無効なブロックがトリムされたことを記録し、次回のマウント時にこれらの操作をスキップできるようになります。4.121.9.01f43e2ad7bff ("f2fs: 不要な破棄を避けるために CP_TRIMMED_FLAG を導入")f642b24 ("f2fs-tools: CP_TRIMMED_FLAG の設定と認識をサポート")
NATビット 使用済み/空きの nid エントリをすべて含む空/完全な NAT ブロックを表すビットマップを追加して、NAT ブロックの管理を最適化します。4.111.9.022ad0b6ab466 ("f2fs: 空または満杯の NAT ブロックにビットマップを追加")191573e ("mkfs.f2fs: nat_bits 機能をサポート")
CRC回復 ロールフォワードリカバリ時に、チェックポイントバージョンに加えてCRCを使用します。これにより、どのバージョンのファイルをリカバリするかをより堅牢かつ確実に判断できるようになります。新しいメカニズムが使用されることを示す新しいフラグ(CP_CRC_RECOVERY_FLAG)を導入しました。4.91.9.0a468f0ef516f ("f2fs: ロールフォワードリカバリを決定するためにCRCとCPバージョンを使用する")a0bd5b9 ("f2fs-tools: 最新のチェックポイントフラグをキャッチアップ")
アトミック書き込み アトミック書き込み機能。この機能はディスク レイアウトを変更しません。4.141.9.0e65ef20781cb ("f2fs: 現在の機能を公開するための ioctl を追加")8721519 ("f2fs-tools: atomic_write 機能フラグを追加")
追加属性 他の機能の一部に必要な追加属性機能を有効にします (以下を参照)。4.141.9.07a2af766af15 ("f2fs: ディスク上のinode構造のスケーラビリティを強化")dad33a1 ("f2fs-tools: ディスク上のinode構造のスケーラビリティを強化")
プロジェクト割り当て プロジェクトクォータ計算のためのプロジェクトID追跡を有効にします。追加の属性を使用します。4.141.9.05c57132eaf52 ("f2fs: サポートプロジェクトクォータ")a3d9db1 ("f2fs-tools: サポートプロジェクトクォータ")
inodeチェックサム inode チェックサムを有効にします。追加の属性を使用します。4.141.9.0704956ecf5bc ("f2fs: inode チェックサムをサポート")7457726 ("f2fs-tools: inode チェックサムをサポート")
Nocrc回復 チェックポイント バージョンのみに依存するチェックポイント回復プロセス中の CRC の使用を無効にします。4.161.10.0f236792311f4 ("f2fs: 更新されたチェックポイントに基づいてノードブロックを回復できるようにする")f789444 ("fsck.f2fs: 小さなチェックポイントの修正のためにロールフォワードを許可する")
柔軟なインライン xattr 柔軟なインライン xattr サイズを有効にします。追加の属性を使用します。4.151.10.06afc662e68b5 ("f2fs: 柔軟なインライン xattr サイズをサポート")8d46072 ("f2fs-tools: 柔軟なインライン xattr サイズをサポート")
クォータ sysfile クォータ機能を有効にします (これにより、F2FS はディスク クォータ データ記録用の内部 sysfile を維持できるようになります)。4.151.10.0234a96896142 ("f2fs: インフラに quota_ino 機能を追加")23a872f ("mkfs.f2fs: mkfs のクォータオプションをサポート")
ピンファイル 物理データ ブロックの移行を回避するために pinfile をサポートします。4.161.12.01ad71a27124c ("f2fs: 特定のファイルのGCを無効にするioctlを追加")「91bb7b2 (""f2fs-tools: i_gc_failures をオフラインでリセットするように修正"") 820b5e3 (""sload.f2fs: IMMUTABLE ビットの代わりに F2FS_COMPRESS_RELEASED を使用する"") は、使用されていない F2FS_PIN_FILE フラグを追加しました。」
inode作成時間 inode 作成時間機能を有効にします。追加の属性が必要です。4.161.10.01c1d35df7110 ("f2fs: inode 作成時間のサポート")4862080 ("f2fs-tools: inode 作成時間のサポート")
拡張ノードビットマップ 拡張ノード ビットマップを有効にして、ノード ブロック数の上限制限を増やします。4.171.11.0199bc3fef29c ("f2fs: 大きな NAT ビットマップをサポート")baaa076 ("mkfs.f2fs: NAT ビットマップのスケーラビリティを拡張")
人気のファイル拡張子 F2FSがホットファイルとして扱うファイル拡張子のリストを指定できます。これらの拡張子を持つファイルのデータはホットログに保存されます。4.171.11.0b6a06cbbb5f7 ("f2fs: ホットファイル拡張子をサポート")6fdc37f ("mkfs.f2fs: ホットファイル拡張子をサポート")
紛失物 紛失・拾得機能を有効にします。4.171.11.0b7c409deda6b ("f2fs: F2FS_FEATURE_LOST_FOUND 機能を導入")ff37829 ("mkfs.f2fs: 失われた+見つかったディレクトリを作成")
fs-verity verity で保護されたファイル (別名 fs-verity) のサポートを有効にします。5.41.11.095ae251fe828 ("f2fs: fs-verity サポートを追加")76cd377 ("mkfs.f2fs: fsverity 機能をサポート")
チェックポイント無効化フラグ チェックポイントが無効であることを示します。4.21.12.04354994f097d ("f2fs: チェックポイントの無効化")a48bda0 ("fsck.f2fs: チェックポイントのサポート=無効")
クォータにはfsckが必要です -EIO または -ENOSPC が原因でクォータ操作が失敗したことを示すグローバル状態 SBI_QUOTA_NEED_REPAIR を追加します。これにより、後で、a) チェックポイントは dquot メタデータの同期をスキップします。b ) CP_QUOTA_NEED_FSCK_FLAG が最後の cp パックに設定され、fsck 修復のヒントが提供されます。4.21.12.0af033b2aa8a8 ("f2fs: チェックポイントによってジャーナル化されたクォータデータを保証する")dfede78 ("fsck.f2fs: 破損したクォータファイルの検出と回復")
スーパーブロックチェックサム スーパーブロックのチェックサムを有効にします。4.21.12.0d440c52d3151 ("f2fs: スーパーブロックチェックサムをサポート")886a924 ("f2fs-tools: sbチェックサムを導入")
チェックポイントを素早く無効化 チェックポイントを無効にする簡単な方法を追加します。5.1該当なしdb610a640eee ("f2fs: QA 用にチェックポイントのクイックモードを無効にする" を追加)該当なし
ケースフォールディング ファイルシステムで大文字小文字変換のサポートを有効にします。オプションのフラグは -C で渡すことができます。5.41.13.05aba54302a46 ("f2fs: スーパーブロックに文字セットエンコーディング情報を含める")ce64ea0 ("f2fs-tools: Casefolding のサポートを追加")
圧縮 ファイルシステムレベルの圧縮のサポートを有効にします。追加の属性が必要です。5.61.14.04c8ff7095bef ("f2fs: データ圧縮をサポート")fdd47b2 ("f2fs-tools: データ圧縮をサポート")
FSフラグのサイズ変更 fsck がオンライン サイズ変更に関連する問題を修正できるように、新しいチェックポイント フラグ CP_RESIZEFS_FLAG を導入しました。5.71.14.0c84ef3c5e65c ("f2fs: fsck が SPO のサイズ変更の問題を修正できるように新しい CP フラグを追加")9a31cef ("fsck.f2fs: fsck が SPO によるオンラインサイズ変更の問題を修正できるようにする")
圧縮(修正) この変更により、解放された圧縮ブロックの状態を表す新しいフラグ(F2FS_COMPRESS_RELEASED)が導入されます。以前はIMMUTABLEビットによって解放されたブロックに対するすべての操作が阻止されていました。5.141.15.0c61404153eb6 ("f2fs: IMMUTABLE ビットを使用する代わりに FI_COMPRESS_RELEASED を導入する")820b5e3 ("sload.f2fs: IMMUTABLE ビットの代わりに F2FS_COMPRESS_RELEASED を使用する")
読み取り専用画像 読み取り専用機能を有効にして、小さな読み取り専用パーティションの OVP/SSA オンディスク レイアウトを排除します。5.141.15.0a7d9fe3c3388 ("f2fs: RO機能をサポート")1d2683f ("f2fs-tools: 小さな RO パーティションをサポート")
トランクビット Direct IO(DIO)は、実際のデータを書き込む前に物理ブロックを事前割り当てしますが、エラーが発生したり電源が切れたりすると、書き込まれていないブロックの内容にユーザーがアクセスできてしまいます。このパッチは、1) DIO の書き込みをホールへのバッファリングに変更する、2) エラーや電源切れによる書き込まれていないブロックを切り捨てる、という方法でこれを修正します。5.17該当なしd4dd19ec1ea0 ("f2fs: DIO によって書き込まれていないブロックをユーザーに公開しない")該当なし
CPエラー記録 詳細な停止チェックポイント エラーを f2fs_super_block.s_stop_reason[] に記録することをサポートします。6.11.16.0a9cfee0ef98e ("f2fs: stop_checkpoint の理由を super_block に記録することをサポート")2f1dde2 ("fsck.f2fs: ファイルシステムが強制的に停止された場合は修復をトリガーする")
FSエラー記録 FSCORRUPTED エラーの詳細な理由を f2fs_super_block.s_errors[] に記録することをサポートします。6.11.16.095fa90c9e5a7 ("f2fs: スーパーブロックへのエラー記録をサポート")8cbe34e ("fsck.f2fs: ファイルシステムに不整合エラーがある場合に修復をトリガーする")
16KBブロックのサポート 16Kブロックサイズをサポート。mkfsは-bオプションでブロックサイズを選択できます。他のツールはスーパーブロックからブロックサイズを取得します。カーネルは現在、システムページサイズと同じブロックサイズのみをサポートしており、4Kカーネルは16Kブロックサイズのf2fsファイルシステムをマウントできず、その逆も同様です。6.7まだリリースされていませんd7e9a9037de2 ("f2fs: サポートブロックサイズ == ページサイズ")50fd00b ("f2fs-tools: 異なるブロックサイズをサポートする") c404632 ("f2fs-tools: f2fs_dentry_block 構造体をリファクタリングする")

ef47782 ("f2fs-tools: サマリーブロック構造体とその関連をリファクタリング") bb051c7 ("f2fs-tools: SIT/NAT ブロック構造体をリファクタリング") 32f5a37 ("f2fs-tools: f2fs_node 構造体とその関連をリファクタリング") b1aeb99 ("f2fs-tools: 孤立ブロック構造体をリファクタリング") 30825b3 ("f2fs-tools: BLKSIZE に基づいて定数を定義")

デバイスエイリアス デバイスのエイリアシング機能を有効にします。6.13まだリリースされていません128d333f0dff ("f2fs: デバイスエイリアシングファイルの導入")8cc4e25 ("mkfs.f2fs: デバイスのエイリアス機能を追加")

参照

参考文献

  1. ^ Michael Larabel (2012年12月22日). 「F2FSファイルシステムがLinux 3.8カーネルに統合」 . Phoronix . 2016年5月25日閲覧
  2. ^牛志国 (2024-04-26). "f2fs: いくつかのあいまいなコメントを修正"
  3. ^ Daniel Rosenberg (2023-12-04). 「f2fs: 16K f2fs の最大ファイルサイズを制限する」 .
  4. ^ Jaegeuk Kim (2013-03-18). 「f2fs: f2fs の最大名前長を Linux ベースのファイルシステムに合わせる」 . GitHub . 2023年5月16日閲覧。
  5. ^ a b Michael Larabel (2019年12月23日). 「LZO/LZ4 + 選択的なファイル拡張子処理を使用したF2FSデータ圧縮が2020年に登場」 . Phoronix . 2020年4月7日閲覧
  6. ^ a b Michael Larabel (2020年4月7日). 「F2FSがLinux 5.7カーネルでZstd圧縮サポートを導入」 . Phoronix . 2020年4月7日閲覧
  7. ^ a b Jaegeuk Kim (2012年10月5日). 「f2fs: フラッシュフレンドリーなファイルシステムの導入」 . 2016年5月25日閲覧
  8. ^ Jaegeuk Kim (2014年9月22日). 「f2fs: f2fs_ioctlにFITRIMを導入」 . Linuxカーネルメーリングリスト(メーリングリスト) . 2025年1月2日閲覧
  9. ^ Chao Yu (2015-10-26). 「f2fs: ファイルのデフラグをサポート」 .
  10. ^ Jaegeuk Kim (2013-08-26). 「f2fs: インラインxattr用のフラグを追加」 .
  11. ^ Huajun Li (2013-11-10). 「f2fs: f2fsのインラインデータサポートを有効にする」 .
  12. ^ Chao Yu (2014-09-24). 「f2fs: インラインディレクトリのサポート」 .
  13. ^ Jaegeuk Kim (2014年9月20日). 「f2fs-tools: リリース 1.4.0」 .
  14. ^ Jaegeuk Kim (2014-09-25). 「f2fs: データベースのatomic_write機能をサポート」 .
  15. ^ Jaegeuk Kim (2015-06-24). 「f2fs アップデート v4.2」 .
  16. ^ Jaegeuk Kim (2016-04-25). 「resize.f2fs: パーティションサイズの拡張をサポート」 .
  17. ^ Chao Yu (2015-12-17). 「f2fs: バックグラウンドでのデータフラッシュをサポート」 .
  18. ^ Chao Yu (2015-01-25). 「f2fs: RBツリーエクステントキャッシュを有効にする」 .
  19. ^ Ho, Joshua; Smith, Ryan. 「Google Nexus 9レビュー」 www.anandtech.com . 2015年2月6日時点のオリジナルよりアーカイブ。 2019年5月10日閲覧
  20. ^ Frumusanu, Andrei (2018年11月2日). 「Google Pixel 3レビュー」 . www.anandtech.com . 2019年5月11日時点のオリジナルよりアーカイブ。 2019年5月11日閲覧
  21. ^ Larabel, Michael (2018年12月28日). 「Linux 4.21でF2FSがさらに修正され、Google Pixelでファイルシステムがサポートされるようになった」 www.phoronix.com . 2019年5月10日閲覧
  22. ^ Humrick, Matt (2017年5月12日). 「Huawei P10 and P10 Plus」 . www.anandtech.com . 2017年5月15日時点のオリジナルよりアーカイブ。 2019年5月11日閲覧
  23. ^チェスター、ブランドン. 「OnePlus 3Tレビュー」 . www.anandtech.com . 2016年11月30日時点のオリジナルよりアーカイブ。 2019年5月10日閲覧
  24. ^ 「ZTE Axon 10 Proが公式発表:F2FSを採用した初のスマートフォン」 Gizchina.com 2019年5月6日. 2019年5月10日閲覧
  25. ^ 「Jaegeuk Kim コミットから新しい F2FS ファイルシステムをプル。git.kernel.org
  26. ^ "Arch Linux Wiki" . wiki.archlinux.org . 2021年6月27日閲覧
  27. ^ 「Debian Wiki」 . wiki.debian.org . 2021年6月27日閲覧
  28. ^ 「Gentoo Wiki」 . wiki.gentoo.org . 2021年6月27日閲覧