Tag Archives: 4k

磁盘的 4K 扇区时代来临

Western Digital 在推进一项技术变革,Advanced Format(PDF),将延续近30年的硬盘传统的512字节扇区变更为4K大小。

传统的格式如下图,绿色部分为 ECC (Error Correcting Code)区域。一般来说,每存储1000位(bit)的数据就会有产生一个物理错误,所以必须要有一个可靠的校验机制。这也是 ECC 必不可少的原因。

Legacy Architecture.jpg

每 512 字节用一个 ECC 区,占用 40 字节做错误矫正代码,这在需要存储大数据量的时候,显而易见是比较大的物理空间开销。而将扇区扩大,使用一个相对比较大的 ECC 区也是同样可以达到安全存储的目的。

Advanced  Format Architecture.jpg

如果使用 4K 的扇区,则大约需要 100 个字节的 ECC 区域就行了。空间收益大约是 7-11% 。对于存储工业来说,这是惊人的。当初设计硬盘规格的时候,估计研发者是无法预见到信息如此迅速膨胀的今天的,512 字节已经不太适应现在一个平均 I/O 的大小。

值得注意的是,这个变更更多是在空间上的收益,在性能上的收益还不确定,当然不会变得更差,至于是否有提高,能提高多少,要看具体的场景。另外,也不会提高硬盘的可靠性,每 12.5TB 的数据依然会有一个不可恢复的读错误。(refer) 。4K 扇区其实在数年前就被提出来,只是最近 Western Digital 才真正的推动,估计是因为磁盘容量要保证每年的增长率带来的压力。

使用该技术对或许企业级服务器用户并不会有什么太大的风险,Western Digital 同时也在固件层提供对传统的 512 byte 扇区的模拟方式。另外,也可以下载这个官方校正工具。对于个人用户来说,多少还是有点影响的,尤其是使用克隆软件安装 Windows XP (Windows 5.x )以及更低版本的操作系统的用户可能要注意一下。

4K 是个有趣的数字,还记得 4K偏移量的问题么?

未完,待补充 …

延伸阅读:

此文作者:, 位于 Review 分类 标签: , on .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.

AIX RAW LVM 的 4k Offset 问题

这可能是 Oracle 在 AIX 平台上最重要的一个潜在问题。

一般情况下,AIX 的逻辑卷前 4k 用于存储 control block (LVCB),在 Oracle 9iR2 之前,Oracle 软件自动跳过这 4k 而不用。这带来了一个潜在的问题,当 Oracle 的 db_block_size 大于 4k 的时候,一个 Block 可能跨在两个 PV/LUN/磁盘 上(如果做了条带化,那么将总有数据块跨在两个条带上–其实也还是将跨在不同的 PV/LUN/磁盘上。这样当系统崩溃的时候,很有可能造成大量的 IO 不完整,一个 PV 上 IO 写入,另一边可能未完成,启动 Oracle 的时候将会看到 ORA-1578 错误,这几乎是致命的。

为了解决这个问题,AIX 推出了 Big Volume Groups 作为应对。建立 Big VG 后,创建 LV 的时候可以通过 -T O 的参数强制征用 LV 的前 4K 空间, LVCB 的信息保存在 VGDA(volume group describe area) 里面。前 4k 空间被使用的 LV 有了一个新的设备子类型(devsubtype)标记: DS_LVZ,通过 lslv 可以看到。(Oracle 也在 9.2.0.3 之后自动识别 AIX 的新 LV 类型,直接开始使用 LV 的前 4K 空间)

对于 AIX 的可扩展性 VG,则默认创建的 LV 就会 DS_LVZ 类型,不使用 -T O 也是这样子。Big VG 可能只是一个过度类型。

在 IBM 的系统手册中可以看到:

The IOCINFO ioctl operation returns the devinfo structure, as defined in the /usr/include/sys/devinfo.h file

如何知道当前裸设备创建的时候使用了 -TO ? Oracle 10g 的文档中说 $ORACLE_HOME/bin/offset 工具可以做到。可是我居然找不到这个工具。莫非是忽悠人来着? 通过另一个工具可以看到相关信息:

$ dbfsize /dev/rfoo01_pay
Database file: /dev/rfoo01_pay
Database file type: raw device without 4K starting offset
Database file size: 920 8192 byte blocks

要想得到完美的东西太难了, AIX 在 BIG VG 上仍然还有很多问题,目前已知的当属这个“MKLV -TO ON BIG VOLUME GROUPS FAILS TO PUT SOME LV INFORMATION”最为严重–得不到正确的devsubtype 类型,Oracle 则会报告读取数据文件头错误,这个更要人命。
DBA 这个工作,还真是脑袋悬在腰带上,风险莫测。
EOF
Updated: offset 命令工具需要安装 RAC 组件才可用,Oracle 另外提供了一个补丁来弥补这个问题,在 Patch 3242957 中可以找到,直接解压缩,把工具提取出来即可用。