web-dev-qa-db-ja.com

(パーティションではなく)ファイルのDRBD

ディスクイメージファイルを使用するXen仮想マシンがいくつかあります。

disk = ["file:/xen/vbd/something.vbd,sda1,w"]

DRBDを使用してこれらのファイルをバックアップ用に複製したいと思います(現在のMySQL複製と夜間のrsyncの混乱とは対照的です)。しかし、私はそれを機能させる方法を理解していないようです。

losetupを使用して、ファイルをループバックデバイスにバインドできます。

# losetup /dev/loop0 /xen/vbd/something.vbd

そして、DRBDをそのデバイスにポイントします。

device  /dev/drbd1;
disk    /dev/loop0;

ただし、ループバックは安定していません。再起動時には存在せず、loop1、loop2などに簡単に接続できます。停電で回復するために人間の操作が必要な場合、サーバーにとっては正確に有効なオプションではありません。 。

何が足りないのですか?

3
Marcus Downing

昔ながらの方法が常にあります:

mknod /dev/loop255 b 7 255
losetup /dev/loop255 mydisk.img

潜在的な競合を回避するために、高い乱数を使用してください。

4
jgoldschrafe

「ループバックが安定していない」とはどういう意味ですか?次のようなものを含むシェルスクリプトを作成した場合はどうなりますか

losetup /dev/loop0 /xen/vdb/something.vdb
losetup /dev/loop1 /xen/vdb/something2.vdb
losetup /dev/loop2 /xen/vdb/something3.vdb

そして、xenゲストが開始する前にシステムの起動時にそれを置きます(または永続的なループバックイメージをセットアップするためのより公式な方法を使用します、それをしていません)?/dev/loop0は、常に同じイメージを指しているのではないでしょうか。 [〜#〜] i [〜#〜]欠落しているものは何ですか? :)

1

これが私のベアボーンループデバイスのinitスクリプトです。 DebianSqueezeでテスト済み。

### BEGIN INIT INFO
# Provides:          drbd_loopbacks
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

XEN_PATH=/home/xen/domains
DRBD_PATH=/home/drbd

case "$1" in
start)
  losetup /dev/loop45   $XEN_PATH/int/disk.img
  losetup /dev/loop63   $DRBD_PATH/meta.img
  ;;

stop)
  losetup -d /dev/loop45
  losetup -d /dev/loop63
  ;;
*)
  echo $"Usage: $0 {start|stop}"
  exit 1
esac
0
cmc

起動時にループデバイスを作成するinitスクリプトを作成できます。 this のようなもの。

0
user63131