「Ext4」の版間の差分
43行目: | 43行目: | ||
* ext4 の機能を全て活用することはできません (マルチブロックアロケーションや遅延アロケーションなどのディスクフォーマットに変更を与える機能は使えません) |
* ext4 の機能を全て活用することはできません (マルチブロックアロケーションや遅延アロケーションなどのディスクフォーマットに変更を与える機能は使えません) |
||
+ | {{Note|ext4 が比較的新しいファイルシステムということ以外に (このこと自体をリスクと考えることもできます)、この方法を使用することで不利益になることは特にありません。}} |
||
− | {{Note|Except for the relative novelty of ext4 (which can be seen as a risk), '''there is no major drawback to this technique'''.}} |
||
====方法==== |
====方法==== |
||
66行目: | 66行目: | ||
以下の手順は http://ext4.wiki.kernel.org/index.php/Ext4_Howto と https://bbs.archlinux.org/viewtopic.php?id=61602 から引用しています。 |
以下の手順は http://ext4.wiki.kernel.org/index.php/Ext4_Howto と https://bbs.archlinux.org/viewtopic.php?id=61602 から引用しています。 |
||
+ | {{Warning|エクステントなどのオプションを有効にしないかぎり ext4 は ext3 と後方互換性があります。ただし、パーティションを完全に変換しない場合、ext4 を使用する利点は少なくなります。}} |
||
− | {{Warning|ext4 is backwards-compatible with ext3 until extent and other unique options are enabled. Note, however, that there are fewer benefits to using ext4 if the partition is not fully converted.}} |
||
+ | # '''[[バックアッププログラム|バックアップ]]'''を行なって下さい。ext4 に変換する ext3 パーティションに存在するデータを全てバックアップします。特に / (root) パーティションをバックアップする場合は、[http://clonezilla.org Clonezilla] が役に立ちます。 |
||
− | # '''[[Backup programs|BACK-UP!]]''' Back-up all data on any ext3 partitions that are to be converted to ext4. A useful package for this, especially for / (root) partitions, is [http://clonezilla.org Clonezilla]. |
||
− | # |
+ | # {{ic|/etc/fstab}} を編集して ext4 に変換するパーティションの 'type' を ext3 から ext4 に変換してください。 |
+ | # (必要であれば) ライブメディアを起動します。{{Ic|e2fsprogs}} で変換を行う際はドライブがマウントされていない状態になっている必要があります。ドライブの root (/) パーティションを変換するときは、他のライブメディアから起動して変換するのが一番簡単です。 |
||
− | # Boot the live medium (if necessary). The conversion process with {{Ic|e2fsprogs}} must be done when the drive is not mounted. If converting one's root (/) partition, the simplest way to achieve this is to boot from some other live medium. |
||
+ | # パーティションがマウントされていないことを確認してください |
||
− | # Ensure the partition is '''NOT''' mounted |
||
# {{Ic|tune2fs -O extent,uninit_bg,dir_index /dev/sdxX}} を実行 ({{Ic|/dev/sdxX}} は変換するパーティションのパスに置き換えて下さい、例: {{Ic|/dev/sda1}}) |
# {{Ic|tune2fs -O extent,uninit_bg,dir_index /dev/sdxX}} を実行 ({{Ic|/dev/sdxX}} は変換するパーティションのパスに置き換えて下さい、例: {{Ic|/dev/sda1}}) |
||
# {{Ic|fsck -f /dev/sdxX}} を実行 |
# {{Ic|fsck -f /dev/sdxX}} を実行 |
||
81行目: | 81行目: | ||
{{Note|Even though the filesystem is now converted to ext4, all files that have been written before the conversion do not yet take advantage of the extent option of ext4, which will improve large file performance and reduce fragmentation and filesystem check time. In order to fully take advantage of ext4, all files would have to be rewritten on disk. Use e4defrag to take care of this problem.}} |
{{Note|Even though the filesystem is now converted to ext4, all files that have been written before the conversion do not yet take advantage of the extent option of ext4, which will improve large file performance and reduce fragmentation and filesystem check time. In order to fully take advantage of ext4, all files would have to be rewritten on disk. Use e4defrag to take care of this problem.}} |
||
− | {{Warning|1= |
+ | {{Warning|1=root (/) パーティションを変換した場合、起動しようとした時にカーネルパニックが発生することがあります。カーネルパニックが起きる場合、'fallback' の initial ramdisk を使用して再起動して、'default' の initial ramdisk を再作成してください: {{Ic|mkinitcpio -p linux}}。}} |
==Tips and tricks== |
==Tips and tricks== |
||
108行目: | 108行目: | ||
カーネル 2.6.30 から、データの整合性を確保するのに役立つ変更によって ext4 のパフォーマンスは落ちています [http://www.phoronix.com/scan.php?page=article&item=ext4_then_now&num=1]。 |
カーネル 2.6.30 から、データの整合性を確保するのに役立つ変更によって ext4 のパフォーマンスは落ちています [http://www.phoronix.com/scan.php?page=article&item=ext4_then_now&num=1]。 |
||
+ | ''多くのファイルシステム (XFS, ext3, ext4, reiserfs) では、fsync やトランザクションコミットの際に書き込みバリアと呼ばれるものをディスクに送信します。書き込みバリアは書き込みの順序を守らせるための仕組みで (いくらか性能面への影響があります)、ディスクの書き込みキャッシュを安全に利用できるようにするためのものです。お使いのディスクにバッテリーが搭載されているような場合は、バリアを無効化することで性能を改善できる場合があります。'' |
||
− | ''Most file systems (XFS, ext3, ext4, reiserfs) send write barriers to disk after fsync or during transaction commits. Write barriers enforce proper ordering of writes, making volatile disk write caches safe to use (at some performance penalty). If your disks are battery-backed in one way or another, disabling barriers may safely improve performance.'' |
||
− | '' |
+ | ''書き込みバリアの送信は、マウントオプションに barrier=0 (ext3, ext4, reiserfs の場合) や nobarrier (XFS) を設定することで無効化できます'' [http://manual.geeko.cpon.org/ja/cha.tuning.io.html]。 |
+ | {{Warning|バリアを無効化すると、電源が失われたときにキャッシュが正しく書き込まれるか保証がされなくなります。これによってファイルシステムの破壊やデータ損失が発生する場合があります。}} |
||
− | {{Warning|Disabling barriers when disks cannot guarantee caches are properly written in case of power failure can lead to severe file system corruption and data loss.}} |
||
バリアをオフにしたいときは {{ic|/etc/fstab}} の変更したいファイルシステムに {{Ic|1=barrier=0}} オプションを追加してください。例: |
バリアをオフにしたいときは {{ic|/etc/fstab}} の変更したいファイルシステムに {{Ic|1=barrier=0}} オプションを追加してください。例: |
2015年2月3日 (火) 20:04時点における版
Ext4 は Linux で一番よく使われているファイルシステム、Ext3 の発展版です。多くの点で、Ext3 から Ext4 になって Ext2 から Ext3 に進んだときよりも大きな改善がされています。Ext3 では Ext2 にジャーナリングを追加したのがほとんどでしたが、Ext4 ではファイルデータを保存するファイルシステムの重要なデータ構造にメスが入っています。その結果、改良された設計、優れたパフォーマンス、信頼性、機能性を備えたファイルシステムが誕生しました。
ソース: Ext4 - Linux Kernel Newbies
目次
新しく ext4 ファイルシステムを作成
パーティションをフォーマットするには次を実行:
# mkfs.ext4 /dev/partition
デフォルトでは、mkfs.ext4
はやや低めの比率の bytes-per-inode を使って、作成される inode の定量を計算します。容量が 750GB 以上のパーティションではこれだと inode 番号が大きくなりすぎて、ディスク容量の無駄になります。比率は -i
オプションで直接設定することができます。1/6291456 なら 2TB のパーティションで 476928 の inode になります。
ext3 から ext4 に移行
ext3 パーティションを変換せずに ext4 としてマウント
理由
ext4 を完全に変換する案と ext3 をそのまま使用する案の折衷案として、既存の ext3 パーティションを ext4 としてマウントする方法があります。
利点:
- 互換性 (ext3 としてファイルシステムをマウントできます) – ext4 のサポートがないオペレーティングシステムからもファイルシステムを読み込むことが可能です (例: Windows の ext3 ドライバー)
- パフォーマンスが向上 (ext4 パーティションに完全に変換するのよりは劣ります) – 詳しくは Ext4 - Linux Kernel Newbies を見て下さい
欠点:
- ext4 の機能を全て活用することはできません (マルチブロックアロケーションや遅延アロケーションなどのディスクフォーマットに変更を与える機能は使えません)
方法
/etc/fstab
を編集して ext4 としてマウントしたいパーティションの 'type' を ext3 から ext4 に変更してください。- 変更したパーティションを再マウントします。
ext3 パーティションを ext4 に変換
理由
ext4 の能力を活かすには、非可逆の変換をする必要があります。
利点:
- パフォーマンスの向上と新機能 – 詳しくは Ext4 - Linux Kernel Newbies を見て下さい
欠点:
- Ext2Explore による読み取り専用アクセスは Windows から出来ますが、今のところデータを書き込むためのドライバーは存在しません。
- 一方通行 (ext4 パーティションを ext3 に'ダウングレード'することはできません)
方法
以下の手順は http://ext4.wiki.kernel.org/index.php/Ext4_Howto と https://bbs.archlinux.org/viewtopic.php?id=61602 から引用しています。
- バックアップを行なって下さい。ext4 に変換する ext3 パーティションに存在するデータを全てバックアップします。特に / (root) パーティションをバックアップする場合は、Clonezilla が役に立ちます。
/etc/fstab
を編集して ext4 に変換するパーティションの 'type' を ext3 から ext4 に変換してください。- (必要であれば) ライブメディアを起動します。
e2fsprogs
で変換を行う際はドライブがマウントされていない状態になっている必要があります。ドライブの root (/) パーティションを変換するときは、他のライブメディアから起動して変換するのが一番簡単です。 - パーティションがマウントされていないことを確認してください
tune2fs -O extent,uninit_bg,dir_index /dev/sdxX
を実行 (/dev/sdxX
は変換するパーティションのパスに置き換えて下さい、例:/dev/sda1
)fsck -f /dev/sdxX
を実行- 推奨: パーティションをマウントして
e4defrag -c -v /dev/sdxX
を実行 - Arch Linux を再起動してください
Tips and tricks
予約ブロックの削除
デフォルトでは、ファイルシステムの 5% はフラグメントが起こらないように root ユーザーに予約されます。最近の大容量ディスクでは、パーティションを長期保存アーカイブとして使う場合、5%は必要以上に大きい値となります (詳しくは このメール を見て下さい)。パーティションが以下の条件を満たしているならば、ディスク容量を増やすために予約ブロックの割合を減らしても大抵は問題ありません:
- パーティションがとても大きい (例えば 50GB 以上)
- 長期保存用のアーカイブとして使っている、頻繁にファイルを作成したり削除することがない
予約ブロックを削減するには tune2fs ユーティリティを使います。次のコマンドは /dev/sdXY
パーティションの予約ブロックの割合を 1.0% に設定します:
tune2fs -m 1.0 /dev/sdXY
findmnt(8) を使うことでデバイスの名前を確認できます:
findmnt /the/mount/point
E4rat
E4rat は ext4 ファイルシステム用に作られたプリロードアプリケーションです。E4rat は起動時に開かれるファイルを記録して、アクセス時間が短縮されるようにパーティションにおけるファイルの配置を最適化します。そして起動時の初期段階でファイルを先読みします。E4rat は SSD を使っている場合は効果がありません。SSD のアクセス時間はハードディスクと比べると無視できるほどしかないためです。
トラブルシューティング
バリアとパフォーマンス
カーネル 2.6.30 から、データの整合性を確保するのに役立つ変更によって ext4 のパフォーマンスは落ちています [1]。
多くのファイルシステム (XFS, ext3, ext4, reiserfs) では、fsync やトランザクションコミットの際に書き込みバリアと呼ばれるものをディスクに送信します。書き込みバリアは書き込みの順序を守らせるための仕組みで (いくらか性能面への影響があります)、ディスクの書き込みキャッシュを安全に利用できるようにするためのものです。お使いのディスクにバッテリーが搭載されているような場合は、バリアを無効化することで性能を改善できる場合があります。
書き込みバリアの送信は、マウントオプションに barrier=0 (ext3, ext4, reiserfs の場合) や nobarrier (XFS) を設定することで無効化できます [2]。
バリアをオフにしたいときは /etc/fstab
の変更したいファイルシステムに barrier=0
オプションを追加してください。例:
# /dev/sda5 / ext4 noatime,barrier=0 0 1