有一段时间没有更新这个blog了,一方面是太忙了,另外一方面,身体有些不适。最近几天搞EMC 的VMAX,还有古老的DMX,涉及到一些逻辑上的概念,和客户沟通起来非常费劲。就把前几年的珍藏版学习笔记翻了出来,也顺便分享给各位看官。
老规矩,欢迎点赞、转发、添加VX: StorageExpert,下次更新不迷路。
VMAX 里"Logical Volume"到底指什么?
Symmetrix Device 被定义为:对物理磁盘的一层逻辑抽象(也就是我们常说的从主机层面看到的"盘""卷""LUN")。它也常被叫作:hyper-volume / slice / split / device / volume,而行业通用词就是 LUN(Logical Unit)。
Logical volume,在 VMAX 语境里通常就是:
- Symmetrix device(设备号 DEV xxxx)
- 主机侧看到的 LUN
- 具备某种"仿真格式"(FBA/CKD等)、大小、保护方式(RAID1/5/6...)的可用存储对象
概括起来,Logical volume = VMAX 向主机呈现的"逻辑磁盘"(LUN),它不是一块物理盘,而是由后端物理盘空间映射出来的逻辑对象。
逻辑卷的"物理布局":为什么它有 Cylinder / Track / Sector 这种概念?
Symmetrix 的 device "仿真物理磁盘",因此也沿用类似磁盘术语:
- Sector:16 个 512B block
- Track:8 个 sector
- Cylinder:15 个 track
并且传统上 卷大小常用 Cylinder 表示(大约 ~0.98MB/ Cyl)。文档给了例子:9000 Cyl ≈ 8.8GB。
VMAX 内部仍然用"柱面/磁道"的方式组织和计算容量与布局(尤其历史原因 + 某些主机仿真需要),虽然现在都直接用 GB/TB 来创建,但是背后其实还是cylinder。
主机看到的两类"逻辑卷格式":FBA vs CKD
A. FBA(开放系统:Linux/Windows/VMware 这类)
- 主机把 VMAX 逻辑卷当作 SCSI 设备
- I/O 通过 LBA(Logical Block Address) 寻址:从 LBA0 到 LBA N-1
- 典型 block size 512B(iSeries 520B)
每个 block 内部会有额外的 DIF/T10 PI(端到端数据完整性字段)
- 单个 FBA 设备最大约 262,668 Cyl(~240GB),更大要靠 meta device 组合。这个就是说,VMAX分配出去的盘,如果不是meta device,最大就是 240G 一个盘,在主机上看到的。
B. CKD(主机:IBM Mainframe)
- 采用 Count-Key-Data 记录结构,属于另一套访问/格式体系
logical volume 不只是"容量",它还带着"主机仿真格式 + 寻址方式"的属性。
逻辑卷如何落到物理盘:
"Hyper Volumes -- Slice of a Physical Disk":
- 早期盘很小:可能"一块物理盘 = 一个逻辑卷"
- 现在盘很大:一个逻辑卷通常来自物理盘的 一段切片(slice)
- 这个切片就叫 Hyper(Hyper Volume)
- 每块物理盘最多可切 1024 个 hypers。"Fewer and larger is better(切得更少、每片更大更好)"
理解下层次关系:
- Physical Disk(物理盘)
- 被切成很多 Hyper Volumes(超卷/切片)
- 在这些 hypers 之上,再通过 RAID/布局形成可用的 Logical Volume / Device / LUN
- 被切成很多 Hyper Volumes(超卷/切片)
所以:Hyper 是"后端物理盘空间的切片单位",Logical Volume 是"对外呈现的逻辑磁盘对象"。
逻辑卷不是"单盘":它通常是"跨很多盘的RAID布局",并且要"Spread Wide":
- 保护在 hyper volume 层面应用(RAID1/RAID5/RAID6)
- 不论镜像还是奇偶校验,成员会被"spread wide(分布得很分散)"到不同物理盘、不同后端 director/路径上,以提高性能和可靠性
因此在 VMAX 上看到的一个 logical volume,本质上一般意味着:
- 它的数据条带/镜像/校验分布在一堆盘上
- 读写不会"直打物理盘",而是先到缓存(global memory/cache),再由后端 director 执行落盘策略
logical volume 的"形态":Thick(传统) vs Thin(Virtual Provisioning)
文档把逻辑卷映射到物理盘的方式分两大类:
A. Hyper-based provisioning(厚置备 / Thick Device)
- 设备一创建就对应到固定的物理盘位置(persistent locations)
- 容量"先分配好、先占住"
B. Pool-based Virtual Provisioning(薄置备 / Thin Device:TDEV)
- TDEV 是呈现给主机的 LUN,但后端不立刻占用物理空间
- 它必须 bind 到 thin pool
- thin pool 由很多 **TDAT(data device,提供真实物理空间,但不映射给主机)**组成
- 关键机制:第一次主机写入某个范围时,才会从 pool 分配 extent
- extent 大小:768KB = 12 tracks = 1536 个 512B block
- 读未分配区域不会触发分配,读到的是全 0(文档也提到 NWBH 状态位)
即便是 thin device,主机看到的依旧是完整的 LBA 0...N-1 的连续空间;thin 的变化发生在 VMAX 内部"LBA → extent → TDAT 实体位置"的映射上。
Meta Volume:把多个 logical volume 再组合成"更大的一个"
- Meta volumes:把多个 standard logical volumes 逻辑组合成一个更大的 volume,对主机呈现为单一 LUN
- 作用:
- 突破单个 volume 的容量上限(文档以 FBA 单卷 ~240GB 为例)
- 更"宽"的并行:把负载摊到更多物理盘/更多资源上,提升性能
- 两种布局:
- Concatenated(拼接):按成员顺序用完一个再用下一个
- Striped(条带):例如每个成员取 4 个 cylinder 轮流分布
"Logical Volume"的重要概念:
Physical disks(含不同 tier)
→ 组成 Disk Group(创建 device 时从某个 disk group 取空间)
→ 盘被切成 Hyper Volumes(slice)
→ 通过 RAID 保护 + Spread Wide 布局形成可用数据结构
→ 对外呈现为 Symmetrix Device / Logical Volume / LUN(FBA/CKD 等 emulation)
→ 如需更大/更宽:用 Meta Volume 组合多个 device
→ 如需更高利用率/更易管理:用 Virtual Provisioning(TDEV/TDAT/Pool/extent)