「ファイルシステム」の版間の差分
(→クラスタ化ファイルシステム: リンクを修正) |
(同期) |
||
| (2人の利用者による、間の11版が非表示) | |||
| 3行目: | 3行目: | ||
[[en:File systems]] |
[[en:File systems]] |
||
[[es:File systems]] |
[[es:File systems]] |
||
| + | [[hu:File systems]] |
||
[[it:File systems]] |
[[it:File systems]] |
||
[[pt:File systems]] |
[[pt:File systems]] |
||
| 14行目: | 15行目: | ||
{{Related|fsck}} |
{{Related|fsck}} |
||
{{Related|fstab}} |
{{Related|fstab}} |
||
| − | {{Related|アプリケーション一覧#マウントツール}} |
+ | {{Related|アプリケーション一覧/ユーティリティ#マウントツール}} |
{{Related|QEMU#raw イメージからパーティションをマウントする}} |
{{Related|QEMU#raw イメージからパーティションをマウントする}} |
||
{{Related|udev}} |
{{Related|udev}} |
||
| 23行目: | 24行目: | ||
[[Wikipedia:ja:ファイルシステム|Wikipedia]] より: |
[[Wikipedia:ja:ファイルシステム|Wikipedia]] より: |
||
| − | :"ファイルシステムは、コンピュータのリソースを操作するための、オペレーティングシステム (OS) が持つ機能の一つ。ファイルとは、主に補助記憶装置に格納されたデータを指すが、デバイスやプロセス、カーネル内の情報といったものもファイルとして提供するファイルシステムもある。 |
||
| + | :ファイルシステムは、コンピュータのリソースを操作するための、オペレーティングシステム (OS) が持つ機能の一つ。ファイルとは、主に補助記憶装置に格納されたデータを指すが、デバイスやプロセス、カーネル内の情報といったものもファイルとして提供するファイルシステムもある。 |
||
| − | :より正確に定義すれば、ファイルシステムは抽象データ型の集まりであり、ストレージ、階層構造、データの操作/アクセス/検索のために実装されたものである。ファイルシステムを特殊用途のデータベース管理システム (DBMS) と見なせるかどうかは議論があるが、ファイルシステムとデータベース管理システムには多くの共通点がある。 " |
||
| + | |||
| + | :より正確に定義すれば、ファイルシステムは抽象データ型の集まりであり、ストレージ、階層構造、データの操作/アクセス/検索のために実装されたものである。ファイルシステムを特殊用途のデータベース管理システム (DBMS) と見なせるかどうかは議論があるが、ファイルシステムとデータベース管理システムには多くの共通点がある。 |
||
個々のドライブパーティションに、多くのファイルシステムのなかから1つを設定することができます。ファイルシステムはそれぞれにメリット、デメリット、特徴があります。ここではサポートされているファイルシステムの概要を記述します。より多くの情報を見るには Wikipedia へのリンクを辿って下さい。 |
個々のドライブパーティションに、多くのファイルシステムのなかから1つを設定することができます。ファイルシステムはそれぞれにメリット、デメリット、特徴があります。ここではサポートされているファイルシステムの概要を記述します。より多くの情報を見るには Wikipedia へのリンクを辿って下さい。 |
||
| 34行目: | 36行目: | ||
{| class="wikitable sortable" |
{| class="wikitable sortable" |
||
| − | |+ |
+ | |+ 組み込まれている (in-tree) ファイルシステムと FUSE ファイルシステム |
! ファイルシステム |
! ファイルシステム |
||
! 作成コマンド |
! 作成コマンド |
||
| 41行目: | 43行目: | ||
! カーネルのドキュメント [https://docs.kernel.org/filesystems/index.html] |
! カーネルのドキュメント [https://docs.kernel.org/filesystems/index.html] |
||
! 備考 |
! 備考 |
||
| + | |- |
||
| + | | [[Bcachefs]] |
||
| + | | {{man|8|bcachefs}} |
||
| + | | {{Pkg|bcachefs-tools}} |
||
| + | | {{Yes}} |
||
| + | | [https://docs.kernel.org/filesystems/bcachefs/index.html] |
||
| + | | Linux 6.7 から利用可能 (実験的)。 |
||
|- |
|- |
||
| [[Btrfs]] |
| [[Btrfs]] |
||
| 47行目: | 56行目: | ||
| {{Yes}} |
| {{Yes}} |
||
| [https://docs.kernel.org/filesystems/btrfs.html btrfs.html] |
| [https://docs.kernel.org/filesystems/btrfs.html btrfs.html] |
||
| − | | [https://btrfs. |
+ | | [https://btrfs.readthedocs.io/en/latest/Status.html 安定性に関する状況] |
|- |
|- |
||
| [[VFAT]] |
| [[VFAT]] |
||
| 54行目: | 63行目: | ||
| {{Yes}} |
| {{Yes}} |
||
| [https://docs.kernel.org/filesystems/vfat.html vfat.html] |
| [https://docs.kernel.org/filesystems/vfat.html vfat.html] |
||
| − | | [[Wikipedia:ja:Windows 9x系|Windows 9x]] のファイルシステム |
+ | | [[Wikipedia:ja:Windows 9x系|Windows 9x]] のファイルシステム。一般的に、USB フラッシュドライブや SD カードで用いられます。 |
|- |
|- |
||
| rowspan="2" | [[Wikipedia:ja:exFAT|exFAT]] |
| rowspan="2" | [[Wikipedia:ja:exFAT|exFAT]] |
||
| 61行目: | 70行目: | ||
| {{Yes}} |
| {{Yes}} |
||
| |
| |
||
| − | | Linux 5.4 のネイティブのファイルシステム。[https:// |
+ | | Linux 5.4 のネイティブのファイルシステム。[https://lwn.net/Articles/799425/] 一般的に、USB フラッシュドライブや SD カードで用いられます。 |
|- |
|- |
||
| {{man|8|mkexfatfs}} |
| {{man|8|mkexfatfs}} |
||
| 74行目: | 83行目: | ||
| {{Yes}} |
| {{Yes}} |
||
| [https://docs.kernel.org/filesystems/f2fs.html f2fs.html] |
| [https://docs.kernel.org/filesystems/f2fs.html f2fs.html] |
||
| + | | フラッシュメモリベースのデバイス。縮小することはできません。 |
||
| − | |||
| − | | フラッシュメモリベースのデバイス |
||
|- |
|- |
||
| [[ext3]] |
| [[ext3]] |
||
| 112行目: | 120行目: | ||
| |
| |
||
|- |
|- |
||
| − | | [[ |
+ | | [[NILFS2]] |
| {{man|8|mkfs.nilfs2}} |
| {{man|8|mkfs.nilfs2}} |
||
| {{Pkg|nilfs-utils}} |
| {{Pkg|nilfs-utils}} |
||
| {{Yes}} |
| {{Yes}} |
||
| [https://docs.kernel.org/filesystems/nilfs2.html nilfs2.html] |
| [https://docs.kernel.org/filesystems/nilfs2.html nilfs2.html] |
||
| + | | 基本的にフラッシュベースのデバイスで用いることを意図しています。[[拡張属性|xattrs]] と [[ACL]] はサポートされていません。 |
||
| − | | Raw フラッシュデバイス (例: SD カード) |
||
|- |
|- |
||
| − | | rowspan=" |
+ | | rowspan="2" | [[NTFS]] |
| |
| |
||
| |
| |
||
| {{Yes}} |
| {{Yes}} |
||
| [https://docs.kernel.org/filesystems/ntfs3.html ntfs3.html] |
| [https://docs.kernel.org/filesystems/ntfs3.html ntfs3.html] |
||
| − | | [[Wikipedia:ja:Windows NT|Windows NT]] のファイルシステム。[https://www.paragon-software.com/home/ntfs3-driver-faq/ 新しいドライバ] |
+ | | [[Wikipedia:ja:Windows NT|Windows NT]] のファイルシステム。[https://www.paragon-software.com/home/ntfs3-driver-faq/ 新しいドライバ]。Linux 5.15 から利用可能。 |
| − | |- |
||
| − | | |
||
| − | | rowspan="2" | {{Pkg|ntfs-3g}}[https://sourceforge.net/p/linux-ntfs/mailman/message/27338853/] |
||
| − | | {{No}} |
||
| − | | [https://docs.kernel.org/filesystems/ntfs.html ntfs.html] |
||
| − | | 古いドライバ。非常に制限された書き込みサポート。[[カーネル#公式サポートカーネル|公式にサポートされているカーネル]]は {{ic|CONFIG_NTFS_FS}} フラグ無しでビルドされているため、このドライバは利用できません。 |
||
|- |
|- |
||
| {{man|8|mkfs.ntfs}} |
| {{man|8|mkfs.ntfs}} |
||
| + | | {{Pkg|ntfs-3g}} |
||
| {{Yes}} |
| {{Yes}} |
||
| N/A (FUSE ベース) |
| N/A (FUSE ベース) |
||
| 138行目: | 141行目: | ||
|- |
|- |
||
| [[Wikipedia:ReiserFS|ReiserFS]] |
| [[Wikipedia:ReiserFS|ReiserFS]] |
||
| − | | {{man|8|mkfs.reiserfs}} |
+ | | {{man|8|mkfs.reiserfs|url=https://manpages.debian.org/unstable/reiserfsprogs/mkfs.reiserfs.8.en.html}} |
| − | | {{ |
+ | | {{AUR|reiserfsprogs}} |
| − | | {{ |
+ | | {{No}} |
| |
| |
||
| − | | |
+ | | [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb103a51640ee32ab01c51e13bf8fca211f25f61 Linux 5.18 から非推奨となっており]、[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fb6f20ecb121cef4d7946f834a6ee867c4e21b4a Linux 6.13 で削除されました]。 |
|- |
|- |
||
| [[Wikipedia:ja:Universal Disk Format|UDF]] |
| [[Wikipedia:ja:Universal Disk Format|UDF]] |
||
| 149行目: | 152行目: | ||
| {{Yes}} |
| {{Yes}} |
||
| [https://docs.kernel.org/filesystems/udf.html udf.html] |
| [https://docs.kernel.org/filesystems/udf.html udf.html] |
||
| + | | ディスクイメージや DVD/ブルーレイ用の ISO/IEC 13346 ファイルシステム。 |
||
| − | | |
||
|- |
|- |
||
| [[XFS]] |
| [[XFS]] |
||
| 157行目: | 160行目: | ||
| |
| |
||
[https://docs.kernel.org/admin-guide/xfs.html xfs.html]<br> |
[https://docs.kernel.org/admin-guide/xfs.html xfs.html]<br> |
||
| − | [https://docs.kernel.org/filesystems/xfs-delayed-logging-design.html xfs-delayed-logging-design.html]<br> |
+ | [https://docs.kernel.org/filesystems/xfs/xfs-delayed-logging-design.html xfs-delayed-logging-design.html]<br> |
| − | [https://docs.kernel.org/filesystems/xfs-self-describing-metadata.html xfs-self-describing-metadata.html] |
+ | [https://docs.kernel.org/filesystems/xfs/xfs-self-describing-metadata.html xfs-self-describing-metadata.html] |
| + | | [https://web.archive.org/web/20220902080136/https://xfs.org/index.php/XFS_FAQ#Q:_Is_there_a_way_to_make_a_XFS_filesystem_larger_or_smaller.3F 縮小不可] |
||
| − | | |
||
|} |
|} |
||
{| class="wikitable sortable" |
{| class="wikitable sortable" |
||
| − | |+ |
+ | |+ 外部 (out-of-tree) のファイルシステム |
! ファイルシステム |
! ファイルシステム |
||
! 作成コマンド |
! 作成コマンド |
||
| 174行目: | 177行目: | ||
| {{AUR|linux-apfs-rw-dkms-git}} |
| {{AUR|linux-apfs-rw-dkms-git}} |
||
| {{AUR|apfsprogs-git}} |
| {{AUR|apfsprogs-git}} |
||
| − | | [[Wikipedia:ja:macOS|macOS]] (10.13 およびそれ以降) のファイルシステム。読み取り専用。 |
+ | | [[Wikipedia:ja:macOS|macOS]] (10.13 およびそれ以降) のファイルシステム。読み取り専用。書き込みサポートは試験的。Fuse バージョンの {{AUR|apfs-fuse-git}} も参照。 |
|- |
|- |
||
| + | | [[Wikipedia:ja:Reiser4|Reiser4]] |
||
| − | | [[Bcachefs]] |
||
| − | | {{man|8|bcachefs|url=https://manpages.debian.org/unstable/bcachefs-tools/bcachefs.8.en.html}} |
||
| − | | {{AUR|linux-bcachefs-git}} |
||
| − | | {{AUR|bcachefs-tools-git}} |
||
| − | | |
||
| − | |- |
||
| − | | [[Reiser4]] |
||
| {{man|8|mkfs.reiser4|url=https://manpages.debian.org/unstable/reiser4progs/mkfs.reiser4.8.en.html}} |
| {{man|8|mkfs.reiser4|url=https://manpages.debian.org/unstable/reiser4progs/mkfs.reiser4.8.en.html}} |
||
| |
| |
||
| 192行目: | 189行目: | ||
| {{AUR|zfs-linux}}, {{AUR|zfs-dkms}} |
| {{AUR|zfs-linux}}, {{AUR|zfs-dkms}} |
||
| {{AUR|zfs-utils}} |
| {{AUR|zfs-utils}} |
||
| − | | [[Wikipedia:OpenZFS|OpenZFS]] 移植 |
+ | | [[Wikipedia:OpenZFS|OpenZFS]] 移植 |
|} |
|} |
||
=== ジャーナリング === |
=== ジャーナリング === |
||
| − | + | ext3/4、HFS+、JFS、NTFS、ReiserFS、XFS ファイルシステムは[[Wikipedia:ja:ジャーナリングファイルシステム|ジャーナリング]]を使用します。ジャーナリングは、変更をファイルシステムにコミットする前にログに記録することで、障害に対する耐性を提供します。システムクラッシュや停電が発生した場合、こうしたファイルシステムはより迅速にオンラインに戻り、データが破損する可能性が低くなります。ログ記録はファイルシステム内の専用領域で行われます。 |
|
| − | + | ext3/4 はデータモードジャーナリングを提供しており、任意でメタデータに加えてデータもログに記録できます。データモードジャーナリングは書き込み操作を2回行うため (まずジャーナルに、次にディスクに)、速度面でペナルティがあります。そのため、データモードジャーナリングはデフォルトで有効化されていません。ファイルシステムの種類と機能を選ぶ際には、システム速度とデータ安全性とのトレードオフについて検討するべきでしょう。 |
|
| + | 同様に、Reiser4 は設定可能な[https://reiser4.wiki.kernel.org/index.php/Reiser4_transaction_models 「トランザクションモデル」]を提供しています。[https://reiser4.wiki.kernel.org/index.php/V4#Wandering_Logs wandering logs] と呼ばれる特殊なモデルは、ディスクへ2回書き込む必要がありません。'''write-anywhere''' モデルは、純粋なコピーオンライト方式です。'''hybrid''' と呼ばれる混合方式は、ヒューリスティックにこれら2つのモデルを切り替えます。 |
||
| − | {{Note|Reiser4 はメタデータとインラインチェックサムを特徴とする '''node41'' プラグインを使用して ext4 のデフォルトのジャーナリング動作とほぼ同等のもの(メタデータのみ)を提供し、オプションでトランザクションモデルに応じて提供される wandering logs を動作と組み合わせます。マウント時に選択されます。}} |
||
| + | Reiser4、Btrfs、Bcachefs、ZFS といったコピーオンライト (別名 write-anywhere) ベースのファイルシステムは、設計上完全にアトミックに動作し、メタデータとインラインデータの両方に対してチェックサムを提供します (操作が不完全に行われることはありません。正常に動作しているハードウェア上では、不完全な操作によってデータが破損することはありません)。なので、これらのファイルシステムは、設計上、他のファイルシステムよりもデータ損失が発生しにくく、メタデータを保護するために従来のジャーナルを使用する必要がありません (メタデータが in-place に更新されることはないからです)。Btrfs は依然としてジャーナルのようなログツリーを使用していますが、fdatasync/fsync の高速化のために使用しているにすぎません。 |
||
| − | 他のファイルシステムは ordered-mode のジャーナリングを提供し、メタデータのみをログに記録します。全てのジャーナリングはクラッシュの後にファイルシステムを有効な状態に戻しますが、データモード・ジャーナリングは破損やデータ損失に対して最大の防御を提供します。しかし、データモード・ジャーナリングはジャーナルとディスクの2つの書き込みを行うため、システムのパフォーマンスは低下します (Reiser4 は "wandering logs" 機能でこれを回避しています)。システムスピードとデータの安全性のトレードオフはファイルシステムタイプを選択する際に考慮されるべきです。Reiser4 は設計上、完全にアトミックに動作し、メタデータとインラインデータの両方にチェックサムを提供する唯一のファイルシステムです (操作が半分発生していてもデータが破損または破壊されない)。したがって設計上、他のファイルシステム [[Btrfs]] などに比べてデータ損失の可能性は非常に低くなっています。 |
||
| + | FAT、exFAT、ext2、HFS はジャーナリングもアトミック性も提供していません。これらのファイルシステムは、一時的な使用あるいは古いシステムのためのものであり、信頼できるストレージが必要である場合に使用することは推奨されません。 |
||
| − | Reiser4、Btrfs、ZFS などのコピーオンライト (write-anywhere としても知られている) に基づくファイルシステムは、その場で更新されることがないため、メタデータを保護するために従来のジャーナルを使う必要はありません。Btrfs はまだジャーナル的なログツリーを持っていますが、それは fdatasync/fsync を高速化するためだけに使われます。 |
||
=== FUSE ベースのファイルシステム === |
=== FUSE ベースのファイルシステム === |
||
| 212行目: | 209行目: | ||
=== スタック可能なファイルシステム === |
=== スタック可能なファイルシステム === |
||
| − | |||
| − | * {{App|aufs|FUSE ベースの union ファイルシステムである Advanced Multi-layered Unification Filesystem は、Unionfs を完全に書き直したものですが、Linux メインラインから拒絶され、代わりに OverlayFS が Linux カーネルにマージされました。|http://aufs.sourceforge.net|{{AUR|linux-aufs}}}} |
||
* {{App|[[eCryptfs]]|Enterprise Cryptographic Filesystem は Linux 用のディスク暗号化ソフトウェアのパッケージです。これは POSIX 準拠のファイルシステムレベルの暗号化レイヤとして実装され、オペレーティングシステムレベルで GnuPG と同様の機能を提供することを目的としています。|https://ecryptfs.org|{{Pkg|ecryptfs-utils}}}} |
* {{App|[[eCryptfs]]|Enterprise Cryptographic Filesystem は Linux 用のディスク暗号化ソフトウェアのパッケージです。これは POSIX 準拠のファイルシステムレベルの暗号化レイヤとして実装され、オペレーティングシステムレベルで GnuPG と同様の機能を提供することを目的としています。|https://ecryptfs.org|{{Pkg|ecryptfs-utils}}}} |
||
| − | |||
* {{App|mergerfs|FUSE ベースの union ファイルシステムです。|https://github.com/trapexit/mergerfs|{{AUR|mergerfs}}}} |
* {{App|mergerfs|FUSE ベースの union ファイルシステムです。|https://github.com/trapexit/mergerfs|{{AUR|mergerfs}}}} |
||
| − | |||
* {{App|mhddfs|FUSE ベースの union ファイルシステムである Multi-HDD FUSE ファイルシステム。|http://mhddfs.uvw.ru|{{AUR|mhddfs}}}} |
* {{App|mhddfs|FUSE ベースの union ファイルシステムである Multi-HDD FUSE ファイルシステム。|http://mhddfs.uvw.ru|{{AUR|mhddfs}}}} |
||
| − | |||
* {{App|[[overlayfs]]|OverlayFS は Linux 用のファイルシステムサービスで、他のファイルシステムの union マウントを実装しています。|https://docs.kernel.org/filesystems/overlayfs.html|{{Pkg|linux}}}} |
* {{App|[[overlayfs]]|OverlayFS は Linux 用のファイルシステムサービスで、他のファイルシステムの union マウントを実装しています。|https://docs.kernel.org/filesystems/overlayfs.html|{{Pkg|linux}}}} |
||
| + | * {{App|unionfs-fuse|ユーザースペース Unionfs の実装。|https://github.com/rpodgorny/unionfs-fuse|{{AUR|unionfs-fuse}}}} |
||
| − | |||
| − | * {{App|Unionfs|Unionfs は Linux, FreeBSD, NetBSD 用のファイルシステムサービスで,他のファイルシステムの共用マウントを実装しています。|https://unionfs.filesystems.org/}} |
||
| − | |||
| − | * {{App|unionfs-fuse|ユーザースペース Unionfs の実装。|https://github.com/rpodgorny/unionfs-fuse|{{Pkg|unionfs-fuse}}}} |
||
=== 読み取り専用のファイルシステム === |
=== 読み取り専用のファイルシステム === |
||
| + | * {{App|DwarFS|DwarFS は、Linux と Windows 用の高速で高圧縮率の読み取り専用ファイルシステムです。DwarFS は、多かれ少なかれ SquashFS と同じ機能をサポートしていますが、より圧縮に優れており、ハッシュアルゴリズムをカスタム可能です。|https://github.com/mhx/dwarfs|{{Aur|dwarfs}}}} |
||
| − | * {{App|[[Wikipedia:ja:EROFS|EROFS]]|Enhanced Read-Only File System は、パフォーマンスの向上とストレージ容量の圧縮を目的とした軽量の読み取り専用ファイルシステムです。|https://docs.kernel.org/filesystems/erofs.html|{{Pkg|erofs-utils}}}} |
||
| − | * {{App|[[Wikipedia:ja: |
+ | * {{App|[[Wikipedia:ja:EROFS|EROFS]]|Enhanced Read-Only File System は、パフォーマンスの向上とストレージ容量の圧縮を目的とした軽量の読み取り専用ファイルシステムです。|https://erofs.docs.kernel.org/|{{Pkg|erofs-utils}}}} |
| + | * {{App|[[Wikipedia:ja:SquashFS|SquashFS]]|SquashFS は、読み取り専用の圧縮ファイルシステムです。SquashFS はファイル、inodes、ディレクトリーを圧縮し、さらに大きな圧縮のために最大 1 MiB のブロック・サイズをサポートします。|https://github.com/plougher/squashfs-tools|{{Pkg|squashfs-tools}}}} |
||
=== クラスタ化ファイルシステム === |
=== クラスタ化ファイルシステム === |
||
* {{App|[[BeeGFS]]|高パフォーマンスコンピューティングのために開発・最適化された並列ファイルシステム。|https://www.beegfs.io/c/|{{AUR|beegfs-client}}}} |
* {{App|[[BeeGFS]]|高パフォーマンスコンピューティングのために開発・最適化された並列ファイルシステム。|https://www.beegfs.io/c/|{{AUR|beegfs-client}}}} |
||
| − | * {{App|[[Ceph]]|優れたパフォーマンス、信頼性、拡張性を実現するように設計された、統合された分散ストレージシステム。|https://ceph.com/|{{ |
+ | * {{App|[[Ceph]]|優れたパフォーマンス、信頼性、拡張性を実現するように設計された、統合された分散ストレージシステム。|https://ceph.com/|{{AUR|ceph}}}} |
* {{App|[[GlusterFS]]|数ペタバイトまで拡張可能なクラスタファイルシステム。|https://www.gluster.org/|{{Pkg|glusterfs}}}} |
* {{App|[[GlusterFS]]|数ペタバイトまで拡張可能なクラスタファイルシステム。|https://www.gluster.org/|{{Pkg|glusterfs}}}} |
||
* {{App|[[IPFS]]|Web を高速化、安全化、およびオープン化するためのピアツーピアハイパーメディアプロトコル。IPFS は HTTP に取って代わり、私たち全員のためにより良いウェブを構築することを目指しています。ブロックを使用してファイルの一部を保存し、各ネットワーク・ノードは関心のあるコンテンツのみを保存し、重複除外、分散、拡張性の高いシステムをユーザーのみに制限 (現在はアルファ版)|https://ipfs.io/|{{Pkg|kubo}}}} |
* {{App|[[IPFS]]|Web を高速化、安全化、およびオープン化するためのピアツーピアハイパーメディアプロトコル。IPFS は HTTP に取って代わり、私たち全員のためにより良いウェブを構築することを目指しています。ブロックを使用してファイルの一部を保存し、各ネットワーク・ノードは関心のあるコンテンツのみを保存し、重複除外、分散、拡張性の高いシステムをユーザーのみに制限 (現在はアルファ版)|https://ipfs.io/|{{Pkg|kubo}}}} |
||
* {{App|[[MinIO]]|MinIO は高パフォーマンスな S3 互換のオブジェクトストレージを提供します。|https://min.io|{{Pkg|minio}}}} |
* {{App|[[MinIO]]|MinIO は高パフォーマンスな S3 互換のオブジェクトストレージを提供します。|https://min.io|{{Pkg|minio}}}} |
||
* {{App|[[Wikipedia: MooseFS|MooseFS]]|MooseFS は、耐障害性で可用性が高い、高性能なスケールアウトネットワーク分散ファイルシステムです。|https://moosefs.com|{{Pkg|moosefs}}}} |
* {{App|[[Wikipedia: MooseFS|MooseFS]]|MooseFS は、耐障害性で可用性が高い、高性能なスケールアウトネットワーク分散ファイルシステムです。|https://moosefs.com|{{Pkg|moosefs}}}} |
||
| − | * {{App| |
+ | * {{App|OpenAFS|AFS 分散ファイルシステムのオープンソース実装。|https://www.openafs.org|{{AUR|openafs}}}} |
* {{App|[[Wikipedia: OrangeFS|OrangeFS]]|OrangeFS は、マルチサーバ・ベースのディスク・ストレージに透過的に並列アクセスするために設計されたスケール・アウト・ネットワーク・ファイル・システムです。並列および分散アプリケーション向けに最適化された MPI-IO のサポート。Linux クライアントだけでなく、Windows、Hadoop、WebDAV 用の並列ストレージの使用を簡素化します。POSIX 互換です。バージョン4.6以降のLinux カーネルに含まれます。|https://www.orangefs.org/}} |
* {{App|[[Wikipedia: OrangeFS|OrangeFS]]|OrangeFS は、マルチサーバ・ベースのディスク・ストレージに透過的に並列アクセスするために設計されたスケール・アウト・ネットワーク・ファイル・システムです。並列および分散アプリケーション向けに最適化された MPI-IO のサポート。Linux クライアントだけでなく、Windows、Hadoop、WebDAV 用の並列ストレージの使用を簡素化します。POSIX 互換です。バージョン4.6以降のLinux カーネルに含まれます。|https://www.orangefs.org/}} |
||
* {{App|Sheepdog|ボリュームおよびコンテナサービス用の分散オブジェクトストレージシステムで、ディスクとノードをインテリジェントに管理します。|https://sheepdog.github.io/sheepdog/|{{AUR|sheepdog}}}} |
* {{App|Sheepdog|ボリュームおよびコンテナサービス用の分散オブジェクトストレージシステムで、ディスクとノードをインテリジェントに管理します。|https://sheepdog.github.io/sheepdog/|{{AUR|sheepdog}}}} |
||
| − | * {{App|[[Wikipedia:Tahoe-LAFS|Tahoe-LAFS]]|Tahoe Least-Authority ファイルシステムは、フリーでオープン、安全、分散、耐障害性、ピアツーピア分散データストアおよび分散ファイルシステムです。|https://tahoe-lafs.org/|{{AUR|tahoe-lafs}}}} |
||
=== 共有ディスクファイルシステム === |
=== 共有ディスクファイルシステム === |
||
| 249行目: | 238行目: | ||
* {{App|[[Wikipedia:GFS2|GFS2]]|GFS2 では、クラスタのすべてのメンバーが同じ共有ブロック・ストレージに直接同時にアクセスできます。|https://pagure.io/gfs2-utils|{{AUR|gfs2-utils}}}} |
* {{App|[[Wikipedia:GFS2|GFS2]]|GFS2 では、クラスタのすべてのメンバーが同じ共有ブロック・ストレージに直接同時にアクセスできます。|https://pagure.io/gfs2-utils|{{AUR|gfs2-utils}}}} |
||
* {{App|[[Wikipedia:OCFS2|OCFS2]]|Oracle Cluster File System (バージョン2) は、Oracle Corporation によって開発され、GNU General Public License の下でリリースされる共有ディスク・ファイル・システムです。|https://oss.oracle.com/projects/ocfs2/|{{AUR|ocfs2-tools}}}} |
* {{App|[[Wikipedia:OCFS2|OCFS2]]|Oracle Cluster File System (バージョン2) は、Oracle Corporation によって開発され、GNU General Public License の下でリリースされる共有ディスク・ファイル・システムです。|https://oss.oracle.com/projects/ocfs2/|{{AUR|ocfs2-tools}}}} |
||
| − | * {{App|[[Wikipedia:VMware_VMFS|VMware VMFS]]|VMware の VMFS (Virtual Machine File System) は、同社の主力サーバ仮想化スイートである vSphere で使用されているファイルシステムです。|https:// |
+ | * {{App|[[Wikipedia:VMware_VMFS|VMware VMFS]]|VMware の VMFS (Virtual Machine File System) は、同社の主力サーバ仮想化スイートである vSphere で使用されているファイルシステムです。|https://core.vmware.com/resource/vmware-vsphere-vmfs|{{AUR|vmfs-tools}}}} |
== 既存のファイルシステムを特定する == |
== 既存のファイルシステムを特定する == |
||
| 257行目: | 246行目: | ||
{{hc|1=$ lsblk -f|2= |
{{hc|1=$ lsblk -f|2= |
||
NAME FSTYPE LABEL UUID MOUNTPOINT |
NAME FSTYPE LABEL UUID MOUNTPOINT |
||
| + | sdb |
||
| − | sdb |
||
| − | └─sdb1 vfat Transcend 4A3C-A9E9 |
+ | └─sdb1 vfat Transcend 4A3C-A9E9 |
}} |
}} |
||
| 279行目: | 268行目: | ||
NAME FSTYPE LABEL UUID MOUNTPOINT |
NAME FSTYPE LABEL UUID MOUNTPOINT |
||
sda |
sda |
||
| − | ├─sda1 C4DA-2C4D |
+ | ├─sda1 C4DA-2C4D |
├─sda2 ext4 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 /mnt |
├─sda2 ext4 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 /mnt |
||
| − | └─sda3 56adc99b-a61e-46af-aab7-a6d07e504652 |
+ | └─sda3 56adc99b-a61e-46af-aab7-a6d07e504652 |
}} |
}} |
||
| 304行目: | 293行目: | ||
== ファイルシステムのマウント == |
== ファイルシステムのマウント == |
||
| − | デバイス |
+ | デバイス(パーティションなど)上にあるファイルシステムを手動でディレクトリにマウントするには、{{man|8|mount}} を使用します。この例では {{ic|/dev/sda1}} を {{ic|/mnt}} にマウントしています。 |
# mount /dev/sda1 /mnt |
# mount /dev/sda1 /mnt |
||
| 326行目: | 315行目: | ||
* [[fstab]] を編集する |
* [[fstab]] を編集する |
||
* [[udev]] ルールを作成する |
* [[udev]] ルールを作成する |
||
| − | * [[Arch |
+ | * [[Arch build system|カーネルを自分でコンパイルする]] |
* ファイルシステム固有のマウントスクリプト ({{ic|/usr/bin/mount.*}} にあります) を使用する |
* ファイルシステム固有のマウントスクリプト ({{ic|/usr/bin/mount.*}} にあります) を使用する |
||
| 372行目: | 361行目: | ||
* [[Wikipedia:Mount (Unix)]] |
* [[Wikipedia:Mount (Unix)]] |
||
| − | {{TranslationStatus|File systems| |
+ | {{TranslationStatus|File systems|2025-07-04|839407}} |
2025年7月4日 (金) 23:50時点における最新版
関連記事
Wikipedia より:
- ファイルシステムは、コンピュータのリソースを操作するための、オペレーティングシステム (OS) が持つ機能の一つ。ファイルとは、主に補助記憶装置に格納されたデータを指すが、デバイスやプロセス、カーネル内の情報といったものもファイルとして提供するファイルシステムもある。
- より正確に定義すれば、ファイルシステムは抽象データ型の集まりであり、ストレージ、階層構造、データの操作/アクセス/検索のために実装されたものである。ファイルシステムを特殊用途のデータベース管理システム (DBMS) と見なせるかどうかは議論があるが、ファイルシステムとデータベース管理システムには多くの共通点がある。
個々のドライブパーティションに、多くのファイルシステムのなかから1つを設定することができます。ファイルシステムはそれぞれにメリット、デメリット、特徴があります。ここではサポートされているファイルシステムの概要を記述します。より多くの情報を見るには Wikipedia へのリンクを辿って下さい。
目次
ファイルシステムのタイプ
一般的な概要については filesystems(5) を、詳細な機能の比較については Wikipedia:Comparison of file systems を参照してください。カーネルによってすでにロードされている、あるいは組み込まれているファイルシステムは、/proc/filesystems にリストアップされています。一方、インストールされているモジュールは ls /lib/modules/$(uname -r)/kernel/fs ですべて見ることができます。
| ファイルシステム | 作成コマンド | カーネルパッチセット | ユーザースペースユーティリティ | 備考 |
|---|---|---|---|---|
| APFS | mkapfs(8) | linux-apfs-rw-dkms-gitAUR | apfsprogs-gitAUR | macOS (10.13 およびそれ以降) のファイルシステム。読み取り専用。書き込みサポートは試験的。Fuse バージョンの apfs-fuse-gitAUR も参照。 |
| Reiser4 | mkfs.reiser4(8) | reiser4progsAUR | ||
| ZFS | zfs-linuxAUR, zfs-dkmsAUR | zfs-utilsAUR | OpenZFS 移植 |
ジャーナリング
ext3/4、HFS+、JFS、NTFS、ReiserFS、XFS ファイルシステムはジャーナリングを使用します。ジャーナリングは、変更をファイルシステムにコミットする前にログに記録することで、障害に対する耐性を提供します。システムクラッシュや停電が発生した場合、こうしたファイルシステムはより迅速にオンラインに戻り、データが破損する可能性が低くなります。ログ記録はファイルシステム内の専用領域で行われます。
ext3/4 はデータモードジャーナリングを提供しており、任意でメタデータに加えてデータもログに記録できます。データモードジャーナリングは書き込み操作を2回行うため (まずジャーナルに、次にディスクに)、速度面でペナルティがあります。そのため、データモードジャーナリングはデフォルトで有効化されていません。ファイルシステムの種類と機能を選ぶ際には、システム速度とデータ安全性とのトレードオフについて検討するべきでしょう。
同様に、Reiser4 は設定可能な「トランザクションモデル」を提供しています。wandering logs と呼ばれる特殊なモデルは、ディスクへ2回書き込む必要がありません。write-anywhere モデルは、純粋なコピーオンライト方式です。hybrid と呼ばれる混合方式は、ヒューリスティックにこれら2つのモデルを切り替えます。
Reiser4、Btrfs、Bcachefs、ZFS といったコピーオンライト (別名 write-anywhere) ベースのファイルシステムは、設計上完全にアトミックに動作し、メタデータとインラインデータの両方に対してチェックサムを提供します (操作が不完全に行われることはありません。正常に動作しているハードウェア上では、不完全な操作によってデータが破損することはありません)。なので、これらのファイルシステムは、設計上、他のファイルシステムよりもデータ損失が発生しにくく、メタデータを保護するために従来のジャーナルを使用する必要がありません (メタデータが in-place に更新されることはないからです)。Btrfs は依然としてジャーナルのようなログツリーを使用していますが、fdatasync/fsync の高速化のために使用しているにすぎません。
FAT、exFAT、ext2、HFS はジャーナリングもアトミック性も提供していません。これらのファイルシステムは、一時的な使用あるいは古いシステムのためのものであり、信頼できるストレージが必要である場合に使用することは推奨されません。
FUSE ベースのファイルシステム
FUSE を見てください。
スタック可能なファイルシステム
- eCryptfs — Enterprise Cryptographic Filesystem は Linux 用のディスク暗号化ソフトウェアのパッケージです。これは POSIX 準拠のファイルシステムレベルの暗号化レイヤとして実装され、オペレーティングシステムレベルで GnuPG と同様の機能を提供することを目的としています。
- mergerfs — FUSE ベースの union ファイルシステムです。
- mhddfs — FUSE ベースの union ファイルシステムである Multi-HDD FUSE ファイルシステム。
- http://mhddfs.uvw.ru || mhddfsAUR
- overlayfs — OverlayFS は Linux 用のファイルシステムサービスで、他のファイルシステムの union マウントを実装しています。
- unionfs-fuse — ユーザースペース Unionfs の実装。
読み取り専用のファイルシステム
- DwarFS — DwarFS は、Linux と Windows 用の高速で高圧縮率の読み取り専用ファイルシステムです。DwarFS は、多かれ少なかれ SquashFS と同じ機能をサポートしていますが、より圧縮に優れており、ハッシュアルゴリズムをカスタム可能です。
- EROFS — Enhanced Read-Only File System は、パフォーマンスの向上とストレージ容量の圧縮を目的とした軽量の読み取り専用ファイルシステムです。
- SquashFS — SquashFS は、読み取り専用の圧縮ファイルシステムです。SquashFS はファイル、inodes、ディレクトリーを圧縮し、さらに大きな圧縮のために最大 1 MiB のブロック・サイズをサポートします。
クラスタ化ファイルシステム
- BeeGFS — 高パフォーマンスコンピューティングのために開発・最適化された並列ファイルシステム。
- Ceph — 優れたパフォーマンス、信頼性、拡張性を実現するように設計された、統合された分散ストレージシステム。
- https://ceph.com/ || cephAUR
- GlusterFS — 数ペタバイトまで拡張可能なクラスタファイルシステム。
- IPFS — Web を高速化、安全化、およびオープン化するためのピアツーピアハイパーメディアプロトコル。IPFS は HTTP に取って代わり、私たち全員のためにより良いウェブを構築することを目指しています。ブロックを使用してファイルの一部を保存し、各ネットワーク・ノードは関心のあるコンテンツのみを保存し、重複除外、分散、拡張性の高いシステムをユーザーのみに制限 (現在はアルファ版)
- MinIO — MinIO は高パフォーマンスな S3 互換のオブジェクトストレージを提供します。
- MooseFS — MooseFS は、耐障害性で可用性が高い、高性能なスケールアウトネットワーク分散ファイルシステムです。
- OpenAFS — AFS 分散ファイルシステムのオープンソース実装。
- OrangeFS — OrangeFS は、マルチサーバ・ベースのディスク・ストレージに透過的に並列アクセスするために設計されたスケール・アウト・ネットワーク・ファイル・システムです。並列および分散アプリケーション向けに最適化された MPI-IO のサポート。Linux クライアントだけでなく、Windows、Hadoop、WebDAV 用の並列ストレージの使用を簡素化します。POSIX 互換です。バージョン4.6以降のLinux カーネルに含まれます。
- https://www.orangefs.org/ || パッケージが存在しないか AUR で検索
- Sheepdog — ボリュームおよびコンテナサービス用の分散オブジェクトストレージシステムで、ディスクとノードをインテリジェントに管理します。
共有ディスクファイルシステム
- GFS2 — GFS2 では、クラスタのすべてのメンバーが同じ共有ブロック・ストレージに直接同時にアクセスできます。
- OCFS2 — Oracle Cluster File System (バージョン2) は、Oracle Corporation によって開発され、GNU General Public License の下でリリースされる共有ディスク・ファイル・システムです。
- VMware VMFS — VMware の VMFS (Virtual Machine File System) は、同社の主力サーバ仮想化スイートである vSphere で使用されているファイルシステムです。
既存のファイルシステムを特定する
lsblk を使って、既存のファイルシステムを特定することができます:
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT sdb └─sdb1 vfat Transcend 4A3C-A9E9
存在する場合、既存のファイルシステムが FSTYPE 列に表示されます。mount されている場合は、MOUNTPOINT 列に表示されます。
ファイルシステムを作成する
ファイルシステムは通常、LVM、RAID、dm-crypt などの論理コンテナ内、パーティション、通常のファイル (Wikipedia:Loop device を参照) に作成されます。このセクションでは、パーティションの場合について説明します。
続行する前に、ファイルシステムを作成するデバイスを特定し、それがマウントされているかどうかを確認してください。例えば:
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 C4DA-2C4D ├─sda2 ext4 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 /mnt └─sda3 56adc99b-a61e-46af-aab7-a6d07e504652
先に進む前に、マウントされているファイルシステムを アンマウントしなければなりません。上記の例では、既存のファイルシステムは /dev/sda2 にあり、 /mnt にマウントされていますが、マウントを解除する必要があります:
# umount /dev/sda2
マウントされたばかりのファイルシステムを見つける方法は、#マウントしたファイルシステムの一覧表示 を参照してください。
新しいファイルシステムを作成するには、mkfs(8) を使用します。正確なタイプ、および特定のファイルシステムにインストールする可能性のあるユーザースペースユーティリティについては、 #ファイルシステムのタイプ を参照してください。
たとえば、 /dev/sda1 でタイプ ext4 (Linux データパーティションで一般的に使われています) の新しいファイルシステムを作成するには、次のコマンドを実行します:
# mkfs.ext4 /dev/sda1
これで、新しいファイルシステムを任意のディレクトリにマウントできます。
ファイルシステムのマウント
デバイス(パーティションなど)上にあるファイルシステムを手動でディレクトリにマウントするには、mount(8) を使用します。この例では /dev/sda1 を /mnt にマウントしています。
# mount /dev/sda1 /mnt
これは /dev/sda1 上のファイルシステムをディレクトリ /mnt にアタッチし、ファイルシステムの内容を見えるようにするものです。この操作の前に /mnt に存在していたデータは、デバイスがアンマウントされるまで不可視状態になります。
fstab には、デバイスが存在する場合に自動的にマウントされる方法に関する情報が含まれています。この動作を変更する方法の詳細については、fstab の記事を参照してください。
デバイスが /etc/fstab で指定されていて、コマンドラインでデバイスかマウントポイントだけが指定された場合、その情報がマウント時に使用されます。例えば、/etc/fstab に /dev/sda1 を /mnt にマウントするという行がある場合、以下は自動的にその場所にデバイスをマウントすることになります。
# mount /dev/sda1
または、
# mount /mnt
mount にはいくつかのオプションがあり、その多くは指定されたファイルシステムに依存します。 オプションは以下の方法で変更することができます:
- コマンドラインで mount と共にフラグを使用する
- fstab を編集する
- udev ルールを作成する
- カーネルを自分でコンパイルする
- ファイルシステム固有のマウントスクリプト (
/usr/bin/mount.*にあります) を使用する
より詳しい情報は、これらの関連記事と、興味のあるファイルシステムの記事をご覧下さい。
マウントしたファイルシステムの一覧表示
マウントされている全てのファイルシステムを一覧表示するには findmnt(8) を使ってください:
$ findmnt
findmnt は様々な引数を取り、出力をフィルタリングしたり、追加情報を表示したりすることができます。例えば、デバイスやマウントポイントを引数として取り、指定されたものについての情報のみを表示させることができます:
$ findmnt /dev/sda1
findmnt は /etc/fstab, /etc/mtab, /proc/self/mounts から情報を収集します。
ファイルシステムのアンマウント
ファイルシステムをアンマウントするには umount(8) を使ってください。ファイルシステムがあるデバイス (例:/dev/sda1) かマウントポイント (例:/mnt) のどちらかを指定することが可能です。
# umount /dev/sda1
または、
# umount /mnt
トラブルシューティング
"linux Structure needs cleaning"
ファイルシステムをアンマウントし、問題のあるボリュームで fsck を実行してください。