注:
适当的时候,您将需要对新的原始逻辑卷提供带字符或块特殊设备文件的应用程序。应用程序试图进行打开、读、写等操作时,它将链接到此设备文件。
注意: 每个逻辑卷在第一个 512 字节中的都有一个逻辑卷控制块(LVCB)。数据从第二个 512 字节块开始。在原始逻辑卷中,LVCB 未受保护。如果应用程序覆盖 LVCB,则通常更新 LVCB 的命令将失败并生成一条消息。虽然逻辑卷可能继续正确操作并且覆盖可以是允许的事件,但是建议不要覆盖 LVCB。
以下说明使用 SMIT 和命令行界面定义原始逻辑卷。也可以使用“基于 Web 的系统管理器”中的创建新的逻辑卷向导(选择卷 → 概述和任务 → 创建新的逻辑卷)。要在向导中定义原始逻辑卷,请从其第一个选择屏幕中接受缺省使用,应用程序和数据。如果需要的话,联机帮助可用。
已使用 AIX 5.2 测试了本入门书的该信息。如果您正在使用不同版本或级别的 AIX,您获得的结果可能就会发生显著的改变。 1. 使用 root 用户权限,通过输入以下 SMIT 快速路径以查找可以创建原始逻辑卷的可用物理分区: smit lspv
2. 选择磁盘。
3. 接受第二个对话框(状态)中的缺省值并单击“确定”。
4. 用 PP SIZE 字段中的值乘以 FREE PPs 字段中的值以获取可用于所选择的磁盘上的原始逻辑卷的兆字节总数。如果可用空间的数量不够,请选择不同的磁盘,直至您找到一个有足够可用空间的磁盘。 5. 退出 SMIT。
6. 使用 mklv 命令来创建原始逻辑卷。以下命令在使用 38 个 4 MB 物理分区的 db2vg 卷组中创建名为 lvdb2003 的原始逻辑卷: mklv -y lvdb2003 db2vg 38
使用 -y 标志为逻辑卷提供一个名称,则不再使用系统生成的名称。 此时,创建原始逻辑卷。如果列出卷组的内容,则显示原始逻辑卷的缺省类型,为 jfs。逻辑卷的类型项仅仅是个标号。它不指示为原始逻辑卷安装的文件系统。 有关如何打开 /dev/rawLVname 和如何使用此原始空间,请查阅应用程序的说明。
修正文件系统超块中毁坏的幻数
如果毁坏了文件系统的超块,则不能访问该文件系统。对超块的大多数毁坏都不能修复。以下过程描述了当问题由毁坏的幻数引起时,如何修复 JFS 文件系统
中的超块。如果毁坏了 JFS2 文件系统中的主超块,则使用 fsck 命令自动复制副超块并修复主超块。
在以下情况中,假定 /home/myfs 是物理卷 /dev/lv02 上的 JFS 文件系统。 已使用 AIX 5.2 测试了本入门书的该信息。如果您正在使用不同版本或级别的 AIX,您获得的结果可能就会发生显著的改变。 1. 使用以下命令卸下您猜测可能遭到毁坏的 /home/myfs 文件系统: umount /home/myfs
2. 要确认对文件系统的毁坏,请对文件系统运行 fsck 命令。例如: fsck -p /dev/lv02
如果问题是对超块产生了毁坏,则 fsck 命令返回以下消息之一: fsck:不是 AIXV5 文件系统 或
不是识别的文件系统类型
3. 通过 root 用户权限,使用 od 命令显示文件系统的超块,如下例中所示: od -x -N 64 /dev/lv02 +0x1000
此处 -x 标志显示十六进制格式的输出而 -N 标志指示系统格式化偏移参数(+)中不多于 64 个的输入字节,这指定了文件中开始文件输出的点。以下是输出的示例:
0001000 1234 0234 0000 0000 0000 4000 0000 000a 0001010 0001 8000 1000 0000 2f6c 7633 0000 6c76 0001020 3300 0000 000a 0003 0100 0000 2f28 0383 0001030 0000 0001 0000 0200 0000 2000 0000 0000 0001040
在上述输出中,请注意 0x1000(1234 0234)处毁坏的幻值。如果创建文件系统时接受了所有缺省值,则幻数应该为 0x43218765。如果覆盖了任何缺省值,则幻数应该为 0x65872143。
4. 使用 od 命令来检查第二个超块的 magic number 是否正确。以下是示例命令及其输出:
5. $ od -x -N 64 /dev/lv02 +0x1f000
6. 7. 8. 9.
001f000 6587 2143 0000 0000 0000 4000 0000 000a 001f010 0001 8000 1000 0000 2f6c 7633 0000 6c76 001f020 3300 0000 000a 0003 0100 0000 2f28 0383 001f030 0000 0001 0000 0200 0000 2000 0000 0000 001f040
请注意 0x1f000 处的正确幻值。
10.将第二个超块复制到主超块。以下是示例命令和输出:
11. $ dd count=1 bs=4k skip=31 seek=1 if=/dev/lv02 of=/dev/lv02 12. dd: 1+0 records in. dd: 1+0 records out. 13.使用 fsck 命令来清除由使用第二个超块引起的不一致文件。例如: fsck /dev/lv02 2>&1 | tee /tmp/fsck.errs
制作安装的 JFS 或 JFS2 的联机备份
制作安装的日志文件系统(JFS)或增强的日志文件系统(JFS2)的联机备份创建包含该文件系统的逻辑卷的静态映象。以下过程描述了如何制作联机备份。您选择哪个过程取决于该文件系统是 JFS 还是 JFS2。
制作 JFS 的联机备份
要制作安装的 JFS 的联机备份,则必须制作文件系统驻留的逻辑卷及其日志驻留的逻辑卷的镜像。
注:
因为文件是异步写入的,所以分割的副本可能不包含分割前才写入的所有数据。备份副本中可能不提供分割开始后才开始的任何修改。因此,当分割发生时,推荐将文件系统的活动减少到最小。 已使用 AIX 5.2 测试了本入门书的该信息。如果您正在使用不同版本或级别的 AIX,您获得的结果可能就会发生显著的改变。 要将 /home/xyz 文件系统的镜像的副本分割到名为 /jfsstaticcopy 的新安装点,请输入以下内容:
chfs -a splitcopy=/jfsstaticcopy /home/xyz
可以通过使用 copy 属性来控制将哪个镜像的副本用作备份。如果用户没有指定副本,则第二个镜像的副本是缺省值。例如:
chfs -a splitcopy=/jfsstaticcopy -a copy=1 /home/xyz
此时,/jfsstaticcopy 中提供文件系统的只读副本。分割副本后对原文件系统所做的任何更改都不反映在备份副本中。
要在 /testcopy 安装点上将 JFS 分割映象重新结合为镜像的副本,请使用以下命令:
rmfs /testcopy
rmfs 命令从其分割状态除去文件系统副本并允许它重新结合为镜像的副本。
制作和备份 JFS2 的快照
从 AIX 5.2 开始,可以制作安装的 JFS2 的快照,该 JFS2 在一个时间点建立文件系统的一致的块级别映象。即使用于创建快照(名为 snappedFS)的文件系统继续更改,快照映象也保持稳定。快照保持与制作快照时 snappedFS 所拥有的相同的安全性许可权。
在以下情况中,可以创建快照并将该快照备份到可移动介质而无需卸下或停顿文件系统,所有这些只需通过一个命令来执行:backsnap。也可以为了其它目的使用快照,例如访问制作快照时文件或目录存在状态下的文件或目录。可以使用“基于 Web 的系统管理器”、SMIT 或 backsnap 和 snapshot 命令来执行不同的快照过程。
要创建 /home/abc/test 文件系统的快照并将其备份(按名称)到磁带设备 /dev/rmt0,请使用以下命令:
backsnap -m /tmp/snapshot -s size=16M -i f/dev/rmt0 /home/abc/test 此命令创建 JFS2 文件系统(/home/abc/test)快照的 16 兆字节的逻辑卷。快照安装在 /tmp/snapshot 上,然后将按名称的快照备份制作到磁带设备上。备份完成后,快照仍是加载的。当备份完成时如果想除去快照,则将 -R 标志与 backsnap 命令一起使用。
当物理卷缺失时通知管理员
虽然物理卷变为不可访问时 AIX 会记录错误,但仍然有检测不到错误而让其继续存在的情况。例如,当物理卷是镜像卷组的一部分时,由于数据的完好副本仍然可访问,所以用户不会注意到由问题出现。在这种情况下,自动通知可以在用户注意到任何对其工作的破坏之前提醒管理员问题的出现。
以下过程描述当声明缺失物理卷时如何设置自动通知。通过修改以下过程,可以跟踪对您来说很重要的其它错误。
已使用 AIX 5.3 测试了本入门书的该信息。如果您正在使用不同版本或级别的 AIX,您获得的结果可能就会发生显著的改变。 1. 使用超级权限,制作 /etc/objrepos/errnotify ODM 文件的备份副本。可以将备份副本命名为您选择的任何名称。在以下事例中,备份副本将 errnotify 文件名附加有当前日期: 2. cd /etc/objrepos
cp errnotify errnotifycurrent_date 3. 使用您最喜欢的编辑器创建名为 /tmp/pvmiss.add 的文件,该文件包含以下节: 4. 错误通告: 5. en_pid = 0 6. en_name = \7. en_persistenceflg = 1 8. en_label = \9. en_crcid = 0 10. en_type = \11. en_alertflg = \12. en_resource = \13. en_rtype = \14. en_rclass = \
en_method = \$9\在完成该文件中的所有步骤后,错误通知守护程序将使用来自通知消息中错误日志条目的详细信息自动扩展该脚本中的 $1 到 $9。
15.使用您最喜欢的编辑器创建名为 /usr/lib/ras/pvmiss.notify 的文件,该文件包含以下内容: 16. #!/bin/ksh
17. exec 3>/dev/console 18. print -u3 \
19. print -u3 - \20. print -u3 \21. print -u3 \
22. print -u3 \23. print -u3 \
24. print -u3 \25. print -u3 \26. print -u3 \27. print -u3 \28. print -u3 \29. print -u3 \