先上服务器信息(你懂得)
[root@node ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@node ~]# uname -r
2.6.32-504.el6.x86_64
[root@node ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:AD:E7:36
inet addr:192.168.221.130 Bcast:192.168.221.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fead:e736/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:186222 errors:0 dropped:0 overruns:0 frame:0
TX packets:25234 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:233390875 (222.5 MiB) TX bytes:7363625 (7.0 MiB) lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
我们先看一下关于LUN理解,这里引用一段通俗易懂的话解释一下:
LUN的全称是Logical Unit Number,也就是逻辑单元号。我们知道SCSI总线上可挂接的设备数量是有限的,一般为6个或者15个,我们可以用target ID(也有称为SCSI ID的)来描述这些设备,设备只要一加入系统,就有一个代号,我们在区别设备的时候,只要说几号几号就ok了。 而实际上我们需要用来描述的对象,是远远超过该数字的,于是我们引进了lun的概念,也就是说lun id的作用就是扩充了target id。每个target下都可以有多个lun device,我们通常简称lun device为lun,这样就可以说每个设备的描述就有原来的target X变成target x lun y了,那么显而易见的,我们描述设备的能力增强了。就好比,以前你给别人邮寄东西,写地址的时候,可以写: xx市人民大街54号 xxx(收) 但是自从高楼大厦越来越多,你不得不这么写: xx市人民大街54号xx大厦518室 xxx (收) 所以我们可以总结一下,LUN就是我们为了使用和描述更多设备及对象而引进的一个方法而已,一点也没什么特别的地方。 LUN ID不等于某个设备,只是个号码而已,不代表任何实体属性,在我们的实际环境里,我们碰到的LUN可能是磁盘空间,可能是磁带机,或者是media changer等等。 LUN的神秘之处(相对于一些新手来说)在于,它很多时候不是什么可见的实体,而是一些虚拟的对象。比如一个阵列柜,主机那边看作是一个target device,那为了某些特殊需要,我们要将磁盘阵列柜的磁盘空间划分成若干个小的单元给主机来用,于是就产生了一些什么逻辑驱动器的说法,也就是比target device级别更低的逻辑对象,我们习惯于把这些更小的磁盘资源称之为LUN0,LUN1,LUN2……什么的。而操作系统的机制使然,操作系统识别的最小存储对象级别就是LUN Device,这是一个逻辑对象,所以很多时候被称之为Logical Device。
再来一盘理解
LUN是逻辑单元号,它与iSCSI存储服务器共享。iSCSI 目标器通过TCP/IP网络共享它的物理驱动器给发起程序(initiator)。这些来自一个大型存储(SAN:Storage Area Network)的驱动器集合称作LUN。在真实环境中LUN是在LVM中定义的,因为它可以按需扩展。
为什么使用LUN
LUN用于存储,SAN存储大多数由LUN的集群来组成存储池,LUN由目标器的几块物理驱动器组成。我们可以使用LUN作为系统物理驱动器来安装操作系统,LUN可以用在集群、虚拟服务器、SAN中。在虚拟服务器中使用LUN的主要用途是作为操作系统的存储。LUN的性能和可靠性根据在创建目标存储服务器时所使用的驱动器决定。
1.列出所有分区列表
[root@node ~]# fdisk -l Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x000d8676 Device Boot Start End Blocks Id System Disk /dev/sdc: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x00012d5d Device Boot Start End Blocks Id System Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 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: 0x0009c78c Device Boot Start End Blocks Id System
/dev/sda1 * 1 4463 35840000 83 Linux
/dev/sda2 4463 5222 6102016 82 Linux swap / Solaris
2.使用/dev/sdb创建LVM
[root@node ~]# fdisk -cu /dev/sdb //-c代表关闭DOS兼容模式 -u 于列出分区表时给出扇区而不是柱面的大小 Command (m for help): n //输入n创建新分区
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1 //给创建的分区一个分区号
First sector (2048-41943039, default 2048): //使用默认,按回车
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): //使用默认,按回车
Using default value 41943039 Command (m for help): t //改变分区类型,输入t
Selected partition 1 //选择分区
Hex code (type L to list codes): 8e //设置LVM,看下表
Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): l //l查看所有文件系统类型 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
5 Extended 42 SFS 86 NTFS volume set da Non-FS data
6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
1e Hidden W95 FAT1 Command (m for help): p //列出分区表 Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d8676 Device Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 8e Linux LVM Command (m for help): w //输入w写入设置
The partition table has been altered! Calling ioctl() to re-read partition table.
Syncing disks.
reboot,重启一下
查看/dev/sdb信息
[root@node ~]# fdisk -l /dev/sdb Disk /dev/sdb: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders
Units = cylinders of 7242 * 512 = 3707904 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d8676 Device Boot Start End Blocks Id System
/dev/sdb1 1 5792 20970496 8e Linux LVM
3.为LUN创建逻辑卷
[root@node ~]# pvcreate /dev/sdb1 //pvcreate命令创建物理卷
-bash: pvcreate: command not found //没有找到命令
[root@node ~]# yum install lvm2 //安装lvm
[root@node ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@node ~]# vgcreate vg_iscsi /dev/sdb1 //用iSCSI的名字创建卷组来区分这个卷组。
Volume group "vg_iscsi" successfully created
[root@node ~]# lvcreate -L 5G -n lv_iscsi vg_iscsi //定义了4个逻辑卷
Logical volume "lv_iscsi" created.
[root@node ~]# lvcreate -L 5G -n lv_iscsi-1 vg_iscsi //因此在我的iSCSI target上就会有4个LUN
Logical volume "lv_iscsi-1" created.
[root@node ~]# lvcreate -L 5G -n lv_iscsi-2 vg_iscsi
Logical volume "lv_iscsi-2" created.
[root@node ~]# lvcreate -L 5G -n lv_iscsi-3 vg_iscsi
Volume group "vg_iscsi" has insufficient free space (1279 extents): 1280 required.
[root@node ~]# lvcreate -L 4G -n lv_iscsi-3 vg_iscsi
Logical volume "lv_iscsi-3" created.
[root@node ~]# pvs //列出物理卷
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg_iscsi lvm2 a-- 20.00g 1020.00m
[root@node ~]# vgs //列出卷组
VG #PV #LV #SN Attr VSize VFree
vg_iscsi 1 4 0 wz--n- 20.00g 1020.00m
[root@node ~]# lvs //列出逻辑卷
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_iscsi vg_iscsi -wi-a----- 5.00g
lv_iscsi-1 vg_iscsi -wi-a----- 5.00g
lv_iscsi-2 vg_iscsi -wi-a----- 5.00g
lv_iscsi-3 vg_iscsi -wi-a----- 4.00g
4.在Target中定义LUN
通过以上步骤,我们已经创建了逻辑卷并准备使用LUN,现在我们在Target配置中定义LUN,有这样做它才能用在客户机中(发起程序)。
VIM打开Target配置文件/etc/tgt/targets.conf
追加以下内容到该配置文件。
<target iqn.2015-09.com.node:tgt1>
backing-store /dev/vg_iscsi/lv_iscsi
</target>
<target iqn.2015-09.com.node:tgt1>
backing-store /dev/vg_iscsi/lv_iscsi-1
</target>
<target iqn.2015-09.com.node:tgt1>
backing-store /dev/vg_iscsi/lv_iscsi-2
</target>
<target iqn.2015-09.com.node:tgt1>
backing-store /dev/vg_iscsi/lv_iscsi-3
</target>
注释:
iSCSI有一套自己的共享target文件名的定义,基本上通过iSCSI共享出来的target文件名都是以iqn(iSCSI Qualified Name,iSCSI合格名称),iqn后面的格式如下: iqn.yyyy-mm.<翻转域名>:identifier 年 月 target名称
我的机器是www.node.com,翻转域名就是com.node 其实,com.node中,node的名字可以随便起。。。。。。。
重载tgt服务配置
[root@node ~]# /etc/init.d/tgtd reload
Updating SCSI target daemon configuration: [确定]
验证当前可用的LUN
[root@node ~]# tgt-admin --show
Target 1: iqn.2015-09.com.node:tgt1 //我们的Target
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller //默认的LUN 0是保留的
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1 //第一个LUN
Type: disk //磁盘
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 5369 MB, Block size: 512 //容量
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/vg_iscsi/lv_iscsi //磁盘实际所在的文件名
Backing store flags:
LUN: 2
Type: disk
SCSI ID: IET 00010002
SCSI SN: beaf12
Size: 5369 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/vg_iscsi/lv_iscsi-1
Backing store flags:
LUN: 3
Type: disk
SCSI ID: IET 00010003
SCSI SN: beaf13
Size: 5369 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/vg_iscsi/lv_iscsi-2
Backing store flags:
LUN: 4
Type: disk
SCSI ID: IET 00010004
SCSI SN: beaf14
Size: 4295 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/vg_iscsi/lv_iscsi-3
Backing store flags:
Account information: //额外的账户信息
ACL information: //额外的权限限制
ALL
OK,至此,LUN篇结束。
参考:
linux中国:https://linux.cn/ 我最喜欢的linux中文网站
使用iSCSI Target创建集中式安全存储(一):https://linux.cn/article-4971-1.html
鸟哥的LINUX私房菜--服务器架设篇
存储基础知识之——磁盘阵列原理及操作实战:
http://codefine.co/%E5%88%86%E7%B1%BB/%E8%BD%AF%E4%BB%B6%E6%8A%80%E6%9C%AF/%E5%AD%98%E5%82%A8/page/4/#post-1222