设置
我们将使用的示例系统具有基于 SVM 的镜像根。
查看更多教程 https://on itroad.com
补丁安装
- 将服务器引导到单用户模式。
# init 0 ok> boot -s
- 解压缩补丁集包并查找密码。
# unzip -q sol10_Recommended.zip # grep PASSCODE sol10_Recommended/sol10_Recommended.README
- 安装补丁集群。
# cd sol10_Recommended # ./installcluster --[passcode]
- 检查安装过程中是否有任何错误或者警告。
在没有发现错误的情况下,以多用户模式重新启动服务器。
# init 6
重新挂接镜像盘
一旦我们成功安装了补丁集包并确保继续使用它,我们就可以使用镜像重新镜像根磁盘。
- 在根镜像磁盘上创建元数据库副本。
# metadb -a -c 3 c1t1d0s7
- 重新创建并添加根和交换镜像。
# metainit d12 1 1 c1t1d0s0 # metainit d22 1 1 c1t1d0s1 # metattach d10 d12 # metattach d20 d22 # metastat | grep -i sync (check sync status)
准备
- 检查所有元数据库副本 (metadbs) 和 SVM 元设备的健康状况。
# metastat # metastat -c # metadb -i
- 检查当前启动设备。
# prtconf -vp | grep -i boot bootpath: '/pci@0,0/pci15ad,1976@10/sd@0,0:a' boot-device: 'pci@0,0/pci15ad,1976@10/sd@0,0:a disk0:a'
- 从格式输出中确认启动盘和镜像盘。
# echo | format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c1t0d0 /pci@0,0/pci15ad,1976@10/sd@0,0 1. c1t1d0 /pci@0,0/pci15ad,1976@10/sd@1,0 Specify disk (enter its number): Specify disk (enter its number):
如上所示,这里的根磁盘是 c1t0d0 ,镜像根磁盘是 c1t1d0 。
- 备份重要的命令输出。
# df -h # netstat -nrv # ifconfig -a # metastat -c # metastat # swap -l # cat /etc/vfstab # uname -a # showrev -p
- 在根镜像盘c1t1d0中安装bootblock,确保可以启动。
# installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c1t1d0
- 分离并删除 SVM 镜像。
# metadetach -f d10 d12 ## detach root mirror # metadetach -f d20 d22 ## detach swap mirror # metaclear d12 # metaclear d22
- 清除根镜像磁盘中的元数据库副本。
# metadb -d /dev/dsk/c1t1d0sX ## X is the slice on which metadb was created on root mirror disk
- 挂载镜像根磁盘并替换/etc/vfstab 和/etc/system 中的SVM 相关条目,以防止SVM 从根镜像磁盘启动。
# mount /dev/dsk/c1t1d0 /mnt # vi /etc/fstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # fd - /dev/fd fd - no /proc - /proc proc - no /dev/dsk/c1t1d0s1 - - swap - no /dev/dsk/c1t1d0s0 /dev/rdsk/c1t1d0s0 / ufs 1 no /devices - /devices devfs - no sharefs - /etc/dfs/sharetab sharefs - no ctfs - /system/contract ctfs - no objfs - /system/object objfs - no swap - /tmp tmpfs - yes
从 /etc/system 文件中删除与 SVM 相关的条目。
# vi /etc/system * Begin MDD root info (do not edit) rootdev:/pseudo/md@0:0,10,blk * End MDD root info (do not edit) set md:mirrored_root_flag = 1
9、确认服务器是否从未封装的SVM根镜像盘启动。
# init 0 ok> boot rootmirror (root mirror is a devalias at OBP)
像许多其他人一样,在升级/修补 solaris 时,我非常喜欢实时升级。
这篇文章适用于出于任何原因仍想使用传统修补方法的系统管理员。
回滚
如果打补丁出错,或者打补丁后应用程序无法正常工作,我们可以随时回滚打补丁并从旧补丁级别启动。
这样做的方法是,我们将未封装的 rootmirror 磁盘重新封装在 SVM 下,并将其与原始 root 磁盘进行镜像。
一旦完成,这应该如下图所示。
- 从未封装的 SVM 根镜像磁盘启动。
# init 0 ok> boot rootmirror
- 将分区表从rootmirror 磁盘复制到root 磁盘。
# prtvtoc /dev/rdsk/c1t1d0s2 | fmthard -s - /dev/rdsk/c1t0d0s2
- 创建状态数据库副本(metadbs)。
# metadb -afc 3 c1t1d0s7 c1t0d0s7
- 创建子镜像元设备。
# metainit -f d11 1 1 c1t1d0s0 # metainit -f d12 1 1 c1t0d0s0
5.为root创建镜像d10.
# metainit d10 -m d11 # metaroot d10
- 在 /etc/system 文件中添加以下条目,允许系统以少于或者等于总元数据库一半的情况启动。
vi /etc/system set md:mirrored_root_flag = 1
- 重启系统
# init 6
- 将子镜像d12添加到镜像d10以同步数据。
# metattach d10 d12
9.在根分区下重新创建swap。
# swap -l swapfile dev swaplo blocks free /dev/dsk/c1t1d0s1 30,1 8 1548280 1548280 # swap -d /dev/dsk/c1t1d0s1 # metainit d22 1 1 c1t0d0s1 # metainit d21 1 1 c1t1d0s1 # metainit d20 -m d21 # metattach d20 d22 Change the /etc/vfstab entry for the new swap. /dev/dsk/c1t1d0s1 - - swap - no to: /dev/md/dsk/d20 - - swap - no
再次添加交换并设置为转储设备。
# swap -a /dev/md/dsk/d20 # dumpadm -d swap
- 设置 OBP 变量以反映新别名
# ls -l /dev/dsk/c1t0d0s0 lrwxrwxrwx 1 root root 46 Nov 16 12:35 /dev/dsk/c1t0d0s0 -> ../../devices/pci@0,0/pci15ad,1976@10/sd@0,0:a # ls -l /dev/dsk/c1t1d0s0 lrwxrwxrwx 1 root root 46 Nov 16 12:35 /dev/dsk/c1t1d0s0 -> ../../devices/pci@0,0/pci15ad,1976@10/sd@1,0:a
# eeprom "nvramrc=devalias rootmirror /devices/pci@0,0/pci15ad,1976@10/sd@0,0:a rootdisk /devices/pci@0,0/pci15ad,1976@10/sd@1,0:a"
- 在新的镜像盘上安装bootblock。
# installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c1t0d0s0
日期:2020-09-17 00:15:17 来源:oir作者:oir