【IT168 专稿】在上篇文章中(点击)我们主要说明了Soalris的启动引导过程,本文主要和大家一起探讨Soalris 的运行管理。Solaris为启动、运行和关闭系统提供了一个非常灵活的框架。Solaris系统可以运行在不同的运行级别上,可以根据多种初始化状态,来决定是否允许多用户登录,是否可以进行硬件维护,以及系统是否可以完全操作。
一、运行OpenBoot PROM
1、管理OpenBoot PROM
OpenBoot PROM监控器提供了一个对于SPARC系统硬件的底层软件接口。这和PC机的BIOS系统有一些相似之处,在这里,可以设置一些诸如启动设备的值。然而,PROM的功能远远不止是设置启动参数。PROM有以下功能: 加点自检(POST),系统重起始开始执行,检测基本CPU板,因机器型号不同而不同,设备驱动有一些小型设备驱动程序,使得启动的初始化过程中可以与不同的外围设备相通讯,用户操作界面等。
在一个类似外壳的界面上可以使用一整套诊断和排除故障的应用程序。例如,可以显示所有连接到SCSI的一个设备列表来确定它们在启动之前已经都被检测到了。另外,网络接口可以被“监视”以确定包已经在网络上。事实上,OpenBoot允许用Forth编程语言编写和执行的所有程序。尽管许多系统管理员仅仅用PROM监视器使用boot命令来启动他们的系统,但是在遇到棘手问题的时候,PROM监视器会很有用。
系统管理员应当熟悉PROM监视器的两个提示符:“ok”和“>”。要从提示符“>”切换到命令发布提示符“ok”,可以使用下面的命令:
>n
ok
在“ok”提示符下,可以执行很多不同的命令。例如,要显示系统的硬件配置以及固件版本级别,可以使用下面的命令:
![]() |
| 图1 点击看大图 |
这个输出显示,本地系统是SPARCstation 20,带有一个类型5的键盘,ROM的版本为3.1,安装了、128MB的内存,序列号为556443,主网接口的以太网地址也显示出来了(6:3:ld:a:ff:6c)。
2、管理系统启动和停机
当系统在运行级别0运行时,在ok提示符下最经常使用的命令是boot命令。默认情况下,这个命令会使系统进入完全多用户模式。在启动期间,当系统通过每一个运行级别时,状态信息会不断地在控制台上显示,如下面的例子所示:
![]() |
| 图2 点击看大图 |
在login:提示符显示之后,如果X显示管理器(X Display Manager,XDM)在运行的话,系统会启动通用桌面环境(Common Desktop Environment,CDE)。如果需要,也可以直接登录到控制台并发布命令。
如果在先前启动后有新硬件加入到系统上,那么应当进行重配置启动。这会重构在/dev和/device目录里的所有设备文件。要执行重配置启动,可以使用下面的命令:
ok boot -r
3、使用OpenBoot PROM命令
尽管使用boot命令可以选择一个默认的内核,但是如果需要的话,也可能要选择一个不同的内核来启动。如果要使用一个实验性的或者修补过的内核,而又不想把它设置为默认内核的时候,就需要这样做。可以设置想要启动的内核的全路径名、新内核的模块目录的全路径名、内核的系统文件的路径、启动文件系统的类型以及启动设备的名字。这些参数可以在手动启动时在命令行设置。下面的例子显示了手动启动时的一个修补过的内核。
![]() |
| 图3 点击看大图 |
在默认情况下,系统从启动设备环境变量指定的设备上的内核启动。下面是启动设备的有效值:
默认的启动设备由命令setenv来设置。例如,要将磁盘设置为启动设备,将用到下面的命令:
ok setenv boot-device disk
另外,要将启动设备设置为磁带,可以用下面的命令:
ok setenv boot-device tape
如果偶尔要从一个非默认的设备来启动,那么没有必要设置启动设备变量。只要简单地将启动设备的名字传到命令行就行了。例如,如果要从光驱来启动,可以用下面的命令:
ok boot cdrom
尽管这次系统会从光驱启动,但下一次只要没有在命令行上出现指定的另外的设备,系统还是从启动设备变量指定的默认设备来启动。
二、管理初始化进程和运行级别
当一个内核被启动后,存储在EPROM中的一个数值集可以被访问。它们往往和可以用OpenBoot PROM监视器设置的值是相同的。然而,如果想要在运行时改变这些值而又不想借助于PROM监视器,那么可以使用eeprom命令。下面的例子显示了被系统使用的典型变量:
![]() |
| 图4 点击看大图 |
因为初始化在Solaris系统的操作中起着至关重要的作用,因此我们只要懂得它的配置含义就行了。/etc/inittab文件包含了很多项,定义了初始化如何处理下面所示标准进程的行为;如果一个进程可以在所有的运行级别上执行,那么没有运行级别会被指定,否则合法的值包括1、2、3、4、5、6、s、a、b和c。上一篇文章已经详细介绍各参数,这里就不多说了。
三、管理系统停机
和PC机不同的是,Solaris系统不会经常停机,除非有某些地方需要维护。这是因为用户通常期望24 X 7全天候地享受服务。Solaris系统的很多特性使得它们是“高可用的”:许多服务器拥有双电源支持以及其他冗余硬件,比如磁盘控制器和总线,确保如果有一个坏了,可以用其他的来代替。另外,RAID5技术保证了磁盘卷可以被镜像以及数据的完整性。损坏的磁盘也可以被换掉,这就意味着服务不会被打断,系统不需要停止来更换磁盘。然而,如果系统需要重新部署或者移动,那么系统首先应当停机。
如果要重新创建在/dev和/devices中的设备文件需要进行重配置启动时候,很明显,系统也将需要停机。下面我们会检查一些通常用来停掉一个Solaris系统的方法,包括init、shutdown、poweroff、halt以及reboot。
1 、/sbin/init
尽管/sbin/init程序是负责用来产生进程的,但它也可以用来管理系统的运行级别。要使用init来停掉系统,可以使用下面的命令:
# sync
# init 0
这将会使系统进入OpenBoot提示符状态,在这里,系统可以如下所示那样关掉电源:
ok power-off
也可以使用下面的命令直接停机并关掉电源:
# sync;init 5
要想停止一个系统并启动(也就是重新启动),可以使用下面的命令:
# sync
# init 6
注意在上面两种情况下,都需要发出sync命令。这个命令在磁盘上强制超级时钟重写,保证数据的完整性。任何需要改变运行级别的时候,都需要在之前执行sync命令。
2、/usr/sbin/shutdown
命令shutdown和生疏的init命令相比有很多优势。首先,可以指定一个等待的时段以允许用户在预定的停机时间内继续他们的工作。另外,内嵌的一个安全特性保证不会出现意外的初始化状态的变化----初始化状态0和初始化状态3之间的区别是巨大的,错误地键入运行级别会带来严重的后果。
shutdown命令在执行之前会要求系统管理员确个,还可以在命令行上通过使用-i参数来传递运行级别,使系统进入0、1、5、6和S运行级别。
例如要在120秒后重新启动计算机,可以使用下面的命令:
# /usr/sbin/shutdown -i 6 -g 120 “System will be rebooted in 120
seconds.Please logout now.”
四、服务器的关机和重启运行
命令halt关闭系统并进入运行级别0,但没有执行结束脚本,而这在使用init或者停机程序时是通常要执行的。当系统处于危险境地的时候是非常有用的,这似乎更需要理智而不是勇猛。例如,如果一个黑客正在对网络上的主机执行一个分布式的拒绝服务攻击,在联系到正在遭受攻击的系统的系统管理员之前,防火墙可能已经完全关闭。默认情况下,超级时钟在初始化状态改变之前被更新。然而,这可以通过传递-n选项来防止。另外,-q选项可以确保以最快的速度停机。
1、/usr/sbin/poweroff
在极端情形下,譬如闪电风暴,有必要快速地关掉系统的电源而不进行一些通常的处理过程,包括干净地关闭系统。尽管halt命令使系统进入运行级别0,但它没有自动地如同poweroff命令所做的那样关掉系统的电源。poweroff命令的一个优势,就是它可以从一台远程终端发出来确保系统的电源被关掉,大大好于必须坐在控制台前的情形。当然,需要从控制台重新开启系统电源。超级时钟默认情况下在初始化状态改变之前被更新,这可以通过传递-n选项来防止。叫选项可以确保以最快的速度关掉电源。
2、/usr/sbin/reboot
作为初始化6的一个选择,reboot命令可以被用来重新启动系统。它在改变运行级别之前更新超级时钟。传递-q选项可以确保以最快的速度重新启动。
