
Debian 10 ホストに KVM をセットアップしました。
実行中の仮想マシンは 2 台あります。
仮想マシン #1 には OMV が内蔵されています。
仮想マシン #2 にはプレーンな Debian が内蔵されています。
各仮想マシンは、独自の qcow2 イメージ ファイルにインストールされます。
これら 2 台のマシンは、1 つの追加ストレージ (RAW ストレージ ファイル) を共有します。両方のマシンで、このストレージは「共有可能」としてマークされています。
私が気づいた現在の問題は、ファイル テーブルがオンザフライで更新されないことです。つまり、1 つの VM でこのストレージを使用して何かを行った場合、他の VM が再起動されるまで (おそらく再マウントでも同じことが起こる)、変更は他の VM では表示されません。
両方の VM によって変更が行われると、OMV は後で SMB 関連のエラーを吐き出し始めます。
OMV を再起動してもファイル テーブルは更新されませんでしたが、Debian マシンを再起動するとすべてのデータが失われました。
OMV は Samba 共有をホストします。
共有ストレージの経験があり、ストレージを再マウントせずに少なくともファイル テーブルを手動で更新する方法を知っている人はいますか?
答え1
要約:プレーンなDebian VM(仮想マシン#2)を用意するSamba共有をマウントするOpenMediaVault VM (仮想マシン #1) でホストされます。仮想マシン #1 には、raw ストレージ ファイルのみを接続します。
説明
あなたが設定した内容は、1 つのフラッシュ ドライブを同時に 2 台のコンピューターに接続しているようなものです。これについては以前にも書きました。
両方のコンピュータのハードドライブ上のどこかにファイルシステムをマウントすると、各コンピュータは他のコンピュータもファイルシステムを使用していることを認識しません。これにより、重大なデータ破損なぜなら、各コンピュータが互いの足を踏みつけているからです。
から:iSCSI イニシエーターに変更を伝播させるにはどうすればよいですか?
これを修正するには、ストレージ ディスク (サーバー上) と、それにアクセスする複数のマシン (クライアント) の間に、複数のクライアントが同じストレージにアクセスできることを認識するレイヤーが必要です。
これを設定する一般的な方法は2つあります。NFSそしてCIFS(サンバ)はネットワークファイルシステム。
すでに Samba サーバーがセットアップされているようです。 ストレージを共有するために必要なことは、VM を 1 つの Samba サーバーに接続するだけです。 仮想ディスクは Samba サーバーにのみ接続する必要があります。
さらに一歩進んで、分散ファイルシステムこれは、複数のサーバーのストレージをプールし、単一のネットワーク ファイル システムでそれらにアクセスする方法です。
あるいは、当初試みていたように仮想ディスクを共有することも可能ですが、複数のコンピューターが同時にデータを変更する可能性があることを認識するファイル システムが必要です。 この他の答え示唆する共有ディスクファイルシステムネットワーク ファイル システムよりも低いレベルで共有ストレージを抽象化します。
リソース
公式ドキュメント
- NFS サーバーのセットアップDebian Wiki で
- シンプルなSambaファイル共有サーバーのセットアップDebian Wiki で
- OpenMediaVault Samba サービス
チュートリアル
- Debian 9 (Stretch) で NFS サーバーとクライアントを設定するHowtoForge で
(チュートリアルは Debian 10 でも有効です) - Debian 10 / Ubuntu 18.04 に Samba サーバー共有をインストールして構成するギークのためのコンピューティング
さらなる高みへ: 分散ファイルシステム
答え2
2 つのノードに同時に ext4 ファイル システムを r/w でマウントすると、両方のノードでコンテンツが使用できなくなります。代わりに、ファイル システムが破損します。
virt-manager でディスクを共有可能としてマークすると、ハイパーバイザーによる警告が停止されます。これは、ファイル システム レベルではなく、仮想ハードウェア レベルで発生します。
共有ディスクが必要な場合 (それには十分な理由があります)、GFS または OCF2 (初心者にとって最も簡単な選択肢) を使用します。