49
Copyright (C) NTT COMWARE Corporation., 2005 Copyright (C) VA Linux Systems Japan K.K., 2005 ext3ファイルシステムへの スナップショット機能の設計と実装 NTTコムウェア株式会社 オープンソースソフトウェア推進部 前野真輝 ( E-Mail: [email protected] )

ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3ファイルシステムへのスナップショット機能の設計と実装

NTTコムウェア株式会社

オープンソースソフトウェア推進部

前野真輝( E-Mail: [email protected] )

Page 2: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 1

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

目次

背景

スナップショットの概要及び実装例

ext3スナップショットの実現動機

ext3スナップショットの実現方針

ffsスナップショットの概要

ext3ファイルシステムのジャーナル機能の概要

ext3スナップショットの設計

現時点の実装とその評価

今後の課題

Page 3: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

背景

Page 4: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 3

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

データ3へのポインタ

データ3へのポインタ

スナップショットの概要

スナップショットはある瞬間のイメージを保持

利点: 短い時間でイメージを取得可能

スナップショットスナップショット取得元ファイルシステム

データ1 データ2 データ3

スナップショットを取得する時

ポインタの作成のみデータ1への

ポインタデータ2への

ポインタデータ3への

ポインタ

スナップショット取得後に元のFS上のデータ更新が発生する時

データ1 データ2 データ3’

データ1へのポインタ

データ2へのポインタ

データ3×

更新前のデータのコピーポインタの変更

Page 5: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 4

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

スナップショットの既存の実装例

NetApp社が特許を持つWAFLを拡張

スナップショットが同じinode番号を持つ

FSレイヤ

(追記型(LFS))ストレージシステム

WAFL(=write anywhere file layout)

スナップショット

ffsを拡張

soft updatesを利用

FSレイヤ

(更新型)FreeBSDNetBSD

ffs(=BSD fast file system)

スナップショット

特徴レイヤOS名称

EMC社のSymmetrix等

の製品に採用

FSレイヤストレージシステム

SnapViewTimeFinder

Device-mapperを利用ブロックデバイスレイヤ

LinuxLVM(=logical volume manager)

スナップショット

Page 6: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 5

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3スナップショットの実現動機

現在Linux上で有力なのはLVMスナップショットブロックデバイスレイヤでの実装

スナップショット専用領域を別に確保して差分情報を格納

chunk単位(=大きなサイズ)でスナップショット取得後の更新前データのコピー(=Copy-On-Write)して保護

利点スナップショット取得時に存在したデータの更新が速い

スナップショットとして利用できる量を自由に決定可能

欠点FSレベルでみると、更新されていないデータもコピーが行われるため、余分なコピーが発生し、余分にディスク容量を消費

利用できる量を超えるとスナップショットは消滅

•FSレイヤで実装する事により欠点を解決できるのではないか•現在Linuxで標準FSであるext3FSへの実装

Page 7: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 6

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3スナップショットの実現目標

スナップショットを通常通りext3FSとしてマウントして利用可能

ジャーナリングFSでスナップショット機能が実装可能である事を実証する

スナップショット数にFSレイアウト上の制限を付けない

スーパブロックにスナップショットinode番号を埋め込む事は受け入れない

短時間での(スナップショットの)クラッシュリカバリ

ext3FSの特徴を失わない

Page 8: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3スナップショット実現方針

Page 9: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 8

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3スナップショットの実現方針

ffsとext3の関係BSD Linux

ffs ext2FS

ext3FS

ffsを元に設計

ジャーナル機能付加

ffs snapshot ext3 snapshotffs snapshotを元に設計

スナップショット機能付加

•ext3スナップショットもffsスナップショットを基本にする•ただしext3FSのジャーナリングに関する制限を克服する実装が必要

soft updates(soft dep)を利用して

スナップショット機能付加

Page 10: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 9

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3スナップショットの実現方針

ffsとext3の関係BSD Linux

ffs ext2FS

ext3FS

ffsを元に設計

ジャーナル機能付加

ffs snapshot

soft updates(soft dep)を利用して

スナップショット機能付加

ext3 snapshotffs snapshotを元に設計

スナップショット機能付加

•ext3スナップショットもffsスナップショットを基本にする•ただしext3FSのジャーナリングに関する制限を克服する実装が必要

まずffsスナップショットとext3FSのジャーナル機能について説明する

Page 11: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ffsスナップショット

Page 12: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 11

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ffsスナップショットの概要

あらゆる更新操作についてデータを書き換えた後にポインタを変更するsoft updatesの機構を利用

inode更新, 直接/間接ブロック確保, truncate down/up, ディレクトリ/エントリの追加/削除等のあらゆる更新操作のデータ依存関係を考慮

ブロック書き出し時にCopy-On-Writeする事により、スナップショット取得時のデータを保護

前述した動作と同じ

データ1 データ2 データ3’

データ1へのポインタ

データ2へのポインタ

データ3への

ポインタ データ3× データ3へのポインタ

更新前のデータのコピーポインタの変更

Page 13: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 12

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

1 2 4

ffsスナップショットのデータ退避先とその利用

Copy-On-Writeしたデータ退避先は取得元FS内の通常ファイル(=スナップショットファイル: 取得元FSと見かけ同容量のsparseファイル)へ行う

スナップショット取得元FS

スナップショットファイル

vnode仮想デバイス(=スナップショット用デバイス)

0

0

1’

1

2’

2

3

3

4’

4

5

5

6

6

1 42

= スナップショット取得後に更新されていないデータブロック

③: スナップショットファイルにブロックが存在すればスナップショットファイルから、存在しなければ取得元FSから読み出し

= スナップショット取得後に更新されたデータブロック

①: スナップショット取得後から更新されるブロックを更新前にスナップショットファイルへコピー(=Copy-On-Write)

②: vnode仮想デバイスへスナップショットファイルと取得元FSを関連付ける

④: vnode仮想デバイスをマウントしスナップショットをFSとして利用

Page 14: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3ファイルシステム(ジャーナル機能)

Page 15: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 14

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3FSのジャーナルの仕組みとその役割

複数のブロックにわたる不可分な変更内容をまずジャーナル領域へ書き出す事で、システムクラッシュしても、ジャーナルリプレイにより高速なリカバリを実現する

ジャーナルも通常ファイルと同様にinodeやデータブロックを持つ

ジャーナルは別デバイスに確保する事も可能

ジャーナル

ext3FS

実際のデータ

①: データ変更要求

②: 変更内容を先に書き出す ③: 実際のデータを書き出す

③’ : ③中にクラッシュした場合ジャーナル内のデータを利用してリカバリする

Page 16: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 15

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3FSのジャーナルモード

data=journalデータを含む全ての変更をジャーナルする

data=ordered (ext3のデフォルトモード)通常ファイルのデータ以外(inodeや間接ブロックやビットマップブロックなどのメタデータ)に対しジャーナルする

ジャーナルを書き出す前に実際の通常ファイルのデータを書き出す

data=writeback通常ファイルのデータ以外(メタデータ)に対しジャーナルする

ジャーナルと通常ファイルのデータの書き出し順序は問わない

Page 17: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 16

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ffs soft updatesとext3FSのディスク書き出し依存関係

メタデータ

データ

ジャーナル

data=ordereddata=journaldata=journal

ディスク書き込み依存関係(Bを書き出し完了後, Aを書き出す)

ジャーナル解放依存関係(Bを書き出し完了後, Aを解放する)

A B

A Bdata=journal : メタデータとデータ

それ以外: メタデータのみ

•soft updatesは全ての追加/更新/削除の各

操作に対して細かい単位でディスク書き出しの依存関係を追跡する必要有

•ジャーナルはsoft updatesに比べてディスク

書き出しの依存関係が大幅に単純化

ext3ジャーナル

ffs soft updates

Page 18: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3スナップショット設計

Page 19: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 18

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3スナップショットの実現方針

基本的な考え方はffsスナップショットと同様スナップショットの作成

スナップショットを取得する元のパーティション内へ見かけ上同容量のスナップショットファイルを作成

スナップショットの保護ファイルシステム上のデータが更新される直前にスナップショット取得時のデータをスナップショットファイルへ退避(=Copy-On-Write)

スナップショットの利用スナップショットファイルを関連付けたスナップショット専用のブロックデバイスからスナップショットを利用

基本的な考え方はffsスナップショットと同様で既に動作を説明済みなので、処理の流れに沿うのではなく、各機能に焦点を当てて説明する

Page 20: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 19

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3スナップショットへ必要な機能

ffsスナップショットと異なる方式で実装する機能

Copy-On-Writebeforeイメージジャーナル

スナップショットファイルのdelayed allocationクラッシュリカバリ

ffsスナップショットと同じ考え方で実装する機能

スナップショット初期化(スナップショットファイル作成)ブロック解放抑止

スナップショット用デバイス

Page 21: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 20

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

必要な機能: Copy-On-Write

スナップショットのデータの保護

実際のデータが更新される前にスナップショット取得時のデータをスナップショットファイルへコピーする(=Copy-On-Write)

ext3FS with ext3スナップショット

スナップショットファイル

①: データ更新要求

メタデータ

データ

メタデータ

データ

③: スナップショット取得時の

データを退避

②: スナップショットのメタデータの更新④: 実際のデータの更新

Page 22: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 21

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

必要な機能: Copy-On-Write

問題点

ffsスナップショットではディスクブロックの書き出し前にCopy-On-Writeしているが、ext3FSでは既にジャーナル領域に書き出されてしまった後である

その間にクラッシュするとスナップショットデータはジャーナルリプレイにより失われる

解決策

ディスクブロック書き出し時ではなく、データ更新時にCopy-On-Writeする

Page 23: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 22

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

必要な機能: Copy-On-Write

Copy-On-Writeのタイミング

メタデータ更新の直前

ジャーナルの変更前処理

inode bitmapによるinodeブロック内クリア処理

データ更新の直前write()処理

mmap()処理

direct_IO()処理

ブロック境界でないtruncate down処理

Page 24: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 23

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

必要な機能: beforeイメージジャーナル

クラッシュ時のスナップショットのデータの保護

スナップショット取得時のメタデータとデータをジャーナルへ書き出す(=ジャーナル量増加)

ただし、ジャーナルモードに依存せずにそれを行わなければならない

メタデータ

データ

ジャーナル

data=ordereddata=journaldata=journal

data=journal : メタデータとデータ

それ以外: メタデータのみ

スナップショット取得時の

メタデータとデータ+(=Copy-On-Writeされるデータ)

ディスク書き込み依存関係(Bを書き出し完了後, Aを書き出す)

ジャーナル解放依存関係(Bを書き出し完了後, Aを解放する)

A B

A Bスナップショット取得時に存在した

データが変更される場合

Page 25: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 24

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

必要な機能: beforeイメージジャーナル

問題点

data=orderedではジャーナルよりもデータへの書き出しを先に行わねばならず、既存のジャーナルへスナップショットのデータを追加する方針には問題がある

data=journalでは問題なく、data=writebackでは新たな制約を設ければ良い

メタデータ

データ

ジャーナル

data=ordered

実際のメタデータ

スナップショット取得時のメタデータとデータ

実際のデータ変更中にシステムクラッシュすると、ジャーナル中にあるスナップショットのデータはまだディスクに書き出されておらず消滅してしまう

(=Copy-On-Writeされるデータ)

Page 26: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 25

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

必要な機能: beforeイメージジャーナル

解決策従来のジャーナルとは別のスナップショット用のジャーナル(=beforeイメージジャーナル)を設ける

従来のジャーナルはafterイメージジャーナルと呼ぶ

メタデータ

データ

afterイメージジャーナル

data=journaldata=journal data=ordered

スナップショットファイルメタデータ

COWCOW

(取得元FS上にある)スナップショットファイル自身のメタデータを指す

スナップショット取得時のメタデータとデータ(=Copy-On-Writeされるデータ)

beforeイメージジャーナル

スナップショットファイルデータ

Page 27: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 26

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

スナップショットファイルメタデータ

スナップショットファイルデータ

必要な機能: Copy-On-Writeとbeforeイメージジャーナル

Copy-On-Write処理によるスナップショット取得時のデータの流れ

メタデータ

データ

beforeイメージジャーナル

スナップショットファイルメタデータ

スナップショットファイルデータ

afterイメージジャーナル

①: afterイメージジャーナル(data=orderedの場合はデータ)を書き出す前にスナップショット取得時の情報をコピー

COWCOW

①の前後(スナップショット取得時の情報が更新されるのを検知した後):

スナップショット取得時の情報を各々のスナップショットファイルへコピー

COW

COW

Page 28: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 27

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

スナップショットファイルデータ

スナップショットファイルメタデータ

COW

COW

スナップショットファイルメタデータ

スナップショットファイルデータ

COW

COW

必要な機能: スナップショットファイルのdelayed allocation

複数スナップショット取得時の問題点

スナップショット数が増えれば増えるほど、システムコールを完了するための変更ブロック数が増加し、afterイメージジャーナル量が多くなり過ぎ、処理が破綻

メタデータ

データ

beforeイメージジャーナル

スナップショットファイルメタデータ

スナップショットファイルデータ

afterイメージジャーナル

COW

COW

ジャーナル量がスナップショット数に比例し多くなり過ぎる

Page 29: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 28

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005必要な機能:

スナップショットファイルのdelayed allocation

解決策

ブロック割り当て処理をwrite()時に行うのではなく、ページ書き出し時に行うようにする

Copy-On-Write時に(afterイメージ)ジャーナルを必要としなく

なる

スナップショットファイルデータ

スナップショットファイルメタデータ

COW

COW

スナップショットファイルメタデータ

スナップショットファイルデータ

COW

COW

メタデータ

データ

beforeイメージジャーナル

スナップショットファイルメタデータ

スナップショットファイルデータ

afterイメージジャーナル

COW

COW

スナップショットファイルに対してdelayed allocationを行う

Page 30: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 29

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

必要な機能: クラッシュリカバリ

スナップショットの回復処理の追加

クラッシュリカバリの流れ

従来のジャーナルのリプレイ

従来のジャーナルの有効化

クラッシュ時にtruncate/unlink中であったファイルの処理

スナップショットの回復処理•beforeイメージジャーナルからスナップショットファイ

ルに対して更新

Page 31: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 30

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

必要な機能: スナップショット初期化

スナップショットファイル作成

見かけ上FSと同容量のファイルを作成

FSを停止させてメタデータをコピー

ext3FS with ext3スナップショット

①: スナップショット取得要求

メタデータ

データ

スナップショットファイル

②: スナップショットファイル作成

メタデータ

データ

④: メタデータのコピー

③: ファイルシステム停止

この時間がmkfs.ext3程度掛かってしまう(=FS停止時間が長すぎる)

⑤: ファイルシステム再開

Any: FSへの要求

Page 32: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 31

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

必要な機能: スナップショット初期化

解決策

FSの停止時間を短くするために前もってメタデータをコピーし、コピー中に変化したメタデータだけをFSを停止させて再度コピー

ext3FS with ext3スナップショット

①: スナップショット取得要求

メタデータ

データ

スナップショットファイル

②: スナップショットファイル作成

メタデータ

データ

③: メタデータのコピーと変更追跡

④: ファイルシステム停止

⑥: ファイルシステム再開

Any: FSへの要求

⑤: メタデータのコピー中に変更されたメタデータの

再コピー

Page 33: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 32

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

必要な機能: ブロック解放抑止

ブロック解放時のスナップショットのデータの保護スナップショット取得後は、スナップショットが該当ブロックを参照している可能性があり、もし参照している場合はブロック解放しない

ブロック解放抑止のタイミングブロック解放時

free_blocks()処理

Copy-On-Write時と異なり、解放処理はジャーナルされない(必要がない)ために解放抑止処理はブロック解放時で問題無い

Page 34: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 33

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

必要な機能: スナップショット用デバイス

スナップショットの利用スナップ取得元デバイスのデータとスナップショットファイルを選択的に読み込む専用ブロックデバイスから利用

1 2 4 スナップショット取得元FS

スナップショットファイル

スナップショット専用ブロックデバイス

0

0

1’

1

2’

2

3

3

4’

4

5

5

6

6

1 42

= スナップショット取得後に更新されていないデータブロック

= スナップショット取得後に更新されたデータブロック

Page 35: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3スナップショット現時点の実装状況

Page 36: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 35

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

現時点での実装

スナップショットの基本動作は実装完了

FS毎に1つのスナップショットが取得でき、スナップショット用デバイスを介してスナップショットをマウントし読み出せ、スナップショットを解放できる

制約条件

アンマウントやシステムクラッシュによりスナップショットは消滅する

ディスクフル時はスナップショット取得元FSがReadOnlyへ移行する

ディスクフルに関与しない部分への読み出しはスナップショット・取得FS共に可能

Page 37: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 36

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

現時点で実装した機能

実装済が青色, 未実装が赤色

ffsスナップショットと異なる方式で実装する機能

Copy-On-Writebeforeイメージジャーナル

既存のジャーナル量を増やしてdata=journalでスナップショットファイルをジャーナルしたアドホックな実装

スナップショットファイルのdelayed allocationクラッシュリカバリ

ffsスナップショットと同じ考え方で実装する機能

スナップショット初期化(スナップショットファイル作成)ブロック解放抑止

スナップショット用デバイス

Page 38: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3スナップショット現時点の実装の評価

Page 39: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 38

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

評価観点と測定内容

評価観点LVMスナップショット(ext3 on LVM)との比較

スナップショット未取得時のデータ更新・新規作成の速さ

スナップショットを取得する速さ

スナップショット取得後のデータ更新の速さ

スナップショット取得後のデータ新規作成の速さext3スナップショットではCopy-On-Write処理が発生しないが、LVMスナップショットではCopy-On-Write処理が発生する

測定内容(3回測定した各平均時間)スナップショット未取得時のデータ更新・新規作成の時間

スナップショット取得の時間とその際のFS停止の時間

スナップショット取得後の既存ファイルのデータ更新の時間

スナップショット取得後の新規ファイルのデータ作成の時間

Page 40: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 39

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005スナップショット未取得時の

既存データ更新と新規データ作成の時間

•データの更新・新規作成ともに若干遅い

•Copy-On-Writeのために予約するジャーナル量が増え、ジャーナルのディスク書き出し動作が増えているため

既存データ更新時間 新規データ作成時間

既存データ更新時間

(スナップショット未取得時)

0

50

100

150

200

250

300

350

200MB x 2 / 1GB 1GB x 2 / 20GB

既存データ更新容量 / 取得元FS容量

sec ext3ss

LVMss

新規データ作成時間

(スナップショット未取得時)

0

50

100

150

200

250

300

350

200MB x 2 / 1GB 1GB x 2 / 20GB

新規データ作成容量 / 取得元FS容量

sec ext3ss

LVMss

Page 41: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 40

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

スナップショット取得の時間

スナップショット取得時間 ddコマンドで新規データ作成しながらスナップショットを取得

スナップショット取得時間(I/O負荷無)

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

1GB 20GB

スナップショット取得元FS容量

sec ext3ss

LVMss

スナップショット取得時間(I/O負荷有)

0

20

40

60

80

100

120

140

160

1GB 20GB

スナップショット取得元FS容量

sec ext3ss

LVMss

•ext3の方が3~4倍程度遅い

•メタデータのコピー処理で必要なブロックを前もって確保するのではなく、その都度ブロックを確保しているため

•両者とも数十秒以上掛かっている

•LVMはI/O高負荷時スナップショット取得が遅いためかddコマンドによるデータの作成が速いためか

Page 42: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 41

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

スナップショット取得時のFS停止の時間

スナップショット取得時FS停止時間

•I/O負荷が無い時は問題無い

ddコマンドで新規データ作成しながらスナップショットを取得

•I/O負荷が有る時は数十秒もFS停止していて問題有り

•もしくは やむを得ない(かも)

FS停止時間(I/O負荷有)

0

5

10

15

20

25

30

35

40

45

1GB 20GB

スナップショット取得元FS容量

sec

ext3ss

FS停止時間(I/O負荷無)

0

0.5

1

1.5

22.5

3

3.5

4

4.5

5

1GB 20GB

スナップショット取得元FS容量

sec

ext3ss

Page 43: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 42

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005スナップショット取得後の

既存データ更新と新規データ作成の時間

既存データ更新時間 新規データ作成時間

新規データ作成時間

(スナップショット取得時)

0

200

400

600

800

1000

1200

1400

200MB x 2 / 1GB 1GB x 2 / 20GB

新規データ作成容量 / 取得元FS容量

sec ext3ss

LVMss

既存データ更新時間

(スナップショット取得時)

0

200

400

600

800

1000

1200

1400

200MB x 2 / 1GB 1GB x 2 / 20GB

既存データ更新容量 / 取得元FS容量

sec ext3ss

LVMss

•ext3の方が1.5~4倍程度遅い

•LVMの方がCopy-On-Write単位が大きいため、効率が良い

•少し遅すぎる(かも)

•ext3の方が1.5倍~3倍程度速い

•LVMの方がCopy-On-Write単位が大きいため、余分なCopy-On-Writeが発生している

Page 44: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 43

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

現時点の実装の評価のまとめ(LVMとの比較)

利点スナップショット取得後の新規データ作成が速い

更新されないデータはCopy-On-Writeされないので、余分なディスク容量の消費が無い

欠点(=今後の課題)スナップショット取得後の既存データ更新が遅い

スナップショット取得時間やI/O高負荷下のFS停止が長い

•課題はあるもののFSレイヤで実装する事により、LVMスナップショットと異なる性能特性を示し、ext3スナップショットの存在意義が認められる

•ただし実装途中なので数値は参考程度に

Page 45: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3スナップショットデモ

時間があれば…

Page 46: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 45

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ext3スナップショットの利用の流れ

利用例

スナップショットの取得から利用まで

スナップショットの利用終了から解放まで

# e3snapconfig –c /mnt/src/snapshot.img … ①# ssdevconfig –c /mnt/src/snapshot.img /dev/ssdev/0 … ②# mount /dev/ssdev/0 /mnt/ss … ③# cd /mnt/ss … ④

…# umount /mnt/ss … ⑤# ssdevconfig –d /dev/ssdev/0 … ⑥# e3snapconfig –d /mnt/src/snapshot.img … ⑦

Page 47: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

まとめ

Page 48: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

2005/06/01 Linux Conference 2005 47

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

まとめ

ext3FSへのスナップショット機能追加の設計と実装について述べ、その存在意義を示した

現時点のソースコード及び利用手順を以下で公開している

http://sourceforge.net/projects/ext3snapshot/

今後の課題スナップショット取得の性能向上

未実装部分の実装スナップショットの永続化

beforeイメージジャーナルの実装

クラッシュリカバリの実装

複数のスナップショットの取得スナップショットファイルのdelayed allocationの実装

Page 49: ext3ファイルシステムへの スナップショット機能の設計と実装lc.linux.or.jp/lc2005/slide/CP-03s.pdf · FreeBSD NetBSD ffs (=BSD fast file system) ... vnode仮想デバイス(=スナップショット用デバイス)

Copyright (C) NTT COMWARE Corporation., 2005Copyright (C) VA Linux Systems Japan K.K., 2005

ご静聴頂きまして誠にありがとうございました

前野真輝′ 松尾隆利′ 山幡為佐久″

所属: ′= NTTコムウェア株式会社, ″= VA Linux Systems Japan株式会社