Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Kernel ext4

1 323 vues

Publié le

About Linux Kernel filesystem

Publié dans : Technologie
  • Login to see the comments

Kernel ext4

  1. 1. Kernel Filesystem Kai Sasaki(@Lewuathe)
  2. 2. 今日のお話 • ext4の機能 • ext4を使ってみる • ext4のチューニング • Btrfsの機能
  3. 3. ext4 • ext3の後継として開発された • Linux2.6.19から利用可能 機能 ext3 ext4 最大ファイルサイズ 2TB 16TB ブロック管理方式 間接参照ブロック方式 エクステント方式 + 間接参照ブロック方式 遅延ブロック確保 - ○ タイムスタンプの単位 ミリ秒 ナノ秒
  4. 4. 直接参照ブロック方式 block1 block2 block3 block4 block5 block6 block7 inode
  5. 5. 直接参照ブロック方式 block1 block2 block3 block4 block5 block6 block7 inode 例えば1GBのファイルをもつだけで 1G/4K = 262144 のエントリを消費してしまう
  6. 6. 間接参照ブロック方式 block1 block2 block3 block4 ref1 ref2 inode block5 block6 ref1 block7
  7. 7. エクステント方式 • 論理ブロック
 ファイルの先頭からブロックサイズで分けた単位 • 物理ブロック
 ブロックデバイス上のオフセットをブロックサイズ
 で分けた単位 • エクステント
 論理ブロックと物理ブロックを一対一に対応
 させるための単位
  8. 8. エクステント 物理ブロック 物理ブロック 物理ブロック 論理ブロック 論理ブロック 論理ブロック エクステント エクステント エクステント
  9. 9. エクステント方式 • inodeからのmapの深さが高々1にとどまる • 連続したブロック領域をまとめて管理できる • ハードウェアで規定されているページサイズ
 とファイルシステムを分離できる
  10. 10. ext4の作成とマウント $ sudo su # ファイルシステムをデバイス上に作成 # mkfs -t ext4 /dev/sda1 # 作成されたデバイスをext4としてマウント # mount -t ext4 /dev/sda1 /mnt # 既存のext2,ext3のディスクイメージを
 # ext4として再マウントすることもできる # mount -t ext4 /dev/DEV MOUNTPOINT
  11. 11. ext4への移行 先の方法で移行は可能だけれどext4の多くの機能
 が無効化されたままになっている
 → e2fsprogsを利用する $ sudo su # e2fsprogsに含まれるtunefsコマンドを使って # エクステント機能を有効にする # tune2fs -O extent /dev/sda1
  12. 12. ext4への移行 機能が有効化されたかどうかは同じくe2fsprogs
 に同封されているdebugfsコマンドを利用する $ debugfs -R stats /dev/xvda1 Filesystem volume name: cloudimg-rootfs Last mounted on: / … Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery
 extent flex_bg # <- extentがある ※ただしextent機能に関してはtune2fsコマンドで無効化できない
  13. 13. ext4のチューニング ext4は/sys/fsにチューニングに関する
 特殊ファイルを持っている $ ll /sys/fs/ext4/xvda1/ total 0 drwxr-xr-x 2 root root 0 Apr 8 11:52 ./ drwxr-xr-x 4 root root 0 Apr 8 11:52 ../ -r--r--r-- 1 root root 4096 Apr 8 11:52 delayed_allocation_blocks -rw-r--r-- 1 root root 4096 Apr 8 11:52 err_ratelimit_burst -rw-r--r-- 1 root root 4096 Apr 8 11:52 err_ratelimit_interval_ms -rw-r--r-- 1 root root 4096 Apr 8 11:52 extent_max_zeroout_kb -rw-r--r-- 1 root root 4096 Apr 8 11:52 inode_goal -rw-r--r-- 1 root root 4096 Apr 8 11:52 inode_readahead_blks -r--r--r-- 1 root root 4096 Apr 8 11:52 lifetime_write_kbytes -r--r--r-- 1 root root 4096 Apr 8 11:52 max_writeback_mb_bump -rw-r--r-- 1 root root 4096 Apr 8 11:52 mb_group_prealloc …
  14. 14. lifetime_write_kbytes • ファイルシステムに書き込まれたデータ総量を表す • 書き込み制限のあるSSDなどにマウントしている
 場合には寿命予測のため重要なメトリクスになる • mountしてからの値が知りたければ session_write_kbytesを見る # cat /sys/fs/ext4/xvda1/lifetime_write_kbytes 1294237 # <- kb単位 # cat /sys/fs/ext4/xvda1/session_write_kbytes 238196
  15. 15. lifetime_write_kbytes $ cat /sys/fs/ext4/xvda1/session_write_kbytes 238196 $ dd if=/dev/urandom of=/tmp/file bs=1M count=100 100+0 records in 100+0 records out 104857600 bytes (105 MB) copied, 9.83144 s, 10.7 MB/s $ cat /sys/fs/ext4/xvda1/session_write_kbytes 340692
  16. 16. mb_stream_req ext4ではマルチブロック確保処理を実装
 - group PA (group事前確保)
 - inode PA (inode事前確保) group PAでは対象となるファイルブロックを物理的 に近い領域に配置する。inode PAではあるひとつの ファイルを物理的に連続した領域に配置する。
  17. 17. mb_stream_req ext4ではマルチブロック確保処理を実装
 - group PA (group事前確保)
 - inode PA (inode事前確保) group PAでは対象となるファイルブロックを物理的 に近い領域に配置する。inode PAではあるひとつの ファイルを物理的に連続した領域に配置する。 どういう場合に使い分けられるか?
  18. 18. mb_stream_req /* * files smaller than MB_DEFAULT_STREAM_THRESHOLD are served * by the stream allocator, which purpose is to pack requests * as close each to other as possible to produce smooth I/O traffic * We use locality group prealloc space for stream request. * We can tune the same via /proc/fs/ext4/<parition>/stream_req */ #define MB_DEFAULT_STREAM_THRESHOLD 16 /* 64K */ - 16ブロック以下: group PA
 - それ以上: inode PA 設定ファイルなどは16ブロック以下のためgroup PAにより物理的に
 局所化され、起動時のディスクシークが短くてすむ
  19. 19. Btrfs ext4の更に次世代のファイルシステム
 B-tree filesystemの略 • スナップショット • 複数ディスクサポート • 透過的圧縮 • 差分バックアップ
  20. 20. スナップショット • CoWの下でB-treeを利用することで効率的な
 スナップショットが可能になる root #0 branch A branch B branch C “A” “B” “C” “D” “E” “F” root #0 branch A branch B branch C “A” “B” “C” “D” “E” “F” root #1
  21. 21. 複数デバイス • ひとつのファイルシステム下に複数のブロック
 デバイスを登録する機能 • ソフトウェアRAIDの機能も備えている
 RAID0, RAID1, RAID10, RAID5, RAID6
 が実装されている # btrfs device add <Disk Device> <Path>
  22. 22. 透過的圧縮 ファイル書き込み時にBtrfsが自動でデータを
 圧縮してデータを書き出す アプリケーションで意識することなるディスク
 使用量を節約することが可能 # mount -t btrfs -o compress=lzo <Dev> <Mnt>
  23. 23. 重複排除 2つのファイルで同じデータを持っている領域を
 共有させる機能 (dedup) ZFSでは自動で動くオンラインdedup Btrfsでは領域を指定して重複排除を適用するため
 オフラインdedupと呼ばれる。

×