Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

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

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

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

D1083b01617050d3698240b077e5a018?s=128

Fuminobu TAKEYAMA

April 24, 2020
Tweet

Transcript

  1. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 1/59 Btrfs + Snapper + Samba で作る

    「以前のバージョン」に戻せるファイルサーバー Rev. 2 武山 文信 (@ftake) 日本 openSUSE ユーザ会 オープンソースカンファレンス2020 Online/Spring
  2. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 2/59 今日のセミナー内容 1.openSUSE の紹介 (10分) 2.ファイルサーバーの構築手順と使用するツールの紹介

  3. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 3/59 みなさん って何かご存知ですか?

  4. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 4/59 正しいのはどれ? • 1. サーバールームでモフモフできるカメレオン型ガジェット • 2.

    Ruby で簡単に Web アプリを作れるフレームワーク • 3. 1996年にドイツで生まれた Linux ディストリビューション
  5. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 5/59 正しいのはどれ? • 1. サーバールームでモフモフできるカメレオン型ガジェット • 2.

    Ruby で簡単に Web アプリを作れるフレームワーク • 3. 1996年にドイツで生まれた Linux ディストリビューション
  6. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 6/59 正解: 3 • 3. 1996年にドイツで生まれた Linux

    ディストリビューション – S.u.S.E Linux 4.2 リリース • これ以前は Slackware + 設定ツールでした • Q: RedHat 系ですか? Debian 系ですか? A: どちらでもありません! Slackware系でもありません • Q: OpenSUSE ですか?openSUSE ですか? A: o は小文字です。IPhone ではなく、iPhone なのと同じです
  7. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 7/59 2つの openSUSE Tumbleweed 常に最新 安定 ローリング・リリース

    新しいカーネルやライブラリを使いたい人 アプリケーションのテスト環境 定期アップデート 有償サポートなしで安定版を使いたい人 普段遣いのデスクトップやサーバーに
  8. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 8/59 openSUSE Leap 15.1 • SUSE Linux

    Enterprise 15 SP1 ベースの安定志向 ディストリビューション • エンタープライズ版に openSUSE 独自のパッケージを追加 – CentOS + Fedora のような感じ – 多数のデスクトップ環境やアプリケーション: Plasma 5.12, GNOME 3.26, XFCE 4.12, MATE, LXQt, etc. • 年に1回のマイナーアップデート(サービスパック) – 42.1 → 42.2 → 42.3 → 15.0 → 15.1 → 15.2 … • 移行期間はマイナーアップデートが出てから半年 – 3年に1度程度のメジャーアップデート • 42.x → 15.x
  9. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 9/59 openSUSE Leap 15.2 • 2020年7月にリリース予定 –

    SUSE Linux Enterprise とバイナリレベルで近づける作業のため 2ヶ月延期 • openSUSE / SUSE Linux Enterprise どちらか一方向けの ビルドオプションの除去など • 15.3 で同じバイナリ提供を目指す • 更新内容 – カーネル: 5.3 ベースになり、最新のハードウェアをサポート – Qt 5.12 – YaST 改善 – など
  10. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 10/59

  11. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 11/59 同人誌も書いています • コミックマーケットや技術書典で頒布 • 内容 –

    Azure Files – システム構成管理ツール Uyuni – openQA でディストリの自動テスト – 仮想マシンコンテナホスト • 新型コロナウイルスのせいで、 印刷した本なので頒布できない・・・
  12. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 12/59 YaST やすと

  13. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 13/59 ところで • どのように設定ファイルを書くか覚えていますか? – IP アドレスを固定したい

    – Samba でファイルサーバーを構築したい • コマンドを覚えていますか? – パーティションを切りたい – フォーマットしたい
  14. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 14/59 openSUSE の管理ツール YaST • ハードウェア設定、ユーザー管理、各種サーバー管理をGUIで –

    Samba, VNC, HTTP, NTP
  15. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 15/59 SSH からでも使える • 同じレイアウトのテキスト(Curses)UI 版

  16. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 16/59 本日のお題 • 「以前のバージョン」対応ファイルサーバー – 昔のファイルの状態にアクセスできる •

    ファイルを間違えて 消した・上書きしたときに戻せる aba aaa 変更 2020-02-10 の My Document My Document aba aaa 現在のフォルダ内容 昔のフォルダ内容
  17. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 17/59 Windows のエクスプローラから 1時間毎の過去の状態 昔のファイルに直接アクセスできる

  18. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 18/59 構成と手順の確認 • OS: openSUSE Leap 15.1

    • ディスク – 2台目の HDD を Btrfs でフォーマットし /home/ にマウント – Snapper でスナップショット(ある時点でのディレクトリの状態)作成 • ネットワーク – 有線接続、192.168.0.3 に固定 – ルーター(兼 DNS サーバー): 192.168.0.1 • サーバー – openSUSE Leap 15.1 提供の Samba 4.9.5 – ユーザー管理は簡易のためローカルファイル DB で管理 1台目: /, swap 2台目: /home
  19. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 19/59 手始めに… YaST で設定してみましょう ネットワーク

  20. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 20/59 YaST の起動 • SSH からテキスト版を起動する場合 •

    デスクトップから GUI版を起動する場合 – アプリケーションメニューを開き 設定 > 管理者設定 をクリック $ sudo yast2
  21. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 21/59 ネットワークの設定 1/5

  22. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 22/59 ネットワークの設定 2/5 Alt+I で一発移動 枠間は Tab

    で移動
  23. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 23/59 ネットワークの設定 3/5 IPアドレスとサブネットを入力 固定IPアドレスを選ぶ

  24. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 24/59 ネットワークの設定 4/5 DNSサーバ(ルーター)のIPアドレスを入力

  25. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 25/59 ネットワークの設定 5/5 ルーターのIPアドレスを設定

  26. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 26/59 簡単ですね!

  27. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 27/59 Btrfs • ばたーえふえす • 比較的新しいファイルシステム •

    特徴 – サブボリューム – Copy on Write とスナップショット – 複数デバイスを1つのファイルシステムにまとめられる • 詳細は、設定手順の中で説明していきます
  28. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 28/59 Btrfs のサブボリューム • Btrfs ファイルシステムを細分割した領域 –

    ファイル、ディレクトリ、別のサブボリュームを持てる • 見た目はディレクトリ – サブボリュームごとにスナップショット(後述)をとったり、 設定を変えられる @ <-- トップレベル ├ var ├ usr <-- ふつうのディレクトリ │ └ local ├ tmp ├ srv ├ root ├ opt ├ home ├ ... openSUSE の標準的なサブボリューム構成 (スナップショットoff) / にマウント ブロックデバイス ではない ディレクトリに見えますが サブボリューム!
  29. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 29/59 /home の設定 • 今回は 2台目のディスクを /home

    にマウントして使う • 先に既存の /home をバックアップして、削除 – 標準的なインストールをした場合は / も Btrfs のため、 /home はディレクトリではなくサブボリュームなので rm では消せない – サブボリュームをコピー(バックアップ)する方法 $ btrfs subvolume snapshot /home /home.back
  30. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 30/59 パーティション設定

  31. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 31/59 もともとの /home を削除

  32. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 32/59 パーティションテーブルの作成 新しいディスクを選択 2 TB 超の場合は自動的に GPT

    に 2 TB 以下は DOS も選択可
  33. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 33/59 パーティションの作成とマウント 1/3

  34. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 34/59 パーティションの作成とマウント 2/3 ディスクの全体を使うことにします

  35. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 35/59 パーティションの作成とマウント 3/3 どこにマウントするか

  36. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 36/59 /home の設定まとめ • 色々なツールを個別に呼び出さずに、YaST から設定可能 •

    YaST なしなら – # btrfs subvolume delete /home – # gparted • パーティション作成 – # mkfs.btrfs /dev/vdb1 – # vi /etc/fstab • /home にマウントするように変更
  37. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 37/59 ユーザーの追加 1/2

  38. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 38/59 ユーザーの追加 2/2

  39. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 39/59 ユーザアカウントの詳細設定 追加のグループの設定も可能 ログインシェルの変更も可能

  40. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 40/59 Btrfs + Snapper + Samba 「以前のバージョン」対応ファイルサーバーを

    設定する
  41. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 41/59 「以前のバージョン」を Samba で • 今までのやり方: vfs_shadow_copy,

    vfs_shadow_copy2 – rsync などを使って、定期的にファイルのバックアップを作成 – このバックアップを以前のバージョンとして公開 • 新しい方法: vfs_snapper – スナップショット管理ツール Snapper – Samba 4.2 以降で対応
  42. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 42/59 Snapper • ファイルシステムのスナップショットを作成・管理するツール – openSUSE プロジェクト傘下だが、CentOS

    などでも使える • スナップショットポリシーをカスタマイズ可能 – スナップショットを作成する間隔 – 古いスナップショットの間引き方 • スナップショット間の差分表示機能 • Btrfs と LVM をサポート
  43. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 43/59 Snapper が作るスナップショットの実体 /home/ ├ geeko ├

    Documents │ └ スライド.odp └ Pictures └ geeko.jpg /home/.snapshots ├ 100 │ ├ info.xml │ └ snapshot │ └ geeko │ ├ Documents │ │ ├ 消しちゃった.txt │ │ └ スライド.odp │ └ Pictures │ └ geeko.jpg ├ 101 │ ├ info.xml │ └ snapshot │ └ geeko │ ├ Documents │ │ └ スライド.odp │ └ Pictures │ └ geeko.jpg 現在のファイル スナップショットで作成した サブボリューム 以前のファイル
  44. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 44/59 Snapper でスナップショットを撮る • 設定ファイルを作成するだけで定期スナップショットが始まる – デフォルトでは毎時

    • snapper コマンドで設定ファイルを作成 – -c の後ろは設定名 • デフォルトのスナップショット最大個数 – 毎時: 10個、毎日: 10個、毎月: 10個 # snapper -c home create-config /home/ 残念ながら、YaST からはまだ設定できない 定期スナップショットを撮るサブボリューム
  45. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 45/59 スナップショットへのアクセス権の設定 • ファイルサーバーのユーザーに .snapshot/$id/ への アクセス権を与える

    – デフォルトでは root しか見られない • 方法: 設定ファイル /etc/snapper/configs/home を編集 – ALLOW_GROUPS="users" • 過去のバージョンにアクセスするユーザーのグループ – SYNC_ACL="yes"
  46. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 46/59 /home のコピーに時間がかからない? ディスクを大量に消費しない?

  47. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 47/59 Btrfs の説明続き • Copy on Write

    (CoW) を採用したファイルシステム – 書き込む時にデータをコピーする – Sun Microsystems (当時) の ZFS に影響 – CoW → 牛 → バター • Btrfs のスナップショット機能でサブボリュームをコピーすると ファイルは変更されるまで実際にはコピーされない – スナップショットを作成してもディスク容量を消費しない – スナップショットの作成は一瞬で終わる
  48. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 48/59 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 Write まだある まだある 作成
  49. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 49/59 Samba サーバーを設定 1/4

  50. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 50/59 Samba サーバーを設定 2/4 systemd の設定変更 firewalld

    の設定変更
  51. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 51/59 Samba サーバーを設定 3/4

  52. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 52/59 Samba サーバーを設定 4/4 追加 → vfs

    objects を選択 btrfs と snapper を使用する
  53. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 53/59 新しく共有を追加する場合は… チェックボックス で設定できる

  54. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 54/59 GUI 版はこんな感じです

  55. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 55/59 Samba ユーザーのパスワードを設定 • 今回は pdbedit コマンドで

    – # pdbedit -a ユーザー名 • 残念ながら YaST からはできない – LDAP ならできるのですが…
  56. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 56/59 完成 \\192.168.0.3\users\geeko

  57. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 57/59 制限事項 • \\192.168.0.3\geeko でアクセスすると、 以前のバージョンが表示されない –

    Samba の共有ディレクトリとスナップショットを とっているサブボリュームのディレクトリとが一致する必要あり
  58. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 58/59 スナップショット おまけ: トランザクショナルアップデート • スナップショット側のパッケージをまとめてアップデートして、 完了したら

    / を入れ替えるアップデート方法 – パッケージの不整合防止のダウンタイムを再起動の時間だけに – 詳しくは 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 古いファイル
  59. 2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 59/59 最後に • 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 もあり