Entries tagged with “AIX” from DBA notes

前提: OpenSSH 配置完毕。并且,目标端到源端通过 SSH 登录无需提示密码验证. (参见我以前的也是关于 rsync 的废话)

下载 AIX 5L Expansion Pack CD 中的 rsync,这个版本稍微有点低。其实也足够了,不过如果和更高版本混用的话,会报告另外一个错误

sync: connection unexpectedly closed (24 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) ...

在 AIX 上 rsync 需要依赖 Popt--A C library for parsing command line parameters,通过 rpm 命令安装即可. 现在的 AIX 系统默认应该就有安装 rpm (AIX-rpm) 工具包的.

在维基百科上 有 对 rsync 算法的介绍。简单的理解是这么回事:待传送的文件被分成若干定长的文件段,然后对每个文件段做个 "Rolling Checksum",加上一个强 MD4 校验码, 传送这些信息给接收方, 接收方查找本地类似文件--定长的每个文件段, 对比 Rolling Checksum 与 MD4, 然后传送差异(Delta)数据.

rsync 1996 年才被搞出来,最初是用来对付在低速网络连接上传送差异化文件的。

我一直比较好奇的是 Oracle 的 Data Guard 用什么算法保证所有的归档能无差错传送到远地(?)。

--EOF--

| | Comments (1) |

IBM 为配合 Power 6 CPU 而推出的 AIX 6 即将正式发布。在 AIX 5 的基础上学习 AIX 6,最好的入手点就是 IBM AIX Version 6.1 Differences Guide(PDF) 了。匆匆看了一下,记录几个比较感兴趣的点。

JFS2 的新特性

关掉 JFS2 的 Log: mount 的时候 log=NULL 可以关掉 JFS2 的日志。在一些特定的场合(如:恢复)会比较有用。另外一个特性是内部快照(internal snapshot),即可以在同一文件系统上创建快照。

限制每进程的线程数

在以前的版本中这是做不到的,AIX 6 可以通过静态或者动态的方式修改每个进程的线程数量。属性由RLIMIT_THREADS 与 RLIMIT_NPROC 值控制. ulimit -a 可以查看值。

线程环境变量 pthread 1:1

pthread 也就是 POSIX Threads,AIX 6 对 "contention scope" 的 m:n 做了调整。 aix_pthread.png AIX 5 上 跑 Oracle RDBMS, Oracle 建议 export AIXTHREAD_SCOPE=S. 看来以后不用这么费事了。

补充一下这个 M:N ,一共有三种:

  • M:1 (Library) 模型:M:1 (库模型),每个进程都有一个核心线程。竞争范围:process(本地)
  • 1:1 (Kernel) 模型:每个用户线程都有自己的核心线程。竞争范围:system (全局)
  • M:N (Hybrid) 模型:M 个 用户线程对应 N 个 Kernel 线程。默认是 8:1(AIXTHREAD_MNRATIO) 。竞争范围:以上两种方式混合)

pthread_scope.png

这个变化多少了反映了 IBM 在计算模式变化的方向上的倾斜。

动态虚拟内存 Page Size

AIX 6 支持四种值,4k、64K、16M、64GB. 一个新的需要知道的缩写:Dynamic variable page size support (VPSS)。VMM 可以动态修改 Page size ; 大的 page size 对应用是透明的(是不是会触发Bug,鬼才知道); 硬件支持(Power 6)的情况下 VPSS 是激活的。

”限制性可调“的核心参数

AIX 6 对一些比较关键的参数划了个类别:”限制性可调“(restriccted tunables) ,调整的时候会警告用户, 建议在厂商指导下进行:)

其他

安装程序更新了,现在是......图形化安装了

--EOF--

| | Comments (1) |

IBM 官方站点发布了 AIX 6 预览版的相关信息,预告大约在 07 年中(很快了)提供 Open Beta 测试。

在列出的相关新特性中,Dynamic tracing 毫无疑问对开发人员是个福音,这个功能看简介多少有点模仿 Solaris Dtrace 的意思。对于系统管理人员来说,基于 Web 的 System Management Interface Tool (SMIT) 或许能带来管理上的一些便利。我倒是对 Concurrent AIX kernel update 挺期盼的,希望这个能在维护操作系统的时候大大减少不必要的停机时间。

今天看到的另外一个消息是 IBM 正式发布 Power6 处理器。"双核设计,主频 4.7GHz,IBM 把它称为“有史以来最快的微处理器"。其实单就芯片技术来说,IBM 恐怕领先竞争对手三到五年的样子,多年的大手笔研发投入终于得到了应有的回报。

Power 6 + AIX 6,会有好戏看。

--EOF--

| | Comments (3) |

这可能是 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 中可以找到,直接解压缩,把工具提取出来即可用。

| | Comments (27) |

面临的需求:在两个服务器之间进行安全的文件同步。首选的方法用 rsync ,如何与 SSH 集成在一起呢 ? 我以前还真的没试验过。到 del.icio.us 上查找. 现在如果查找技术文档,del.icio.us 成了我的首选资料库,只要被人收录的文章,基本上质量都不错。

实现起来还是相对比较简单的。

1 安装 rsync.
我的操作系统是 AIX ,到 IBM 的站点下载软件.可以直接用 RPM 工具包远程安装。

2 创建公钥并配置

为了避免每次都询问口令(假定 OpenSSH 已经安装就绪),需要创建密钥。用 ssh-keygen 工具。然后把公钥添加到 rsync 的 Server 端相关用户目录下的 .ssh/authorized_keys 文件中。

关于这个过程,前几天看到一段很浅显的解释,稍加改编一下:

SSH 告诉远程 Server 端的 sshd ,它想使用 RSA 认证协议...远程的 sshd 会生成一个随机数,并用我们先前拷贝过去的公钥对这个随机数进行加密。然后, sshd 把加密了的随机数发回给正在 本地服务器上运行的 ssh 。接下来,我们的 ssh 用 专用密钥对这个随机数进行解密后,再把它发回给远程服务器,类似于声明一下:“瞧,我真的有匹配的专用密钥;我能成功的对您的消息进行解密!”最后, 远程 sshd 得出结论,既然人家真的有该专用密钥,就应当让人家登录。因此,我们有匹配的专用密钥这一事实授权我们访问远程服务器
| | Comments (4) |

DBA notes 的订阅数量,点击则可进行订阅
Feed 订阅数量,点击即可订阅最新内容

订阅更新

如果喜欢用 RSS reader 获取信息,可以订阅这个 Feed 以便获取 “AIX” 将来的更新内容.

Subscribe to feed 点击订阅

标签