Ironic相关知识点

OpenStack组件Ironic学习相关知识点

标签(空格分隔): openstack ironic

1. Ironic组件介绍

Ironic是OpenStack的一个管理裸机的组件

Ironic主要关键技术

  1. PXE
  2. DHCP
  3. NBP
  4. TFTP
  5. IPMI

    PXE PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统。 PXE过程图


DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段. 在PXE中,BIOS使用DHCP来为网络接口申请IP,同时定位网络引导程序服务器。


NBP NBP(Network Bootstrap Program,网络引导程序)是一种启动引导程序,功能与本地引导类似,NBP负责加载操作系统内核到内存中,保证系统能够通过网络引导启动。


TFTP TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69


IPMI 智能平台管理接口 (IPMI) 是一种开放标准的硬件管理接口规格,定义了嵌入式管理子系统进行通信的特定方法。IPMI 信息通过基板管理控制器 (BMC)(位于 IPMI 规格的硬件组件上)进行交流。使用低级硬件智能管理而不使用操作系统进行管理,具有两个主要优点: 首先,此配置允许进行带外服务器管理;其次,操作系统不必负担传输系统状态数据的任务。 IPMI需要进入bios,进行设置IP地址。设置好了之后可以通过web访问IPMI,实现对机器的如下操作:

  • 开机,关机,重启,查看机器当前的通电状态
  • 安装系统。有些服务器的IPMI,没有内置iKVM,无法实现系统的安装。这个估计和成本有关
  • 修改IPMI的网络和IP地址
  • 修改bios设置,可以通过IPMI进入bios
  • 设置Raid。

iLO iLO 是一组芯片,内部是vxworks的嵌入操作系统,在服务器的背后有一个标准RJ45口对外连接生产用交换机或者带外管理的交换机.iLO自己有处理器,存储和网卡,默认网卡配置是DHCP,可以在服务器启动的是欧进入iLO 的ROM based configuration utility 修改 ip, dpch->;static.服务器买的时候,在面板左侧,会有一个白色的纸吊牌,上面写着iLO 网卡上的DNS name和 Username Password. 请勿随便更改,更改了不要遗失.iLO的使用很简单.用网线把iLO口和你的LAN switch或者专门的OB switch 相连.如果你准备让iLO 默认方式工作,你需要有一个 LAN内的DHCP和DNS 服务器存在. 如果你在服务器启动的时候修改dhcp 到static ip,就无所谓了.在你的笔记本或者pc上,开一个IE(支持java), 然后地址那里书写 iLO DNS name(写在纸吊牌上的,你需要DHCP DNS 服务器在局域网内). 就可以看到iLO界面了. 或者直接填写iLO的ip地址也可以. iLO界面除了报告一些硬件信息之外,主要提供了三大类控制:

  • Virtual console, 就是类似pc anywhere的远程控制了,但是和软件的控制不一样,它是完全硬件级的,哪怕你的服务器没有操作系统,或者硬盘损坏,或者重新启动,都可以完整的进行控制,所以除非更换被管理服务器的硬件,正常的操作都可以用iLO来做,根本不用进入机房.(当然得保证网络通畅).
  • 第二类是 Virtual power, 虚拟电源,模拟所有的电源开关动作,比如按住不放,按住就放等等。
  • 第三类是Virtual media ,虚拟介质,你可以将pc或者笔记本上的光驱软驱,通过LAN, 虚拟给被管理的服务器。这个主要是用来安装操作系统,或者传输数据,打补丁之类的。

比如那个被管理服务器是新的,没有操作系统,硬盘也没有作阵列,我怎么结合上面的三类控制手段来稿呢?

  1. 用virtual power重启动服务器
  2. 用virtual console 远程操作服务器,在服务器启动的POST时候,进入 G4服务器的Smart array 6i Rom based utility 进行阵列配置
  3. 用virtual console 远程操作服务器,在服务器POST完毕的结束阶段,F9进入系统的BIOS,我们行话叫RBSU 进行配置
  4. 用virtual media 将我本地笔记本或者pc的光驱虚拟出去,然后在我本地的光驱中,放windows/linux等的安装盘.
  5. 远端的被管理服务器以为自己插了一个usb 光驱,或者软驱,然后按照大家熟悉的正常方式从光盘软盘启动,不过却是用的我本地的盘.
  6. 你在virtual console 里面进行和平时一样的安装操作. 有一点要注意,默认的服务器买来,iLO 是不支持图形界面的,也就是说,当你virtual console里面的远程服务器开始进入windows, X-windows的时候,你本地pc,笔记本的IE 就看不出远端的画面了,你需要向hp购买iLO advanced pack, 一个iLO serial number, 把这个iLO serial number输入到iLO的一个专门输入注册号的地方,就可以突破这个限制了,不过远端如果是linux,并且是字符界面,就无所谓买不买了. 这个输入注册号的地方,在你IE访问iLO 后出现的管理界面的菜单上有的,最后一个.就这些,HP的iLO目前是x86服务器系统中最理想的技术了,我们比较了好几种同类产品,在标配不加卡的情况下,HP 的管理应该是最好的

kernel,ramdisk(initrd)的关系和用途

内核(kernel)与ramdisk到底是什么关系?系统在启动的过程中,内核与ramdisk分别扮演什么角色啊?

精彩回答:

ramdisk一个作用就是用来解决boot过程中mount根文件系统的“先有鸡还是先有蛋”的问题的。 一般来说,根文件系统在形形色色的存储设备上,不同的设备又要不同的硬件厂商的驱动,比如intel的南桥自然需要intel的ide/sata驱动,VIA的南桥需要VIA的ide/sata驱动,根文件系统也有不同的文件系统的可能,比如ubuntu发行版可能一般用ext3,suse可能就不是了,不同的文件系统也需要不同的文件系统模块;假如把所有驱动/模块都编译进内核(注:即编一个通用的、万能的内核),那自然没问题,但是这样就违背了“内核”的精神或本质,所以一般来说驱动/模块都驻留在根文件系统本身上/lib/modules/xxx,那么“鸡蛋”问题就来了,现在要mount根文件系统却需要根文件系统上的模块文件,怎么办?于是,就想出ramdisk,内核总是能安装ramdisk的(注:这是因为ramdisk临时文件系统和内核一样,也是由bootloader通过低级读写命令(如uboot用nand read,而不用通过文件系统层提供的高级读写接口)加载进内存,因此内核可以挂载内存里ramdisk文件系统),然后把所有可能需要的驱动/模块都放在ramdisk上,首先,让内核将ramdisk当作根文件系统来安装,然后再用这个根文件系统上的驱动来安装真正的根文件系统,就将这个矛盾问题解决了

ramdisk还举出一个作用,现在的发行版在boot时一般都是图形界面的,那么,ramdisk就可以放framebuffer驱动和一些图片来做这种简单的动画。 前一段时间刚好也在研究ramdisk, 下面是我找到的关于ramdisk的资料,希望对楼主有用 在 Linux kernel 2.4 中,initrd 大致的处理流程如下:(方括号表示主要的执行单元)[boot loader] Boot loader 依据预先设定的条件,将 kernel 与 initrd 这两个 image 载入到 RAM [boot loader -> kernel] 完成必要的动作后,准备将执行权交给 Linux kernel [kernel] 进行一系列初始化动作,initrd 所在的记忆体被 kernel 对应为 /dev/initrd 装置设备, 透过 kernel 内部的 decompressor (gzip 解压缩) 解开该内容并複製到 /dev/ram0 装置设备上 [kernel] Linux 以 R/W (可读写) 模式将 /dev/ram0 挂载为暂时性的 rootfs [kernel-space -> user-space] kernel 准备执行 /dev/ram0 上的 /linuxrc 程式,并切换执行流程 [user space] /linuxrc 与相关的程式处理特定的操作,比方说准备挂载 rootfs 等 [user-space -> kernel-space] /linuxrc 执行即将完毕,执行权转交给 kernel [kernel] Linux 挂载真正的 rootfs 并执行 /sbin/init 程式 [user space] 依据 Linux distribution 规范的流程,执行各式系统与应用程式

值得一提的是,以上「两阶段开机」是 initrd 提出的弹性开机流程,在真实的应用中,也可能从未需要挂载真正的 rootfs,换言之,只是把系统当作都在 RAM disk 上运作,或者永远都在 initrd 所引导执行的 /linuxrc 程序中执行 (注意:kernel 永远保留 PID=1 作为 init process 识别,而 /linuxrc 执行的 PID 必非为 1),在许多装置如智慧型手机,都是行之有年的,不过这不影响我们后续的探[/quote] 里边所说的 initrd 大体上就是指 包含根文件系统的ramdisk。

results matching ""

    No results matching ""