Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー

507 visualizaciones

Publicado el

YaST を使って、いつでもファイルを昔の状態に戻せる、Windows の「以前のバージョン」機能に対応したファイルサーバーを構築するまでの手順を紹介します。YaST は Linux ディストリビューション openSUSE の設定ツールです。テキストエディタで設定ファイルを編集すること無く、GUI やテキストベースの画面から次のような設定を簡単に行うことができます。

- ユーザーの設定
- ディスクの設定
- IP アドレスの設定
- ファイアウォールの設定
- Samba サーバーの設定

「以前のバージョン」機能は、ファイルサーバーの Samba と Btrfs と Snapper を連携することで実現します。Btrfs は Copy on write という仕組みでスナップショットを取れるファイルシステムです。Snapper は Btrfs のスナップショットを定期的に作成し、さらには古いスナップショットを自動的に間引くことができます。

セミナーの冒頭で openSUSE の最近の動向についても紹介します。

Publicado en: Tecnología
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー

  1. 1. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 1/57 Btrfs + Snapper + Samba で作る 「以前のバージョン」に戻せるファイルサーバー 武山 文信 (@ftake) 日本 openSUSE ユーザ会 オープンソースカンファレンス2020 Tokyo/Spring
  2. 2. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 2/57 今日のセミナー内容 1.openSUSE の紹介 (10分) 2.ファイルサーバーの構築手順と使用するツールの紹介
  3. 3. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 3/57 みなさん って何かご存知ですか?
  4. 4. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 4/57 正しいのはどれ? ● 1. サーバールームでモフモフできるカメレオン型ガジェット ● 2. Ruby で簡単に Web アプリを作れるフレームワーク ● 3. 1996年にドイツで生まれた Linux ディストリビューション
  5. 5. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 5/57 正しいのはどれ? ● 1. サーバールームでモフモフできるカメレオン型ガジェット ● 2. Ruby で簡単に Web アプリを作れるフレームワーク ● 3. 1996年にドイツで生まれた Linux ディストリビューション
  6. 6. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 6/57 正解: 3 ● 3. 20年以上前にドイツで生まれた Linux ディストリビューション – 1996 年: S.u.S.E Linux 4.2 リリース ● これ以前は Slackware + 設定ツールでした ● Q: RedHat 系ですか? Debian 系ですか? A: どちらでもありません! Slackware系でもありません ● Q: OpenSUSE ですか?openSUSE ですか? A: o は小文字です。IPhone ではなく、iPhone なのと同じです
  7. 7. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 7/57 2つの openSUSE Tumbleweed 常に最新 安定 新しいカーネルやライブラリを使いたい人 アプリケーションのテスト環境 有償サポートなしで安定版を使いたい人 普段遣いのデスクトップやサーバーに
  8. 8. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 8/57 openSUSE Leap 15.1 1/2 ● SUSE Linux Enterprise 15 ベースの安定志向 ディストリビューション ● エンタープライズ版に openSUSE 独自のパッケージを追加 – CentOS + Fedora のような感じ – 多数のデスクトップ環境やアプリケーション: Plasma 5.12, GNOME 3.26, XFCE 4.12, MATE, LXQt, etc.
  9. 9. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 9/57 openSUSE Leap 15.1 2/2 ● 年に1回のマイナーアップデート(サービスパック) – 15.1, 15.2, 15.3, … ● 移行期間はマイナーアップデートが出てから半年 – 15.2 は 2020年5月7日リリース予定(現在はβ版) – 3年に1度程度のメジャーアップデート ● 1つ前のメジャーバージョンは 42 でした – 15 のほうが新しいので注意!
  10. 10. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 10/57
  11. 11. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 11/57 同人誌も書いています ● コミックマーケットや技術書典で頒布 ● 内容 – Azure Files – システム構成管理ツール Uyuni – openQA でディストリの自動テスト – 仮想マシンコンテナホスト ● お買い求めはブースで!
  12. 12. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 12/57 YaST やすと
  13. 13. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 13/57 ところで ● どのように設定ファイルを書くか覚えていますか? – IP アドレスを固定したい – Samba でファイルサーバーを構築したい ● コマンドを覚えていますか? – パーティションを切りたい – フォーマットしたい
  14. 14. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 14/57 openSUSE の管理ツール YaST ● ハードウェア設定、ユーザー管理、各種サーバー管理をGUIで – Samba, VNC, HTTP, NTP
  15. 15. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 15/57 SSH からでも使える ● 同じレイアウトのテキスト(Curses)UI 版
  16. 16. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 16/57 本日のお題 ● 「以前のバージョン」対応ファイルサーバー – 昔のファイルの状態にアクセスできる ● ファイルを間違えて 消した・上書きしたときに便利 abaaaa 変更 2020-02-10 の My Document My Document aba aaa 現在のフォルダ内容 昔のフォルダ内容
  17. 17. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 17/57 Windows のエクスプローラから 1時間毎の過去の状態 昔のファイルに直接アクセスできる
  18. 18. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 18/57 構成と手順の確認 ● OS: openSUSE Leap 15.1 ● ディスク – 2台目の HDD を Btrfs でフォーマットし /home/ にマウント – Snapper でスナップショット(バックアップ)作成 ● ネットワーク – 有線接続、192.168.0.3 に固定 – ルーター(兼 DNS サーバー): 192.168.0.1 ● サーバー – openSUSE 提供の Samba 4.9.5 – ユーザー管理は簡易のためローカルファイル DB で管理
  19. 19. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 19/57 手始めに… YaST で設定してみましょう ネットワーク
  20. 20. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 20/57 YaST の起動 ● SSH からテキスト版を起動する場合 ● デスクトップから GUI版を起動する場合 – アプリケーションメニューを開き 設定 > 管理者設定 をクリック $ sudo yast2
  21. 21. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 21/57 ネットワークの設定 1/5
  22. 22. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 22/57 ネットワークの設定 2/5 Alt+I で一発移動 枠間は Tab で移動
  23. 23. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 23/57 ネットワークの設定 3/5 IPアドレスとサブネットを入力 固定IPアドレスを選ぶ
  24. 24. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 24/57 ネットワークの設定 4/5 DNSサーバのIPアドレスを入力
  25. 25. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 25/57 ネットワークの設定 5/5 ルーターのIPアドレスを設定
  26. 26. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 26/57 /home の設定 ● 2台目のディスクを /home にマウントして使う ● 先に /home をバックアップしておく – 標準的なインストールをした場合 / も Btrfs のため、 /home はディレクトリではなくサブボリュームなので注意 $ btrfs subvolume snapshot /home /home.back
  27. 27. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 27/57 Btrfs のサブボリューム ● Btrfs ファイルシステムを細分割した領域 – ファイル、ディレクトリ、別のサブボリュームを持てる – サブボリュームごとにスナップショット(後述)を撮ったり、 設定を変えられる @ <-- トップレベル、/ にマウント ├ var ├ usr <-- ふつうのディレクトリ │ └ local ├ tmp ├ srv ├ root ├ opt ├ home ├ ... openSUSE の標準的なサブボリューム構成 トップレベル / にマウント ブロックデバイス ではない ディレクトリに見えますが サブボリューム!
  28. 28. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 28/57 パーティション設定
  29. 29. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 29/57 もともとの /home を削除
  30. 30. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 30/57 パーティションテーブルの作成 新しいディスクを選択 2 TB 超の場合は自動的に GPT に 2 TB 以下は DOS も選択可
  31. 31. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 31/57 パーティションの作成とマウント 1/3
  32. 32. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 32/57 パーティションの作成とマウント 2/3 ディスクの全体を使うことにします
  33. 33. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 33/57 パーティションの作成とマウント 3/3 どこにマウントするか
  34. 34. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 34/57 /home の設定まとめ ● 色々なツールを個別に呼び出さずに、YaST から設定可能 ● YaST なしなら – # btrfs subvolume delete /home – # gparted ● パーティション作成 – # mkfs.btrfs /dev/vdb1 – # vi /etc/fstab ● /home にマウントするように変更
  35. 35. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 35/57 ユーザーの追加 1/2
  36. 36. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 36/57 ユーザーの追加 2/2
  37. 37. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 37/57 ユーザアカウントの詳細設定 追加のグループの設定も可能 ログインシェルの変更も可能
  38. 38. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 38/57 Btrfs + Snapper + Samba 「以前のバージョン」対応ファイルサーバーを 設定する
  39. 39. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 39/57 「以前のバージョン」を Samba で ● 今までのやり方: vfs_shadow_copy, vfs_shadow_copy2 – rsync などを使って、定期的にファイルのバックアップを作成 ● 新しい方法: vfs_snapper – スナップショット管理ツール Snapper – Samba 4.2 以降で対応 ● openSUSE は 13.2 の 4.1 でも対応していた
  40. 40. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 40/57 Snapper ● ファイルシステムのスナップショット作成ツール – openSUSE プロジェクト傘下だが、CentOS などでも使える ● スナップショットポリシーをカスタマイズ可能 – スナップショットを作成する間隔 – 古いスナップショットの間引き方 ● スナップショット間の差分表示機能 ● Btrfs と LVM をサポート
  41. 41. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 41/57 Snapper が作るスナップショットの実体 /home/ ├ geeko ├ Documents │ └ スライド.odp └ Pictures └ geeko.jpg /home/.snapshots ├ 1 │ ├ info.xml │ └ snapshot │ └ geeko │   ├ Documents │ │ ├ 消しちゃった.txt │   │ └ スライド.odp │   └ Pictures │   └ geeko.jpg ├ 2 │ ├ info.xml │ └ snapshot │ └ geeko │   ├ Documents │   │ └ スライド.odp │   └ Pictures │   └ geeko.jpg 現在のファイル スナップショットで作成した サブボリューム 以前のファイル
  42. 42. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 42/57 Snapper でスナップショットを撮る ● 設定ファイルを作成するだけで定期スナップショットが始まる – デフォルトでは毎時 ● snapper コマンドで設定ファイルを作成 – -c の後ろは設定名 ● デフォルトのスナップショット最大個数 – 毎時: 10個、毎日: 10個、毎月: 10個 # snapper -c home create-config /home/ 残念ながら、YaST からはまだ設定できない 定期スナップショットを撮るサブボリューム
  43. 43. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 43/57 スナップショットへのアクセス権の設定 ● ファイルサーバーのユーザーに .snapshot/$id/ への アクセス権を与える – デフォルトでは root しか見られない ● 方法: 設定ファイル /etc/snapper/configs/home を編集 – ALLOW_GROUPS="users" ● 過去のバージョンにアクセスするユーザーのグループ – SYNC_ACL="yes"
  44. 44. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 44/57 /home のコピーに時間がかからない? ディスクを大量に消費しない?
  45. 45. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 45/57 Btrfs の説明続き ● Copy on Write (CoW) を採用したファイルシステム – 書き込む前にデータをコピーする ● 書き込まれるまで、実データはコピーされない – Sun Microsystems (当時) の ZFS に影響 – CoW → 牛 → バター ● Btrfs のスナップショット機能でサブボリュームをコピーすると ファイルは変更されるまで実際にはコピーされない – ディスク容量を消費しない – スナップショットの作成は一瞬で終わる
  46. 46. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 46/57 Copy on Write .snapshots/1 ストレージ上の データ /home/ geeko.jpg 消しちゃった.txtスライド.odp スライド.odp geeko.jpg 消しちゃった.txt 消しちゃった.txt Create .snapshots/1 ストレージ上の データ /home/ geeko.jpg 消しちゃった.txtスライド.odp スライド.odp geeko.jpg 消しちゃった.txt Updated Deleted Copy
  47. 47. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 47/57 Samba サーバーを設定 1/4
  48. 48. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 48/57 Samba サーバーを設定 2/4 systemd の設定変更 firewalld の設定変更
  49. 49. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 49/57 Samba サーバーを設定 3/4
  50. 50. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 50/57 Samba サーバーを設定 4/4 btrfs と snapper を使用する
  51. 51. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 51/57 新しく共有を追加する場合は… チェックボックス で設定できる
  52. 52. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 52/57 GUI 版はこんな感じです
  53. 53. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 53/57 Samba ユーザーのパスワードを設定 ● 今回は pdbedit コマンドで – # pdbedit -a ユーザー名 ● 残念ながら YaST からはできない – LDAP ならできるのですが…
  54. 54. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 54/57 完成 192.168.0.3usersgeeko
  55. 55. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 55/57 制限事項 ● 192.168.0.3geeko でアクセスすると、 以前のバージョンが表示されない – Samba の共有ディレクトリとスナップショットを 撮っているサブボリュームのディレクトリとが一致する必要あり – /home/geeko をサブボリュームにして、 スナップショットを作成すればよい
  56. 56. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 56/57 スナップショット おまけ: トランザクショナルアップデート ● スナップショット側のパッケージをまとめてアップデートして、 完了したら / を入れ替えるアップデート方法 – パッケージの不整合防止のダウンタイムを再起動の時間だけに – 詳しくは OSC 2018 Tokyo/Fall のスライドで ● https://www.slideshare.net/ftake/btrfs-121076162 ストレージ上の データ / libB.so libC.so/usr/bin/A 実行中 /usr/bin/A libB.so libC.so Updated Updated 古いファイル
  57. 57. 2020-02-22Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 57/57 最後に ● Have a lot of fun! — 楽しみましょう! – 分からないことはコミュニティに聞きましょう ● openSUSE のコミュニティは – 日本openSUSEユーザ会 https://www.geeko.jp/ – Twitter: @opensuseja – Facebook: https://www.facebook.com/opensuseja – openSUSEプロジェクト公式日本語メーリングリスト ● opensuse-ja@opensuse.org 公式アナウンスなど – その他、Slack、LINE Open Chat もあり

×