Submit Search
Upload
ファイルシステムのスナップショット機能でバックアップを取得する
•
Download as PPTX, PDF
•
3 likes
•
2,112 views
Maki Toshio
Follow
GitLab Meetup Tokyo #1 LT資料です
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 10
Download now
Recommended
GitLabをバックアップしてみた
GitLabをバックアップしてみた
VirtualTech Japan Inc./Begi.net Inc.
採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」
Takayuki Fukumoto
Gitコマンド勉強会 第2回 stash
Gitコマンド勉強会 第2回 stash
Kazuki Sakai
2018 07-23
2018 07-23
Yuji Oshima
自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介
自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介
Yoichi Kayama
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
Kazuto Kusama
2018 07-19dist
2018 07-19dist
Yuji Oshima
Machine learning microservice_management
Machine learning microservice_management
yusuke shibui
Recommended
GitLabをバックアップしてみた
GitLabをバックアップしてみた
VirtualTech Japan Inc./Begi.net Inc.
採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」
Takayuki Fukumoto
Gitコマンド勉強会 第2回 stash
Gitコマンド勉強会 第2回 stash
Kazuki Sakai
2018 07-23
2018 07-23
Yuji Oshima
自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介
自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介
Yoichi Kayama
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
Kazuto Kusama
2018 07-19dist
2018 07-19dist
Yuji Oshima
Machine learning microservice_management
Machine learning microservice_management
yusuke shibui
KubernetesでGPUクラスタを管理したい
KubernetesでGPUクラスタを管理したい
Yuji Oshima
知って欲しいPaaSの話
知って欲しいPaaSの話
Kazuto Kusama
研究室のSVNをGitに移行した話
研究室のSVNをGitに移行した話
nemumu
Heroku+MongoLabでダミーサーバー
Heroku+MongoLabでダミーサーバー
Hironytic
Git lev 3 -おひとりさまでブランチを-
Git lev 3 -おひとりさまでブランチを-
Kentarou Kurashige
Circle ciで結果をslackに通知してみる
Circle ciで結果をslackに通知してみる
ynakahira
Machine learning CI/CD with OSS
Machine learning CI/CD with OSS
yusuke shibui
Gitの勉強 紹介編-
Gitの勉強 紹介編-
Kentarou Kurashige
CHIUSURA PERCUTANEA AURICOLA Sn 2015 case report
CHIUSURA PERCUTANEA AURICOLA Sn 2015 case report
amlanzone
Writing Fast Code (JP) - PyCon JP 2015
Writing Fast Code (JP) - PyCon JP 2015
Younggun Kim
S13 t0 introduction
S13 t0 introduction
Takeshi Akutsu
How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015
hirokiky
PyCon JP 2015 keynote
PyCon JP 2015 keynote
Haruo Sato
pyconjp2015_talk_Translation of Python Program__
pyconjp2015_talk_Translation of Python Program__
Renyuan Lyu
micropythonで遊んでみる
micropythonで遊んでみる
satokengo
сам роб2
сам роб2
marunasorokina
контрольна робота №2
контрольна робота №2
marunasorokina
Тести
Тести
marunasorokina
форматування
форматування
marunasorokina
самостійнаWord комплексна
самостійнаWord комплексна
marunasorokina
сам роб4
сам роб4
marunasorokina
презентация2
презентация2
marunasorokina
More Related Content
What's hot
KubernetesでGPUクラスタを管理したい
KubernetesでGPUクラスタを管理したい
Yuji Oshima
知って欲しいPaaSの話
知って欲しいPaaSの話
Kazuto Kusama
研究室のSVNをGitに移行した話
研究室のSVNをGitに移行した話
nemumu
Heroku+MongoLabでダミーサーバー
Heroku+MongoLabでダミーサーバー
Hironytic
Git lev 3 -おひとりさまでブランチを-
Git lev 3 -おひとりさまでブランチを-
Kentarou Kurashige
Circle ciで結果をslackに通知してみる
Circle ciで結果をslackに通知してみる
ynakahira
Machine learning CI/CD with OSS
Machine learning CI/CD with OSS
yusuke shibui
Gitの勉強 紹介編-
Gitの勉強 紹介編-
Kentarou Kurashige
What's hot
(8)
KubernetesでGPUクラスタを管理したい
KubernetesでGPUクラスタを管理したい
知って欲しいPaaSの話
知って欲しいPaaSの話
研究室のSVNをGitに移行した話
研究室のSVNをGitに移行した話
Heroku+MongoLabでダミーサーバー
Heroku+MongoLabでダミーサーバー
Git lev 3 -おひとりさまでブランチを-
Git lev 3 -おひとりさまでブランチを-
Circle ciで結果をslackに通知してみる
Circle ciで結果をslackに通知してみる
Machine learning CI/CD with OSS
Machine learning CI/CD with OSS
Gitの勉強 紹介編-
Gitの勉強 紹介編-
Viewers also liked
CHIUSURA PERCUTANEA AURICOLA Sn 2015 case report
CHIUSURA PERCUTANEA AURICOLA Sn 2015 case report
amlanzone
Writing Fast Code (JP) - PyCon JP 2015
Writing Fast Code (JP) - PyCon JP 2015
Younggun Kim
S13 t0 introduction
S13 t0 introduction
Takeshi Akutsu
How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015
hirokiky
PyCon JP 2015 keynote
PyCon JP 2015 keynote
Haruo Sato
pyconjp2015_talk_Translation of Python Program__
pyconjp2015_talk_Translation of Python Program__
Renyuan Lyu
micropythonで遊んでみる
micropythonで遊んでみる
satokengo
сам роб2
сам роб2
marunasorokina
контрольна робота №2
контрольна робота №2
marunasorokina
Тести
Тести
marunasorokina
форматування
форматування
marunasorokina
самостійнаWord комплексна
самостійнаWord комплексна
marunasorokina
сам роб4
сам роб4
marunasorokina
презентация2
презентация2
marunasorokina
Pythonで作る俺様サウンドエフェクター
Pythonで作る俺様サウンドエフェクター
Ransui Iso
大規模データ分析を支えるインフラ系オープンソースソフトウェアの最新事情
大規模データ分析を支えるインフラ系オープンソースソフトウェアの最新事情
nagix
DS LT祭り 「AUCが0.01改善したって どういうことですか?」
DS LT祭り 「AUCが0.01改善したって どういうことですか?」
Ken'ichi Matsui
Dslt祭り2夜
Dslt祭り2夜
Akifumi Eguchi
階層ベイズモデルで割安mobile PCを探す
階層ベイズモデルで割安mobile PCを探す
. .
SekainoKAO by TeamKAO
SekainoKAO by TeamKAO
Hideki
Viewers also liked
(20)
CHIUSURA PERCUTANEA AURICOLA Sn 2015 case report
CHIUSURA PERCUTANEA AURICOLA Sn 2015 case report
Writing Fast Code (JP) - PyCon JP 2015
Writing Fast Code (JP) - PyCon JP 2015
S13 t0 introduction
S13 t0 introduction
How we realized SOA by Python at PyCon JP 2015
How we realized SOA by Python at PyCon JP 2015
PyCon JP 2015 keynote
PyCon JP 2015 keynote
pyconjp2015_talk_Translation of Python Program__
pyconjp2015_talk_Translation of Python Program__
micropythonで遊んでみる
micropythonで遊んでみる
сам роб2
сам роб2
контрольна робота №2
контрольна робота №2
Тести
Тести
форматування
форматування
самостійнаWord комплексна
самостійнаWord комплексна
сам роб4
сам роб4
презентация2
презентация2
Pythonで作る俺様サウンドエフェクター
Pythonで作る俺様サウンドエフェクター
大規模データ分析を支えるインフラ系オープンソースソフトウェアの最新事情
大規模データ分析を支えるインフラ系オープンソースソフトウェアの最新事情
DS LT祭り 「AUCが0.01改善したって どういうことですか?」
DS LT祭り 「AUCが0.01改善したって どういうことですか?」
Dslt祭り2夜
Dslt祭り2夜
階層ベイズモデルで割安mobile PCを探す
階層ベイズモデルで割安mobile PCを探す
SekainoKAO by TeamKAO
SekainoKAO by TeamKAO
Similar to ファイルシステムのスナップショット機能でバックアップを取得する
GitHubにおける開発フローについてのお話
GitHubにおける開発フローについてのお話
Sota Sugiura
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
Takafumi Yoshida
Build insider offline session チームでのgit
Build insider offline session チームでのgit
Tadahiro Ishisaka
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
ymmt
Metahub for github
Metahub for github
Suguru Oho
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
Kazumi IWANAGA
Lisp meetup #29 cl-online-learningの紹介
Lisp meetup #29 cl-online-learningの紹介
Satoshi imai
Git超入門
Git超入門
Shun Nishitsuji
SCM, CI and Maven Repo
SCM, CI and Maven Repo
Hideaki Ishijima
Git&GitHub入門
Git&GitHub入門
hideaki honda
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
takanori suzuki
RedmineとGitHubのうまい関係
RedmineとGitHubのうまい関係
Mitsuyoshi Kawabata
go-apt-cacher/mirror
go-apt-cacher/mirror
yutannihilation
Katib
Katib
Yuji Oshima
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
Kazumi IWANAGA
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
Takashi Imagire
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
R S
Git @ NNCT programming workshop
Git @ NNCT programming workshop
NNCT programming study group
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
Yahoo!デベロッパーネットワーク
Yapc2012資料
Yapc2012資料
matsuo kenji
Similar to ファイルシステムのスナップショット機能でバックアップを取得する
(20)
GitHubにおける開発フローについてのお話
GitHubにおける開発フローについてのお話
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
Build insider offline session チームでのgit
Build insider offline session チームでのgit
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
Metahub for github
Metahub for github
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
Lisp meetup #29 cl-online-learningの紹介
Lisp meetup #29 cl-online-learningの紹介
Git超入門
Git超入門
SCM, CI and Maven Repo
SCM, CI and Maven Repo
Git&GitHub入門
Git&GitHub入門
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
RedmineとGitHubのうまい関係
RedmineとGitHubのうまい関係
go-apt-cacher/mirror
go-apt-cacher/mirror
Katib
Katib
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
@s_ssk13さん向けGitHub入門
@s_ssk13さん向けGitHub入門
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
Git @ NNCT programming workshop
Git @ NNCT programming workshop
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
MySQL Binlog Events でストリーム処理してみた #MySQLUC15
Yapc2012資料
Yapc2012資料
More from Maki Toshio
Rails 6.1 → 7.0アップデート記録
Rails 6.1 → 7.0アップデート記録
Maki Toshio
自社サービスのAPIをOAuth2対応にして公開した
自社サービスのAPIをOAuth2対応にして公開した
Maki Toshio
Searched gems which supports only ruby 2.6
Searched gems which supports only ruby 2.6
Maki Toshio
ActiveRecordで複雑なクエリを書くのは間違っているのか
ActiveRecordで複雑なクエリを書くのは間違っているのか
Maki Toshio
やさしいGemパッチの作り方
やさしいGemパッチの作り方
Maki Toshio
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
Maki Toshio
メール製品を作って気づいたmailライブラリの光と闇について語る
メール製品を作って気づいたmailライブラリの光と闇について語る
Maki Toshio
明日から使える(?)Rubyトリビア
明日から使える(?)Rubyトリビア
Maki Toshio
Rubyで簡単にremote access apiを実行する
Rubyで簡単にremote access apiを実行する
Maki Toshio
レガシーコード改善ガイド
レガシーコード改善ガイド
Maki Toshio
Ruby on rails on hudsonの活用事例
Ruby on rails on hudsonの活用事例
Maki Toshio
More from Maki Toshio
(11)
Rails 6.1 → 7.0アップデート記録
Rails 6.1 → 7.0アップデート記録
自社サービスのAPIをOAuth2対応にして公開した
自社サービスのAPIをOAuth2対応にして公開した
Searched gems which supports only ruby 2.6
Searched gems which supports only ruby 2.6
ActiveRecordで複雑なクエリを書くのは間違っているのか
ActiveRecordで複雑なクエリを書くのは間違っているのか
やさしいGemパッチの作り方
やさしいGemパッチの作り方
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
メール製品を作って気づいたmailライブラリの光と闇について語る
メール製品を作って気づいたmailライブラリの光と闇について語る
明日から使える(?)Rubyトリビア
明日から使える(?)Rubyトリビア
Rubyで簡単にremote access apiを実行する
Rubyで簡単にremote access apiを実行する
レガシーコード改善ガイド
レガシーコード改善ガイド
Ruby on rails on hudsonの活用事例
Ruby on rails on hudsonの活用事例
ファイルシステムのスナップショット機能でバックアップを取得する
1.
LVMのスナップショット機能で GITLABのバックアップを取得する
2.
WHO AM I
? 牧 俊男(Toshio Maki) Twitter:@Kirika_K2 GitHub: @kirikak2 • とあるSIerで、社内の開発基盤を見てます • Ruby、時々golang • GitLabはgitorious統合前ぐらいから使ってます
3.
WHAT'S SNAPSHOT? • GitLab内のGitリポジトリが多いほど、標準のバックアップス クリプトは遅くなる •
Gitlab Backupのドキュメントには「Alternative backup strategies」として、Amazon EBSのスナップショット機能を使 う方法やLVMのスナップショット機能を使う方法もある、と 紹介されている • 今回GitLab.comはこのLVMによるスナップショットを使って 復旧した、と書かれていたため、掘り下げて紹介したい
4.
LVM(LOGICAL VOLUME MANAGER) •
複数の物理ディスクをグループにまとめて論理ディスクとし て扱う • ソフトウェアRAID(RAID0/1/4/5/6/10)を構成可能 • デフォルトがLVMで設定されているディストリビューション もあるので、はじめからLVMで組まれているボリュームを使 っている人もいるはず • Snapshot機能があり、一貫性のあるディスク状態を保存する ことができる
5.
LVMの構成 /dev/sdb1 物理ディスク 物理ボリューム /dev/sdc1 /dev/sdd1 /dev/sdb1 /dev/sdc1 /dev/sdd1 pvcreate /dev/sdb1 pvcreate
/dev/sdc1 pvcreate /dev/sdd1 ボリュームグループ lvm-vg00 vgcreate lvm-vg00 /dev/sdb1 vgcreate lvm-vg00 /dev/sdc1 vgcreate lvm-vg00 /dev/sdd1 論理ボリューム gitlab-data lvcreate –L 100G –n gitlab-data lvm-vg00
6.
LVMを使ったスナップショットの取得 • lvcreateで論理ボリューム単位でのスナップショットが取得でき る • lvcreate
–s –L 100G –n gitlab-snapshot /dev/lvm-vg00/gitlab-data • スナップショットを取るためには、ボリュームグループに未使用 の領域が必要 • スナップショットを取った地点のファイルシステムの状態で固定 される gitlab-snapshot
7.
スナップショットの復元 • lvconvertコマンドで、スナップショットの状態から復元する • umount
/mnt/gitlab-data • lvconvert --merge /dev/lvm-vg00/gitlab-snapshot • コマンド実行後、スナップショットは削除され、gitlab-data はgitlab-snapshotの時点に戻る gitlab-snapshot
8.
データベースのバックアップ • PostgreSQLもスナップショットでバックアップを取得できる • ただし事前にPostgreSQLサービスを停止しておく必要がある •
無停止でバックアップをしたい場合は、スナップショットを 取る前にpg_start_backup()を叩いて、WOLと呼ばれるトランザ クションログもバックアップする必要がある • pg_basebackupがこの辺りを自動化してくれる • (今回バックアップ取れてなくて問題になったやつ) • 詳しくは「PostgreSQL オンラインバックアップ」あたりで調 べてください
9.
LVMによるスナップショットのメリットとデメリ ット • メリット • ちょっとしたメンテナンス作業をするときに手軽なバックア ップ手段として使える •
GitLabのアップデート作業に失敗した際に切り戻すときには有 効 • デメリット • 現行の状態との差分を管理しているため、大量に変更が加わ ると、スナップショット領域が溢れる可能性がある • Copy on Writeのような方式でスナップショットを取るので、ス ナップショットの取得は速いが、その後の差分を書き込み続 けるため、ディスク的には2倍書き込んでいることになり、大 幅に速度が落ちる • スナップショットの復元のためにumountしないといけないた め、無停止とはいかない
10.
まとめ • LVMスナップショットは世代別バックアップのような用途で 使うのではなく、GitLabのドキュメントにもあるように、静 的な状態を作って、rsyncでどこかに一貫性のある状態を転送 した後、速やかにスナップショットを削除するのが良さそう • マシンリソースに余裕があるのであれば、メモリ32GBぐら いを積んだ、FreeNAS(FreeBSD+ZFS)を使って、スナップショ ットを取るのが良さそう •
詳しくは「ZFS - スナップショットいつやるか?今でしょ!」 on Qiita
Editor's Notes
3
4
Download now