「F2FS」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(既知の問題の項目を翻訳して追加)
11行目: 11行目:
   
 
FTL は SCSI/SATA/PCIe/NVMe インターフェイスがある全てのフラッシュメモリに存在します [http://accelazh.github.io/ssd/A-Summary-On-SSD-And-FTL]。スマートメディアカードやベアメタルな NAND フラッシュには存在しません [http://www.linux-mtd.infradead.org/archive/tech/nand.html]。
 
FTL は SCSI/SATA/PCIe/NVMe インターフェイスがある全てのフラッシュメモリに存在します [http://accelazh.github.io/ssd/A-Summary-On-SSD-And-FTL]。スマートメディアカードやベアメタルな NAND フラッシュには存在しません [http://www.linux-mtd.infradead.org/archive/tech/nand.html]。
  +
  +
== 既知の問題 ==
  +
=== fsck が失敗する===
  +
  +
F2FS には fsck に問題があり、突然の電源喪失の場合にデータ損失につながる可能性があります [https://www.usenix.org/system/files/atc19-jaffer.pdf][https://web.archive.org/web/20200925120546/https://archived.forum.manjaro.org/t/record-fsync-data-failed-on-f2fs-file-system-how-to-fix-foregt-the-help-i-reinstalled-its-just-easier/121051]
  +
  +
電力損失が頻繁に発生する場合は、別の [[ファイルシステム]] を検討してください。
  +
  +
=== 長時間実行されている fsck は起動を遅らせます ===
  +
  +
ブート間でカーネルバージョンが変更された場合、 ''fsck.f2fs'' ユーティリティは完全なファイルシステムチェックを実行しますが、完了するまでに時間がかかります [https://bbs.archlinux.org/viewtopic.php?id=245702]
  +
  +
これは、最近のコミット [https://www.mail-archive.com/linux-f2fs-devel@lists.sourceforge.net/msg17224.html] のおかげで、将来的に軽減される可能性があります。
   
 
== F2FS ファイルシステムの作成 ==
 
== F2FS ファイルシステムの作成 ==

2021年2月9日 (火) 02:37時点における版

関連記事

F2FS (Flash-Friendly File System) はフラッシュ変換レイヤ (FTL) を備えた NAND ベースフラッシュメモリに最適化されたファイルシステムです。JFFS や UBIFS と異なり、書き込み分散を処理するのに FTL に依存しています。F2FS はカーネル 3.8 以上でサポートされています。

FTL は SCSI/SATA/PCIe/NVMe インターフェイスがある全てのフラッシュメモリに存在します [1]。スマートメディアカードやベアメタルな NAND フラッシュには存在しません [2]

既知の問題

fsck が失敗する

F2FS には fsck に問題があり、突然の電源喪失の場合にデータ損失につながる可能性があります [3][4]

電力損失が頻繁に発生する場合は、別の ファイルシステム を検討してください。

長時間実行されている fsck は起動を遅らせます

ブート間でカーネルバージョンが変更された場合、 fsck.f2fs ユーティリティは完全なファイルシステムチェックを実行しますが、完了するまでに時間がかかります [5]

これは、最近のコミット [6] のおかげで、将来的に軽減される可能性があります。

F2FS ファイルシステムの作成

この記事は、デバイスに パーティション がすでにセットアップされていることを前提としています。 f2fs-toolsインストールmkfs.f2fs を使用して、 /dev/sdxY と呼ばれるターゲットパーティションをフォーマットします。

# mkfs.f2fs -l mylabel -O extra_attr,inode_checksum,sb_checksum /dev/sdxY
ノート: 上記の例は、 f2fs.fsck が特定の種類のファイルシステムの破損を検出して修正するのに役立つ最小限の推奨オプションセットです。使用可能なすべてのオプションについては、mkfs.f2fs(8) を参照してください。

圧縮

圧縮を使用するには、 compression オプションを含めます。例:

# mkfs.f2fs -l mylabel -O extra_attr,inode_checksum,sb_checksum,compression /dev/sdxY

ファイルシステムをマウントするときは、 compress_algorithm=(lzo|lz4|zstd|lzo-rle) を指定します。 compress_extension=txt を使用すると、デフォルトですべての txt ファイルが圧縮されます。

F2FS にファイルまたはディレクトリを圧縮するように指示するには、次を使用します。

$ chattr -R +c [フォルダ]

ファイルベースの暗号化サポート

Linux 4.2以降、 F2FS はファイル暗号化をネイティブにサポートしています。暗号化はディレクトリレベルで適用され、ディレクトリごとに異なる暗号化キーを使用できます。これは、ブロックデバイスレベルの暗号化である dm-crypt と、スタック暗号化ファイルシステムである eCryptfs の両方とは異なります。 F2FS のネイティブ暗号化サポートを使用するには、 fscrypt の記事を参照してください。次のファイルシステムを作成します

 # mkfs.f2fs -l mylabel -O extra_attr,inode_checksum,sb_checksum,encrypt /dev/sdxY

または、後で fsck.f2fs -O encrypt /dev/sdxY を使用して暗号化機能を追加します。

F2FS ファイルシステムのマウント

フォーマットしたファイルシステムは手動でマウントすることができます:

# mount /dev/sdxY /mnt/foo

チェックと修復

f2fs ファイルシステムのチェックと修復は f2fs-tools に含まれている fsck.f2fs で行います。利用可能なスイッチは fsck.f2fs(8) を見てください。

Implementation of discard

By default, F2FS partitions are mounted using a hybrid TRIM mode which behaves as continuous TRIM. This implementation creates asynchronous discard threads to alleviate long discarding latency among RW IOs. It keeps candidates in memory, and the thread issues them in idle time [7]. As a result of this, users wanting periodic TRIM will need to implicitly set the nodiscard mount option in /etc/fstab or pass it to mount if mounting manually.

F2FS ファイルシステムの拡大

ファイルシステムがアンマウントされている状態なら、パーティションを拡大してからファイルシステムをそれに合わせて拡大できます。縮小は現在サポートされていません

まずパーティションツールを使ってパーティションのサイズを変更します: 例えば、parted コンソールで print コマンドを実行したときのディスクの出力内容が以下のようになっている場合:

   Number  Start   End     Size        File system     Name                  Flag
    1      1049kB  106MB   105MB       fat32           EFI system partition  boot, esp
    2      106MB   11,0GB  10,9GB      ext4
    3      11,0GB  12,3GB  1322MB      f2fs
    4      31,0GB  31,3GB  261MB       ext4

f2fs パーティションを拡大して4番目のパーティションまでの全ての領域を使い切るには 、resizepart 3 31GB を実行してから exit します。それから以下のコマンドでファイルシステムを拡張して新しいパーティションを埋めます:

# resize.f2fs /dev/sdxY

/dev/sdxY は拡大する F2FS ボリュームに置き換えてください。利用可能なオプションは resize.f2fs(8) を参照。

ノート: GPT を使っている場合、パーティションの GUID (/dev/disk/by-partuuid/ で確認可能) が変わってしまう可能性がありますが、ファイルシステムの UUID (/dev/disk/by-uuid/ で確認可能) は変わりません。

既知の問題

fsck の実行時間が長くて起動が遅い

カーネルのバージョンが変わってから再起動すると fsck.f2fs ユーティリティは完全なファイルシステムチェックを行うため、完了するまで長い時間がかかります [8]