From 4d41c3a042f2ee380e70ae0f9ebb0ba3a05b8529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E5=96=84=E5=BA=86?= Date: Tue, 27 Sep 2022 06:50:33 +0000 Subject: [PATCH] =?UTF-8?q?update=20NestOS=20=E5=8A=9F=E8=83=BD=E7=89=B9?= =?UTF-8?q?=E6=80=A7=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 付善庆 --- ...71\346\200\247\346\217\217\350\277\260.md" | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git "a/docs/usr_manual/\345\212\237\350\203\275\347\211\271\346\200\247\346\217\217\350\277\260.md" "b/docs/usr_manual/\345\212\237\350\203\275\347\211\271\346\200\247\346\217\217\350\277\260.md" index a9121e9..21e025a 100644 --- "a/docs/usr_manual/\345\212\237\350\203\275\347\211\271\346\200\247\346\217\217\350\277\260.md" +++ "b/docs/usr_manual/\345\212\237\350\203\275\347\211\271\346\200\247\346\217\217\350\277\260.md" @@ -2,27 +2,29 @@ ## 容器技术 -NestOS通过容器化 (containerized) 的运算环境向应用程序提供运算资源,应用程序之间共享系统内核和资源,但是彼此之间又互不可见。这意味着应用程序将不会再被直接安装到操作系统中,而是通过 Docker 运行在容器中。大大降低了操作系统、应用程序及运行环境之间的耦合度。相对于传统的应用程序部署部署方式而言,在NestOS 集群中部署应用程序更加灵活便捷,应用程序运行环境之间的干扰更少,而且操作系统自身的维护也更加容易。 +NestOS通过容器化 (containerized) 的运算环境向应用程序提供运算资源,应用程序之间共享系统内核和资源,但是彼此之间又互不可见。这意味着应用程序将不会再被直接安装到操作系统中,而是通过 容器引擎(Docker、Podman、iSulad等) 运行在容器中。大大降低了操作系统、应用程序及运行环境之间的耦合度。相对于传统的应用程序部署部署方式而言,在NestOS 集群中部署应用程序更加灵活便捷,应用程序运行环境之间的干扰更少,而且操作系统自身的维护也更加容易。 ## rpm-ostree ### 系统更新 -rpm-ostree是一种镜像/包混合系统,可以看成是rpm和ostree的合体。一方面它提供了基于rpm的软件包安装管理方式,另一方面它提供了基于ostree的操作系统更新升级。rpm-ostree将这两种操作都视为对操作系统的更新,每次对系统的更新都像rpm-ostree在提交“Transaction-事务”,从而确保更新全部成功或全部失败,允许在更新系统后回滚到更新前的状态。 +rpm-ostree是一种镜像/包混合系统,可以看成是rpm和ostree的合体。一方面它提供了基于rpm的软件包安装管理方式,另一方面它提供了基于ostree的操作系统更新升级。rpm-ostree将这两种操作都视为对操作系统的更新,每次对系统的更新都像rpm-ostree在提交“Transaction-事务”,从而确保更新全部成功或全部失败,并且允许在更新系统后回滚到更新前的状态。 -rpm-ostree在更新操作系统的时候会有2个bootable区域,分别为更新前和更新后的,对系统的更新升级只有在重启操作系统后才生效。如果软件安装或升级出现问题,通过rpm-ostree回滚会使nestos系统返回到先前的状态。我们可以查看nestos的“/ostree/”和“/boot/”目录,它们是ostree Repository环境并且可以观察到boot使用哪个ostree。 +rpm-ostree在更新操作系统的时候会有2个bootable区域,分别为主动分区和被动分区,对系统的更新升级在被动分区进行,在重启操作系统主动分区和被动分区转换后才生效。如果软件安装或升级出现问题,通过rpm-ostree会使NestOS回滚到先前的状态。NestOS的“/ostree/”和“/boot/”目录是ostree Repository环境,通过该目录可以查看当前boot使用的哪个ostree。 -### 文件系统 +### 只读文件系统 在rpm-ostree的文件系统布局中,只有/etc和/var是唯一可写的目录,/var中的任何数据不会被触及,而是在升级过程中共享。在系统升级的过程中采用新的默认值/etc,并将更改添加到顶部。这意味着升级将会接收/etc中新的默认文件,这是一个非常关键的特性。 -Ostree旨在可以并⾏安装多个独⽴操作系统的版本,ostree依赖于⼀个新的ostree ⽬录,该目录实际上可以并⾏安装在现有的操作系统或者是占据物理/root目录的发⾏版本中。每台客⼾机和每组部署上都存储在 /ostree/deploy/STATEROOT/CHECKSUM 上,而且还有⼀个ostree存储库存储在 /ostree/repo 中。每个部署主要由⼀组指向存储库的硬链接组成,这意味着每个版本都进⾏了重复数据的删除并且升级过程中只消耗了与新⽂件成⽐例的磁盘空间加上⼀些恒定的开销。 +在通用操作系统中,/var目录下的部分文件采用“/var to tmpfiles.d”的处理策略,即系统通过systemd-tmpfile-setup.service读取/usr/lib/tmpfiles.d/目录下的conf文件,完成/var目录下文件夹和空白文件的创建,/usr/lib/tmpfiles.d/目录下的conf文件全部由相关rpm包提供。在NestOS中,/var目录不涉及rpm-ostree的commit分层,rpm-ostree各个commit 分层都会共享一个/var目录,但是/var目录下的文件会与ostree事务更新模型冲突,在安装软件包时rpm-ostree会将该文件删除。/var目录下的内容完全依赖“/var to tmpfiles.d”来生成,因此NestOS的/usr/lib/tmpfiles.d/目录下,除了部分rpm提供出的conf外,还存在由rpm-ostree在安装XXX软件包时生成的pkg-XXX.conf文件(即使XXX已经提供了conf文件),该文件记录了XXX软件包提供的/var下的文件夹,不涉及文件(文件在rpm-ostree安装包时已经删除)。当用户需要对rpm包提供的/var下的文件夹进行操作时,如删除某文件夹,简单的使用rm命令只能暂时删除,当系统重启后,该文件夹依旧存在,只有修改pkg-XXX.conf文件才能完成永久删除。 -Ostree模型强调的是OS只读内容保存在 /usr 中,它附带了⽤于创建Linux只读安装以防⽌⽆意损坏的代码,对于给定的操作系统,每个部署之间都有⼀个 /var 共享的可供读写的⽬录。Ostree核⼼代码不触及该⽬录的内容,如何管理和升级状态取决于每个操作系统中的代码。 +ostree旨在可以并⾏安装多个独⽴操作系统的版本,ostree依赖于⼀个新的ostree ⽬录,该目录实际上可以并⾏安装在现有的操作系统或者是占据物理/root目录的发⾏版本中。每台客⼾机和每组部署上都存储在 /ostree/deploy/STATEROOT/CHECKSUM 上,而且还有⼀个ostree Repository存储在 /ostree/repo 中。每个部署主要由⼀组指向存储库的硬链接组成,这意味着每个版本都进⾏了重复数据的删除并且升级过程中只消耗了与新⽂件成⽐例的磁盘空间加上⼀些恒定的开销。 + +ostree模型强调的是OS只读内容保存在 /usr 中,它附带了⽤于创建Linux只读安装以防⽌⽆意损坏的代码,对于给定的操作系统,每个部署之间都有⼀个 /var 共享的可供读写的⽬录。ostree核⼼代码不触及该⽬录的内容,如何管理和升级状态取决于每个操作系统中的代码。 ### 系统扩展 -出于安全性和可维护性的考虑,nestos让基础镜像尽可能保持小巧和精简。但是在某些情况下,需要向基本操作系统本⾝添加软件,例如驱动软件,VPN等等,因为它们⽐较难容器化。这些包拓展了操作系统的功能,为此,rpm-ostree将这些包视为拓展,而不是仅仅在用户运⾏时提供。也就是说,目前nestos对于实际安装哪些包没有限制,默认情况下,软件包是从openEuler仓库下载的。 +出于安全性和可维护性的考虑,NestOS让基础镜像尽可能保持小巧和精简。但是在某些情况下,需要向基本操作系统本⾝添加软件,例如驱动软件,VPN等等,因为它们⽐较难容器化。这些包拓展了操作系统的功能,为此,rpm-ostree将这些包视为拓展,而不是仅仅在用户运⾏时提供。也就是说,目前NestOS对于实际安装哪些包没有限制,默认情况下,软件包是从openEuler仓库下载的。 要对软件包进⾏分层,需要重新编写⼀个systemd单元来执⾏rpm-ostree命令安装所需要的包,所做的更改应⽤于新部署,重新启动才能⽣效。 @@ -42,7 +44,7 @@ nestos-installer是⼀个帮助安装Nestos的程序,它可以执⾏以下操 ## zincati -Zincati是nestos⾃动更新的代理,它作为Cincinnati和rpm-ostree的客户端,负责⾃动更新/重启机器。Zincati有如下特点: +Zincati是NestOS⾃动更新的代理,它作为Cincinnati服务的客户端,负责监听NestOS版本变化并调用rpn-ostree进行⾃动更新。Zincati有如下特点: (1)⽀持⾃动更新代理,⽀持分阶段推出 @@ -62,7 +64,7 @@ Zincati是nestos⾃动更新的代理,它作为Cincinnati和rpm-ostree的客 ## 系统初始化(Ignition) -Ignition 是一个与分发无关的配置实用程序,不仅用于安装,还读取配置文件(JSON 格式)并根据该配置nestos系统。可配置的组件包括存储和文件系统、systemd单元和用户。 +Ignition 是一个与分发无关的配置实用程序,不仅用于安装,还读取配置文件(JSON 格式)并根据该配置NestOS。可配置的组件包括存储和文件系统、systemd单元和用户。 Ignition仅在系统第一次引导期间运行一次(在initramfs中)。因为 Ignition 在启动过程的早期运行,所以它可以在用户空间开始启动之前重新分区磁盘、格式化文件系统、创建用户和写入文件。 因此,systemd 服务在 systemd 启动时已经写入磁盘,从而加快了启动速度。 -- Gitee