先上服务器信息(你懂得)
[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