CentOS · 7 min read · Feb 02, 2026

CentOS 7でのATA over Ethernet (AoE)の使用 (イニシエーターとターゲット)

このガイドでは、CentOS 7を実行しているAoEターゲットとAoEイニシエーター(クライアント)を設定する方法を説明します。AoEは「ATA over Ethernet」の略で、ストレージエリアネットワーク(SAN)プロトコルであり、AoEイニシエーターが通常のイーサネットケーブルを使用して(リモート)AoEターゲット上のストレージデバイスを使用できるようにします。この場合の「リモート」とは「同じLAN内」を意味します。なぜなら、AoEはLAN外ではルーティングできないからです(これはiSCSIとの大きな違いです)。AoEイニシエーターにとって、リモートストレージは通常のローカル接続されたハードドライブのように見えます。

1 予備ノート

ここでは、2つのCentOS 7サーバーを使用しています:

  • server1.example.com (イニシエーター): IPアドレス 192.168.1.100
  • server2.example.com (ターゲット): IPアドレス 192.168.1.101

2 追加リポジトリの有効化

server1/server2:

まず、ソフトウェアパッケージのGPGキーをインポートします:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

次に、CentOSシステムでEPELリポジトリを有効にします。これは、このチュートリアルの過程でインストールする多くのパッケージが公式のCentOS 7リポジトリにはないためです:

yum -y install epel-release
yum -y install yum-priorities

/etc/yum.repos.d/epel.repoを編集します…

nano /etc/yum.repos.d/epel.repo

… そして[epel]セクションにpriority=10という行を追加します:

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[...]

次に、システム上の既存のパッケージを更新します:

yum -y update

3 両システムでのAoEカーネルモジュールの読み込み

server1/server2:

始める前に、カーネルがAoEをサポートしていることを確認する必要があります:

grep ATA_OVER /boot/config-`uname -r`

これにより、次のような出力が表示されるはずです:

[root@server1 ~]# grep ATA_OVER /boot/config-`uname -r`  
CONFIG_ATA_OVER_ETH=m  
[root@server1 ~]#

これは、AoEがカーネルモジュールとしてビルドされていることを意味します。モジュールがすでに読み込まれているかどうかを確認しましょう:

lsmod | grep aoe

何も返ってこない場合、これは読み込まれていないことを意味します。この場合、次のようにして読み込むことができます:

modprobe aoe

再度、モジュールが読み込まれているかどうかを確認しましょう:

lsmod | grep aoe
[root@server1 ~]# lsmod | grep aoe  
aoe 54175 0  
[root@server1 ~]#

システム起動時にモジュールが自動的に読み込まれるように、次の行を/etc/rc.localに追加します:

nano /etc/rc.local
[...]
modprobe aoe
[...]

4 サーバー2でのサーバー(ターゲット)の設定

server2:

まず、ターゲット(server2)を設定します:

rpm -i http://download.opensuse.org/repositories/home:/cyberorg:/ltsp/CentOS_7/x86_64/vblade-22-3.1.x86_64.rpm

未使用の論理ボリューム、イメージファイル、ハードドライブ(例:/dev/sdb)、ハードドライブパーティション(例:/dev/sdb1)、またはRAIDデバイス(例:/dev/md0)をストレージとして使用できます。

この例では、ストレージフォルダー/storageにある10GBのイメージファイルを使用します。

mkdir /storage  
dd if=/dev/zero of=/storage/storage1.img bs=1024k count=10000

これにより、サイズ10GBのイメージファイル/storage/storage1.imgが作成されます。

論理ボリュームを使用したい場合は、次のようにしてサイズ10GBのstorage1という名前のボリュームグループvg0内に作成できます:

lvcreate -L10G -n storage1 vg0

次に、次のようにしてストレージデバイスをエクスポートします:

vbladed 0 1 ens33 /storage/storage1.img

最初の数字(0)はシェルフ番号(メジャー)、2番目(1)はスロット番号(マイナー)であり、これらの数字はお好みに応じて変更してください。各AoEデバイスは、メジャー/マイナーのペアによって識別され、これは一意でなければなりません(複数のデバイスをエクスポートする場合)、メジャーは0-65535の範囲、マイナーは0-255の範囲です。ens33部分は、vbladedにどのイーサネットデバイスを使用するかを指示します。イーサネットデバイスの詳細を確認するには、次のコマンドを実行します。

ifconfig

ターゲットを起動するたびにエクスポートを自動的に開始するには、/etc/rc.localを開きます…

nano /etc/rc.local

… そして次の行を追加します(modprobe aoe行の後!):

[...]
vbladed 0 1 ens33 /storage/storage1.img
[...]

5 サーバー1でのクライアント(イニシエーター)の設定

server1:

server1では、イニシエーターをインストールします。CentOS 7用のパッケージはありませんが、CentOS 6のものは問題なく動作するので、ここではそれを使用します。

rpm -i http://download.opensuse.org/repositories/system:/aoetools/CentOS_CentOS-6/x86_64/aoetools-36-1.2.x86_64.rpm

次に、利用可能なAoEストレージデバイスを確認します:

aoe-discover

コマンド

aoe-stat

は、ストレージデバイスを表示するはずです:

[root@server1 ~]# aoe-stat  
e0.1 10.485GB ens33 1024 up  
[root@server1 ~]#

この時点で、クライアントボックスに新しいブロックデバイス/dev/etherd/e0.1が利用可能です。/devツリーを確認すると、新しいノードが表示されます:

ls -la /dev/etherd/
[root@server1 ~]# ls -la /dev/etherd/  
total 0  
drwxr-xr-x. 2 root root 160 Jun 30 14:49 .  
drwxr-xr-x. 21 root root 3240 Jun 30 14:32 ..  
c-w--w----. 1 root disk 152, 3 Jun 30 14:32 discover  
brw-rw----. 1 root disk 152, 0 Jun 30 14:49 e0.1  
cr--r-----. 1 root disk 152, 2 Jun 30 14:32 err  
c-w--w----. 1 root disk 152, 6 Jun 30 14:32 flush  
c-w--w----. 1 root disk 152, 4 Jun 30 14:32 interfaces  
c-w--w----. 1 root disk 152, 5 Jun 30 14:32 revalidate  
[root@server1 ~]#

そのデバイスを使用するには、フォーマットする必要があります:

fdisk /dev/etherd/e0.1
[root@server1 ~]# fdisk /dev/etherd/e0.1  
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel  
Building a new DOS disklabel with disk identifier 0xed572fd4.  
Changes will remain in memory only, until you decide to write them.  
After that, of course, the previous content won't be recoverable.  
   
   
The number of cylinders for this disk is set to 2610.  
There is nothing wrong with that, but this is larger than 1024,  
and could in certain setups cause problems with:  
1) software that runs at boot time (e.g., old versions of LILO)  
2) booting and partitioning software from other OSs  
   (e.g., DOS FDISK, OS/2 FDISK)  
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)  
   
Command (m for help): <-- n  
 Command action  
   e   extended  
   p   primary partition (1-4)  
 <-- p  
 Partition number (1-4): <-- 1  
First sector (2048-20479999, default 2048): <-- ENTER  
 Using default value 1  
Last sector, +sectors or +size{K,M,G} (2048-20479999, default 20479999): <-- ENTER  
Using default value 20479999  
Partition 1 of type Linux and of size 9.8 GiB is set  
   
Command (m for help): <-- t  
 Selected partition 1  
Hex code (type L to list codes): <-- L  
   
 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       bf  Solaris  
 1  FAT12           24  NEC DOS         81  Minix / old Lin c1  DRDOS/sec (FAT-  
 2  XENIX root      39  Plan 9          82  Linux swap / So c4  DRDOS/sec (FAT-  
 3  XENIX usr       3c  PartitionMagic  83  Linux           c6  DRDOS/sec (FAT-  
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c7  Syrinx  
 5  Extended        41  PPC PReP Boot   85  Linux extended  da  Non-FS data  
 6  FAT16           42  SFS             86  NTFS volume set db  CP/M / CTOS / .  
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set de  Dell Utility  
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext df  BootIt  
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       e1  DOS access  
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e3  DOS R/O  
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e4  SpeedStor  
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          eb  BeOS fs  
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi ee  GPT  
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ef  EFI (FAT-12/16/  
10  OPUS            55  EZ-Drive        a6  OpenBSD         f0  Linux/PA-RISC b  
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f1  SpeedStor  
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f4  SpeedStor  
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot      fb  VMware VMFS  
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs        fc  VMware VMKCORE  
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto  
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep  
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT  
Hex code (type L to list codes): <-- 83  
   
 Command (m for help): <-- w  
 The partition table has been altered!  
   
Calling ioctl() to re-read partition table.  
Syncing disks.  
[root@server1 ~]#

その後、新しいデバイス/dev/etherd/e0.1p1が次のコマンドの出力に表示されます:

ls -l /dev/etherd/
[root@server1 ~]# ls -l /dev/etherd/  
total 0  
c-w--w----. 1 root disk 152, 3 Jun 30 14:32 discover  
brw-rw----. 1 root disk 152, 0 Jun 30 14:54 e0.1  
brw-rw----. 1 root disk 152, 1 Jun 30 14:54 e0.1p1  
cr--r-----. 1 root disk 152, 2 Jun 30 14:32 err  
c-w--w----. 1 root disk 152, 6 Jun 30 14:32 flush  
c-w--w----. 1 root disk 152, 4 Jun 30 14:32 interfaces  
c-w--w----. 1 root disk 152, 5 Jun 30 14:32 revalidate  
[root@server1 ~]#

次に、/dev/etherd/e0.1p1にファイルシステムを作成します…

mkfs.ext4 /dev/etherd/e0.1p1

… そしてテスト目的でマウントします:

mount /dev/etherd/e0.1p1 /mnt

これで、次のコマンドの出力に新しいデバイスが表示されるはずです…

mount
[root@server1 ~]# mount  
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)  
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)  
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=930336k,nr_inodes=232584,mode=755)  
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)  
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)  
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)  
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)  
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)  
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)  
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)  
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)  
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)  
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)  
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)  
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)  
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)  
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)  
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)  
configfs on /sys/kernel/config type configfs (rw,relatime)  
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)  
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)  
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=30,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)  
debugfs on /sys/kernel/debug type debugfs (rw,relatime)  
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)  
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)  
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)  
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=188060k,mode=700)  
/dev/etherd/e0.1p1 on /mnt type ext4 (rw,relatime,seclabel,data=ordered)  
[root@server1 ~]#

… と

df -h
[root@server1 ~]# df -h  
Filesystem Size Used Avail Use% Mounted on  
/dev/mapper/centos-root 28G 1.3G 27G 5% /  
devtmpfs 909M 0 909M 0% /dev  
tmpfs 919M 0 919M 0% /dev/shm  
tmpfs 919M 8.6M 910M 1% /run  
tmpfs 919M 0 919M 0% /sys/fs/cgroup  
/dev/sda1 497M 192M 306M 39% /boot  
tmpfs 184M 0 184M 0% /run/user/0  
/dev/etherd/e0.1p1 9.5G 37M 9.0G 1% /mnt  
[root@server1 ~]#

このデバイスを次のようにアンマウントできます:

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

… そして次の行を追加します(modprobe aoe行の後!):

[...]
aoe-discover
sleep 5
mount -a
[...]

テスト目的で、システムを再起動できます:

reboot

再起動後、デバイスはマウントされているはずです:

mount
[root@server1 ~]# mount  
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)  
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)  
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=930336k,nr_inodes=232584,mode=755)  
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)  
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)  
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)  
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)  
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)  
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)  
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)  
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)  
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)  
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)  
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)  
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)  
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)  
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)  
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)  
configfs on /sys/kernel/config type configfs (rw,relatime)  
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)  
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)  
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,nosuid,fd=30,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)  
debugfs on /sys/kernel/debug type debugfs (rw,nosuid)  
mqueue on /dev/mqueue type mqueue (rw,nosuid)  
hugetlbfs on /dev/hugepages type hugetlbfs (rw,nosuid)  
/dev/sda1 on /boot type xfs (rw,nosuid)  
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev)  
/dev/etherd/e0.1p1 on /mnt type ext4 (rw,nosuid)  
[root@server1 ~]#
df -h
[root@server1 ~]# df -h  
Filesystem Size Used Avail Use% Mounted on  
/dev/mapper/centos-root 28G 1.3G 27G 5% /  
devtmpfs 909M 0 909M 0% /dev  
tmpfs 919M 0 919M 0% /dev/shm  
tmpfs 919M 8.6M 910M 1% /run  
tmpfs 919M 0 919M 0% /sys/fs/cgroup  
/dev/sda1 497M 192M 306M 39% /boot  
tmpfs 184M 0 184M 0% /run/user/0  
/dev/etherd/e0.1p1 9.5G 37M 9.0G 1% /mnt  
[root@server1 ~]#

6 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。