2017年11月

它终于发生了。如今,全世界超算 500 强全部都运行着 Linux。

Linux 统治了超级计算。自 1998 年以来,这一天终于到来了,那时候 Linux 首次出现在 TOP 500 超级计算机榜单上。如今,全世界最快的 500 台超级计算机全部运行着 Linux

上以期榜单中最后的两台非 Linux 系统,是来自中国的一对运行着 AIX 的 IBM POWER 计算机,掉出了 2017 年 11 月超级计算机 500 强榜单

总体而言,现在中国引领着超级计算的竞赛,其拥有的 202 台已经超越美国的 144 台。中国的超级计算机的总体性能上也超越了美国。其超级计算机占据了 TOP500 指数的 35.4%,其后的美国占 29.6%。随着一个反科学政权掌管了政府,美利坚共和国如今只能看着它的技术领袖地位在持续下降。

在 1993 年 6 月首次编制超级计算机 500 强榜单的时候,Linux 只不过是个“玩具”而已。那时的它甚至还没有用“企鹅”作为它的吉祥物。不久之后,Linux 就开始进军超级计算机领域。

在 1993/1994 时,在 NASA 的 戈达德太空飞行中心 Goddard Space Flight Center ,Donald Becker 和 Thomas Sterling 设计了一个 货架产品 Commodity Off The Shelf (COTS)超级计算机:Beowulf。因为他们负担不起一台传统的超级计算机,所以他们构建了一个由 16 个 Intel 486 DX4 处理器的计算机集群,它通过以太网信道聚合互联。这台 Beowulf 超级计算机 当时一时成名。

到今天,Beowulf 的设计仍然是一个流行的、廉价的超级计算机设计方法。甚至,在最新的 TOP500 榜单上,全世界最快的 437 台计算机仍然采用受益于 Beowulf 的集群设计。

Linux 首次出现在 TOP500 上是 1998 年。在 Linux 领先之前,Unix 是超级计算机的最佳操作系统。自从 2003 年起,TOP500 中 Linux 已经占据了重要的地位。从 2004 年开始,Linux 已经完全领先于 UNIX 了。

Linux 基金会的报告指出,“Linux [成为] 推进研究和技术创新的计算能力突破的驱动力”。换句话说,Linux 在超级计算中占有重要地位,至少是部分重要地位。因为它正帮助研究人员突破计算能力的极限。

有两个原因导致这种情况:首先,全球的大部分顶级超级计算机都是为特定的研究任务去构建的,每台机器都是用于有唯一特性和需求优化的单独项目。为节省成本,不可能为每一个超算系统都去定制一个操作系统。然而,对于 Linux,研究团队可以很容易地修改和优化 Linux 的开源代码为的他们的一次性设计。

例如,最新的 Linux 4.14 允许超级计算机去使用 异构内存管理 (HMM)。这允许 GPU 和 CPU 去访问处理器的共享地址空间。确切地说,TOP500 中的 102 台使用了 GPU 加速/协处理器技术。这全是因 HHM 而使它们运行的更快。

并且,同样重要的是,正如 Linux 基金会指出的那样,“定制的、自我支持的 Linux 发行版的授权成本,无论你是使用 20 个节点,还是使用 2000 万个节点,都是一样的。” 因此,“利用巨大的 Linux 开源社区,项目可以获得免费的支持和开发者资源,以保持开发人员成本与其它操作系统相同或低于它们。”

现在,Linux 已经达到了超级计算之巅,我无法想像它会失去领导地位。即将到来的硬件革命,比如,量子计算,将会动摇 Linux 超级计算的地位。当然,Linux 也许仍然可以保持统治地位,因为,IBM 开发人员已经准备将 Linux 移植到量子计算机上


via: http://www.zdnet.com/article/linux-totally-dominates-supercomputers/

作者:Steven J. Vaughan-Nichols 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在你的下一个树莓派项目上安装和配置流行的开源数据库 Postgres 并去使用它。

 title=

保存你的项目或应用程序持续增加的数据,数据库是一种很好的方式。你可以在一个会话中将数据写入到数据库,并且在下次你需要查找的时候找到它。一个设计良好的数据库可以做到在巨大的数据集中高效地找到数据,只要告诉它你想去找什么,而不用去考虑它是如何查找的。为一个基本的 CRUD (创建、记录、更新、删除)应用程序安装一个数据库是非常简单的, 它是一个很通用的模式,并且也适用于很多项目。

为什么 PostgreSQL 一般被为 Postgres? 它被认为是功能和性能最好的开源数据库。如果你使用过 MySQL,它们是很相似的。但是,如果你希望使用它更高级的功能,你会发现优化 Postgres 是比较容易的。它便于安装、容易使用、方便安全, 而且在树莓派 3 上运行的非常好。

本教程介绍了怎么在一个树莓派上去安装 Postgres;创建一个表;写简单查询;在树莓派、PC,或者 Mac 上使用 pgAdmin 图形用户界面;从 Python 中与数据库交互。

你掌握了这些基础知识后,你可以让你的应用程序使用复合查询连接多个表,那个时候你需要考虑的是,怎么去使用主键或外键优化及最佳实践等等。

安装

一开始,你将需要去安装 Postgres 和一些其它的包。打开一个终端窗口并连接到因特网,然后运行以下命令:

sudo apt install postgresql libpq-dev postgresql-client 
postgresql-client-common -y

 title=

当安装完成后,切换到 Postgres 用户去配置数据库:

sudo su postgres

现在,你可以创建一个数据库用户。如果你创建了一个与你的 Unix 用户帐户相同名字的用户,那个用户将被自动授权访问该数据库。因此在本教程中,为简单起见,我们将假设你使用了默认用户 pi 。运行 createuser 命令以继续:

createuser pi -P --interactive

当得到提示时,输入一个密码 (并记住它), 选择 n 使它成为一个非超级用户(LCTT 译注:此处原文有误),接下来两个问题选择 y(LCTT 译注:分别允许创建数据库和其它用户)。

 title=

现在,使用 Postgres shell 连接到 Postgres 去创建一个测试数据库:

$ psql
> create database test;

按下 Ctrl+D 两次从 psql shell 和 postgres 用户中退出,再次以 pi 用户登入。你创建了一个名为 pi 的 Postgres 用户后,你可以从这里无需登录凭据即可访问 Postgres shell:

$ psql test

你现在已经连接到 "test" 数据库。这个数据库当前是空的,不包含任何表。你可以在 psql shell 里创建一个简单的表:

test=> create table people (name text, company text);

现在你可插入数据到表中:

test=> insert into people values ('Ben Nuttall', 'Raspberry Pi Foundation');

test=> insert into people values ('Rikki Endsley', 'Red Hat');

然后尝试进行查询:

test=> select * from people;

     name      |         company         
---------------+-------------------------
 Ben Nuttall   | Raspberry Pi Foundation
 Rikki Endsley | Red Hat
(2 rows)

 title=

test=> select name from people where company = 'Red Hat';

     name      | company 
---------------+---------
 Rikki Endsley | Red Hat
(1 row)

pgAdmin

如果希望使用一个图形工具去访问数据库,你可以使用它。 PgAdmin 是一个全功能的 PostgreSQL GUI,它允许你去创建和管理数据库和用户、创建和修改表、执行查询,和如同在电子表格一样熟悉的视图中浏览结果。psql 命令行工具可以很好地进行简单查询,并且你会发现很多高级用户一直在使用它,因为它的执行速度很快 (并且因为他们不需要借助 GUI),但是,一般用户学习和操作数据库,使用 pgAdmin 是一个更适合的方式。

关于 pgAdmin 可以做的其它事情:你可以用它在树莓派上直接连接数据库,或者用它在其它的电脑上远程连接到树莓派上的数据库。

如果你想去访问树莓派,你可以用 apt 去安装它:

sudo apt install pgadmin3

它是和基于 Debian 的系统如 Ubuntu 是完全相同的;如果你在其它发行版上安装,尝试与你的系统相关的等价的命令。 或者,如果你在 Windows 或 macOS 上,尝试从 pgAdmin.org 上下载 pgAdmin。注意,在 apt 上的可用版本是 pgAdmin3,而最新的版本 pgAdmin4,在其网站上可以找到。

在同一台树莓派上使用 pgAdmin 连接到你的数据库,从主菜单上简单地打开 pgAdmin3 ,点击 new connection 图标,然后完成注册,这时,你将需要一个名字(连接名,比如 test),改变用户为 “pi”,然后剩下的输入框留空 (或者如它们原本不动)。点击 OK,然后你在左侧的侧面版中将发现一个新的连接。

 title=

要从另外一台电脑上使用 pgAdmin 连接到你的树莓派数据库上,你首先需要编辑 PostgreSQL 配置允许远程连接:

1、 编辑 PostgreSQL 配置文件 /etc/postgresql/9.6/main/postgresql.conf ,取消 listen_addresses 行的注释,并把它的值从 localhost 改变成 *。然后保存并退出。

2、 编辑 pg\_hba 配置文件 /etc/postgresql/9.6/main/postgresql.conf,将 127.0.0.1/32 改变成 0.0.0.0/0 (对于IPv4)和将 ::1/128 改变成 ::/0 (对于 IPv6)。然后保存并退出。

3、 重启 PostgreSQL 服务: sudo service postgresql restart

注意,如果你使用一个旧的 Raspbian 镜像或其它发行版,版本号可能不一样。

 title=

做完这些之后,在其它的电脑上打开 pgAdmin 并创建一个新的连接。这时,需要提供一个连接名,输入树莓派的 IP 地址作为主机(这可以在任务栏的 WiFi 图标上悬停鼠标找到,或者在一个终端中输入 hostname -I 找到)。

 title=

不论你连接的是本地的还是远程的数据库,点击打开 Server Groups > Servers > test > Schemas > public > Tables,右键单击 people 表,然后选择 View Data > View top 100 Rows。你现在将看到你前面输入的数据。

 title=

你现在可以创建和修改数据库和表、管理用户,和使用 GUI 去写你自己的查询了。你可能会发现这种可视化方法比命令行更易于管理。

Python

要从一个 Python 脚本连接到你的数据库,你将需要 Psycopg2 这个 Python 包。你可以用 pip 来安装它:

sudo pip3 install psycopg2

现在打开一个 Python 编辑器写一些代码连接到你的数据库:

import psycopg2

conn = psycopg2.connect('dbname=test')
cur = conn.cursor()

cur.execute('select * from people')

results = cur.fetchall()

for result in results:
    print(result)

运行这个代码去看查询结果。注意,如果你连接的是远程数据库,在连接字符串中你将需要提供更多的凭据,比如,增加主机 IP、用户名,和数据库密码:

conn = psycopg2.connect('host=192.168.86.31 user=pi 
password=raspberry dbname=test')

你甚至可以创建一个函数去运行特定的查询:

def get_all_people():
    query = """
    SELECT
        *
    FROM
        people
    """
    cur.execute(query)
    return cur.fetchall()

和一个包含参数的查询:

def get_people_by_company(company):
    query = """
    SELECT
        *
    FROM
        people
    WHERE
        company = %s
    """
    values = (company, )
    cur.execute(query, values)
    return cur.fetchall()

或者甚至是一个增加记录的函数:

def add_person(name, company):
    query = """
    INSERT INTO
        people
    VALUES
        (%s, %s)
    """
    values = (name, company)
    cur.execute(query, values)

注意,这里使用了一个注入字符串到查询中的安全的方法, 你不希望被 小鲍勃的桌子 害死!

 title=

现在你知道了这些基础知识,如果你想去进一步掌握 Postgres ,查看在 Full Stack Python 上的文章。

(题图:树莓派基金会)


作者简介:

Ben Nuttall - 树莓派社区的管理者。除了它为树莓派基金会所做的工作之外 ,他也投入开源软件、数学、皮艇运动、GitHub、探险活动和 Futurama。在 Twitter @ben\_nuttall 上关注他。


via: https://opensource.com/article/17/10/set-postgres-database-your-raspberry-pi

作者:Ben Nuttall 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本文由高级咨询师薛亮据自由软件基金会(FSF)的英文原文翻译而成,这篇常见问题解答澄清了在使用 GNU 许可证中遇到许多问题,对于企业和软件开发者在实际应用许可证和解决许可证问题时具有很强的实践指导意义。

  1. 关于 GNU 项目、自由软件基金会(FSF)及其许可证的基本问题
  2. 对于 GNU 许可证的一般了解
  3. 在您的程序中使用 GNU 许可证
  4. 依据 GNU 许可证分发程序
  5. 在编写其他程序时采用依据 GNU 许可证发布的程序
  6. 将作品与依据 GNU 许可证发布的代码相结合
  7. 关于违反 GNU 许可证的问题

3、在您的程序中使用 GNU 许可证

3.1 如何从 (L)GPLv2 升级到 (L)GPLv3?

首先,在您的软件包中包含新版本的许可证。如果您在项目中使用 LGPL v3,请确保一同包含了 GPL v3 和 LGPL v3 的副本,因为 LGPL v3 现在被写成在 GPL v3 基础上的一系列附加许可。

其次,将所有现有的 v2 许可证 通知 notice (通常位于每个文件的顶部)替换为“如何使用 GNU 许可证”上新的推荐文本。它更加面向未来,因为它不再包括 FSF 的邮政地址。

当然,任何涉及软件包许可证的描述性的文本(如在 README中)也应该被适当更新。

3.2 您能一步一步地指导我如何将GPL应用到我的程序吗?

请参阅 GPL 说明书页面

3.3 为什么我要使用 GNU GPL,而不是其他自由软件许可证?(同 1.3)

使用 GNU GPL 将要求所有发布的改进版本都是自由软件。这意味着您可以避免与您自己作品的专有修改版本进行竞争的风险。不过,在某些特殊情况下,最好使用一个更宽松的许可证

3.4 为什么 GPL 要求程序的每个副本必须包含 GPL 许可证副本?(同 2.14)

作品包含许可证副本至关重要,因此获得程序副本的每个人都可以知道他们的权利是什么。

包括一个指向许可证的 URL,而不是将许可证本身包含在内,这是一种看起来很诱人的做法。但是您不能确定该 URL 在五年或十年后仍然有效。二十年后,我们今天所知道的 URL 们可能已不复存在。

不管网络将发生什么样的变化,确保拥有该程序副本的人员能够继续看到 GPL 许可证的唯一方法是,将许可证的副本包含在该程序中。

3.5 只需将 GNU GPL 的副本放在我的存储库中就可以了吗?

仅将 GNU GPL 的副本放在存储库中的文件中,并不能明确地声明可以依据 GNU GPL 使用同一存储库中的代码。如果没有这样的声明,并不能完全清楚地表明许可证中的权限真的可以适用于任何特定的源文件。一个明确的声明将消除所有的疑问。

文件仅包含许可证文本,而没有一个声明规定某些其他文件被该许可证覆盖,类似于文件包含一个其他任何地方都不会调用的子例程。但这种相似之处并不完美:律师和法院可能应用常识得出结论,因为您希望以 GPL 方式许可代码,所以您必定要将GNU GPL 的副本放在那里。或许律师和法院不会这样做。但为什么要留下不确定性呢?

每个源文件中都应该包括声明文本。只要能够伴随代码,程序的 README 文件中的清晰声明从法律上来说就足够了,但是它们很容易分离。所以,为什么要给您的代码许可证带来不确定性的风险呢?

这与 GNU GPL 的具体内容无关。对于任何自由许可证来说都是正确的。

3.6 为什么要在每个源文件中放置许可证 通知 notice

您应该在每个源文件的起始处放置通知,说明它所携带的许可证,以避免代码与其许可证被断开的风险。如果您存储库的 README 文件声明源文件遵循 GNU GPL,如果有人将该文件复制到另一个程序,会发生什么呢? 其他上下文可能无法表明该文件的许可证是什么。它似乎有一些其他许可证,或根本没有许可证(这将使代码变成非自由软件)。

在每个源文件的开始添加版权声明和许可证通知很容易,造成这种混乱的可能性不大。

这与 GNU GPL 的具体内容无关。对于任何自由许可证来说都是正确的。

3.7 如果作品不是很长,那该怎么办?(同 2.15)

如果整个软件包中只有很少的代码——我们使用的基准是不到 300 行,那么您可以使用一个宽松的许可证,而不是像 GNU GPL 这样的左版许可证(除非代码特别重要)。我们建议这种情况使用 Apache 许可证 2.0

3.8 为了节省空间,我是否可以省略 GPL 的引言部分,或者省略如何在自己的程序上使用 GPL 的 指导 instructions 部分吗?(同 2.21)

引言和指导是 GNU GPL 的组成部分,不能省略。事实上,GPL 是受版权保护的,其许可证规定只能逐字复制整个 GPL。(您可以使用法律条款制作另一个许可证,但该许可证不再是 GNU GPL。)

引言和指导部分共约 1000 字,不到 GPL 总文字数量的 1/5。除非软件包本身很小,否则引言和指导不会对软件包的大小产生大幅度的改变。在软件包很小的情况下,您可以使用一个简单的 全权 all-permissive 许可证,而不是 GNU GPL。

3.9 如何获得我的程序的版权,以便依据 GPL 发布?

根据 《伯尔尼公约》 Berne Convention ,所有书写成文的内容都将自动受版权保护。所以你没有必要做任何事情来“获得”你所写代码的版权——只要没有其他人声称拥有你的作品。

不过,在美国注册版权是一个很好的主意。这将给你在美国应对侵权者带来更多的影响力。

其他人可能声称拥有版权的情况是,如果您是雇员或学生;那么雇主或学校可能会声称你为他们做了工作,并且版权属于他们。他们是否存在有效的权利主张将取决于你所居住地方的法律,以及你的雇佣合同和你所做的工作。如果有任何疑问,最好咨询律师。

如果您认为雇主或学校可能会提出权利主张,您可以通过获得公司或学校适当授权的官员签署的版权免责声明来明确解决该问题。(您的直接上司或教授通常无权签署此免责声明。)

3.10 如果我的学校想将我自己的程序应用到学校的专有软件产品,我该怎么办?

现在许多大学试图通过限制他们所开发的知识和信息的使用来筹集资金,其实际上与商业业务有所不同。 (参见刊载于 2000 年 3 月 《大西洋月刊》 Atlantic Monthly 《受缚的大学》 The Kept University ,该文章对这个问题及其影响进行了一般性的讨论。)

如果您在某种程度上认为您的学校可能拒绝允许您的程序作为自由软件发布,最好尽早提出这个问题。程序越接近于有用的作品,行政部门越有动机从你手里拿回该程序,并在没有你的情况下完成它。在更早的阶段,你有更多的影响力。

所以我们建议你在程序只进行一半的时候接触他们,说:“如果你同意将它作为自由软件发布,我会完成它。”不要以为这是虚张声势。要取得胜利,你必须有勇气说:“我的程序如果不能成为自由软件,我宁愿不把它写出来。”

3.11 我想发布一个我依据 GNU GPL 编写的程序,但是我想在非自由程序中使用相同的代码。

发布一个非自由程序总是有道德上的污点,但从法律上来说没有任何障碍阻止你这样做。如果您是代码的版权所有者,您可以在不同时间以各种不同的非独占许可证发布。

3.12 依据 GPL 分发的程序的开发人员是否可以将其授权给另一方专用?

不可以,因为公众已经有权利使用遵循 GPL 的该程序,这个权利是不能撤销的。

3.13 美国政府可以依据 GNU GPL 发布一个程序吗?

如果这个程序是由美国联邦政府雇员在雇用过程中编写的,那么它是处于公有领域,这意味着它不受版权保护。由于GNU GPL是基于版权的许可证,所以这样的程序不能依据 GNU GPL 发布。(它仍然可以是自由软件,公有领域的程序是自由软件。)

不过,当美国联邦政府机构使用承包商来开发软件时,那就是不同的情况。合同可以要求承包商依据 GNU GPL 进行发布(GNU Ada 是以这种方式开发的)。或者合同可以将版权 分配 assign 给政府机构,然后政府机构可以依据 GNU GPL 发布该软件。

3.14 美国政府可否对遵循 GPL 的程序进行改进并发布?

可以。如果这些改进是由美国政府雇员在雇佣期间编写的,那么这些改进属于公有领域。不过,GNU GPL 仍然涵盖了整体的改进版本。在这种情况下没有问题。

如果美国政府使用承包商来完成这项工作,那么改进本身可以被 GPL 覆盖。

3.15 程序里为什么要说“GPL 的版本 3 或任何更新的版本”?

随着时间的推移,我们会不断更改 GPL——有时要澄清一下,有时允许以前不允许的某些用途,有时会收紧要求。(最后两次更改是在 2007 年和 1991 年。)当我们更新 GPL 时,在每个程序中使用这个“间接指针”可以让我们有可能针对整个 GNU 软件集合更改分发条款。

如果每个程序缺少间接指针,我们将被迫与许多版权持有者进行长时间的讨论,这在事实上是不可能实现的。在实践中,为 GNU 软件制定统一分发条款的机会将为零。

假设一个程序里说“GPL 的版本 3 或任何更新的版本”,并且一个新版本的 GPL 被发布。如果新的 GPL 版本提供了额外的许可,那么该权限将立即提供给程序的所有用户。但是,如果新的 GPL 版本要求更严格,则不会对使用当前版本的程序形成限制,因为该程序仍然可以依据 GPL 版本 3 进行使用。当程序里说“GPL 的版本 3 或任何更新的版本”,用户将被永远允许使用它,甚至可以依据 GPL 版本 3 的条款进行更改,即使在后续版本的 GPL 可用后也是如此。

如果GPL的新版本中更严格的要求不需要被现有软件遵守,那么它还有用吗?一旦 GPL 版本 4 可用,大多数遵循 GPL 的程序的开发人员将发布其程序的后续版本,阐明其采用“GPL 的版本 4 或任何更新的版本”。那么用户将不得不遵循 GPL 版本 4 中更严格的要求,以便使用程序的后续版本。

然而,开发人员没有义务这样做;如果这是他们的偏好,开发人员可以继续被允许使用以前版本的 GPL。

3.16 使用一个声明某个程序只能依据最新版本的 GNU GPL 进行使用的许可证是个好主意吗?

您不应该这样做,原因是它可能会导致未来某一天自动撤回用户以前拥有的一些权限。

假设一个程序是在 2000 年依据“最新的 GPL 版本”进行发布。当时,人们可以依据 GPL 版本 2 使用它。在 2007 年发布 GPL 版本 3 的那一天,每个人都将被迫不得不依据 GPL 版本 3 使用该程序。

有些用户甚至可能不知道 GPL 版本 3——但是他们将被要求使用它。他们可能会无意中违反该程序的许可证,只因为他们没有得到 GPL 版本 3发布的消息。这不是个对待别人的好方法。

除非因为违规,我们认为收回已经授予的权限是错误的做法。如果您的自由可以被撤销,那么这不是真正的自由。因此,如果您获得遵循某个版本许可证的某个版本程序的副本,则应始终具有该版本许可证授予的权限。依据“GPL 的版本 N 或任何更新的版本”进行发布维护了该原则。

3.17 有没有一些方法可以让使用我的程序的人们得到的输出物遵循 GPL?例如,如果我的程序用于开发硬件设计,我可以要求这些设计必须是自由的吗?

一般来说,这在法律上是不可能的;针对人们通过使用您的程序获取数据形成的输出物如何使用,版权法并没有赋予您任何发言权。如果用户使用您的程序输入或转换自己的数据,输出物的版权属于他,而不是您。更一般来说,当程序将其输入物转换成其他形式时,输出物的版权状态将继承其得以生成的输入物的版权状态。

所以您对输出物的使用拥有发言权的唯一方式是输出物的实质部分(或多或少)是从您程序的文本中复制出来。例如,如果我们在这种具体情况下没有例外,那么Bison的一部分输出物(参见问题 5.2)将被 GNU GPL 所涵盖。

所以,即使没有技术原因,您也可以人为制作一个程序,将某些文本复制到其输出物中。但是,如果复制的文本没有实际用途,用户可以简单地从输出物中删除该文本,并且仅使用其余的内容。那么他就不必满足重新分发所复制文本的条件。

3.18 手册为什么不使用 GPL 许可证?(同 1.7)

手册也可以使用 GPL 许可证,但对于手册来说,最好使用 GFDL(自由文本授权,GNU Free Documentation License)许可证。

GPL 是为软件程序设计的,它包含许多复杂的条款,对于程序来说至关重要;但对于图书或手册来说,这将是麻烦和不必要的。例如,任何人如果(以 GPL)出版纸质图书,就要么必须为每份印刷版本配置该图书的机器可读形式“源代码”,或提供书面文件,表明将稍后发送“源代码”。

同时,GFDL 中包含了帮助免费手册的出版商从销售副本中获利的条款,例如,出售封面文字。 背书 Endorsements 部分的特殊规则使得 GFDL 可以作为官方标准。修改版本的手册是被允许的,但该修改版本不能被标记为“该标准”。

使用 GFDL,我们允许对手册中涵盖其技术主题的文本进行修改。能够修改技术部分非常重要,因为修改程序的人理所当然地要去修改对应的文档。人们有这样做的自由,它是一种道德责任。我们的手册还包括阐述我们对自由软件政治立场的部分。我们将它们标记为 “不变量” invariant ,使得它们不被更改或删除。 GFDL 中也为这些“不变部分”做出了规定。

3.19 GPL 如何适用于字体?

字体许可是一个复杂的问题,需要认真考虑。以下许可证例外是试验性的,但被批准用于一般用途。我们欢迎关于这个问题的建议——请参阅这个解释性文章,并写邮件到 [email protected]

要使用此例外,请将该文本添加到软件包中的每个文件的许可证通知中(尽可能),在文本末尾说明该文件依据 GNU GPL 分发:

作为一个特殊的例外,如果您创建一个使用此字体的文档,并将该字体或该字体未更改的部分嵌入到文档中,则此字体本身不会导致生成的文档被 GNU 通用公共许可证 GNU General Public License 覆盖。然而,这个例外不会使文档可能被 GNU 通用公共许可证涵盖的任何其他原因无效。如果您修改此字体,您可以将此例外扩展到您的字体版本,但是您没有义务这样做。如果您不想这样做,请从您的版本中删除此例外声明。

3.20 我正在编写一个网站维护系统(有人称之为“内容管理系统”)或者是其他一些从模板生成网页的应用程序。我应该为这些模板使用什么许可证?

模板很小,不值得使用 左版 copyleft 来保护它们。在小作品上使用左版通常是无害的,但模板是一种特殊情况,因为它们与应用程序用户提供的数据结合使用,并且其组合被分发。因此,我们建议您以简单的许可条款许可您的模板。

一些模板调用 JavaScript 函数。由于 JavaScript 通常是不一般的作品,因此它值得用左版保护。由于模板与用户数据相结合,因此模板 + 用户数据 + JavaScript 可能被版权法看作是一个作品。需要在 JavaScript(受左版保护)和用户代码(通常遵循不兼容的条款)之间划清界限。

以下是执行此操作的 JavaScript 代码的一种例外:

作为 GPL 的一个特殊例外,仅对此代码进行函数调用并且为此目的通过引用将其包括在内的 HTML 文件,将被视为版权法意义下的单独作品。此外,此代码的版权所有者可以让您将该代码与依据 GNU LGPL 发布的自由软件库相结合。您可以按照此代码所遵循的 GNU GPL 条款以及此库所遵循的 LGPL 条款复制和分发这样一个系统。如果您修改此代码,则可以将此例外扩展到您的代码版本,但是您没有义务这样做。如果您不想这样做,请从您的版本中删除此例外声明。

3.21 我可以发布一个使用非自由工具开发的遵循 GPL 的程序吗?

您使用什么程序来编辑、编译、研究、记录源代码,通常对于该源代码的许可问题没有任何影响。

但是,如果将非自由库与源代码链接,那么它就是一个您需要进行处理的问题。它不阻碍依据GPL发布源代码,但是如果这些库不符合 “系统库” system library 例外情况,那么您应该附加一个明确的通知,允许您的程序与它们进行链接。有关使用 GPL 不兼容库的 FAQ 条目提供了如何执行此操作的更多信息。

3.22 我使用公钥加密来对我的代码进行签名,以确保其真实性。GPL v3 是否强制要求我发布我的私人签名密钥?

否。只有在您将遵循 GPL 的软件传递给用户产品之中,您才需要发布签名密钥,并且其硬件会在功能启动之前检查该软件来获得有效的密码签名。在这种具体情况下,您将被要求提供密钥给任何拥有该设备的人员,使其按照要求在设备上签名并安装修改后的软件,以便其运行。如果具体每个设备使用不同的密钥,那么您只需要为每个购买者提供相应的密钥。

3.23 GPL v3 是否要求投票人能够修改在投票机中运行的软件?(同 2.41)

不要求。企业分发包含遵循 GPL v3 软件的设备,最多只需要为拥有目标代码副本的人提供软件的源代码和安装信息。使用投票机(如同任何其他信息亭一样)的选民不能拥有它,甚至不能暂时拥有,所以选民也不能拥有二进制软件。

不过,请注意,投票是一个非常特殊的情况。仅仅因为计算机中的软件是自由软件,并不意味着您可以信任计算机,并进行投票。我们认为电脑不值得信任,不能被用作投票。投票应在纸上进行。

3.24 GPL v3 中的担保和免责声明似乎是依据美国法律的。我可以将自己的免责声明添加到我自己的代码中吗?

可以。GPL v3 第 7 节允许您添加自己的免责声明,具体来说是 7(a)。

3.25 我的程序具有非视觉性的交互式用户界面。如何遵守 GPL v3 中的 适当法律声明 Appropriate Legal Notices 要求?

所有您需要做的是确保适当法律声明对于您界面中的用户来说唾手可得。例如,如果您已经编写了一个音频接口,您可以包括一个大声朗读该声明的命令。

文件系统是一个在计算机上帮你去管理数据怎么去存储和检索的数据结构。文件系统也可以被视作是磁盘上的物理(或扩展)分区。如果它没有很好地被维护或定期监视,它可能在长期运行中出现各种各样的错误或损坏。

这里有几个可能导致文件系统出问题的因素:系统崩溃、硬件或软件故障、 有问题的驱动和程序、不正确的优化、大量的数据过载加上一些小故障。

这其中的任何一个问题都可以导致 Linux 不能顺利地挂载(或卸载)一个文件系统,从而导致系统故障。

扩展阅读:Linux 中判断文件系统类型(Ext2, Ext3 或 Ext4)的 7 种方法

另外,受损的文件系统运行在你的系统上可能导致操作系统中的组件或用户应用程序的运行时错误,它可能会进一步扩大到服务器数据的丢失。为避免文件系统错误或损坏,你需要去持续关注它的健康状况。

在这篇文章中,我们将介绍监视或维护一个 ext2、ext3 和 ext4 文件系统健康状况的工具。在这里描述的所有工具都需要 root 用户权限,因此,需要使用 sudo 命令去运行它们。

怎么去查看 EXT2/EXT3/EXT4 文件系统信息

dumpe2fs 是一个命令行工具,用于去转储 ext2/ext3/ext4 文件系统信息,这意味着它可以显示设备上文件系统的超级块和块组信息。

在运行 dumpe2fs 之前,先去运行 df -hT 命令,确保知道文件系统的设备名。

$ sudo dumpe2fs /dev/sda10

示例输出:

dumpe2fs 1.42.13 (17-May-2015)
Filesystem volume name:   
Last mounted on:          /
Filesystem UUID:          bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              21544960
Block count:              86154752
Reserved block count:     4307737
Free blocks:              22387732
Free inodes:              21026406
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1003
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sun Jul 31 16:19:36 2016
Last mount time:          Mon Nov  6 10:25:28 2017
Last write time:          Mon Nov  6 10:25:19 2017
Mount count:              432
Maximum mount count:      -1
Last checked:             Sun Jul 31 16:19:36 2016
Check interval:           0 ()
Lifetime writes:          2834 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       6947324
Default directory hash:   half_md4
Directory Hash Seed:      9da5dafb-bded-494d-ba7f-5c0ff3d9b805
Journal backup:           inode blocks
Journal features:         journal_incompat_revoke
Journal size:             128M
Journal length:           32768
Journal sequence:         0x00580f0c
Journal start:            12055

你可以通过 -b 选项来显示文件系统中的任何保留块,比如坏块(无输出说明没有坏块):

$ sudo dumpe2fs -b

检查 EXT2/EXT3/EXT4 文件系统的错误

e2fsck 用于去检查 ext2/ext3/ext4 文件系统的错误。fsck 可以检查并且可选地 修复 Linux 文件系统;它实际上是底层 Linux 提供的一系列文件系统检查器 (fsck.fstype,例如 fsck.ext3、fsck.sfx 等等) 的前端程序。

记住,在系统引导时,Linux 会为 /etc/fstab 配置文件中被标为“检查”的分区自动运行 e2fsck/fsck。而在一个文件系统没有被干净地卸载时,一般也会运行它。

注意:不要在已挂载的文件系统上运行 e2fsck 或 fsck,在你运行这些工具之前,首先要去卸载分区,如下所示。

$ sudo unmount /dev/sda10
$ sudo fsck /dev/sda10

此外,可以使用 -V 开关去启用详细输出,使用 -t 去指定文件系统类型,像这样:

$ sudo fsck -Vt ext4 /dev/sda10

调优 EXT2/EXT3/EXT4 文件系统

我们前面提到过,导致文件系统损坏的其中一个因素就是不正确的调优。你可以使用 tune2fs 实用程序去改变 ext2/ext3/ext4 文件系统的可调优参数,像下面讲的那样。

去查看文件系统的超级块,包括参数的当前值,使用 -l 选项,如下所示。

$ sudo tune2fs -l /dev/sda10

示例输出:

tune2fs 1.42.13 (17-May-2015)
Filesystem volume name:   
Last mounted on:          /
Filesystem UUID:          bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              21544960
Block count:              86154752
Reserved block count:     4307737
Free blocks:              22387732
Free inodes:              21026406
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1003
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sun Jul 31 16:19:36 2016
Last mount time:          Mon Nov  6 10:25:28 2017
Last write time:          Mon Nov  6 10:25:19 2017
Mount count:              432
Maximum mount count:      -1
Last checked:             Sun Jul 31 16:19:36 2016
Check interval:           0 ()
Lifetime writes:          2834 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       6947324
Default directory hash:   half_md4
Directory Hash Seed:      9da5dafb-bded-494d-ba7f-5c0ff3d9b805
Journal backup:           inode blocks

接下来,使用 -c 标识,你可以设置文件系统在挂载多少次后将进行 e2fsck 检查。下面这个命令指示系统每挂载 4 次之后,去对 /dev/sda10 运行 e2fsck

$ sudo tune2fs -c 4 /dev/sda10
tune2fs 1.42.13 (17-May-2015)
Setting maximal mount count to 4

你也可以使用 -i 选项定义两次文件系统检查的时间间隔。下列的命令在两次文件系统检查之间设置了一个 2 天的时间间隔。

$ sudo tune2fs  -i  2d  /dev/sda10
tune2fs 1.42.13 (17-May-2015)
Setting interval between checks to 172800 seconds

现在,如果你运行下面的命令,你可以看到对 /dev/sda10 已经设置了文件系统检查的时间间隔。

$ sudo tune2fs -l /dev/sda10

示例输出:

Filesystem created:       Sun Jul 31 16:19:36 2016
Last mount time:          Mon Nov  6 10:25:28 2017
Last write time:          Mon Nov  6 13:49:50 2017
Mount count:              432
Maximum mount count:      4
Last checked:             Sun Jul 31 16:19:36 2016
Check interval:           172800 (2 days)
Next check after:         Tue Aug  2 16:19:36 2016
Lifetime writes:          2834 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       6947324
Default directory hash:   half_md4
Directory Hash Seed:      9da5dafb-bded-494d-ba7f-5c0ff3d9b805
Journal backup:           inode blocks

要改变缺省的日志参数,可以使用 -J 选项。这个选项也有子选项: size=journal-size (设置日志的大小)、device=external-journal (指定日志存储的设备)和 location=journal-location (定义日志的位置)。

注意,这里一次仅可以为文件系统设置一个日志大小或设备选项:

$ sudo tune2fs -J size=4MB /dev/sda10

最后,同样重要的是,可以去使用 -L 选项设置文件系统的卷标,如下所示。

$ sudo tune2fs -L "ROOT" /dev/sda10

调试 EXT2/EXT3/EXT4 文件系统

debugfs 是一个简单的、交互式的、基于 ext2/ext3/ext4 文件系统的命令行调试器。它允许你去交互式地修改文件系统参数。输入 ? 查看子命令或请求。

$ sudo debugfs /dev/sda10

缺省情况下,文件系统将以只读模式打开,使用 -w 标识去以读写模式打开它。使用 -c 选项以灾难(catastrophic)模式打开它。

示例输出:

debugfs 1.42.13 (17-May-2015)
debugfs:  ?
Available debugfs requests:
show_debugfs_params, params
Show debugfs parameters
open_filesys, open       Open a filesystem
close_filesys, close     Close the filesystem
freefrag, e2freefrag     Report free space fragmentation
feature, features        Set/print superblock features
dirty_filesys, dirty     Mark the filesystem as dirty
init_filesys             Initialize a filesystem (DESTROYS DATA)
show_super_stats, stats  Show superblock statistics
ncheck                   Do inode->name translation
icheck                   Do block->inode translation
change_root_directory, chroot
....

要展示未使用空间的碎片,使用 freefrag 请求,像这样:

debugfs: freefrag

示例输出:

Device: /dev/sda10
Blocksize: 4096 bytes
Total blocks: 86154752
Free blocks: 22387732 (26.0%)
Min. free extent: 4 KB 
Max. free extent: 2064256 KB
Avg. free extent: 2664 KB
Num. free extent: 33625
HISTOGRAM OF FREE EXTENT SIZES:
Extent Size Range :  Free extents   Free Blocks  Percent
4K...    8K-  :          4883          4883    0.02%
8K...   16K-  :          4029          9357    0.04%
16K...   32K-  :          3172         15824    0.07%
32K...   64K-  :          2523         27916    0.12%
64K...  128K-  :          2041         45142    0.20%
128K...  256K-  :          2088         95442    0.43%
256K...  512K-  :          2462        218526    0.98%
512K... 1024K-  :          3175        571055    2.55%
1M...    2M-  :          4551       1609188    7.19%
2M...    4M-  :          2870       1942177    8.68%
4M...    8M-  :          1065       1448374    6.47%
8M...   16M-  :           364        891633    3.98%
16M...   32M-  :           194        984448    4.40%
32M...   64M-  :            86        873181    3.90%
64M...  128M-  :            77       1733629    7.74%
128M...  256M-  :            11        490445    2.19%
256M...  512M-  :            10        889448    3.97%
512M... 1024M-  :             2        343904    1.54%
1G...    2G-  :            22      10217801   45.64%
debugfs:  

通过去简单浏览它所提供的简要描述,你可以试试更多的请求,比如,创建或删除文件或目录,改变当前工作目录等等。要退出 debugfs,使用 q

现在就这些!我们收集了不同分类下的相关文章,你可以在里面找到对你有用的内容。

文件系统使用信息:

  1. 12 Useful “df” Commands to Check Disk Space in Linux
  2. Pydf an Alternative “df” Command to Check Disk Usage in Different Colours
  3. 10 Useful du (Disk Usage) Commands to Find Disk Usage of Files and Directories

检查磁盘或分区健康状况:

  1. 3 Useful GUI and Terminal Based Linux Disk Scanning Tools
  2. How to Check Bad Sectors or Bad Blocks on Hard Disk in Linux
  3. How to Repair and Defragment Linux System Partitions and Directories

维护一个健康的文件系统可以提升你的 Linux 系统的整体性能。如果你有任何问题或更多的想法,可以使用下面的评论去分享。


via: https://www.tecmint.com/manage-ext2-ext3-and-ext4-health-in-linux/

作者:Aaron Kili 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

开放容器计划(OCI)和原生云计算基金会(CNCF)的代表说,Kubernetes 和容器可以在降低程序员和系统管理成本的同时加速部署进程,从被忽视的 Kubernetes 特性(比如命令空间)开始,去利用 Kubernetes 和它的相关工具运行一个原生云架构。

Kubernetes 不止是一个云容器管理器。正如 Steve Pousty,他是 Red Hat 支持的 OpenShift 的首席开发者,在 Linux 基金会开源峰会上的讲演中解释的那样,Kubernetes 提供了一个 “使用容器进行原生云计算的通用操作平台”。

Pousty 的意思是什么?先让我们复习一下基础知识。

开源容器计划(OCI)和 原生云计算基金会 (CNCF)的执行董事 Chris Aniszczyk 的解释是,“原生云计算使用开源软件栈将应用程序部署为微服务,打包每一个部分到其容器中,并且动态地编排这些容器以优化资源使用”。Kubernetes 一直在关注着原生云计算的最新要素。这将最终将导致 IT 中很大的一部分发生转变,如从服务器到虚拟机,从 构建包 buildpack 到现在的 容器

会议主持人表示,数据中心的演变将节省相当可观的成本,部分原因是它需要更少的专职员工。例如,据 Aniszczyk 说,通过使用 Kubernetes,谷歌每 10000 台机器仅需要一个网站可靠性工程师(LCTT 译注:即 SRE)。

实际上,系统管理员可以利用新的 Kubernetes 相关的工具的优势,并了解那些被低估的功能。

构建一个原生云平台

Pousty 解释说,“对于 Red Hat 来说,Kubernetes 是云 Linux 的内核。它是每个人都可以构建于其上的基础设施”。

例如,假如你在一个容器镜像中有一个应用程序。你怎么知道它是安全的呢? Red Hat 和其它的公司使用 OpenSCAP,它是基于 安全内容自动化协议 Security Content Automation Protocol (SCAP)的,是使用标准化的方式表达和操作安全数据的一个规范。OpenSCAP 项目提供了一个开源的强化指南和配置基准。选择一个合适的安全策略,然后,使用 OpenSCAP 认可的安全工具去使某些由 Kubernetes 控制的容器中的程序遵守这些定制的安全标准。

Red Hat 将使用 原子扫描 Atomic Scan 来自动处理这个过程;它借助 OpenSCAP 提供者 provider 来扫描容器镜像中已知的安全漏洞和策略配置问题。原子扫描会以只读方式加载文件系统。这些通过扫描的容器,会在一个可写入的目录存放扫描器的输出。

Pousty 指出,这种方法有几个好处,主要是,“你可以扫描一个容器镜像而不用实际运行它”。因此,如果在容器中有糟糕的代码或有缺陷的安全策略,它不会影响到你的系统。

原子扫描比手动运行 OpenSCAP 快很多。 因为容器从启用到消毁可能就在几分钟或几小时内,原子扫描允许 Kubernetes 用户在(很快的)容器生命期间保持容器安全,而不是在更缓慢的系统管理时间跨度里进行。

关于工具

帮助系统管理员和 DevOps 管理大部分 Kubernetes 操作的另一个工具是 CRI-O。这是一个基于 OCI 实现的 Kubernetes 容器运行时接口。CRI-O 是一个守护进程, Kubernetes 可以用于运行存储在 Docker 仓库中的容器镜像,Dan Walsh 解释说,他是 Red Hat 的顾问工程师和 SELinux 项目领导者。它允许你直接从 Kubernetes 中启动容器镜像,而不用花费时间和 CPU 处理时间在 Docker 引擎 上启动。并且它的镜像格式是与容器无关的。

在 Kubernetes 中, kubelet 管理 pod(容器集群)。使用 CRI-O,Kubernetes 及其 kubelet 可以管理容器的整个生命周期。这个工具也不是和 Docker 镜像捆绑在一起的。你也可以使用新的 OCI 镜像格式CoreOS 的 rkt 容器镜像。

同时,这些工具正在成为一个 Kubernetes 栈:编排系统、容器运行时接口 (CRI)和 CRI-O。Kubernetes 首席工程师 Kelsey Hightower 说,“我们实际上不需要这么多的容器运行时——无论它是 Docker 还是 rkt。只需要给我们一个到内核的 API 就行”,这个结果是这些技术人员的承诺,是推动容器比以往更快发展的强大动力。

Kubernetes 也可以加速构建容器镜像。目前为止,有三种方法来构建容器。第一种方法是通过一个 Docker 或者 CoreOS 去构建容器。第二种方法是注入定制代码到一个预构建镜像中。最后一种方法是, 资产生成管道 Asset Generation Pipeline 使用容器去编译那些 资产 asset ,然后其被包含到使用 Docker 的 多阶段构建 Multi-Stage Build 所构建的随后镜像中。

现在,还有一个 Kubernetes 原生的方法:Red Hat 的 Buildah, 这是一个脚本化的 shell 工具 用于快速、高效地构建 OCI 兼容的镜像和容器。Buildah 降低了容器环境的学习曲线,简化了创建、构建和更新镜像的难度。Pousty 说。你可以使用它和 Kubernetes 一起基于应用程序的调用来自动创建和使用容器。Buildah 也更节省系统资源,因为它不需要容器运行时守护进程。

因此,比起真实地引导一个容器和在容器内按步骤操作,Pousty 说,“挂载该文件系统,就如同它是一个常规的文件系统一样做一些正常操作,并且在最后提交”。

这意味着你可以从一个仓库中拉取一个镜像,创建它所匹配的容器,并且优化它。然后,你可以使用 Kubernetes 中的 Buildah 在你需要时去创建一个新的运行镜像。最终结果是,他说,运行 Kubernetes 管理的容器化应用程序比以往速度更快,需要的资源更少。

你所不知道的 Kubernetes 拥有的特性

你不需要在其它地方寻找工具。Kubernetes 有几个被低估的特性。

根据谷歌云全球产品经理 Allan Naim 的说法,其中一个是 Kubernetes 命名空间。Naim 在开源峰会上谈及 “Kubernetes 最佳实践”,他说,“很少有人使用命名空间,这是一个失误。”

“命名空间是将一个单个的 Kubernetes 集群分成多个虚拟集群的方法”,Naim 说。例如,“你可以认为命名空间就是 姓氏 family name ”,因此,假如说 “Simth” 用来标识一个家族,如果有个成员 Steve Smith,他的名字就是 “Steve”,但是,家族范围之外的,它就是 “Steve Smith” 或称 “来自 Chicago 的 Steve Smith”。

严格来说,“命名空间是一个逻辑分区技术,它允许一个 Kubernetes 集群被多个用户、用户团队或者一个用户的多个不能混淆的应用程序所使用。Naim 解释说,“每个用户、用户团队、或者应用程序都可以存在于它的命名空间中,与集群中的其他用户是隔离的,并且可以像你是这个集群的唯一用户一样操作它。”

Practically 说,你可以使用命名空间去构建一个企业的多个业务/技术的实体进入 Kubernetes。例如,云架构可以通过映射产品、地点、团队和成本中心为命名空间,从而定义公司的命名空间策略。

Naim 建议的另外的方法是,去使用命名空间将软件开发 流程 pipeline 划分到分离的命名空间中,如测试、质量保证、 预演 staging 和成品等常见阶段。或者命名空间也可以用于管理单独的客户。例如,你可以为每个客户、客户项目、或者客户业务单元去创建一个单独的命名空间。它可以更容易地区分项目,避免重用相同名字的资源。

然而,Kubernetes 现在还没有提供一个跨命名空间访问的控制机制。因此,Naim 建议你不要使用这种方法去对外公开程序。还要注意的是,命名空间也不是一个管理的“万能药”。例如,你不能将命名空间嵌套在另一个命名空间中。另外,也没有跨命名空间的强制安全机制。

尽管如此,小心地使用命名空间,还是很有用的。

以人为中心的建议

从谈论较深奥的技术换到项目管理。Pousty 建议,在转移到原生云和微服务架构时,在你的团队中要有一个微服务操作人员。“如果你去做微服务,你的团队最终做的就是 Ops-y。并且,不去使用已经知道这种操作的人是愚蠢的行为”,他说。“你需要一个正确的团队核心能力。我不想开发人员重新打造运维的轮子”。

而是,将你的工作流彻底地改造成一个能够使用容器和云的过程,对此,Kubernetes 是很适用的。

使用 Kubernetes 的原生云计算:领导者的课程

  • 迅速扩大的原生云生态系统。寻找可以扩展你使用容器的方法的工具。
  • 探索鲜为人知的 Kubernetes 特性,如命名空间。它们可以改善你的组织和自动化程度。
  • 确保部署到容器的开发团队有一个 Ops 人员参与。否则,冲突将不可避免。

作者简介:

Steven J. Vaughan-Nichols, Vaughan-Nichols & Associates 的 CEO

Steven J. Vaughan-Nichols,即 sjvn,是一个技术方面的作家,从 CP/M-80 还是前沿技术、PC 操作系统、300bps 是非常快的因特网连接、WordStar 是最先进的文字处理程序的那个时候开始,一直从事于商业技术的写作,而且喜欢它。他的作品已经发布在了从高科技出版物(IEEE Computer、ACM Network、 Byte)到商业出版物(eWEEK、 InformationWeek、ZDNet),从大众科技(Computer Shopper、PC Magazine、PC World)再到主流出版商(Washington Post、San Francisco Chronicle、BusinessWeek) 等媒体之上。


via: https://insights.hpe.com/articles/how-to-implement-cloud-native-computing-with-kubernetes-1710.html

作者:Steven J. Vaughan-Nichols 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

摆脱了 Xen,新的 C5 实例和未来的虚拟机将采用“核心 KVM 技术”

AWS 透露说它已经创建了一个基于 KVM 的新的 管理程序 hypervisor ,而不是多年来依赖的 Xen 管理程序。

新的虚拟机管理程序披露在 EC2 新实例类型的新闻脚注里,新实例类型被称为 “C5”,由英特尔的 Skylake Xeon 提供支持。AWS 关于新实例的 FAQ 提及“C5 实例使用新的基于核心 KVM 技术的 EC2 虚拟机管理程序”。

这是爆炸性的新闻,因为 AWS 长期以来一直支持 Xen 管理程序。Xen 项目从最强大的公共云使用其开源软件的这个事实中吸取了力量。Citrix 将其大部分 Xen 服务器运行了 AWS 的管理程序的闭源版本。

更有趣的是,AWS 新闻中说:“未来,我们将使用这个虚拟机管理程序为其他实例类型提供动力。” 这个互联网巨头的文章中计划在“一系列 AWS re:Invent 会议中分享更多的技术细节”。

这听上去和很像 AWS 要放弃 Xen。

新的管理程序还有很长的路要走,这解释了为什么 AWS 是最后一个运行 Intel 新的 Skylake Xeon CPU 的大型云服务商,因为 AWS 还透露了新的 C5 实例运行在它所描述的“定制处理器上,针对 EC2 进行了优化。”

Intel 和 AWS 都表示这是一款定制的 3.0 GHz Xeon Platinum 8000 系列处理器。Chipzilla 提供了一些该 CPU 的新闻发布级别的细节,称它与 AWS 合作开发了“使用最新版本的 Intel 数学核心库优化的 AI/深度学习引擎”,以及“ MXNet 和其他深度学习框架为在 Amazon EC2 C5 实例上运行进行了高度优化。”

Intel 之前定制了 Xeons,将其提供给 Oracle 等等。AWS 大量购买 CPU,所以英特尔再次这样做并不意外。

迁移到 KVM 更令人惊讶,但是 AWS 可以根据需要来调整云服务以获得最佳性能。如果这意味着构建一个虚拟机管理程序,并确保它使用自定义的 Xeon,那就这样吧。

不管它在三周内发布了什么,AWS 现在都在说 C5 实例和它们的新虚拟机管理程序有更高的吞吐量,新的虚拟机在连接到弹性块存储 (EBS) 的网络和带宽都超过了之前的最佳记录。

以下是 AWS 在 FAQ 中的说明:

随着 C5 实例的推出,Amazon EC2 的新管理程序是一个主要为 C5 实例提供 CPU 和内存隔离的组件。VPC 网络和 EBS 存储资源是由所有当前 EC2 实例家族的一部分的专用硬件组件实现的。

它基于核心的 Linux 内核虚拟机(KVM)技术,但不包括通用的操作系统组件。

换句话说,网络和存储在其他地方完成,而不是集中在隔离 CPU 和内存资源的管理程序上:

新的 EC2 虚拟机管理程序通过删除主机系统软件组件,为 EC2 虚拟化实例提供一致的性能和增长的计算和内存资源。该硬件使新的虚拟机管理程序非常小,并且对用于网络和存储的数据处理任务没有影响。

最终,所有新实例都将使用新的 EC2 虚拟机管理程序,但是在近期内,根据平台的需求,一些新的实例类型将使用 Xen。

运行在新 EC2 虚拟机管理程序上的实例最多支持 27 个用于 EBS 卷和 VPC ENI 的附加 PCI 设备。每个 EBS 卷或 VPC ENI 使用一个 PCI 设备。例如,如果将 3 个附加网络接口连接到使用新 EC2 虚拟机管理程序的实例,则最多可以为该实例连接 24 个 EBS 卷。

所有面向公众的与运行新的 EC2 管理程序的 EC2 交互 API 都保持不变。例如,DescribeInstances 响应的 “hypervisor” 字段将继续为所有 EC2 实例报告 “xen”,即使是在新的管理程序下运行的实例也是如此。这个字段可能会在未来版本的 EC2 API 中删除。

你应该查看 FAQ 以了解 AWS 转移到其新虚拟机管理程序的全部影响。以下是新的基于 KVM 的 C5 实例的统计数据:

实例名vCPURAM(GiB)EBS*带宽网络带宽
c5.large24最高 2.25 Gbps最高 10 Gbps
c5.xlarge48最高 2.25 Gbps最高 10 Gbps
c5.2xlarge816最高 2.25 Gbps最高 10 Gbps
c5.4xlarge16322.25 Gbps最高 10 Gbps
c5.9xlarge36724.5 Gbps10 Gbps
c5.18xlarge721449 Gbps25 Gbps

每个 vCPU 都是 Amazon 购买的物理 CPU 上的一个线程。

现在,在 AWS 的美国东部、美国西部(俄勒冈州)和欧盟地区,可以使用 C5 实例作为按需或点播服务器。该公司承诺其他地区将尽快提供。


via: https://www.theregister.co.uk/2017/11/07/aws_writes_new_kvm_based_hypervisor_to_make_its_cloud_go_faster/

作者:Simon Sharwood 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出