目次 背景 スナップショットの概要及び実装例 ext3 スナップショットの実現動機 ext3 スナップショットの実現方針 ffs スナップショットの概要 ext3 ファイルシステムのジャーナル機能の概要 ext3 スナップショットの設計 現時点の実装とその評価 今後の課題 2005/06/01 Li

Similar documents
計算機概論

Microsoft Word - nvsi_060132jp_datadomain_restoreDRAFT4.doc

組込み Linux の起動高速化 株式会社富士通コンピュータテクノロジーズ 亀山英司 1218ka01 Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED

Ext4 online defrag実装に関する研究開発

WalB を動かしてみる

V8_教育テキスト.dot

PowerPoint プレゼンテーション

利用ガイド

PostgreSQL Plus 管理者ガイド

lc2005-nilfs-1.05.sxi

CLUSTERPRO MC StorageSaver 2.2 for Linux リリースメモ 2017(Apr) NEC Corporation ライセンス パッケージのインストール セットアップ マニュアル 補足事項 注意事項

TFTP serverの実装

Arcserve Replication/High Availability 製品の仕組み

<4D F736F F D20342E899E D2091E52D81848FAC82D682CC88F8897A2E646F6378>

PowerPoint プレゼンテーション

目次 1 VirtualBoot for Hyper-V とは バックアップを実行するマシンの設定 確認すべきこと SPX によるバックアップ VirtualBoot for Hyper-V を実行するマシンの設定 確

フォーマット/メンテナンスガイド

1. 対象装置 (1) 日立仮想 Fibre Channel アダプタ 適用装置 : EP8000 7xx 2. 仮想 FC アダプタドライバ来歴 この仮想 FC アダプタドライバは 次の機能拡張とバグ修正を含みます バージョン内容 新規追加 AIX ロ

スライド 1

変更履歴 項番版数内容更新日 版新規作成 2013 年 11 月 18 日 1

CLUSTERPRO MC RootDiskMonitor 1.1 for Linux リリースメモ 2013(Sep) NEC Corporation ライセンス パッケージのインストール セットアップ マニュアル

MiniTool Partition Wizard Free Edition の使い方 起動画面の右側にある Launch Application のボタンをクリックする Unallocated パーティションの拡張 1. E:(NTFS) のパーティションを選択し ツールバー

Microsoft PowerPoint fs

概要 ここでは先程デモを行った OpenStack の中で仮想マシンのデータがどのように管理されているかをご紹介致します OpenStack の中でデータがどのように配置され 管理されているかを知ることは 可用性を検討する上で非常に重要になります 2

Microsoft PowerPoint - yamagata.ppt

FIT2015( 第 14 回情報科学技術フォーラム ) RC-003 ファイル格納位置制御による Hadoop MapReduce ジョブの性能の向上 藤島永太山口実靖 工学院大学大学院工学研究科電気 電子工学専攻工学院大学工学部情報通信工学科 1. はじめに近年, 世界中の情報量が爆発的に増加し

フォーマット/メンテナンスガイド

1. 対象装置 (1) 日立仮想 Fibre Channel アダプタ 適用装置 : EP8000 7xx/S8xx/E8xx/S9xx 2. 仮想 FC アダプタドライバ来歴 この仮想 FC アダプタドライバは 次の機能拡張とバグ修正を含みます バージョン内容 新規追加 7

VMディスクサイズの変更

Data-Add User Manual.book

istorage ReplicationControl FileSystem Option 製品概要 本製品は データレプリケーション機能 (DynamicDataReplication, RemoteDataReplication) または スナップショット機能 (DynamicSnapVolum

Microsoft PowerPoint - MySQL-backup.ppt

Microsoft PowerPoint - OS07.pptx

V8_教育テキスト.dot

CLUSTERPRO MC RootDiskMonitor 2.3 for Linux HW-RAID 監視機能 リリースメモ 2018(Jun) NEC Corporation ライセンス パッケージのインストール セットアップ マニュアル

今さら聞けない!? Oracle入門 ~後編~

Warp demo station manual

ファイルシステム

フォーマット(初期化)について

PowerPoint Presentation

PowerPoint Presentation

DIRECTIONS

CD 起動可能な Linux KNOPPIX について 産業技術総合研究所 情報技術研究部門須崎有康

Microsoft Word - nvsi_080188jp_r1_netvault_oracle_rac_backup_complemental_guide_j_174x217.doc

CLUSTERPRO MC StorageSaver 1.1 for Linux リリースメモ 2015(Jun) NEC Corporation ライセンス パッケージのインストール セットアップ マニュアル 補足事項 注意事項

Doxygenを用いた効率的な プログラム仕様書の作成

(Microsoft Word - WhitePaper_EvaluationAvanceNVBU__rev2_\203t\203H\201[\203\200\211\374\222\371\224\305_.doc)

データ移行ツール ユーザーガイド Data Migration Tool User Guide SK kynix Inc Rev 1.01

CLUSTERPRO MC ProcessSaver ApsEdition 1.0 for Linux リリースメモ 2012(Sep) NEC Corporation ライセンス パッケージのインストール セットアップ マニュアル 補足事項 注意事項

MMUなしプロセッサ用Linuxの共有ライブラリ機構

ブート ~OS が起動されるまで~

RDX へのバックアップ 3 ベアメタル復旧手順書 2014 年 11 月

mpd の音楽再生用データを別のディスク /NAS にしたい ( ローカルディスク編 ) 簡単におおまかな手順を上級者のメモとして書いておきます 事前に確認しておくべき事項は以下です 追加接続するディスクの接続方法 (S-ATA/e-SATA/USB etc.) 追加接続するディスクのパーティション

Microsoft Word - AFT_3TB_HDD_install_guide doc

タイトル情報サーチ 目次 取扱説明書 Version 1.10 タイトル情報サーチの概要 必要なもの インストール 注意事項 音楽 CD のタイトル情報取得の手順 1 USB への記録 2 USB の接続 3 Gracenote データベースへのアクセス 4 USB への保存 5 NissanCon

アドバンスト・フォーマットディスクのパフォーマンス

Arcserve Backup r16 新機能 テープブロックサイズの拡張 効果実測 Arcserve Japan 1.5 版

CLUSTERPRO MC RootDiskMonitor 2.3 for Linux リリースメモ 2018(Jun) NEC Corporation ライセンス パッケージのインストール セットアップ マニュアル

Microsoft Word - nvsi_050090jp_oracle10g_vlm.doc

2-3- 基 Linux のシステム管理に関する知識 1 独立行政法人情報処理推進機構

7-Zip で作成する暗号化 ZIP ファイルの各種設定 Windows OS の標準機能で復号できるようにするには 次のように特定の設定をする必要がある (4) 作成する暗号化 ZIP ファイルの保存先とファイル名を指定する (5) アーカイブ形式として zip を選ぶ その他のアーカイブ形式を選

マニュアル訂正連絡票

ActiveImage Protector 3.5

各プール内で作成される仮想マシンの台数は 実際の利用者数の状況を観て調整しているが どのプールも の間で設定している また 各プールで使用するデータストアについては 容量が 6TByte のものを8つ用意し 2 つを事務系仮想マシン用のプール 残り 6 つを研究系仮想マシン用のプール

スライド 1

ActiveImage Protector 2016 R2 for Express5800 / ftサーバ

Windows AIKを使用したPE2

Microsoft PowerPoint - ShadowProtectIT手順書_ ppt

MIRACLE System Savior操作手順書

Linux ドライバのインストール

2 データをコピーするフォーマットするダウンしたら資料困ったときにはお使いになる前にもくじお使いになる前に...3 フォーマットする...4 macos ~ OS X の場合 5 OS X 以前の場合 7 データをコピーする...9

イントラネット仮想ホスティング Linux 仮想マシン初期利用ガイド ご参考資料 2015 年 06 月 29 日 Version 1.0 bit- drive Version1.0 イントラネット仮想ホスティグ Linux 仮想マシン初期利用ガイド ご参考資料 1/14

LinuxCD操作ガイド コピー

Windows Server 2012/2012 R2 Active Directory環境へのドメイン移行の考え方

Microsoft Word - nvsi_100222jp_oracle_exadata.doc

Microsoft PowerPoint - Module_pub_ _v1.02.ppt

USB ORCA Learning Edition Version USB ORCA Learning Edition ORCA Project セットアップ手順書 Version 年 1 月 17 日 ( 第 3 版 ) 社団法人日本医師会 ORCA Projec

Microsoft Word - PSM_Mig_FAS_16209.doc

SNC-HM662 EdgeStorage manual J

CLUSTERPRO MC ProcessSaver 2.1 for Linux リリースメモ 2016(Mar) NEC Corporation ライセンス パッケージのインスト ル セットアップ マニュアル 障害発生時の手順 補足事項 注意事項

移行手順書

1. はじめに Systemwalker Desktop Patrol V 以降でセキュリティ監査として BIOS パスワード設定の監査 を提供しています しかし Systemwalker Desktop Patrol メインメニュー のセキュリティ情報に表示される起動パスワード 設定パ

SP-H6-KC Saison Information Systems CO.,LTD

Microsoft Word - nvsi_090205jp_r9_vaultdr_local_addendum.doc

ホワイト ペーパー EMC VFCache により Microsoft SQL Server を高速化 EMC VFCache EMC VNX Microsoft SQL Server 2008 VFCache による SQL Server のパフォーマンスの大幅な向上 VNX によるデータ保護 E

Microsoft Word - nvsi_090200jp_r1_nvbsvr_mscs.doc

削除済みVSSスナップショットの復元

ファイルシステム管理とLVM

TOMOYO Linux

Futaba File System Utility T12K/T14SG/FX-22/T12FG/T8FG/FX-20 用ファイルシステムユーティリティ説明書 (Version 7. x) T12K/T14SG/FX-22/T12FG/T8FG/FX-20 はモデルデータを SD カードに保存する

EaseUS Data Recovery Wizard User Guide

Microsoft Word - nvsi_050110jp_netvault_vtl_on_dothill_sannetII.doc

Microsoft Word - CDDB_Manual_JPN_0801.doc

Microsoft Word - nvsi_090198_quantum dxi7500_nvb.doc

Microsoft PowerPoint - Android+TPMによるセキュアブート_KDDI研_後日配布用

Microsoft PowerPoint - OS11.pptx

. 目次 概要 リストア環境の設定... 3 ステップ 1-1 Recovery Environment メディアからの起動... 3 ステップ 1-2 タイムゾーンの選択... 4 ステップ 1-3 必要なドライバの読み込み... 5 ステップ 1-4 ネットワークドライブの割り当

21 章のお話

記憶域スペースダイレクト (S2D) を活用したハイパーコンバージドインフラ技術解説ガイド 概要本ドキュメントは Windows Server 2016 で構築したハイパーコンバージドインフラ (Hyper-Converged Infrastructure:HCI) を技術的な観点から解説したガイド

Microsoft Word - 楽天㇯ㅩ㇦ㅛIaaSㇵㅼã…fiã‡¹ä»Łæ§Ÿ.doc

Transcription:

ext3 ファイルシステムへの スナップショット機能の設計と実装 NTT コムウェア株式会社オープンソースソフトウェア推進部前野真輝 ( E-Mail: maeno.masaki@nttcom.co.jp )

目次 背景 スナップショットの概要及び実装例 ext3 スナップショットの実現動機 ext3 スナップショットの実現方針 ffs スナップショットの概要 ext3 ファイルシステムのジャーナル機能の概要 ext3 スナップショットの設計 現時点の実装とその評価 今後の課題 2005/06/01 Linux Conference 2005 1

背景

スナップショットの概要 スナップショットはある瞬間のイメージを保持 利点 : 短い時間でイメージを取得可能 スナップショットを取得する時 スナップショット取得元ファイルシステムポインタの作成のみ データ 1 データ 2 データ 3 データ 1 へのポインタデータ 2 へのポインタデータ 3 へのポインタ スナップショット スナップショット取得後に元の FS 上のデータ更新が発生する時 データ 1 データ 2 データ 3 更新前のデータのコピーポインタの変更 データ 1 へのポインタデータ 2 への ポインタデータ 3 へのポインタデータ3 2005/06/01 Linux Conference 2005 3

スナップショットの既存の実装例 名称 OS レイヤ 特徴 LVM (=logical volume manager) スナップショット Linux ブロックデバイスレイヤ Device-mapper を利用 ffs FreeBSD FS レイヤ ffs を拡張 (=BSD fast file system) スナップショット NetBSD ( 更新型 ) soft updates を利用 WAFL (=write anywhere file layout) スナップショット ストレージシステム FS レイヤ ( 追記型 (LFS)) NetApp 社が特許を持つ WAFL を拡張 スナップショットが同じ inode 番号を持つ SnapView TimeFinder ストレージシステム FS レイヤ EMC 社の Symmetrix 等の製品に採用 2005/06/01 Linux Conference 2005 4

ext3 スナップショットの実現動機 現在 Linux 上で有力なのは LVM スナップショット ブロックデバイスレイヤでの実装 スナップショット専用領域を別に確保して差分情報を格納 chunk 単位 (= 大きなサイズ ) でスナップショット取得後の更新前データのコピー (=Copy-On-Write) して保護 利点 スナップショット取得時に存在したデータの更新が速い スナップショットとして利用できる量を自由に決定可能 欠点 FS レベルでみると 更新されていないデータもコピーが行われるため 余分なコピーが発生し 余分にディスク容量を消費 利用できる量を超えるとスナップショットは消滅 FSレイヤで実装する事により欠点を解決できるのではないか 現在 Linuxで標準 FSである ext3fsへの実装 2005/06/01 Linux Conference 2005 5

ext3 スナップショットの実現目標 スナップショットを通常通り ext3fs としてマウントして利用可能 ジャーナリング FS でスナップショット機能が実装可能である事を実証する スナップショット数に FS レイアウト上の制限を付けない スーパブロックにスナップショット inode 番号を埋め込む事は受け入れない 短時間での ( スナップショットの ) クラッシュリカバリ ext3fs の特徴を失わない 2005/06/01 Linux Conference 2005 6

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

ext3 スナップショットの実現方針 ffs と ext3 の関係 ffs BSD ffs を元に設計 soft updates(soft dep) を利用して ffs snapshot スナップショット機能付加 ffs snapshot を元に設計 Linux ext2fs ジャーナル機能付加 ext3fs スナップショット機能付加 ext3 snapshot ext3 スナップショットも ffs スナップショットを基本にする ただし ext3fs のジャーナリングに関する制限を克服する実装が必要 2005/06/01 Linux Conference 2005 8

ext3 スナップショットの実現方針 ffs と ext3 の関係 ffs BSD ffs を元に設計 soft updates(soft dep) を利用して ffs snapshot スナップショット機能付加 ffs snapshot を元に設計 Linux ext2fs ジャーナル機能付加 ext3fs スナップショット機能付加 ext3 snapshot ext3 スナップショットも ffs スナップショットを基本にする ただし ext3fs のジャーナリングに関する制限を克服する実装が必要 まず ffs スナップショットと ext3fs のジャーナル機能について説明する 2005/06/01 Linux Conference 2005 9

ffs スナップショット

ffs スナップショットの概要 あらゆる更新操作についてデータを書き換えた後にポインタを変更する soft updates の機構を利用 inode 更新, 直接 / 間接ブロック確保, truncate down/up, ディレクトリ / エントリの追加 / 削除等のあらゆる更新操作のデータ依存関係を考慮 ブロック書き出し時に Copy-On-Write する事により スナップショット取得時のデータを保護 前述した動作と同じ データ 1 データ 2 データ 3 更新前のデータのコピーポインタの変更 データ データ1 へのポインタデータ2 へのポインタデータ3 へのポインタ ポインタデータ 3 2005/06/01 Linux Conference 2005 11

1 1 2 2 3 4 4 ffs スナップショットのデータ退避先とその利用 Copy-On-Write したデータ退避先は取得元 FS 内の通常ファイル (= スナップショットファイル : 取得元 FS と見かけ同容量の sparse ファイル ) へ行う 2: vnode 仮想デバイスへスナップショットファイルと取得元 FS を関連付ける 0 0 1 2 3 4 1 2 4 5 5 6 6 = スナップショット取得後に更新されたデータブロック 4: vnode 仮想デバイスをマウントしスナップショットを FS として利用 vnode 仮想デバイス (= スナップショット用デバイス ) 3: スナップショットファイルにブロックが存在すればスナップショットファイルから 存在しなければ取得元 FS から読み出し スナップショットファイル 1: スナップショット取得後から更新されるブロックを更新前にスナップショットファイルへコピー (=Copy-On-Write) スナップショット取得元 FS = スナップショット取得後に更新されていないデータブロック 2005/06/01 Linux Conference 2005 12

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

ext3fs のジャーナルの仕組みとその役割 複数のブロックにわたる不可分な変更内容をまずジャーナル領域へ書き出す事で システムクラッシュしても ジャーナルリプレイにより高速なリカバリを実現する ジャーナルも通常ファイルと同様に inode やデータブロックを持つ ジャーナルは別デバイスに確保する事も可能 1: データ変更要求 ext3fs 2: 変更内容を先に書き出す 3: 実際のデータを書き出す ジャーナル 実際のデータ 3 : 3 中にクラッシュした場合ジャーナル内のデータを利用してリカバリする 2005/06/01 Linux Conference 2005 14

ext3fs のジャーナルモード data=journal データを含む全ての変更をジャーナルする data=ordered (ext3 のデフォルトモード ) 通常ファイルのデータ以外 (inode や間接ブロックやビットマップブロックなどのメタデータ ) に対しジャーナルする ジャーナルを書き出す前に実際の通常ファイルのデータを書き出す data=writeback 通常ファイルのデータ以外 ( メタデータ ) に対しジャーナルする ジャーナルと通常ファイルのデータの書き出し順序は問わない 2005/06/01 Linux Conference 2005 15

ffs soft updates と ext3fs のディスク書き出し依存関係 ffs soft updates soft updatesは全ての追加 / 更新 / 削除の各操作に対して細かい単位でディスク書き出しの依存関係を追跡する必要有 ext3 ジャーナル data=journal メタデータ ジャーナル データ data=journal data=ordered ジャーナルは soft updatesに比べてディスク書き出しの依存関係が大幅に単純化 data=journal : メタデータとデータ それ以外 : メタデータのみ ディスク書き込み依存関係 (B を書き出し完了後, A を書き出す ) ジャーナル解放依存関係 (Bを書き出し完了後, Aを解放する ) 2005/06/01 Linux Conference 2005 16 A A B B

ext3 スナップショット 設計

ext3 スナップショットの実現方針 基本的な考え方は ffs スナップショットと同様 スナップショットの作成 スナップショットを取得する元のパーティション内へ見かけ上同容量のスナップショットファイルを作成 スナップショットの保護 ファイルシステム上のデータが更新される直前にスナップショット取得時のデータをスナップショットファイルへ退避 (=Copy-On-Write) スナップショットの利用 スナップショットファイルを関連付けたスナップショット専用のブロックデバイスからスナップショットを利用 基本的な考え方は ffs スナップショットと同様で既に動作を説明済みなので 処理の流れに沿うのではなく 各機能に焦点を当てて説明する 2005/06/01 Linux Conference 2005 18

ext3 スナップショットへ必要な機能 ffs スナップショットと異なる方式で実装する機能 Copy-On-Write beforeイメージジャーナル スナップショットファイルの delayed allocation クラッシュリカバリ ffs スナップショットと同じ考え方で実装する機能 スナップショット初期化 ( スナップショットファイル作成 ) ブロック解放抑止 スナップショット用デバイス 2005/06/01 Linux Conference 2005 19

必要な機能 : Copy-On-Write スナップショットのデータの保護 実際のデータが更新される前にスナップショット取得時のデータをスナップショットファイルへコピーする (=Copy-On-Write) 4: 実際のデータの更新 1: データ更新要求 ext3fs with ext3スナップショット 3: スナップショット 2: スナップショットのメタデータの更新取得時のデータを退避 メタデータ データ スナップショットファイルメタデータ データ 2005/06/01 Linux Conference 2005 20

必要な機能 : Copy-On-Write 問題点 ffs スナップショットではディスクブロックの書き出し前に Copy-On-Write しているが ext3fs では既にジャーナル領域に書き出されてしまった後である 解決策 その間にクラッシュするとスナップショットデータはジャーナルリプレイにより失われる ディスクブロック書き出し時ではなく データ更新時に Copy-On-Write する 2005/06/01 Linux Conference 2005 21

必要な機能 : Copy-On-Write Copy-On-Write のタイミング メタデータ更新の直前 ジャーナルの変更前処理 inode bitmap による inode ブロック内クリア処理 データ更新の直前 write() 処理 mmap() 処理 direct_io() 処理 ブロック境界でない truncate down 処理 2005/06/01 Linux Conference 2005 22

必要な機能 : before イメージジャーナル クラッシュ時のスナップショットのデータの保護 スナップショット取得時のメタデータとデータをジャーナルへ書き出す (= ジャーナル量増加 ) data=journal ただし ジャーナルモードに依存せずにそれを行わなければならない メタデータ データ data=journal data=ordered A A B ディスク書き込み依存関係 (B を書き出し完了後, A を書き出す ) B スナップショット取得時に存在した ジャーナル解放依存関係 (Bを書き出し完了後, Aを解放する ) データが変更される場合 ジャーナル data=journal : メタデータとデータ それ以外 : メタデータのみ スナップショット取得時の + メタデータとデータ (=Copy-On-Write されるデータ ) 2005/06/01 Linux Conference 2005 23

必要な機能 : before イメージジャーナル 問題点 data=ordered data=ordered ではジャーナルよりもデータへの書き出しを先に行わねばならず 既存のジャーナルへスナップショットのデータを追加する方針には問題がある data=journal では問題なく data=writeback では新たな制約を設ければ良い メタデータ データ 実際のデータ変更中にシステムクラッシュすると ジャーナル中にあるスナップショットのデータはまだディスクに書き出されておらず消滅してしまう ジャーナル 実際のメタデータ スナップショット取得時のメタデータとデータ (=Copy-On-Write されるデータ ) 2005/06/01 Linux Conference 2005 24

必要な機能 : before イメージジャーナル 解決策 従来のジャーナルとは別のスナップショット用のジャーナル (=before イメージジャーナル ) を設ける 従来のジャーナルは after イメージジャーナルと呼ぶ メタデータ スナップショットファイルメタデータ ( 取得元 FS 上にある ) スナップショットファイル自身のメタデータを指す データ スナップショットファイルデータ data=journal data=journal data=ordered COW COW after イメージジャーナル before イメージジャーナル スナップショット取得時のメタデータとデータ (=Copy-On-Writeされるデータ ) 2005/06/01 Linux Conference 2005 25

必要な機能 : Copy-On-Write と before イメージジャーナル スナップショットファイルスナップショットファイルメタデータメタデータ Copy-On-Write 処理によるスナップショット取得時のデータの流れ 1:after イメージジャーナル (data=ordered の場合はデータ ) を書き出す前にスナップショット取得時の情報をコピー メタデータ 1 の前後 ( スナップショット取得時の情報が更新されるのを検知した後 ): スナップショット取得時の情報を各々のスナップショットファイルへコピー データ after イメージジャーナル COW COW COW COW スナップショットファイルスナップショットファイルデータデータ before イメージジャーナル 2005/06/01 Linux Conference 2005 26

必要な機能 : スナップショットファイルの delayed allocation 複数スナップショット取得時の問題点 スナップショット数が増えれば増えるほど システムコールを完了するための変更ブロック数が増加し after イメージジャーナル量が多くなり過ぎ 処理が破綻 メタデータ スナップショットファイルスナップショットファイルメタデータメタデータメタデータ データ after イメージジャーナル COW COW COW COW COW COW スナップショットファイルスナップショットファイルデータデータ ジャーナル量がスナップショット数に比例し多くなり過ぎる before イメージジャーナル 2005/06/01 Linux Conference 2005 27

必要な機能 : スナップショットファイルの delayed allocation 解決策 ブロック割り当て処理を write() 時に行うのではなく ページ書き出し時に行うようにする Copy-On-Write 時に (after イメージ ) ジャーナルを必要としなくなる メタデータ スナップショットファイルスナップショットファイルメタデータメタデータメタデータ データ after イメージジャーナル COW COW COW COW COW COW スナップショットファイルスナップショットファイルデータデータ スナップショットファイルに対して before delayed イメージジャーナル allocationを行う 2005/06/01 Linux Conference 2005 28

必要な機能 : クラッシュリカバリ スナップショットの回復処理の追加 クラッシュリカバリの流れ従来のジャーナルのリプレイ従来のジャーナルの有効化 スナップショットの回復処理 before イメージジャーナルからスナップショットファイルに対して更新 クラッシュ時に truncate/unlink 中であったファイルの処理 2005/06/01 Linux Conference 2005 29

必要な機能 : スナップショット初期化 スナップショットファイル作成 見かけ上 FSと同容量のファイルを作成 FSを停止させてメタデータをコピー 1: スナップショット取得要求 ext3fs with ext3 スナップショット 4: メタデータのコピー 2: スナップショットファイル作成 メタデータ データ Any: FSへの要求 3: ファイルシステム停止 5: ファイルシステム再開 この時間が mkfs.ext3 程度掛かってしまう (=FS 停止時間が長すぎる ) スナップショットファイルメタデータデータ 2005/06/01 Linux Conference 2005 30

必要な機能 : スナップショット初期化 解決策 FSの停止時間を短くするために前もってメタデータをコピーし コピー中に変化したメタデータだけを FSを停止させて再度コピー 1: スナップショット取得要求 ext3fs with ext3 スナップショット 3: メタデータのコピーと変更追跡 Any: FSへの要求 4: ファイルシステム停止 6: ファイルシステム再開 2: スナップショットファイル作成 メタデータ 5: メタデータのコピー中に変更されたメタデータのデータ再コピー スナップショットファイルメタデータ データ 2005/06/01 Linux Conference 2005 31

必要な機能 : ブロック解放抑止 ブロック解放時のスナップショットのデータの保護 スナップショット取得後は スナップショットが該当ブロックを参照している可能性があり もし参照している場合はブロック解放しない ブロック解放抑止のタイミング ブロック解放時 free_blocks() 処理 Copy-On-Write 時と異なり 解放処理はジャーナルされない ( 必要がない ) ために解放抑止処理はブロック解放時で問題無い 2005/06/01 Linux Conference 2005 32

必要な機能 : スナップショット用デバイス スナップショットの利用 スナップ取得元デバイスのデータとスナップショットファイルを選択的に読み込む専用ブロックデバイスから利用 0 1 2 3 4 5 6 スナップショット専用ブロックデバイス 1 2 4 スナップショットファイル 0 1 1 2 2 3 4 4 5 6 スナップショット取得元 FS = スナップショット取得後に更新されたデータブロック = スナップショット取得後に更新されていないデータブロック 2005/06/01 Linux Conference 2005 33

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

現時点での実装 スナップショットの基本動作は実装完了 FS 毎に 1 つのスナップショットが取得でき スナップショット用デバイスを介してスナップショットをマウントし読み出せ スナップショットを解放できる 制約条件 アンマウントやシステムクラッシュによりスナップショットは消滅する ディスクフル時はスナップショット取得元 FS が ReadOnly へ移行する ディスクフルに関与しない部分への読み出しはスナップショット 取得 FS 共に可能 2005/06/01 Linux Conference 2005 35

現時点で実装した機能 実装済が青色, 未実装が赤色 ffs スナップショットと異なる方式で実装する機能 Copy-On-Write before イメージジャーナル 既存のジャーナル量を増やして data=journal でスナップショットファイルをジャーナルしたアドホックな実装 スナップショットファイルの delayed allocation クラッシュリカバリ ffs スナップショットと同じ考え方で実装する機能 スナップショット初期化 ( スナップショットファイル作成 ) ブロック解放抑止 スナップショット用デバイス 2005/06/01 Linux Conference 2005 36

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

評価観点と測定内容 評価観点 LVM スナップショット (ext3 on LVM) との比較 スナップショット未取得時のデータ更新 新規作成の速さ スナップショットを取得する速さ スナップショット取得後のデータ更新の速さ スナップショット取得後のデータ新規作成の速さ ext3 スナップショットでは Copy-On-Write 処理が発生しないが LVM スナップショットでは Copy-On-Write 処理が発生する 測定内容 (3 回測定した各平均時間 ) スナップショット未取得時のデータ更新 新規作成の時間 スナップショット取得の時間とその際の FS 停止の時間 スナップショット取得後の既存ファイルのデータ更新の時間 スナップショット取得後の新規ファイルのデータ作成の時間 2005/06/01 Linux Conference 2005 38

スナップショット未取得時の既存データ更新と新規データ作成の時間 既存データ更新時間 新規データ作成時間 既存データ更新時間 ( スナップショット未取得時 ) 新規データ作成時間 ( スナップショット未取得時 ) 350 300 250 350 300 250 sec 200 150 ext3ss LVMss sec 200 150 ext3ss LVMss 100 100 50 50 0 200MBx2/1GB 1GBx2/20GB 0 200MBx2/1GB 1GBx2/20GB 既存データ更新容量 / 取得元 FS 容量 新規データ作成容量 / 取得元 FS 容量 データの更新 新規作成ともに若干遅い Copy-On-Write のために予約するジャーナル量が増え ジャーナルのディスク書き出し動作が増えているため 2005/06/01 Linux Conference 2005 39

スナップショット取得の時間 スナップショット取得時間 スナップショット取得時間 (I/O 負荷無 ) dd コマンドで新規データ作成しながらスナップショットを取得 スナップショット取得時間 (I/O 負荷有 ) sec 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 ext3ss LVMss sec 160 140 120 100 80 60 40 20 0 ext3ss LVMss 1GB 20GB 1GB 20GB スナップショット取得元 FS 容量 スナップショット取得元 FS 容量 ext3 の方が 3~4 倍程度遅い メタデータのコピー処理で必要なブロックを前もって確保するのではなく その都度ブロックを確保しているため 両者とも数十秒以上掛かっている LVM は I/O 高負荷時スナップショット取得が遅いためか dd コマンドによるデータの作成が速いためか 2005/06/01 Linux Conference 2005 40

スナップショット取得時の FS 停止の時間 スナップショット取得時 FS 停止時間 FS 停止時間 (I/O 負荷無 ) dd コマンドで新規データ作成しながらスナップショットを取得 FS 停止時間 (I/O 負荷有 ) sec 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 ext3ss sec 45 40 35 30 25 20 15 10 5 0 ext3ss 1GB 20GB 1GB 20GB スナップショット取得元 FS 容量 スナップショット取得元 FS 容量 I/O 負荷が無い時は問題無い I/O 負荷が有る時は数十秒も FS 停止していて問題有り もしくはやむを得ない ( かも ) 2005/06/01 Linux Conference 2005 41

スナップショット取得後の既存データ更新と新規データ作成の時間 既存データ更新時間 既存データ更新時間 ( スナップショット取得時 ) 新規データ作成時間 新規データ作成時間 ( スナップショット取得時 ) 1400 1400 1200 1200 1000 1000 sec 800 600 400 200 0 200MBx2/1GB 1GBx2/20GB 既存データ更新容量 / 取得元 FS 容量 ext3ss LVMss sec 800 600 400 200 0 200MBx2/1GB 1GBx2/20GB 新規データ作成容量 / 取得元 FS 容量 ext3ss LVMss ext3 の方が 1.5~4 倍程度遅い ext3 の方が 1.5 倍 ~3 倍程度速い LVM の方が Copy-On-Write 単位が大きいため 効率が良い 少し遅すぎる ( かも ) LVM の方が Copy-On-Write 単位が大きいため 余分な Copy- On-Write が発生している 2005/06/01 Linux Conference 2005 42

利点 現時点の実装の評価のまとめ (LVM との比較 ) スナップショット取得後の新規データ作成が速い 更新されないデータは Copy-On-Write されないので 余分なディスク容量の消費が無い 欠点 (= 今後の課題 ) スナップショット取得後の既存データ更新が遅い スナップショット取得時間や I/O 高負荷下の FS 停止が長い 課題はあるものの FS レイヤで実装する事により LVM スナップショットと異なる性能特性を示し ext3 スナップショットの存在意義が認められる ただし実装途中なので数値は参考程度に 2005/06/01 Linux Conference 2005 43

ext3 スナップショット デモ 時間があれば

ext3 スナップショットの利用の流れ 利用例 スナップショットの取得から利用まで # e3snapconfig c /mnt/src/snapshot.img 1 # ssdevconfig c /mnt/src/snapshot.img /dev/ssdev/0 2 # mount /dev/ssdev/0 /mnt/ss 3 # cd /mnt/ss 4 スナップショットの利用終了から解放まで # umount /mnt/ss 5 # ssdevconfig d /dev/ssdev/0 6 # e3snapconfig d /mnt/src/snapshot.img 7 2005/06/01 Linux Conference 2005 45

まとめ

まとめ ext3fs へのスナップショット機能追加の設計と実装について述べ その存在意義を示した 現時点のソースコード及び利用手順を以下で公開している http://sourceforge.net/projects/ext3snapshot/ 今後の課題 スナップショット取得の性能向上 未実装部分の実装 スナップショットの永続化 before イメージジャーナルの実装 クラッシュリカバリの実装 複数のスナップショットの取得 スナップショットファイルの delayed allocation の実装 2005/06/01 Linux Conference 2005 47

ご静聴頂きまして 誠にありがとうございました 前野真輝 松尾隆利 山幡為佐久 所属 : =NTT コムウェア株式会社, =VALinuxSystemsJapan 株式会社