서버 설정 · 9 min read · Feb 02, 2026
CentOS 7에서 Ethernet을 통한 ATA(AoE) 사용하기 (Initiator 및 Target)
이 가이드는 CentOS 7에서 실행되는 AoE 타겟과 AoE 이니시에이터(클라이언트)를 설정하는 방법을 설명합니다. AoE는 “Ethernet을 통한 ATA”를 의미하며, AoE 이니시에이터가 일반 이더넷 케이블을 사용하여 (원격) AoE 타겟의 저장 장치를 사용할 수 있게 해주는 스토리지 영역 네트워크(SAN) 프로토콜입니다. 여기서 “원격”은 “같은 LAN 내”를 의미하며, AoE는 LAN 외부에서 라우팅할 수 없습니다(이는 iSCSI와 비교할 때 주요 차이점입니다). AoE 이니시에이터에게 원격 저장소는 일반적으로 로컬에 연결된 하드 드라이브처럼 보입니다.
1 사전 참고
여기서는 두 대의 CentOS 7 서버를 사용하고 있습니다:
- server1.example.com (Initiator): IP 주소 192.168.1.100
- server2.example.com (Target): IP 주소 192.168.1.101
2 추가 리포지토리 활성화
server1/server2:
먼저, 소프트웨어 패키지에 대한 GPG 키를 가져옵니다:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*그런 다음, 이 튜토리얼에서 설치할 많은 패키지가 공식 CentOS 7 리포지토리에 없기 때문에 CentOS 시스템에서 EPEL 리포지토리를 활성화합니다:
yum -y install epel-releaseyum -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 update3 두 시스템에서 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가 생성됩니다.
논리 볼륨을 대신 사용하려면 다음과 같이 vg0 볼륨 그룹에 storage1이라는 이름의 10GB 크기의 논리 볼륨을 생성할 수 있습니다:
lvcreate -L10G -n storage1 vg0이제 다음과 같이 저장소 장치를 내보냅니다:
vbladed 0 1 ens33 /storage/storage1.img첫 번째 숫자(0)는 선반 번호(주 번호), 두 번째(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,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 ~]#6 링크
- AoE 프로토콜 정의: http://www.coraid.com/RESOURCES/AoE-Protocol-Definition
- CentOS: http://www.centos.org/
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.