웹사이트 검색

Debian 8(초기자 및 대상)에서 AoE(ATA over Ethernet) 설정


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 데비안 8(제시)
  • 데비안 5(레니)

이 페이지에서

  1. 1 서문
  2. 2 두 시스템 모두에 AoE 커널 모듈 로드
  3. 3 대상 설정(server2)
  4. 4 AoE 클라이언트/이니시에이터 설정(server1)
  5. 5개의 링크

이 자습서는 Debian 8 /Jessie에서 AoE 클라이언트(이니시에이터) 및 서버(대상)를 설정하는 방법을 보여줍니다. AoE라는 용어는 AoE 클라이언트가 일반 이더넷 네트워크를 통해 (원격) AoE 서버의 저장 장치를 사용할 수 있게 해주는 SAN(Storage Area Network) 프로토콜인 "ATA over Ethernet"을 나타냅니다. 이 경우 "원격"은 "동일한 LAN 내부"를 의미합니다. AoE는 LAN 외부에서 라우팅할 수 없기 때문입니다(이는 iSCSI와 비교했을 때 큰 차이점입니다). AoE 클라이언트(이니시에이터)에게 원격 저장소는 로컬에 연결된 일반 하드 드라이브처럼 보입니다.

1 서문

여기에서 두 개의 Debian 8 서버를 사용하고 있습니다.

  • server1.example.com(이니시에이터): IP 주소 192.168.1.100
  • server2.example.com(대상): IP 주소 192.168.1.101

2 두 시스템 모두에 AoE 커널 모듈을 로드합니다.

첫 번째 단계로 서버의 커널이 ATA Over Ethernet을 지원하는지 확인해야 합니다. 다음 명령을 루트 사용자로 실행합니다.

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

다음과 같이 표시되어야 합니다.

:/tmp#

이는 AoE가 커널 모듈로 내장되었음을 의미합니다. 이제 모듈이 로드되었는지 확인합니다.

lsmod | grep aoe

아무 것도 돌려받지 못한다면 로드되지 않은 것입니다. 이 경우 다음과 같이 로드할 수 있습니다.

modprobe aoe

모듈이 로드되었는지 다시 확인합니다.

lsmod | grep aoe
:/tmp#

시스템 부팅 시 모듈이 자동으로 로드되도록 하려면 /etc/modules에 aoe 모듈을 추가합니다.

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.

aoe

3 대상 설정(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)는 선반 번호(major)이고 두 번째(1)는 슬롯 번호(minor)입니다. 이 숫자를 원하는 대로 변경하십시오. 각 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에 이니시에이터를 설치합니다.

apt-get install aoetools

이제 사용 가능한 AoE 저장 장치를 확인합니다.

aoe-discover

걱정하지 마십시오. 이 명령은 출력을 표시하지 않습니다. 명령:

aoe-stat

이제 저장 장치가 표시되어야 합니다.

:/tmp#

이 시점에서 /dev/etherd/e0.1이라는 클라이언트 상자에서 사용할 수 있는 새 블록 장치가 있습니다. /dev 트리를 보면 새 노드가 나타납니다.

ls -la /dev/etherd/
:/tmp#

해당 /dev/etherd/e0.1 장치를 사용하려면 다음과 같이 포맷해야 합니다.

fdisk /dev/etherd/e0.1
:/tmp# fdisk /dev/etherd/e0.1
Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x2922f0be.
Command (m for help): <-- n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): <-- p
Partition number (1-4, default 1): <-- 1
First sector (2048-40959999, default 2048): <-- ENTER
Last sector, +sectors or +size{K,M,G,T,P} (2048-40959999, default 40959999): <-- ENTER
Created a new partition 1 of type 'Linux' and of size 19.5 GiB.
Command (m for help): <-- w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

이제 /dev/etherd/e0.1p1에 파일 시스템을 생성합니다...

mkfs.ext4 /dev/etherd/e0.1p1
:/tmp# mkfs.ext4 /dev/etherd/e0.1p1
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 5119744 4k blocks and 1281120 inodes
Filesystem UUID: 2342cd83-bd45-4975-96c0-b0f366b73778
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

... 테스트 목적으로 마운트하십시오.

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

이제 출력에서 새 장치를 볼 수 있습니다...

mount
:/tmp#

... 그리고

df -h
:/tmp#

다음과 같이 마운트 해제할 수 있습니다.

umount /mnt

부팅 시 장치를 자동으로 마운트하려면, 예를 들어 /storage 디렉토리에 해당 디렉토리를 생성합니다...

mkdir /storage

... 그리고 /etc/fstab에 다음 줄을 추가합니다.

nano /etc/fstab
[...]
/dev/etherd/e0.1p1       /storage        ext4    defaults,auto,_netdev 0 0

/etc/fstab을 읽은 후에 AoE 항목이 로드되기 때문에 이것만으로는 부팅 시 장치를 마운트하기에 충분하지 않습니다. 따라서 /etc/rc.local...을 엽니다.

nano /etc/rc.local

... 그리고 다음 줄을 추가합니다(exit 0 줄 앞에).

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

테스트 목적으로 이제 시스템을 재부팅할 수 있습니다.

reboot

재부팅 후 장치를 마운트해야 합니다.

mount
:/tmp# mount
[...snip...]
/dev/etherd/e0.1p1 on /storage type ext4 (rw,relatime,data=ordered)
[...snip...]
df -h
:/tmp# df -h
Filesystem Size Used Avail Use% Mounted on
/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 /storage
:/tmp#

test.txt 파일이 server2에서 마운트한 볼륨에 성공적으로 기록되었습니다.

5 링크

  • AoE 프로토콜 정의: http://www.coraid.com/RESOURCES/AoE-Protocol-Definition\n
  • 데비안: http://www.debian.org/