Slide 1

Slide 1 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 1/59 Btrfs + Snapper + Samba で作る 「以前のバージョン」に戻せるファイルサーバー Rev. 2 武山 文信 (@ftake) 日本 openSUSE ユーザ会 オープンソースカンファレンス2020 Online/Spring

Slide 2

Slide 2 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 2/59 今日のセミナー内容 1.openSUSE の紹介 (10分) 2.ファイルサーバーの構築手順と使用するツールの紹介

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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 なのと同じです

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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 改善 – など

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 11/59 同人誌も書いています ● コミックマーケットや技術書典で頒布 ● 内容 – Azure Files – システム構成管理ツール Uyuni – openQA でディストリの自動テスト – 仮想マシンコンテナホスト ● 新型コロナウイルスのせいで、 印刷した本なので頒布できない・・・

Slide 12

Slide 12 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 12/59 YaST やすと

Slide 13

Slide 13 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 13/59 ところで ● どのように設定ファイルを書くか覚えていますか? – IP アドレスを固定したい – Samba でファイルサーバーを構築したい ● コマンドを覚えていますか? – パーティションを切りたい – フォーマットしたい

Slide 14

Slide 14 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 14/59 openSUSE の管理ツール YaST ● ハードウェア設定、ユーザー管理、各種サーバー管理をGUIで – Samba, VNC, HTTP, NTP

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 16/59 本日のお題 ● 「以前のバージョン」対応ファイルサーバー – 昔のファイルの状態にアクセスできる ● ファイルを間違えて 消した・上書きしたときに戻せる aba aaa 変更 2020-02-10 の My Document My Document aba aaa 現在のフォルダ内容 昔のフォルダ内容

Slide 17

Slide 17 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 17/59 Windows のエクスプローラから 1時間毎の過去の状態 昔のファイルに直接アクセスできる

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 19/59 手始めに… YaST で設定してみましょう ネットワーク

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 21/59 ネットワークの設定 1/5

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 30/59 パーティション設定

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 36/59 /home の設定まとめ ● 色々なツールを個別に呼び出さずに、YaST から設定可能 ● YaST なしなら – # btrfs subvolume delete /home – # gparted ● パーティション作成 – # mkfs.btrfs /dev/vdb1 – # vi /etc/fstab ● /home にマウントするように変更

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 41/59 「以前のバージョン」を Samba で ● 今までのやり方: vfs_shadow_copy, vfs_shadow_copy2 – rsync などを使って、定期的にファイルのバックアップを作成 – このバックアップを以前のバージョンとして公開 ● 新しい方法: vfs_snapper – スナップショット管理ツール Snapper – Samba 4.2 以降で対応

Slide 42

Slide 42 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 42/59 Snapper ● ファイルシステムのスナップショットを作成・管理するツール – openSUSE プロジェクト傘下だが、CentOS などでも使える ● スナップショットポリシーをカスタマイズ可能 – スナップショットを作成する間隔 – 古いスナップショットの間引き方 ● スナップショット間の差分表示機能 ● Btrfs と LVM をサポート

Slide 43

Slide 43 text

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 現在のファイル スナップショットで作成した サブボリューム 以前のファイル

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 45/59 スナップショットへのアクセス権の設定 ● ファイルサーバーのユーザーに .snapshot/$id/ への アクセス権を与える – デフォルトでは root しか見られない ● 方法: 設定ファイル /etc/snapper/configs/home を編集 – ALLOW_GROUPS="users" ● 過去のバージョンにアクセスするユーザーのグループ – SYNC_ACL="yes"

Slide 46

Slide 46 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 46/59 /home のコピーに時間がかからない? ディスクを大量に消費しない?

Slide 47

Slide 47 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 47/59 Btrfs の説明続き ● Copy on Write (CoW) を採用したファイルシステム – 書き込む時にデータをコピーする – Sun Microsystems (当時) の ZFS に影響 – CoW → 牛 → バター ● Btrfs のスナップショット機能でサブボリュームをコピーすると ファイルは変更されるまで実際にはコピーされない – スナップショットを作成してもディスク容量を消費しない – スナップショットの作成は一瞬で終わる

Slide 48

Slide 48 text

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 まだある まだある 作成

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 55/59 Samba ユーザーのパスワードを設定 ● 今回は pdbedit コマンドで – # pdbedit -a ユーザー名 ● 残念ながら YaST からはできない – LDAP ならできるのですが…

Slide 56

Slide 56 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 56/59 完成 \\192.168.0.3\users\geeko

Slide 57

Slide 57 text

2020-04-24 Btrfs+Snapper+Smb で「以前のバージョン」に戻せるファイルサーバー 57/59 制限事項 ● \\192.168.0.3\geeko でアクセスすると、 以前のバージョンが表示されない – Samba の共有ディレクトリとスナップショットを とっているサブボリュームのディレクトリとが一致する必要あり

Slide 58

Slide 58 text

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 古いファイル

Slide 59

Slide 59 text

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プロジェクト公式日本語メーリングリスト ● [email protected] 公式アナウンスなど – その他、Slack、LINE Open Chat もあり