iSCSI 설정 · 8 min read · Feb 07, 2026
Ubuntu 9.04에서 iSCSI 사용하기 (이니시에이터 및 타겟)
Ubuntu 9.04에서 iSCSI 사용하기 (이니시에이터 및 타겟)
버전 1.0
저자: Falko Timme
이 가이드는 Ubuntu 9.04에서 실행되는 iSCSI 타겟과 iSCSI 이니시에이터(클라이언트)를 설정하는 방법을 설명합니다. iSCSI 프로토콜은 스토리지 영역 네트워크(SAN) 프로토콜로, iSCSI 이니시에이터가 일반 이더넷 케이블을 사용하여 (원격) iSCSI 타겟의 스토리지 장치를 사용할 수 있게 해줍니다. iSCSI 이니시에이터에게 원격 스토리지는 일반적으로 로컬에 연결된 하드 드라이브처럼 보입니다.
이것이 당신에게 작동할 것이라는 보장은 하지 않습니다!
1 사전 참고
여기서는 두 개의 Ubuntu 9.04 서버를 사용합니다:
- server1.example.com (이니시에이터): IP 주소 192.168.0.100
- server2.example.com (타겟): IP 주소 192.168.0.101
이 튜토리얼의 모든 단계를 루트 권한으로 실행할 것이므로, 이 튜토리얼의 모든 명령 앞에 문자열 sudo를 추가하거나, 지금 바로 다음을 입력하여 루트가 될 수 있습니다:
sudo su 2 타겟 설정 (server2)
server2:
먼저 타겟(server2)을 설정합니다:
aptitude install iscsitarget/etc/default/iscsitarget를 엽니다…
vi /etc/default/iscsitarget… 그리고 ISCSITARGET_ENABLE을 true로 설정합니다:
| ISCSITARGET_ENABLE=true |
사용하지 않는 논리 볼륨, 이미지 파일, 하드 드라이브(예: /dev/sdb), 하드 드라이브 파티션(예: /dev/sdb1) 또는 RAID 장치(예: /dev/md0)를 스토리지로 사용할 수 있습니다. 이 예제에서는 vg0 볼륨 그룹에 storage_lun1이라는 이름의 20GB 논리 볼륨을 생성합니다:
lvcreate -L20G -n storage_lun1 vg0 (이미지 파일을 사용하려면 다음과 같이 생성할 수 있습니다:
mkdir /storage
dd if=/dev/zero of=/storage/lun1.img bs=1024k count=20000
이렇게 하면 크기가 20GB인 이미지 파일 /storage/lun1.img가 생성됩니다.
)
다음으로 /etc/ietd.conf를 편집합니다…
vi /etc/ietd.conf… 그리고 그 파일의 모든 내용을 주석 처리합니다. 마지막에 다음 구문을 추가합니다:
| [...] Target iqn.2001-04.com.example:storage.lun1 IncomingUser someuser secret OutgoingUser Lun 0 Path=/dev/vg0/storage_lun1,Type=fileio Alias LUN1 #MaxConnections 6 |
타겟 이름은 전 세계적으로 고유한 이름이어야 하며, iSCSI 표준은 “iSCSI Qualified Name”을 다음과 같이 정의합니다: iqn.yyyy-mm.
이제 우리는 192.168.0.100(server1.example.com) IP 주소에서 iqn.2001-04.com.example:storage.lun1 장치에 대한 연결을 허용하도록 타겟에 지시합니다…
vi /etc/initiators.allow| [...] iqn.2001-04.com.example:storage.lun1 192.168.0.100 |
… 그리고 타겟을 시작합니다:
/etc/init.d/iscsitarget start 3 이니시에이터 설정 (server1)
server1:
server1에서 이니시에이터를 설치합니다:
aptitude install open-iscsi다음으로 /etc/iscsi/iscsid.conf를 엽니다…
vi /etc/iscsi/iscsid.conf… 그리고 node.startup을 automatic으로 설정합니다:
| [...] node.startup = automatic [...] |
그런 다음 이니시에이터를 재시작합니다:
/etc/init.d/open-iscsi restart이제 타겟(server2)에 연결하고 어떤 스토리지 장치가 제공되는지 확인합니다:
iscsiadm -m discovery -t st -p 192.168.0.101server1:~# iscsiadm -m discovery -t st -p 192.168.0.101
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
server1:~#
iscsiadm -m nodeserver1:~# iscsiadm -m node
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
server1:~#
192.168.0.101:3260,1에 대한 iqn.2001-04.com.example:storage.lun1 스토리지 장치의 설정은 /etc/iscsi/nodes/iqn.2001-04.com.example:storage.lun1/192.168.0.101,3260,1/default 파일에 저장됩니다. 해당 파일에서 타겟의 사용자 이름과 비밀번호를 설정해야 합니다. 수동으로 해당 파일을 편집하는 대신, iscsiadm 명령을 사용하여 이를 수행할 수 있습니다:
iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –op=update –name node.session.auth.authmethod –value=CHAP
iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –op=update –name node.session.auth.username –value=someuser
iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –op=update –name node.session.auth.password –value=secret
이제 로그인할 수 있습니다. 다음을 실행하여 로그인할 수 있습니다…
iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --loginserver1:~# iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –login
Logging in to [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.0.101,3260]
Login to [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.0.101,3260]: successful
server1:~#
… 또는 이니시에이터를 재시작하여 로그인할 수 있습니다:
/etc/init.d/open-iscsi restart (로그아웃하려면 다음을 실행할 수 있습니다:
iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --logout)
fdisk -l 의 출력에서 이제 새로운 하드 드라이브(/dev/sdb가 이 예제에서)를 찾아야 합니다. 그것이 우리의 iSCSI 스토리지 장치입니다:
server1:~# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00031334
Device Boot Start End Blocks Id System
/dev/sda1 * 1 3749 30113811 83 Linux
/dev/sda2 3750 3916 1341427+ 5 Extended
/dev/sda5 3750 3916 1341396 82 Linux swap / Solaris
Disk /dev/sdb: 21.4 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn’t contain a valid partition table
server1:~#
그 장치를 사용하려면 포맷해야 합니다:
fdisk /dev/sdbserver1:~# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x882944df.
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 20480.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
- software that runs at boot time (e.g., old versions of LILO)
- 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): <– m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): <– n
Command action
e extended
p primary partition (1-4)
<– p
Partition number (1-4): <– 1
First cylinder (1-20480, default 1): <– ENTER
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-20480, default 20480): <– ENTER
Using default value 20480
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 be Solaris boot
1 FAT12 24 NEC DOS 81 Minix / old Lin bf Solaris
2 XENIX root 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
5 Extended 41 PPC PReP Boot 85 Linux extended c7 Syrinx
6 FAT16 42 SFS 86 NTFS volume set da Non-FS data
7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM df BootIt
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e1 DOS access
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e4 SpeedStor
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
f W95 Ext’d (LBA) 54 OnTrackDM6 a5 FreeBSD ee EFI GPT
10 OPUS 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f4 SpeedStor
16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fd Linux raid auto
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fe LANstep
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid ff BBT
1c Hidden W95 FAT3 75 PC/IX
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.
server1:~#
그 후,
fdisk -l의 출력은 다음과 같아야 합니다:
server1:~# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00031334
Device Boot Start End Blocks Id System
/dev/sda1 * 1 3749 30113811 83 Linux
/dev/sda2 3750 3916 1341427+ 5 Extended
/dev/sda5 3750 3916 1341396 82 Linux swap / Solaris
Disk /dev/sdb: 21.4 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk identifier: 0x882944df
Device Boot Start End Blocks Id System
/dev/sdb1 1 20480 20971504 83 Linux
server1:~#
이제 /dev/sdb1에 파일 시스템을 생성합니다…
mkfs.ext3 /dev/sdb1… 그리고 테스트 목적으로 마운트합니다:
mount /dev/sdb1 /mnt이제 다음의 출력에서 새로운 장치를 볼 수 있어야 합니다…
mountserver1:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
odev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 on /mnt type ext3 (rw)
server1:~#
… 그리고
df -hserver1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 29G 685M 27G 3% /
tmpfs 253M 0 253M 0% /lib/init/rw
udev 10M 88K 10M 1% /dev
tmpfs 253M 0 253M 0% /dev/shm
/dev/sdb1 20G 173M 19G 1% /mnt
server1:~#
다음과 같이 언마운트할 수 있습니다:
umount /mnt부팅 시 자동으로 장치가 마운트되도록 하려면, 예를 들어 /storage 디렉토리에, 해당 디렉토리를 생성합니다…
mkdir /storage… 그리고 /etc/fstab에 다음 줄을 추가합니다:
vi /etc/fstab| [...] /dev/sdb1 /storage ext3 defaults,auto,_netdev 0 0 |
테스트 목적으로 이제 시스템을 재부팅할 수 있습니다:
reboot재부팅 후, 장치가 마운트되어야 합니다:
mountserver1:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
odev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 on /storage type ext3 (rw,_netdev)
server1:~#
df -hserver1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 29G 685M 27G 3% /
tmpfs 253M 0 253M 0% /lib/init/rw
udev 10M 88K 10M 1% /dev
tmpfs 253M 0 253M 0% /dev/shm
/dev/sdb1 20G 173M 19G 1% /storage
server1:~#
4 링크
- Open-iSCSI: http://www.open-iscsi.org/
- iSCSI Enterprise Target: http://iscsitarget.sourceforge.net/
- Ubuntu: http://www.ubuntu.com/
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.