Transcript
Page 1: Btrfsの基礎 part1 機能編

Copyright 2014 FUJITSU LIMITED

Btrfsの基礎- part1. 機能編 -

2014年9月17日Satoru Takeuchi

Linux Development Div.

Fujitsu LTD.

Page 2: Btrfsの基礎 part1 機能編

目次

はじめに

概要

基本設計

機能紹介

1 Copyright 2014 FUJITSU LIMITED

Page 3: Btrfsの基礎 part1 機能編

はじめに

前提知識 Linux上でXFS, ext4の使用経験あり

btreeの知識[1]

説明方針設計(data構造とalgorithmの概要)の説明を重視

• それさえわかれば、codeの詳細は一目瞭然

• 一般的&重要な機能に絞って、簡単なものから一つずつ

一度にたくさん詰め込んで説明しない

調査に使用したkernel version 3.16

2 Copyright 2014 FUJITSU LIMITED

Page 4: Btrfsの基礎 part1 機能編

概要

Linuxの次世代main streamになる予定のfile system ZFSの影響を受けており、機能も類似(equalではない。UIも異なる)

主な特長 XFSやext4より高信頼な設計

• CoW形式のdata更新、checksum, RAID構成

XFSと同等のscalability(最大file/file system sizeは16EiB。XFSは8EiB)

• 性能は発展途上(改善中)

LVMのようなvolume management機能

• snapshot採取

• file systemへのpartition/deviceのonline追加/削除/置換

• LVMより運用が容易、かつ高速

3 Copyright 2014 FUJITSU LIMITED

Page 5: Btrfsの基礎 part1 機能編

基本設計

中心技術 btreeを核とした媒体構造

Copy on Write(CoW)型のfile更新

既存dataの更新処理を例に、高信頼性を説明比較対象: 一般的なoverride型のfile更新: ext4, XFSなどが採用

• 詳細は説明しないがmetadata journalingが有効とする

4 Copyright 2014 FUJITSU LIMITED

Page 6: Btrfsの基礎 part1 機能編

やりたいこと

注意: 以下はあくまで概念図。正確なdata構造とは異なる(これ以降の図も同様)

5 Copyright 2014 FUJITSU LIMITED

この2つのdataを更新したい

Page 7: Btrfsの基礎 part1 機能編

やりたいこと: 付随作業

6 Copyright 2014 FUJITSU LIMITED

metadata

data

この2つのdataを更新したい関連するmetadataも

要更新

Page 8: Btrfsの基礎 part1 機能編

override型: 更新前の状態

7 Copyright 2014 FUJITSU LIMITED

metadata

data

この2つのdataを更新したい

Page 9: Btrfsの基礎 part1 機能編

override型: 更新

8 Copyright 2014 FUJITSU LIMITED

metadata

data

既存dataを上書き(override)して更新

Page 10: Btrfsの基礎 part1 機能編

override型: 更新中の障害発生

ここでkernel panicが発生したらどうなるか?

9 Copyright 2014 FUJITSU LIMITED

metadata

data

更新済

未更新

Page 11: Btrfsの基礎 part1 機能編

override型: 障害発生後の復旧

metadata: journalingによって更新前後いずれかの整合性のとれた状態を保証

data: 更新中の中途半端な状態になりうる

10 Copyright 2014 FUJITSU LIMITED

metadata

data

更新前の状態

更新中の中途半端な状態

Page 12: Btrfsの基礎 part1 機能編

CoW型: 更新前の状態

11 Copyright 2014 FUJITSU LIMITED

metadata

data

この2つのdataを更新したい関連するmetadataも

要更新

Page 13: Btrfsの基礎 part1 機能編

CoW型: 更新用copyの作成

まず変更予定sub treeのcopyを作成 root nodeを除く

12 Copyright 2014 FUJITSU LIMITED

Page 14: Btrfsの基礎 part1 機能編

CoW型: copyを更新

copyした領域を更新

13 Copyright 2014 FUJITSU LIMITED

Page 15: Btrfsの基礎 part1 機能編

CoW型: pointer張り替え

root nodeのpointerを張り替えれば終了

参照されなくなった古いsub treeは後ほど非同期に廃棄

14 Copyright 2014 FUJITSU LIMITED

Page 16: Btrfsの基礎 part1 機能編

CoW型: 更新中の障害発生

ここでkernel panicが発生したらどうなるか?

15 Copyright 2014 FUJITSU LIMITED

Page 17: Btrfsの基礎 part1 機能編

CoW型: 障害発生後の復旧

元のtree構造は全く変化なし data, metadata共に整合性を保証

作成途中のsub treeは後ほど非同期に廃棄

16 Copyright 2014 FUJITSU LIMITED

後で捨てる

元の状態

Page 18: Btrfsの基礎 part1 機能編

実例: overwrite型 vs CoW型

1,000回の強制電源断testの結果[2] Btrfs: 一切問題発生せず

ext4(ordered mode): metadata破壊によりdisk full状態に

• なぜかmetadataが壊れているが…

17 Copyright 2014 FUJITSU LIMITED

Page 19: Btrfsの基礎 part1 機能編

高信頼化用の更なる仕組み

RAID構成 file system levelで実施

管理単位はbtreeのnode, およびdata extent(詳細は媒体構造編を参照)

checksum: 全metadata,dataのchecksumを管理

管理単位はRAID構成のときと同じ

read/write時&user指定時(scrub command発行時)に整合性check

不整合検出時の対処

• mirroringあり(RAID1, RAID10): 正しいchecksumを持つ別のdata copyを元に正しいdataを復元

• mirroringなし: 不整合検出dataをfile systemから切り離し

18 Copyright 2014 FUJITSU LIMITED

Page 20: Btrfsの基礎 part1 機能編

機能説明

次のcategoryに分けて説明基本機能

volume管理機能

耐障害機能

復旧用機能

重要な機能に絞って説明詳細はmanを参照

19 Copyright 2014 FUJITSU LIMITED

Page 21: Btrfsの基礎 part1 機能編

基本機能

作成/mount

状態確認

透過的data圧縮

SSD向け最適化

20 Copyright 2014 FUJITSU LIMITED

Page 22: Btrfsの基礎 part1 機能編

作成/mount

任意の個数のdeviceから作成可能各deviceのsize, 性能、種類(HDD or SSD)は同程度のものにしておくほうが

無用なtroubleを回避可能

使用方法単一deviceから作成: mkfs.btrfs [<options>] <device>

複数deviceから作成: mkfs.btrfs [<options>] <device list>

mount: mount -o <options> <device>

• mount時に指定したdevice listの中から任意のdeviceを指定可能

• 他のdeviceの情報は自動検出

21 Copyright 2014 FUJITSU LIMITED

Page 23: Btrfsの基礎 part1 機能編

状態確認

file systemの様々な状態を確認

使い方 label, uuid, device構成情報など: btrfs filesystem show <path>

diskの空き領域: btrfs filesystem df <device> <path>

• 詳細は後述

• [注意] 通常のdf commandは使用不可(結果が信用できない)

device構成情報: btrfs device status <path>

22 Copyright 2014 FUJITSU LIMITED

Page 24: Btrfsの基礎 part1 機能編

透過的data圧縮

storageへのI/O前の圧縮/伸張によりI/O高速化&storage使用量削減CPU intensiveなsystemよりI/O intensiveなsystemで真価を発揮

組み込みCPUなどの低速なCPUでは性能劣化の可能性も

適用可否の判断には要性能測定

使用できるmode no(default), lzo, zlib: 右側ほど圧縮に長時間を要するが、高圧縮率

使用方法(file system全体): mount optionにより指定 compress=<lzo|zlib>: 圧縮率が悪ければ圧縮しない

compress-force=<lzo|zlib>: 圧縮率が悪くても強制圧縮

使用方法(個々のfile): chattrにより指定

23 Copyright 2014 FUJITSU LIMITED

Page 25: Btrfsの基礎 part1 機能編

透過的data圧縮の流れ: write

24 Copyright 2014 FUJITSU LIMITED

user buffer storage

データ 圧縮後のデータデータ

1) データのcopy 2) 圧縮&書き込み

page cache

Userは圧縮の有無を認識しない

計算量は増加 storageへのデータ転送量縮小=> I/O高速化=> storage利用効率向上

Page 26: Btrfsの基礎 part1 機能編

透過的data圧縮の流れ: read

25 Copyright 2014 FUJITSU LIMITED

user buffer storage

データ 圧縮後のデータデータ

2) データのcopy 1) 展開&読み出し

page cache

Userは圧縮の有無を認識しない

計算量は増加 storageへのデータ転送量縮小=> I/O高速化=> storage利用効率向上

Page 27: Btrfsの基礎 part1 機能編

SSD向け最適化

SSDの特性を考慮した動作論理に変更

使い方: mount optionによって指定 SSD向け最適化: <ssd|nossd> optionによって有効化/無効化

• 明に指定しなくてもmount時に自動検出可能

TRIM/discard: <discard|nodiscard> optionによって有効化/無効化

• 未使用領域をdeviceに通知し、容量削減&deviceの長寿命化

• SSD以外にも、VM imageやthin provisioning deviceの容量削減にも有用

• 性能劣化する場合もあるので、使用可否の判断には要性能測定

低速なSSD向け最適化: ssd_spread option(暗にssdも有効化される)

• 大きな領域から優先的に空き領域を獲得

• server向けのSSDの場合、controllerが優秀なので、多分不要

26 Copyright 2014 FUJITSU LIMITED

Page 28: Btrfsの基礎 part1 機能編

volume管理機能

device追加/削除/置換

balance

subvolume

snapshot

quota

27 Copyright 2014 FUJITSU LIMITED

Page 29: Btrfsの基礎 part1 機能編

device追加/削除/置換

既存のbtrfsにonlineでdeviceを追加/削除/置換注意: 削除時はbtree構造の再構成処理(balance処理。後述)が強制動作

使い方追加: btrfs device add <device> <path>

削除: btrfs device delete <device> <path>

置換: <old>のdataを<new>にcopy後、treeのpointerを切り替え

開始: btrfs replace start <old> <new> <path>

進捗確認: btrfs replace status <path>

中止: btrfs replace cancel <path>

28 Copyright 2014 FUJITSU LIMITED

Page 30: Btrfsの基礎 part1 機能編

追加処理の概念図

初期状態: /dev/sda, /dev/sdbから成るfile systemmount point: /btrfs/mnt/pnt

29 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

Page 31: Btrfsの基礎 part1 機能編

device追加commandの発行

Btrfsのvolumeに/dev/sdcを追加 command: btrfs device add /dev/sdc /btrfs/mnt/pnt

30 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

Page 32: Btrfsの基礎 part1 機能編

新規deviceを使用

新規領域は、次回書き込み発生時から使用

31 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

例: 新規file作成

Page 33: Btrfsの基礎 part1 機能編

削除処理の概念図

初期状態: /dev/sda, /dev/sdb, /dev/sdc から成るBtrfsmount point: /btrfs/mnt/pnt

32 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

Page 34: Btrfsの基礎 part1 機能編

device削除commandの発行

Btrfsのvolumeから/dev/sdcを削除 command: btrfs device delete /dev/sdc

33 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

これを削除

Page 35: Btrfsの基礎 part1 機能編

削除deviceのdata copy

/dev/sdc内のdataをすべて、/dev/sdaか/dev/sdcにcopy(後述のbalance処理)

34 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

copy

Page 36: Btrfsの基礎 part1 機能編

pointer張り替え

削除対象deviceからその他deviceにpointerを張り替え

35 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

pointer張り替え

Page 37: Btrfsの基礎 part1 機能編

削除deviceの切り離し

削除deviceをBtrfsのvolumeから切り離せば終了途中で失敗しても元のtreeはそのまま残っているので問題なし

36 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

Page 38: Btrfsの基礎 part1 機能編

置換処理の概念図

初期状態: /dev/sda, /dev/sdbから成るfile systemmount point: /btrfs/mnt/pnt

37 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

Page 39: Btrfsの基礎 part1 機能編

device置換commandの発行

Btrfsのvolumeの/dev/sdbを/dev/sdcに置換 command: btrfs device replace /dev/sdb /dev/sdc /btrfs/mnt/pnt

38 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

Page 40: Btrfsの基礎 part1 機能編

置換deviceのdataをcopy

/dev/sdb内のsub treeを/dev/sdcにcopy

39 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

subtreeをcopy

Page 41: Btrfsの基礎 part1 機能編

pointerの張り替え

置換元deviceへのpointerを置換先deviceに張り替え

40 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc張り替え

Page 42: Btrfsの基礎 part1 機能編

置換元deviceの切り離し

これで完了途中で失敗しても、元のtreeはそのまま残っているので問題なし

41 Copyright 2014 FUJITSU LIMITED

/dev/sda

Btrfsのvolume全体

/dev/sdc

Page 43: Btrfsの基礎 part1 機能編

balance

device間でのdata格納量の平準化性能特性の平準化を期待

device追加直後は、balanceを推奨

• 追加前から存在したdevice: dataが存在

• 追加したdevice: dataがほぼ存在しない(後述のsuper blockのみ)

balance中にumount, crashすると、次回mount時に再開

使い方開始: btrfs balance start <path>

進捗確認: btrfs balance status <path>

中断: btrfs balance pause <path>

再開: btrfs balance resume <path>

中止: btrfs balance cancel <path>

42 Copyright 2014 FUJITSU LIMITED

Page 44: Btrfsの基礎 part1 機能編

balanceの概念図

/dev/sda, /dev/sdbから成るBtrfsへの/dev/sdc追加直後mount pointは/btrfs/mnt/pnt

43 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

• 全く使用していない• 性能ばらつき発生の可能性あり

Page 45: Btrfsの基礎 part1 機能編

balance commandの発行

Btrfsのtree構造不均衡を解消 command: btrfs balance start /btrfs/mnt/pnt

44 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

Page 46: Btrfsの基礎 part1 機能編

dataのcopy

全deviceのdata使用量がbalanceするよう、balance後のtreeを構築

45 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

copy

Page 47: Btrfsの基礎 part1 機能編

pointerの張り替え

46 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

張り替え

Page 48: Btrfsの基礎 part1 機能編

data copy(繰り返し)

balance完了していなければ、同様の処理を繰り返す

47 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

copy

Page 49: Btrfsの基礎 part1 機能編

pointer張り替え(繰り返し)

48 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

張り替え

Page 50: Btrfsの基礎 part1 機能編

balanceの完了

device間のdata量が均衡すれば、終了途中で失敗しても中途半端な状態は見えない

49 Copyright 2014 FUJITSU LIMITED

/dev/sda /dev/sdb

Btrfsのvolume全体

/dev/sdc

後で解放 後で解放

Page 51: Btrfsの基礎 part1 機能編

subvolume

file system内に作成する、個別のfile systemとしてmountできる領域 Btrfsの様々な操作(後述のsnapshot, quota)はsubvolume単位で行う

bind mountとの違い

• Subvolumeごとに独立したinode namespaceを保持

• Subvolumeのmount前にfile system rootをmountしておく必要は無い

• 例: subvolumeをsystem volumeに設定可能

mount optionは共通(初回mountのものに合わせられる)

使い方生成: btrfs subvolume create <path>

削除: btrfs subvolume delete <path>

全subvolumeの列挙: btrfs subvolume list <path>

特定subvolumeの情報表示: btrfs subvolume show <path>

mount: mount -o subvol=<subvol path> <path>

50 Copyright 2014 FUJITSU LIMITED

Page 52: Btrfsの基礎 part1 機能編

snapshot

root tree or subvolume(or snapshot)のcopy subvolumeの一種。subvolumeに対するcommandを全て適用可能

更新時はCoWによって、更新したdataのみcopyされる

read onlyのsnapshotも作成可能

metadataだけのcopyなので、full copyに比べて高速に作成可能注意: backupとsnapshotは異なる

• 共有dataが壊れれば関連snapshotのdataは全て影響を受ける

使い方生成: btrfs subvolume snapshot [-r] <src> <dest>

• -rを指定するとreadonly。指定しなければreadwrite

削除: btrfs subvolume delete <path>

51 Copyright 2014 FUJITSU LIMITED

Page 53: Btrfsの基礎 part1 機能編

snapshotの概念図

初期状態: 以下のようなfile system treeが存在mount point: /btrfs/mnt/pnt

pwd: 同上

52 Copyright 2014 FUJITSU LIMITED

metadata

data

file systemのroot

subvolume “foo”のroot

Page 54: Btrfsの基礎 part1 機能編

snapshot採取command

コマンド: btrfs subvolume snapshot foo bar

53 Copyright 2014 FUJITSU LIMITED

ここ(foo)のsnapshotを採取したい

Page 55: Btrfsの基礎 part1 機能編

metadataのcopy

fooのmetadataをcopy

54 Copyright 2014 FUJITSU LIMITED

copy

Page 56: Btrfsの基礎 part1 機能編

pointerを張る

copy先dataからfooのdataへのpointerを張る

55 Copyright 2014 FUJITSU LIMITED

Page 57: Btrfsの基礎 part1 機能編

file system treeからのpointerを張る

file system treeのrootからbarへのpointerを張り、完了 data copyは不要なので、通常のcopyよりも高速

56 Copyright 2014 FUJITSU LIMITED

以後”/bar”として認識される

Page 58: Btrfsの基礎 part1 機能編

snapshot更新時の挙動

例: /bar以下のfileのdataを更新

57 Copyright 2014 FUJITSU LIMITED

/

/foo /bar

ここを更新

Page 59: Btrfsの基礎 part1 機能編

snapshot更新時の挙動: CoW

更新領域のみcopy, 更新、pointer張り替え元subvolume(foo)には影響なし

58 Copyright 2014 FUJITSU LIMITED

copy

張り替え

/

/foo /bar

Page 60: Btrfsの基礎 part1 機能編

file単位のsnapshot

subvolume単位ではなくfile単位のsnapshotを作成可能新たにinodeを作成

• dataを共有、metadataは新規作成

• data更新時はCoWにより、更新した領域だけ新規copyを作成

使い方: 同じsubvolume内にあることが基本作成: cp --reflink <src> <dst>

59 Copyright 2014 FUJITSU LIMITED

Page 61: Btrfsの基礎 part1 機能編

quota

subvolume単位でstorageの使用量を制限 XFSのgroup/project quotaに類似

quota制限付きのsubvolumeをquota group(qgroup)と呼ぶ

qgroupの親子関係を作成可能

• 親qgroupの制限を子qgroupにも継承

• 注意: 親子関係はfile system tree上のsubvolumeの親子関係と独立

使い方有効/無効: btrfs quota <enable|disable> # defaultはdisable

qgroupに制限値を設定: btrfs qgroup <size|none> <path>

全qgroupの列挙: btrfs qgroup show

qgroup間の親子関係を作成: btrfs qgroup assign <src> <dst> <path>

qgroup間の親子関係を削除: btrfs qgroup remove <src> <dst> <path>

60 Copyright 2014 FUJITSU LIMITED

Page 62: Btrfsの基礎 part1 機能編

耐障害機能

RAID

data整合性check&修正

61 Copyright 2014 FUJITSU LIMITED

Page 63: Btrfsの基礎 part1 機能編

RAID: 機能説明

file system levelのRAID data, metadata両方について別々に指定

使用可能な構成 single: 冗長化, stripingなし

dup: 同じdeviceの中に2つcopy

• single device構成のmetadataの場合のみ使用可能

RAID0, RAID1, RAID10, RAID5, RAID6

• RAID1, RAID10: mirroring数はdevice数によらず2

• LVMの挙動(device数に応じてmirroring数を増加可能)と異なる

• RAID5/6: scrubとreplaceが使用不可

• 鋭意開発中、近日修正見込み

62 Copyright 2014 FUJITSU LIMITED

Page 64: Btrfsの基礎 part1 機能編

RAID: default値と設定方法

default値単一device構成: data=single, metadata=dup(HDD) or single(SSD)

• SSDは、controllerによる同一内容blockのdedupによってdupが無意味な場合あり

複数device構成: data=RAID0, metadata=RAID1

使い方: mkfs.btrfsの optionに指定metadata: -m <single|dup|raid0|raid1|raid10|raid5|raid6>

• dupは単一deviceの場合のみ指定可能

data: -d <single|raid0|raid1|raid10|raid5|raid6>

63 Copyright 2014 FUJITSU LIMITED

Page 65: Btrfsの基礎 part1 機能編

data整合性check&修正

全fileのdata/metadataを走査して、checksumの整合性check

mirroringあり: data修復

mirroringなし: file systemから該当dataを切り離し

使い方開始: btrfs scrub start <path>

進捗確認: btrfs scrub status <path>

停止: btrfs scrub cancel <path>

再開: btrfs scrub resume <path>

64 Copyright 2014 FUJITSU LIMITED

Page 66: Btrfsの基礎 part1 機能編

復旧用機能

backup/restore

mount options

修復機能

障害解析機能

65 Copyright 2014 FUJITSU LIMITED

Page 67: Btrfsの基礎 part1 機能編

前提知識: 復旧のために推奨される運用

通常運用: 定期的なbackup採取

kernel panic or file system不整合発生 File systemの復旧

1. 通常通りmountを試行。成功すれば完了。失敗すれば2へ

2. 「復旧時に使用するmount option」を試行。成功すれば完了。失敗すれば3へ

3. 「restore」or「修復機能」を試行

原因究明

• 「障害解析機能」を用いて原因究明と再発防止

66 Copyright 2014 FUJITSU LIMITED

Page 68: Btrfsの基礎 part1 機能編

backup/restore

file system levelのbackup,restore ddやcp –aを使うよりも高速なbackupが可能

subvolume単位で採取可能

差分backup/restoreも可能

想定される用途定期的にbackupを採取(full backup/週、差分backup/日)

file system不整合発生時にbackupからfile systemを復旧

使い方 backup採取: btrfs send <subvol>

• 通常は事前に採取したread only snapshotに対して実施

backupからfile systemを復元: btrfs receive <target mount point>

67 Copyright 2014 FUJITSU LIMITED

Page 69: Btrfsの基礎 part1 機能編

mount options

“skip_balance” option

仕掛中のbalance処理をmount時に再開しない

balanceのbugによる異常発生後のmountに有用

• これを指定しないと、再度同じbugによる問題が発生する可能性あり

“recovery” option

file system内部に持つbackup dataを使ってmountを試行

障害発生後のmount失敗時に使用

“degraded” option

RAID構成に必要な数のdeviceが存在しない場合に指定

特定deviceが壊れた際などに使用

mount後にdevice構成の修復が必要

68 Copyright 2014 FUJITSU LIMITED

Page 70: Btrfsの基礎 part1 機能編

修復機能

file system の整合性をofflineでcheck&可能な限り修復

使い方壊れたfile systemからfileを可能な限り復旧: btrfs restore <device>

壊れたsuper blockを復元: btrfs rescue super-recover <device>

壊れたchunk tree(後述)を復元: btrfs rescue chunk-recover <device>

file systemの整合性check&修復: btrfs check <device>

• 最後の手段。他の手段を使ってどうしても駄目なら使う

• backupがあれば、そこから復旧するほうが容易かつ確実

69 Copyright 2014 FUJITSU LIMITED

Page 71: Btrfsの基礎 part1 機能編

障害解析用機能

kernel panic, file system不整合障害の原因究明に使用

使い方metadata dump採取: btrfs-image <path> <dest>

• metadataのimageを採取、imageをBtrfs技術者に送付、技術者が解析

• data領域は採取しない

• file system全体のcopyよりも短時間で採取可能、省space

• data領域の障害は解析不能

kdump: kdumpのdocument参照(Btrfs固有機能ではない)

• system全体のmemory imageを採取

• kernel panic/hang up発生時の原因究明などに使用

metadataのtree構造を表示: btrfs-debug-tree <device>

superblockの情報を表示: btrfs-show-super <devlicelist>

指定extentのdeviceへのmap情報を表示: btrfs-map-logical –l <extent number> <one of btrfsdevice>

• extentについては媒体構造編を参照

70 Copyright 2014 FUJITSU LIMITED

Page 72: Btrfsの基礎 part1 機能編

参考文献

1. The Art of Computer Programming vol3. Donald Knuth

2. Linux Filesystem Analysis for IVI system. Mitsuharu Ito

http://events.linuxfoundation.org/sites/events/files/slides/linux_file_system_analysis_for_IVI_systems.pdf

3. linux kernel source

git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

4. Btrfs wiki

https://btrfs.wiki.kernel.org/index.php/Main_Page

5. BTRFS: The Linux B-Tree Filesystem. Ohad Rodeh, Josef Bacik, and Chris Mason

http://domino.research.ibm.com/library/cyberdig.nsf/papers/6E1C5B6A1B6EDD9885257A38006B6130/$File/rj10501.pdf

71 Copyright 2014 FUJITSU LIMITED

Page 73: Btrfsの基礎 part1 機能編

Copyright 2014 FUJITSU LIMITED72


Top Related