1.3. Sambaの通常メンテナンス

1.3.1. Sambaサービスの運用管理

動作しているSambaデーモンのモニタと操作

Sambaを制御するための手段として構成ファイルに設定を記述する方法(smb.confの編集)とプログラムにメッセージを送る方法(smbcontrolコマンド)がある。

smbcontrolコマンド

smbcontrolはSambaのプロセス(smbd、nmbd、winbindd)にメッセージを送って制御するためのプログラムのこと。

smbcontrol [destination] [message-type] [parameter]
# 例
smbcontrol smbd shutdown
  • [destination] … メッセージの宛先を指定
    • smbd,nmbd,winbindd or allで指定
  • [message-type] … プロセスに送るコマンド
    • shotdown:デーモン停止
    • all status:すべてのSambaデーモンのステータスを出力
    • reload-config:設定ファイルの再読み込み
    • dubug ログレベル:指定したログレベルに変更
    • debuglevel:デバックレベルを問い合わせて表示
  • [parameter] … パラメータを必要とするコマンドの場合

smbstatusコマンド

Sambaサーバに接続しているクライアントの確認/サーバの稼働状況を確認できるコマンド。
共有に接続しているクライアントのユーザ名、グループ名、接続元IPアドレスとポートに加え、接続を受け付けたSambaのプロセスIDを表示する。

smbstatus

1.3.2. TDB (Trivial Database) ファイルの管理

TDBファイルの役割と重要性

Sambaが内部情報(IDマッピング、ロック情報など)を保存するデータベースファイル

TDBファイルのバックアップとレストア

TDBファイルは、Sambaがランタイム情報(ロック、ブラウズリスト、IDマッピングなど)を格納するためのシンプルなデータベースのこと。
これらのファイルが破損すると、Sambaが正常に動作しなくなる可能性がある。

tdbbackupコマンド

TDBファイルを安全にバックアップするコマンド。
ファイルが使用中であっても、一貫性を保った状態でコピーを作成する。

tdbbackup

tdbrestoreコマンド

TDBファイルのバックアップをリストアするコマンド。

tdbrestore

Samba AD DCとして動作している場合、TDBファイルの一部(secrets.tdbなど)は非常に重要ですが、より大規模なデータ(LDAPデータベースなど)の整合性は samba-tool で管理される。

1.3.3. Active Directoryドメインコントローラーのバックアップとリカバリ

Samba AD DCのバックアップは、ファイルシステムレベルのコピーではなく、専用のツールを使ってLDAPデータベース(NTDS.DITに相当)とSYSVOLの整合性を確保する必要がある。

Active Directoryドメインコントローラーのバックアップ

samba-tool domain backupコマンド

Samba AD DCの重要データ(LDAP DBとSYSVOL)の整合性を保った状態でバックアップを取得するコマンド。
このツールによるバックアップが、AD DCの標準的なバックアップ方法となる。

samba-tool domain backup --targetdir=/backup

Active Directoryドメインコントローラーのリカバリ方針

AD DCのバックアップとリカバリの方針は以下が重要となる。

  • 一貫性の確保
    • AD DCのデータベースは、複数のDC間で常にレプリケーションされており、単なるファイルコピーでは整合性が失われる
    • リカバリでは、バックアップ時点の状態に正確に戻すことが目標となる
  • 権威(Authority)のあるリストア
    • 複数DC環境でリストアを行う場合、そのDCの状態をネットワーク全体に強制的に適用する「権威のある(Authoritative)リストア」が必要になることがある
    • samba-tool や関連ツールで実行される
  • システム状態のバックアップ
    • Windows環境と同様に、Samba AD DCの完全なリカバリには、システム状態(レジストリ、SYSVOL、LDAPデータベース)のバックアップが必要となる

1.3.4. 仮想化環境における考慮事項

仮想環境でドメインコントローラーを運用する場合は、ホスト側の機能(スナップショットなど)の使用には細心の注意が必要となる。

Virtual Machine Generation Identifier (VM Generation ID)

VM Generation IDは仮想マシンが以前の状態からロールバックされた(スナップショットから復元された)ことをDC自身に通知するための仕組み。

Samba(AD DC)は、このIDの変更を検知すると、データベースの不整合(USNロールバック)を防ぐために自動的に対応措置(レプリケーションの再初期化など)を講じる。

Virtual Machine Snapshotsの危険性

DCをスナップショットからの復元する場合、DCのデータベースを古い状態に戻すため、USNロールバックという深刻なレプリケーションエラーを引き起こす可能性がある。
対策として、AD DCに対しては、スナップショット機能を使用せず、代わりに専用のバックアップツール(samba-tool domain backupなど)を使用することが、バックアップとリカバリの方針として強く推奨される。