在Ubuntu 10.04(启动器和目标)上使用iSCSI
本指南介绍如何设置iSCSI目标和iSCSI启动器(客户端),两者都运行Ubuntu 10.04。 iSCSI协议是一种存储区域网络(SAN)协议,允许iSCSI启动器使用通用以太网布线在(远程)iSCSI目标上使用存储设备。 对于iSCSI启动器,远程存储器看起来像一个正常的本地连接的硬盘驱动器。
我不会保证这将为您工作!
1初步说明
我在这里使用两个Ubuntu 10.04服务器:
-
server1.example.com
(Initiator):IP地址192.168.0.100
-
server2.example.com
(目标):IP地址192.168.0.101
因为我们将使用root权限运行本教程中的所有步骤,我们可以使用字符串sudo
来为本教程中的所有命令添加所有命令,也可以通过键入来成为root
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合格名称”,如下所示: iqn.yyyy-mm。<reverse domain name> [:identifier]
; yyyy-mm
是域有效的日期; 标识符可以自由选择。 IncomingUser
行包含用户名和密码,只有提供此用户名和密码的发起者(客户端)才能登录并使用存储设备; 如果您不需要身份验证,请勿在IncomingUser
行中指定用户名和密码。 在Lun
行中,我们必须指定存储设备的完整路径(例如/ dev / vg0 / storage_lun1
, /storage/
lun1.img
, / dev / sdb
等)。
现在我们告诉目标,我们想允许连接设备iqn.2001-04.com.example:storage.lun1
从IP地址192.168.0.100
( server1.example.com
)(注释掉ALL ALL
行,因为那个将允许所有发起者连接到所有目标)...
vi /etc/initiators.allow
[...] iqn.2001-04.com.example:storage.lun1 192.168.0.100 #ALL ALL |
...并启动目标:
/etc/init.d/iscsitarget start
3设置启动器(server1)
server1:
在server1上
,我们安装启动器:
aptitude install open-iscsi
接下来我们打开/etc/iscsi/iscsid.conf
...
vi /etc/iscsi/iscsid.conf
...并将node.startup
设置为自动
:
[...] node.startup = automatic [...] |
然后我们重新启动启动器:
/etc/init.d/open-iscsi restart
现在我们连接到目标( server2
),并检查它提供的存储设备:
iscsiadm -m discovery -t st -p 192.168.0.101
root@server1:~# iscsiadm -m discovery -t st -p 192.168.0.101
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
root@server1:~#
iscsiadm -m node
root@server1:~# iscsiadm -m node
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
root@server1:~#
存储设备iqn.2001-04.com.example:192.168.0.101:3260,1
上的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" --login
root@server1:~# 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
root@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存储设备:
root@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
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00016be9
Device Boot Start End Blocks Id System
/dev/sda1 * 1 32 248832 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 32 3917 31205377 5 Extended
/dev/sda5 32 3917 31205376 8e Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
root@server1:~#
要使用该设备,我们必须格式化它:
fdisk /dev/sdb
server1:〜#fdisk / dev / sdb
设备既不包含有效的DOS分区表,也不包含Sun,SGI或OSF disklabel
构建一个新的DOS磁盘标签,磁盘标识符为0x882944df。
更改将仅保留在内存中,直到您决定编写它们。
之后,当然,以前的内容将无法恢复。
此磁盘的柱面数设置为20480。
没有什么问题,但是这大于1024,
并且在某些设置中可能会导致以下问题:
1)在引导时运行的软件(例如,LILO的旧版本)
2)从其他操作系统启动和分区软件
(例如DOS FDISK,OS / 2 FDISK)
警告:分区表4的无效标志0x0000将被w(rite)修正
命令(m为帮助):
< - m
命令行动
一个可启动标志的切换
b编辑bsd disklabel
c切换dos兼容性标志
d删除一个分区
l列出已知的分区类型
m打印此菜单
n添加一个新的分区
o创建一个新的空DOS分区表
p打印分区表
q退出而不保存更改
s创建一个新的空的Sun磁盘标签
t更改分区的系统ID
u更改显示/输入单位
v验证分区表
w将表写入磁盘并退出
x额外功能(仅限专家)
命令(m帮助):
< - n
命令行动
e扩展
p主分区(1-4)
< - p
分区号(1-4):
< - 1
第一个圆筒(1-20480,默认为1):
< - ENTER
使用默认值1
最后一个圆柱体或+大小或+ sizeM或+ sizeK(1-20480,默认为20480):
< - ENTER
使用默认值20480
命令(m为帮助):
< - t
所选分区1
十六进制代码(L型列表代码):
< - L
0空1e隐藏W95 FAT1 80旧Minix是Solaris启动
1 FAT12 24 NEC DOS 81 Minix / old Lin bf Solaris
2 XENIX root 39计划9 82 Linux交换/ 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隐藏C:c6 DRDOS /秒(FAT-
5扩展41 PPC PReP引导85 Linux扩展c7 Syrinx
6 FAT16 42 SFS 86 NTFS卷集da非FS数据
7 HPFS / NTFS 4d QNX4.x 87 NTFS卷集db CP / M / CTOS /。
8 AIX 4e QNX4.x第2部分88 Linux纯文本戴尔实用程序
9 AIX可启动4f QNX4.x第3部分8e Linux LVM df BootIt
OS / 2 Boot Manag 50 OnTrack DM 93变形虫e1 DOS访问
b W95 FAT32 51 OnTrack DM6 Aux 94变形虫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隐藏FAT12 56金弓a7 NeXTSTEP f0 Linux / PA-RISC b
12 Compaq diagnostics 5c Priam Edisk a8达尔文UFS f1 SpeedStor
14隐藏FAT16 <3 61 SpeedStor a9 NetBSD f4 SpeedStor
16隐藏FAT16 63 GNU HURD或Sys ab达尔文启动f2 DOS二级
17 Hidden HPFS / NTF 64 Novell Netware b7 BSDI fs fd Linux raid auto
18 AST SmartSleep 65 Novell Netware b8 BSDI交换fe LANstep
1b隐藏W95 FAT3 70 DiskSecure多bb启动向导隐藏ff BBT
1c隐藏W95 FAT3 75 PC / IX
十六进制代码(类型L列出代码):
< - 83
命令(m为帮助):
< - w
分区表已被更改!
调用ioctl()重新读取分区表。
同步磁盘
server1:〜#
之后,输出
fdisk -l
应该看起来如下:
root@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
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00016be9
Device Boot Start End Blocks Id System
/dev/sda1 * 1 32 248832 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 32 3917 31205377 5 Extended
/dev/sda5 32 3917 31205376 8e Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x725b9dff
Device Boot Start End Blocks Id System
/dev/sdb1 1 20480 20971504 83 Linux
root@server1:~#
现在我们在/ dev / sdb1
上创建一个文件系统
mkfs.ext4 /dev/sdb1
...并安装它用于测试目的:
mount /dev/sdb1 /mnt
您现在应该在...的输出中看到新设备
mount
root@server1:~# mount
/dev/mapper/server1-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
none on /var/lib/ureadahead/debugfs type debugfs (rw,relatime)
/dev/sda1 on /boot type ext2 (rw)
/dev/sdb1 on /mnt type ext4 (rw)
root@server1:~#
...和
df -h
root@server1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server1-root
18G 838M 16G 5% /
none 243M 180K 242M 1% /dev
none 247M 0 247M 0% /dev/shm
none 247M 36K 247M 1% /var/run
none 247M 0 247M 0% /var/lock
none 247M 0 247M 0% /lib/init/rw
none 18G 838M 16G 5% /var/lib/ureadahead/debugfs
/dev/sda1 228M 17M 199M 8% /boot
/dev/sdb1 20G 172M 19G 1% /mnt
root@server1:~#
你可以这样卸载它:
umount /mnt
要使设备在启动时自动安装,例如在目录/存储中
,我们创建该目录...
mkdir /storage
...并将以下行添加到/ etc / fstab中
:
vi /etc/fstab
[...] /dev/sdb1 /storage ext4 defaults,auto,_netdev 0 0 |
出于测试目的,您现在可以重新启动系统:
reboot
重新启动后,应安装设备:
mount
root@server1:~# mount
/dev/mapper/server1-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
none on /var/lib/ureadahead/debugfs type debugfs (rw,relatime)
/dev/sda1 on /boot type ext2 (rw)
/dev/sdb1 on /storage type ext4 (rw,_netdev)
root@server1:~#
df -h
root@server1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server1-root
18G 839M 16G 5% /
none 243M 180K 242M 1% /dev
none 247M 0 247M 0% /dev/shm
none 247M 36K 247M 1% /var/run
none 247M 0 247M 0% /var/lock
none 247M 0 247M 0% /lib/init/rw
none 18G 839M 16G 5% /var/lib/ureadahead/debugfs
/dev/sda1 228M 17M 199M 8% /boot
/dev/sdb1 20G 172M 19G 1% /storage
root@server1:~#
4链接
- Open-iSCSI: http : //www.open-iscsi.org/
- iSCSI企业目标: http : //iscsitarget.sourceforge.net/
- Ubuntu: http : //www.ubuntu.com/