NSK 是NonStopKernel的略称。狭义上理解的话就是HP的NonStop Server上运行的操作系统。但是NSK所依存的硬件除了NonStop Server以外没有别的了,所以广义上来说NSK也可以包含硬件部分。一般都使用广义上的意义。
为了实现所谓的NonStop,NSK几乎把所有的组件都做了2重化,即使发生了故障,立刻可以从主设备迁移到副设备上去,从而实现不停机。
一个NSK一般由若干个NODE构成,而一个Node的CPU一般为2-16个。Node之间是通过高速的ServerNet技术互联的。每个node节点都有一个node id和node名,在一个系统中是不允许重复的。
Node内的各个CPU都是在同一个OS下运行的,不同的Node则可以运行不同版本的OS(我猜101%windows2000是不行的)。各个CPU可以运行不同的进程,而不像SMP那样所有的CPU一同运行同一个进程。
进程主要用进程名来标识(当然NSK中也有pid的概念)。进程名在同一个Node里不能重复(进程对除外)。不同的节点之间的进程名则可以重复。所以一般进程的标识也都附带节点标识:
节点名.进程名
进程对(Process Pair)。为了确保高可用性,你可以启动一个程序的两个进程,这两个进程就是一组进程对:Primary进程和Backup进程。业务处理主要由主进程来完成,副进程则监视主进程,如果万一主进程死掉了,业务处理则移到副进程来进行。
要编写进程对程序,需要使用NSK特殊的技术NonStopCoding。而且,进程对中的兄弟俩不能在同一个CPU上运行。
再简单说说文件系统。
不像UNIX那样存在唯一一个根目录,有点像windows,以volume为单位管理,volume就类似windows的c,d,e盘等。然而,NSK目录结构最多为两层(volume,subvolume)。
比如$data01是一个volume,下面有一个sub volume liubin,则liubin的下面只能建立文件,不能建立文件夹(NSK中好像也没有文件夹,目录这种说法。)。所以一个文件的全路径可能是这样的:
\nodeid.$volume.subvol.file
由节点名,卷名,子卷名,文件名这四部分组成。
在FORMAT1的情况下,文件最大只能到2gb,不过在FORMAT2的情况下,可以建立更大的文件了。有点类似oracle的数据文件结构,NSK的文件也是以extent为单位进行分配的,一个文件的第一个extent为primary extent,剩下的都是secondary extent。每个extent用page(2048byte)来声明。
Related posts for the current post: