SAN及其ZONE

目录

一、什么是SAN?

二、什么是ZONE?

三、配置ZONE

2.1 核心概念

2.2 划分原则 

2.3 Zone划分最佳实践

2.4 配置语法

1). 基于端口(Domain,Port)的zone语法

2). 基于WWN(World Wide Name)的Zone语法

3). 使用Alias简化配置

4). 配置文件的创建与管理 

5). 验证与维护命令

6). 配置类型的选择

7). 注意事项

2.5 配置案例

1). 环境概述

​编辑2). 配置流程

1. 基于WWPN/Alias的配置

2.基于端口的配置

一、什么是SAN?

存储区域网络(Storage Area Network,简称SAN)采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。

WWN是HBA卡用的编号,每一个光纤通道设备都有一个唯一的标识,称为WWN(world wide name),由IEEE负责分配。在有多台主机使用磁盘阵列时,通过WWN号来确定哪台主机正在使用指定的LUN(或者说是逻辑驱动器),被使用的LUN其他主机将无法使用。

以下介绍WWN,WWNN,WWPN的意义与区别:

WWN概念包含WWPN、WWNN。一个不可拆分的独立设备有WWNN,一个端口有WWPN。

WWN:    world wide number 是硬件的全球唯一标示

WWPN:  world wide port number 指光纤端口的端口号,是FC网络的基本单位,相当于IP网络里的IP地址或Mac地址

WWNN:  world wide node number 是指节点号

例: 比如一台SAN交换机,不可拆分,有一个WWNN,它有一堆端口,每个端口有一个WWPN。一块多口光纤HBA,卡本身有一个WWNN,每个端口有一个WWPN,单口的HBA也是,不过只有一个WWNN和一个WWPN。但主机就没有WWNN,因为卡和主机是可以分离的,单纯一个主机本身并不一定是SAN环境中的设备。

如果是光纤交换机的话WWN和WWNN是一样的,而WWPN是指每个光纤端口。如果是HBA卡的话,若是只有一个端口则三者可能一样,若是有多个端口则和交换机差不多.。

对于主机来说:

单个hba卡(单口)的情况下: wwnn只有一个 wwpn和wwnn一样
单个hba卡(双口)的情况下: wwnn只有一个 wwpn有两个
两个hba卡(单口)的情况下: wwnn有两个 wwpn有两个
两个hba卡(双口)的情况下: wwnn有 两个 wwpn有四个

二、什么是ZONE?

        SAN网络中一个常用的概念叫做zone,zone在SAN网络中的作用和以太网络中的VLAN有些类似。Zone的主要作用就是把Fabric网络分区,避免不相关的设备之前相互访问,同时也具有安全的作用。在设备较多的Fabric网络中,务必要划分zone。博科交换机支持多种zone,常规zone和特殊zone。常规zone就是我们通常所说的zone,主要作用是隔离设备,把Fabric网络划分为多个分区;特殊zone有TI zone,QoS zone和LSAN zone。若非特殊说明,此处所提的zone全部是常规zone。常规zone按照所包含的成员类型不同,可以分为端口zone,WWN zone和混合zone。 

        一个zone由一组zone成员组成,一个设备可以是一个或多个zone的成员,如设备RAID4既是Zone2的成员也是Zone3的成员。同一个zone内的成员之间可以相互访问,不在同一个zone内的成员之间不可访问。如Zone1包括成员Web Server和RAID2,这两个设备之间可以相互访问。

三、配置ZONE

2.1 核心概念

Alias:别名,相当于给WWPN起个名字,一方面便于配置,一方面也便于理解

Zone:SAN交换机的配置核心,类似于IP网络的vlan,同一Zone内的接口相互之间可以互访
WWPN:光纤端口的端口号,是FC网络的基本单位,相当于IP网络里的IP地址或Mac地址
端口编号:类似于交换机的interface,SAN交换机的端口一般也表示为(交换机ID/Domain,端口/port),如1,8就是1号交换机8号端口


CFG:配置文件,一台交换机仅能生效一个配置文件,因此多个Zone会置于1个配置文件中

2.2 划分原则 

        碰到FC-SAN的环境在不做任何配置的情况下默认所有接口都在一个Zone内,接上光纤线直接互通,就是所谓的All in One,当然最佳实践一定不推荐这么做,主要有两个问题:

访问安全层面:所有前端计算节点和所有存储之间能够互通,尤其在多集群或多存储的场景就比较危险


流量安全层面:当一个Zone内出现状态变更通知RSCN(registered state change notification,RSCN)或者错误告警等的时候不会传播到别的Zone,从而造成影响

2.3 Zone划分最佳实践

Zone划分最佳实践一般考虑以下两个维度:

Zone划分区域

一般不推荐直接用一个大Zone,那应该怎样划分才最合理,很多文章都有提到最佳划分即每个Zone仅包含一个存储控制器端口和一个业务端口,当然这么做一定没问题,但是有个小缺点,在很多场景下需要配置的Zone过多,尤其是后期需要增改端口等工作量巨大,也容易出错,因此以下谈谈我个人的理解:

首先再引入两个概念:

同一个Zone端口内相互通信并不是平级,分为Target和Initiator,一般来讲存储段作为Target,服务器端为Initiator,当然这并不绝对,可以手动配置将这两个角色互换。配置Zone的时候,应该将一个Initiator对应多个Target,这样在节省大量配置的情况下对安全及性能也不会有影响

Zone划分单位
Zone划分基本有两种方式,一个是基于WWPN/Alias,一个是基于物理端口,两种方式各有优劣,可根据实际情况进行选择,主要的区别在于以下两个场景:

当服务器HBA卡出现故障或者更换HBA卡过后,基于WWPN的方式需要更改配置中的相关WWPN号,而基于端口的方式无需更改任何配置

当SAN交换机接口出现故障需要更换端口时,基于端口的方式就需要重新更改端口进Zone,而此时基于WWPN的方式则配置无需做任何改动

2.4 配置语法

Zone的创建与成员定义(add、delete、replace、show、enable、save)

1). 基于端口(Domain,Port)的zone语法

使用zonecreate命令创建Zone,参数格式为"zone名称","domain_id,端口号; domain_id,端口号..."

zonecreate "line01", "10,3;10,4"          # 创建名为line01的Zone,包含domain 10的端口3和4

zonecreate "ocr_fc1", "1,94;1,68;1,69" # 多端口配置

2). 基于WWN(World Wide Name)的Zone语法

直接使用设备的WWN作为成员,适用于设备更换端口但需保持通信的场景

zonecreate "wwn_zone", "21:00:00:24:ff:48:e2:de;20:01:00:0e:1e:d1:00:ff"  # 使用WWN号代替上面的端口号

3). 使用Alias简化配置

通过alicreate命令定义别名,将端口或WWN映射为易记名称,便于后续Zone配置

alicreate "storage_port", "1,0"               # 定义domain 1端口0的别名
alicreate "server_ports", "1,2;1,3;1,4"   # 定义多个端口的别名
zonecreate "alias_zone", "storage_port;server_ports" # 引用别名

4). 配置文件的创建与管理 

cfgcreate "配置名称", "zone1;zone2;..."

cfgcreate "test", "line01;ocr_fc1"  # 创建名为test的配置文件,包含两个Zone

cfgadd "test", "wwn_zone"           # 将wwn_zone添加到test配置中

保存配置:cfgsave命令永久保存当前配置。
激活配置:cfgenable "配置名称"使配置生效,同一时间仅一个配置可激活。

示例:
cfgsave # 保存配置
cfgenable "test" # 激活名为test的配置

5). 验证与维护命令

zoneshow:显示所有Zone及成员详情110。
cfgshow:查看当前活动的配置文件26。

删除Zone:zonedelete "zone名称"26。
从配置中移除Zone:cfgremove "配置名称","zone名称"。

6). 配置类型的选择

Hard Zone(基于端口)
适用于设备固定端口的场景,更换HBA卡无需修改配置。


Soft Zone(基于WWN)
适用于设备频繁更换端口的场景(如虚拟化环境),但更换HBA卡需更新WWN。


混合Zone
同时包含端口和WWN的Zone,需交换机CPU进行额外验证。

7). 注意事项

语法分隔符:端口或WWN列表需用分号(;)分隔。
配置文件冲突:激活新配置前需确保旧配置已停用。
权限与保存:所有变更需通过cfgsave保存,否则重启后失效。

配置示例:

新建配置文件
swd77:admin>cfgCreate “lzlj_idc”

swd77:admin>cfgCreate “lzlj_idc”,“zonename”

新建别名
swd77:admin>AliCreate “HyLocal_ESXi112222_p1”,“51:40:2E:c0:15:54:F5:14”

swd77:admin>Alicreate “H3C_C650_1”,“member1;member2;member3……”

新建zone
swd77:admin>zonecreate “testzonename”, “zonemember1;zonemember2;zone……”

swd77:admin>成员可以是"Domain,Port";“WWN”;“Alias”

swd77:admin>是否成功要看最后能否生效,此条也适用于别名。

将新Zone添加至配置文件
swd77:admin>cfgAdd “lzlj_idc”, “testzonename”

保存自定义的配置
swd77:admin>cfgsave

生效配置文件
swd77:admin>cfgEnable lzlj_idc

swd77:admin>同时只能有一个配置文件生效


重命名别名和zone

swd77:admin>zoneObjectRename “testzonename”, “newzonename”

swd77:admin>zoneObjectRename “HyLocal_ESXi112222_p1”, “newaliname”

zoneObjectRename还适用于cfg重命名。

重命名后需要cfgsave和cfgEnable来使修改生效。

!重命名别名后,相应的zone信息会不会跟着变更?会。

别名、zone增加成员

swd77:admin>aliadd “aliName”, “member[; member…]”

swd77:admin>zoneadd “zoneName”, “member[;member…]”

移除别名、zone成员

swd77:admin>aliremove “aliName”, “member[; member…]”

swd77:admin>zoneremove “zonename”, “member[;member…]”

!如果一个alias中只有一个成员,且这个成员WWN错误,如何修改最便捷?

替换别名、zone成员
swd77:admin>zoneobjectreplace “oldZonemember” “newZonemember”

swd77:admin>zoneobjectreplace “oldAliasmember” “newAliasmember”

删除别名、zone、zone配置文件
swd77:admin>alidelete “aliname”

swd77:admin>zonedelete “zonename”

swd77:admin>cfgdelete “cfgname”

2.5 配置案例

下面以一个典型的SAN环境案例简要说明下配置

1). 环境概述

典型的三主机,两台SAN交换机,一台双控的存储,拓扑如下:


涉及接口及规划表如下:


2). 配置流程

一般分为三步进行,以下把两种配置都说明下:

1. 基于WWPN/Alias的配置

配置规划:


配置流程(以SW-A为例):

创建Alias:

swd77:admin> alicreate "ESXi01_1","11:00:00:00:00:00:00:1a"
swd77:admin> alicreate "ESXi02_1","11:00:00:00:00:00:00:2a"
swd77:admin> alicreate "ESXi03_1","11:00:00:00:00:00:00:3a"
swd77:admin> alicreate "Storage01_1","22:00:00:00:00:00:00:1a"
swd77:admin> alicreate "Storage02_1","22:00:00:00:00:00:00:2a"

创建Zone:

swd77:admin> zonecreate "zone_A1","ESXi01_1,Storage01_1,Storage01_2"
swd77:admin> zonecreate "zone_A2","ESXi02_1,Storage01_1,Storage01_2"
swd77:admin> zonecreate "zone_A3","ESXi03_1,Storage01_1,Storage01_2"

创建CFG:

swd77:admin> cfgcreate "cfg_wwpn","zone_A1;zone_A2;zone_A3"
swd77:admin> cfgenable "cfg_wwpn"
swd77:admin> cfgsave
2.基于端口的配置

配置规划:


配置流程(以SW-A为例):

创建ZONE(端口也可以创建Alias,但端口本身并不复杂,一般不需要Alias):

swd77:admin> zonecreate "zone_A1","1,2;1,0;1,1"
swd77:admin> zonecreate "zone_A2","1,3;1,0;1,1"
swd77:admin> zonecreate "zone_A3","1,4;1,0;1,1"

创建CFG:

swd77:admin> cfgcreate "cfg_port","zone_A1;zone_A2;zone_A3"
swd77:admin> cfgenable "cfg_port"
swd77:admin> cfgsave

原文链接:SAN交换机Zone配置详解及最佳实践_san交换机配置-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot框架—单元测试操作

Springboot单元测试的操作步骤: 1.添加依赖spring-boot-starter-test 在pom.xml中添加依赖spring-boot-starter-test 2.在src/test/java下新建java class 3.单元测试入口代码结构 import org.junit.Test; import org.junit.runner.RunWith; import org.springfra…

用AbortController取消事件绑定

视频教程 React - 🤔 Abort Controller 到底是什么神仙玩意?看完这个视频你就明白了!💡_哔哩哔哩_bilibili AbortController的好处之一是事件绑定的函数已无需具名函数,匿名函数也可以被取消事件绑定了 //该代码2秒后点击失效…

JavaScript性能优化(上)

1. 减少 DOM 操作 减少 DOM 操作是优化 JavaScript 性能的重要方法,因为频繁的 DOM 操作会导致浏览器重绘和重排,从而影响性能。以下是一些具体的策略和技术,可以帮助有效减少 DOM 操作: 1.1. 批量更新 DOM 亲切与母体&#xff…

OpenCV 图形API(14)用于执行矩阵(或图像)与一个标量值的逐元素乘法操作函数mulC()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 描述 将矩阵与标量相乘。 mulC 函数将给定矩阵 src 的每个元素乘以一个给定的标量值: dst ( I ) saturate ( src1 ( I ) ⋅ multiplier ) \…

持续集成与Jenkins安装使用教程

一、持续集成与Jenkins 持续集成(Continuous integration,简称CI)指的是,频繁地(一天多次)将代码集成到主干。 持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。 它的…

TIM定时器

一、TIM定时器 STM32高级定时器实战:PWM、捕获与死区控制详解-CSDN博客 玩转STM32_rivencode的博客-CSDN博客 二、相关函数 1.TIM_TimeBaseInitTypeDef结构体讲解 typedef struct {uint16_t TIM_Prescaler; // 预分频器,用于设置定时器计数频…

Python 小练习系列 | Vol.14:掌握偏函数 partial,用函数更丝滑!

🧩 Python 小练习系列 | Vol.14:掌握偏函数 partial,用函数更丝滑! 本节的 Python 小练习系列我们将聚焦一个 冷门但高能 的工具 —— functools.partial。它的作用类似于“函数的预设模板”,能帮你写出更加灵活、优雅…

开源 PDF.js 文件编辑操作

一、PDF.js PDF.js 是 Mozilla 基金会推出的一个使用 HTML5 构建的 PDF 阅读器,它完全使用 JavaScript 编写。作为 Firefox 浏览器的默认 PDF 查看器,PDF.js 具有强大的兼容性和稳定性。它不仅支持 PDF 文件的查看和渲染,还提供了丰富的交互…

3D珠宝渲染用什么软件比较好?渲染100邀请码1a12

印度珠宝商 Mohar Fine Jewels 和英国宝石商 Gemfields 在今年推出了合作珠宝系列——「Emeralds in Full Bloom」,它的灵感源自花草绽放的春季田野,共有 39 件作品,下面这个以植物为主题的开口手镯就是其中一件。 在数字时代,像这…

增益调度控制 —— 理论、案例与交互式 GUI 实现

目录 增益调度控制 —— 理论、案例与交互式 GUI 实现一、引言二、增益调度控制的基本原理三、数学模型与公式推导四、增益调度控制的优势与局限4.1 优势4.2 局限五、典型案例分析5.1 案例一:航空飞行控制中的增益调度5.2 案例二:发动机推力控制中的增益调度5.3 案例三:化工…

PyTorch数据加载流程解析

1. 定义最简单的Dataset import torch from torch.utils.data import Dataset, DataLoaderclass MyDataset(Dataset):def __init__(self, data):self.data data # 假设data是一个列表,如[10, 20, 30, 40]def __len__(self):return len(self.data) # 返回数据总量…

xsync脚本是一个基于rsync的工具

xsync脚本是一个基于rsync的工具,用于在集群间高效同步文件或目录。以下是xsync脚本的详细使用方法和配置步骤: 一、xsync脚本的作用 xsync脚本可以快速将文件或目录分发到集群中的多个节点,避免了手动逐台复制文件的繁琐操作。它利用rsync…

250408_解决加载大量数据集速度过慢,耗时过长的问题

250408_解决加载Cifar10等大量数据集速度过慢,耗时过长的问题(加载数据时多线程的坑) 在做Cifar10图像分类任务时,发现每个step时间过长,且在资源管理器中查看显卡资源调用异常,主要表现为,显卡…

Ansible的使用2

#### 一、Ansible变量 ##### facts变量 > facts组件是Ansible用于采集被控节点机器的设备信息,比如IP地址、操作系统、以太网设备、mac 地址、时间/日期相关数据,硬件信息等 - setup模块 - 用于获取所有facts信息 shell ## 常用参数 filter…

多模态大语言模型arxiv论文略读(六)

FashionLOGO: Prompting Multimodal Large Language Models for Fashion Logo Embeddings ➡️ 论文标题:FashionLOGO: Prompting Multimodal Large Language Models for Fashion Logo Embeddings ➡️ 论文作者:Zhen Wang, Da Li, Yulin Su, Min Yang,…

MySQL深入

体系结构 连接层:主要处理客户端的连接进行授权认证、校验权限等相关操作 服务层:如sql的接口、解析、优化在这里完成,所有跨存储引擎的操作在这里完成 引擎层:索引是在存储引擎层实现的,所以不同的存储引擎他的索引…

智能 SQL 优化工具 PawSQL 月度更新 | 2025年3月

📌 更新速览 本月更新包含 21项功能增强 和 9项问题修复,重点提升SQL解析精度与优化建议覆盖率。 一、SQL解析能力扩展 ✨ 新增SQL语法解析支持 SELECT...INTO TABLE 语法解析(3/26) ALTER INDEX RENAME/VISIBLE 语句解析&#…

数组划分使元素总和最接近

0划分 - 蓝桥云课 将一个数组划分为两个元素总和最接近的两个数组 要使得两组权值的乘积最大,根据数学原理,当两组权值越接近时,它们的乘积就越大。因此,可以将这个问题转化为一个 0 - 1 背包问题,把所有数的总和的一…

多线程代码案例(线程池)- 4

目录 引入 标准库中的线程池 -- ThreadPoolExecutor 研究一下这个方法的几个参数 1. int corePoolSize 2. int maximumPoolSize 3. long keepAliveTime 4. TimeUnit unit 5. BolckingQueue workQueue 6. ThreadFactory threadFactory 7. RejectedExecutionHandler h…

C,C++,C#

C、C 和 C# 是三种不同的编程语言,虽然它们名称相似,但在设计目标、语法特性、运行环境和应用场景上有显著区别。以下是它们的核心区别: 1. 设计目标和历史 语言诞生时间设计目标特点C1972(贝尔实验室)面向过程&#…