ネットワーク設定 · 4 min read · Jan 07, 2026
Debian 8でのATA over Ethernet (AoE)の設定 (イニシエーターとターゲット)
このチュートリアルでは、Debian 8 / JessieでAoEクライアント(イニシエーター)とサーバー(ターゲット)を設定する方法を示します。AoEという用語は「ATA over Ethernet」を意味し、通常のイーサネットネットワークを介してAoEクライアントが(リモート)AoEサーバー上のストレージデバイスを使用できるストレージエリアネットワーク(SAN)プロトコルです。この場合の「リモート」とは「同じLAN内」を意味します。なぜなら、AoEはLANの外ではルーティングできないからです(これはiSCSIとの大きな違いです)。AoEクライアント(イニシエーター)にとって、リモートストレージは通常のローカル接続されたハードドライブのように見えます。
1 予備ノート
ここでは2台のDebian 8サーバーを使用しています:
- server1.example.com (イニシエーター): IPアドレス 192.168.1.100
- server2.example.com (ターゲット): IPアドレス 192.168.1.101
2 両方のシステムでAoEカーネルモジュールをロードする
server1/server2:
最初のステップとして、サーバーのカーネルがATA Over Ethernetをサポートしていることを確認する必要があります。以下のコマンドをrootユーザーとして実行します。
grep ATA_OVER /boot/config-`uname -r`これにより、次のような出力が表示されるはずです:
root@server1:/tmp# grep ATA_OVER /boot/config-`uname -r`
CONFIG_ATA_OVER_ETH=m
root@server1:/tmp#これは、AoEがカーネルモジュールとしてビルドされていることを意味します。次に、モジュールがロードされているかどうかを確認します:
lsmod | grep aoe何も返ってこない場合、これはロードされていないことを意味します。この場合、次のようにしてロードできます:
modprobe aoe再度、モジュールがロードされているかどうかを確認します:
lsmod | grep aoeroot@server1:/tmp# lsmod | grep aoe
aoe 51917 0
root@server1:/tmp#システム起動時に自動的にモジュールがロードされるように、aoeモジュールを/etc/modulesに追加します:
nano /etc/modules# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
aoe3 ターゲットの設定 (server2)
server2:
まず、AoEターゲット(server2)を設定します:
apt-get install vblade未使用の論理ボリューム、イメージファイル、ハードドライブ(例:/dev/sdb)、ハードドライブパーティション(例:/dev/sdb1)またはRAIDデバイス(例:/dev/md0)をストレージとして使用できます。この例では、/storageフォルダーに保存された20GBのイメージファイルを使用します。
mkdir /storage
dd if=/dev/zero of=/storage/storage1.img bs=1024k count=20000これにより、サイズ20GBのイメージファイル/storage/storage1.imgが作成されます。
論理ボリュームを代わりに使用したい場合は、次のようにしてvg0のボリュームグループ内にstorage1という名前の20GBのサイズのものを作成できます:
lvcreate -L20G -n storage1 vg0次に、ストレージデバイスを次のようにエクスポートします:
vbladed 0 1 eth0 /storage/storage1.img最初の数字(0)はシェルフ番号(メジャー)、2番目(1)はスロット番号(マイナー)で、これらの数字はお好みに応じて変更してください。各AoEデバイスは、ユニークでなければならないメジャー/マイナーのペアで識別されます(複数のデバイスをエクスポートする場合)、メジャーは0-65535の範囲、マイナーは0-255の範囲です。eth0部分は、vbladedにどのイーサネットデバイスを使用するかを指示します(イーサネットデバイスがeth1の場合はeth1を使用します - イーサネットデバイスについては次のコマンドを実行して確認できます:
ifconfig)。
ターゲットを起動するたびに自動的にエクスポートを開始するには、/etc/rc.localを開きます…
nano /etc/rc.local… そして、次の行をexit 0の行の前に追加します:
[...]
/usr/sbin/vbladed 0 1 eth0 /storage/storage1.img
[...] 4 AoEクライアント / イニシエーターの設定 (server1)
server1:
server1で、イニシエーターをインストールします:
apt-get install aoetools次に、利用可能なAoEストレージデバイスを確認します:
aoe-discover心配しないでください。このコマンドは出力を表示しません。次のコマンド:
aoe-statは、ストレージデバイスを表示するはずです:
root@server1:/tmp# aoe-stat
e0.1 20.971GB eth0 1024 up
root@server1:/tmp#この時点で、クライアントボックスに新しいブロックデバイス/dev/etherd/e0.1が利用可能です。/devツリーを確認すると、新しいノードが表示されます:
ls -la /dev/etherd/root@server1:/tmp# ls -la /dev/etherd/
total 0
drwxr-xr-x 2 root root 160 Mar 22 08:46 .
drwxr-xr-x 19 root root 3160 Mar 22 08:34 ..
c-w--w---- 1 root disk 152, 3 Mar 22 08:34 discover
brw-rw---- 1 root disk 152, 0 Mar 22 08:46 e0.1
cr--r----- 1 root disk 152, 2 Mar 22 08:34 err
c-w--w---- 1 root disk 152, 6 Mar 22 08:34 flush
c-w--w---- 1 root disk 152, 4 Mar 22 08:34 interfaces
c-w--w---- 1 root disk 152, 5 Mar 22 08:34 revalidate
root@server1:/tmp#その/dev/etherd/e0.1デバイスを使用するには、フォーマットする必要があります:
fdisk /dev/etherd/e0.1root@server1:/tmp# fdisk /dev/etherd/e0.1ようこそfdiskへ(util-linux 2.25.2)。
変更は、書き込むことを決定するまでメモリ内にのみ残ります。
書き込みコマンドを使用する前に注意してください。デバイスには認識されたパーティションテーブルが含まれていません。
新しいDOSディスクラベルがディスク識別子0x2922f0beで作成されました。コマンド(ヘルプはm):<-- n
パーティションタイプ
p プライマリ(0プライマリ、0拡張、4空き)
e 拡張(論理パーティションのコンテナ)
選択(デフォルトp):<-- p
パーティション番号(1-4、デフォルト1):<-- 1
最初のセクター(2048-40959999、デフォルト2048):<-- ENTER
最後のセクター、+セクターまたは+サイズ{K,M,G,T,P}(2048-40959999、デフォルト40959999):<-- ENTER新しいパーティション1がタイプ「Linux」でサイズ19.5 GiBで作成されました。コマンド(ヘルプはm):<-- wパーティションテーブルが変更されました。
ioctl()を呼び出してパーティションテーブルを再読み込みします。
ディスクを同期中。次に、/dev/etherd/e0.1p1にファイルシステムを作成します…
mkfs.ext4 /dev/etherd/e0.1p1root@server1:/tmp# mkfs.ext4 /dev/etherd/e0.1p1
mke2fs 1.42.12 (29-Aug-2014)
5119744 4kブロックと1281120のinodeでファイルシステムを作成しています
ファイルシステムUUID: 2342cd83-bd45-4975-96c0-b0f366b73778
スーパーブロックバックアップはブロックに保存されます:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000グループテーブルを割り当てています:完了
inodeテーブルを書き込んでいます:完了
ジャーナルを作成しています(32768ブロック):完了
スーパーブロックとファイルシステムの会計情報を書き込んでいます:完了… そしてテスト目的でマウントします:
mount /dev/etherd/e0.1p1 /mntこれで、次の出力に新しいデバイスが表示されるはずです:
mountroot@server1:/tmp# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=125556,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,relatime,size=204220k,mode=755)
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw,relatime)
/dev/etherd/e0.1p1 on /mnt type ext4 (rw,relatime,data=ordered)
root@server1:/tmp#… と
df -hroot@server1:/tmp# df -h
ファイルシステム サイズ 使用量 空き 使用率 マウントポイント
/dev/sda1 57G 1.1G 54G 2% /
udev 10M 0 10M 0% /dev
tmpfs 200M 4.6M 195M 3% /run
tmpfs 499M 0 499M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 499M 0 499M 0% /sys/fs/cgroup
/dev/etherd/e0.1p1 20G 44M 19G 1% /mnt
root@server1:/tmp#これを次のようにしてアンマウントできます:
umount /mntブート時に自動的にデバイスをマウントするには、例えば/storageディレクトリに、そのディレクトリを作成します…
mkdir /storage… そして、/etc/fstabに次の行を追加します:
nano /etc/fstab[...]
/dev/etherd/e0.1p1 /storage ext4 defaults,auto,_netdev 0 0これだけでは、ブート時にデバイスがマウントされるには不十分です。なぜなら、AoE関連のものは/etc/fstabが読み込まれた後にロードされるからです。したがって、/etc/rc.localを開きます…
nano /etc/rc.local… そして、次の行をexit 0の行の前に追加します:
[...]
aoe-discover
sleep 5
mount -a
[...] テスト目的で、システムを再起動できます:
reboot再起動後、デバイスはマウントされているはずです:
mountroot@server1:/tmp# mount
[...snip...]
/dev/etherd/e0.1p1 on /storage type ext4 (rw,relatime,data=ordered)
[...snip...]df -hroot@server1:/tmp# df -h
ファイルシステム サイズ 使用量 空き 使用率 マウントポイント
/dev/sda1 57G 1.1G 54G 2% /
udev 10M 0 10M 0% /dev
tmpfs 200M 4.6M 195M 3% /run
tmpfs 499M 0 499M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 499M 0 499M 0% /sys/fs/cgroup
/dev/etherd/e0.1p1 20G 44M 19G 1% /storageこれで、マウントしたパーティションに対してテスト書き込みを行うことができます:
touch /storage/test.txtファイルが書き込まれたかどうかをlsコマンドで確認します:
ls -la /storageroot@server1:/tmp# ls -la /storage
total 24
drwxr-xr-x 3 root root 4096 Mar 22 09:06 .
drwxr-xr-x 23 root root 4096 Mar 22 09:05 ..
drwx------ 2 root root 16384 Mar 22 09:00 lost+found
-rw-r--r-- 1 root root 0 Mar 22 09:06 test.txt
root@server1:/tmp#test.txtファイルは、server2からマウントしたボリュームに正常に書き込まれました。
5 リンク
- AoEプロトコル定義: http://www.coraid.com/RESOURCES/AoE-Protocol-Definition
- Debian: http://www.debian.org/
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。