Product SiteDocumentation Site

2. Fedora 针对系统管理员所做的变更

2.1. 安装

2.1.1. Anaconda 中提供 LVM Thin Provisioning(LVM 自动精简配置)支持

Fedora 安装程序可支持在图形界面和自动化的 kickstart 安装过程中,创建精简配置的 LVM 卷。此变化包括了新的自动分区变量,以及在自定义分区中创建精简卷的新选项。

2.1.2. 不分版本号的文档目录

每个软件包的文档会安装到不分版本的 /usr/share/doc/packagename 目录下。之前的目录名包含软件名以及软件包版本号。

2.2. 安全

2.2.1. FreeIPA 增加过渡性信任支持

FreeIPA 3.3.2 现可支持包含多个域的复杂 Active Directory 林。不同 AD 域的用户均可访问 FreeIPA 上的资源。FreeIPA 管理员可选择性地阻止每个 AD 域的访问权限。

2.2.2. SSSD 为 CIFS 共享增加了 ID 映射

Fedora 20 的 System Security Services Daemon 支持在 Windows SID 和 POSIX ID 间建立映射。在网络中使用 SSSD 的管理员可使用两个新工具来建立访问控制,它们是 setcifsaclgetcifsacl
更多信息可查阅位于 https://fedorahosted.org/sssd/wiki/DesignDocs/IntegrateSSSDWithCIFSClient 的上游设计文档,以及 setcifsaclgetcifsacl 及其它 SSSD 相关软件包的 man 手册页。

2.2.3. 共享的系统认证工具

Fedora 的共享系统认证 (Shared System Certificate) 功能随着本次发行版中 p11-kit-trust 的加入得到了加强。该软件包允许对信任的锚和黑名单密钥以及证书进行修改。只需一条简单的命令,管理员就可对系统的证书数据库进行修改,从而无需单独向特定目录增加文件并运行特定的命令。该工具会对系统共享认证的功能进行持续开发。

2.3. 文件系统

2.3.1. 用于块设备的 SSD 缓存

Fedora 20 在将固态硬盘 (SSD)用于机械硬盘 (HDD) 高速、透明缓存方面提供了实验性支持。SSD 所缓冲的块设备上能同时提供 SSD 的速度和 HDD 的容量。传统分区和LVM分区模式都能够从此功能中受益。

做备份!

在做底层更改时,记得要经常备份您的数据,比如迁移至 bcache 设备。直到像 blocks 这样的工具打包进 Fedora 之前,我们一直建议用户通过创建空白的 bcache 设备来实现 bcache,然后将最新的备份还原到他们的文件系统中。

2.4. 虚拟化

2.4.1. x86 主机上的 ARM 模拟器

为了让运行于 x86 主机上,使用标准 libvirt 工具,包括 virshvirt-managervirt-install 的 ARM 虚拟机能够运行更顺畅,我们做出了很多更改。qemu 拥有一个运行的不错的 ARM 模拟器,它还被积极的用于 Fedora ARM 的工作中。然而 libvirtvirt-manager 目前在运行 qemu-system-arm 虚拟机时仍有些问题,这主要是生成的命令行中编码的 x86 假设导致 qemu-system-arm 无法启动造成的。已经有更正用于解决该问题。更多信息可访问 https://fedoraproject.org/wiki/Changes/Virt_ARM_on_x86

2.4.2. Libvirt 客户端访问控制

libvirt 客户端允许设置适用于所有被管控对象和 API 操作的权限规则,从而使得所有的客户端连接受限于最小的规则与特权集合。您可以指派三个级别的访问控制。
未验证 (Unauthenticated) 访问最初会用于所有连接。该状态可允许进行为了完成验证而需要的所有 API 操作。成功验证后,可分配两个状态级别:非受限 (Unrestricted) ,可访问所有 API 操作,受限 (Restricted),仅允许只读访问。
系统管理员可对已验证的连接设置权限规则。libvirt 中的每一个 API 调用都会有一组权限,它们可针对正在使用的对象进行验证。例如,用户 A 想要在域对象中更改一个参数。当用户尝试保存更改时,virDomainSetSchedulerParametersFlags 方法会检测客户端是否对域对象有写的权限。这同样也可处理其它的检测和权限设置。此外也可以使用筛选功能,以便查看哪一个客户端对哪一个对象有权限,使得权限管理更加顺畅。有关 polkit 访问控制的文档可访问 http://libvirt.org/aclpolkit.html
libvirtd.conf 配置文件负责设置访问权限。它使用 access_drivers 参数来启用该操作。要注意的是,如果不只一个访问驱动 (access driver) 被请求,则所有请求都要成功才能获得权限。

2.4.3. Virt-manager 快照

Virtual Machine Manager 或者 virt-manager,可以方便管理和监控 KVM 虚拟机的快照。注意 virt-manager 在对虚拟机进行快照时会暂停虚拟机几秒钟。更多信息请看这里:
http://fedoraproject.org/wiki/Changes/Virt_Manager_Snapshots
http://fedoraproject.org/wiki/Features/Virt_Live_Snapshots
http://libvirt.org/formatsnapshot.html
man 1 virsh 中的快照 (Snapshot) 一节
http://fedoraproject.org/wiki/QA:Testcase_Virt_Snapshot_UI

2.4.4. Ryu 软件定义网络

Fedora 20 集成了 Ryu,为 OpenStack 虚拟化提供有效的软件定义网络。作为 OpenFlow 控制器的一个构建模块,Ryu 为 OpenStack 提供二层的网络隔离。

2.5. 数据库服务器

2.5.1. MongoDB

MongoDB 已经升级至版本 2.4,添加了全文搜索,支持更多的地理空间索引,并增强了安全性。获取更多关于该版本的信息请查阅其发行注记 http://docs.mongodb.org/manual/release-notes/2.4/

2.5.2. Hadoop

Fedora 20 提供了蒸蒸日上的 Hadoop 平台的核心部分以及很多相关软件包。有关 Fedora 中 Hadoop 的详细评论请访问:https://fedoraproject.org/wiki/Changes/Hadoop
Hadoop 平台的打包工作是 Fedora 大数据特别兴趣小组 (Big Data SIG) 最新的成果。有关该兴趣小组的信息可访问 https://fedoraproject.org/wiki/SIGs/bigdata,这是您使用和参与其中的入口。

2.6. 邮件服务器

2.6.1. 不再默认安装 sendmail

Fedora 20 默认不再提供邮件传送服务。虽然上一版本的 Fedora 提供了 sendmail,但不经过手动配置,其功能是有限的。

2.7. Samba

2.7.1. SSSD 为 CIFS 共享增加了 ID 映射

有关此功能的信息可阅读安全性部分。

2.8. 系统守护进程

2.8.1. 不再默认安装 syslog

syslog 在默认的安装不再提供。journald 日志记录可用于多数场合,而且它还优于 syslogd
习惯于通过 /var/log/messages 查看系统日志的用户应改为使用 journalctl
journalctl 命令实例
new journalctl旧 messages
journalctlless /var/log/messages
journalctl -ftail -f /var/log/messages
journalctl --unit named.servicegrep named /var/log/messages
journalctl -b显示本次启动的日志,没有简单的等价命令。

2.8.2. systemd

2.8.2.1. 新单元类型:Scope
Systemd 加入两个新单元:scopeslice
scope 单元由 systemd 在已有进程外自动创建。通过将某个进程和其子进程分组,scope 单元可用来组织进程,应用资源单元,或者杀死进程组。用户会话就是一个进程都包含在单个 scope 单元中的实例。
slice 单元用于将管理进程的单元分组成层级,层级可允许控制分配给 slice 的资源。默认的 slice 有用于虚拟机及容器 (container) 的 machine.slice;用于系统服务的 system.slice;用于用户会话的 user.slice。这些默认 slice 是自动进行填充的。
实例单元 (Instance units),如 getty@.service 都是根据需求使用配置文件中定义的模版生成的。每个模版类型都会获得一个系统 slice (system slice) 的 subslice,并且实例 (instances) 都会包含在那个 slice 中。
分配给 slice 的 scope 和服务单元都是控制组树下该 slice 的节点的子代。Slice 的名称描述了它相对于根 slice 的位置。以下输出显示了 user-1000.slice 如何是 user.slice 的子代,而后者又是根 slice - . 的子代。每个会话会限制在那个用户 slice 内的 scope 单元中。
	    systemctl status user.slice

  Loaded: loaded (/usr/lib/systemd/system/user.slice; static)
  Active: active since Sun 2013-09-08 01:23:40 MDT; 18h ago
    Docs: man:systemd.special(7)
  CGroup: /user.slice
          ├─user-1000.slice
          │ ├─session-21.scope
          │ │ ├─9226 sshd: pete [priv]
          │ │ ├─9229 sshd: pete@pts/4
          │ │ ├─9230 -bash
          │ │ ├─9262 sudo su -
          │ │ ├─9270 su -
          │ │ ├─9271 -bash
          │ │ └─9509 screen -R
          │ ├─session-18.scope
          │ │ ├─ 7939 sshd: pete [priv]
          │ │ ├─ 7942 sshd: pete@pts/0
          │ │ ├─ 7943 -bash
          │ │ ├─ 7982 sudo su -
          │ │ ├─ 7988 su -
          │ │ ├─ 7989 -bash
          │ │ ├─ 8206 SCREEN
          │ │ ├─ 8207 /bin/bash
          │ │ ├─ 8237 /bin/bash
          │ │ ├─ 8486 less NEWS
          │ │ ├─ 8489 /bin/bash
          │ │ └─10637 systemctl status user.slice
          ## truncated ##

通过在服务的配置文件中使用 Slice=slicename,可将服务可添加到 slice。有关允许在 slice 或服务单元中进行资源限制的参数介绍,可参考 man systemd.directives。同时可参考 man systemd.sliceman systemd.cgroup
2.8.2.2. 用于 TrueCrypt 的 systemd-cryptsetup
通过 systemd-cryptsetup 的支持,Fedora 中对 TrueCrypt 的支持得到扩展,可允许在引导过程中进行简单的验证。
2.8.2.3. 使用 systemctl 按单元状态进行过滤
systemctl 支持按负载状态过滤单元列表输出。--state 选项可接受任意值或以逗号分隔的 LOADSUBACTIVE 状态值。例如:
	   systemctl --state failed 

2.8.3. journald

2.8.3.1. 查看某次特定引导过程的日志
journalctl 可用于查看某次特定引导过程的日志。例如可查看当前引导过程的日志。
	  journalctl -b
或查看上一次引导时的日志:
	  journalctl -b -1
除了使用相对引导顺序,journald 分配了一个 128 位的引导 ID 用于命令的引用。例如:
	  journalctl -b 38fd9c3303574ed38e822233457f6b77
2.8.3.2. 使用指针 (cursors) 引用日志
journalctl 可通过一个称为指针 的记录识别码引用日志的内容。与 git hash 类似,每个指针只会识别日志中的一个点。
如果在 journalctl 查询中添加 --show-cursor 选项,则在输出的最后一行会包括指针值:
	  journalctl -b -u network --show-cursor --since 15:00
	  Sep 08 15:37:59 localhost.localdomain network[4074]: [FAILED]
	  Sep 08 15:37:59 localhost.localdomain systemd[1]: network.service: control process exited, code=exited status=1
	  Sep 08 15:37:59 localhost.localdomain systemd[1]: Failed to start LSB: Bring up/down networking.
	  Sep 08 15:37:59 localhost.localdomain systemd[1]: Unit network.service entered failed state.
	  -- cursor: s=13497722134642a2ac1544bada0c8836;i=1120d;b=8491c05dabd3444ca122e7069b5de0a9;m=db2118a46;t=4e5e7d81c7402;x=d177768ac95df831
指针可以用来在更宽泛的查询中标识出日志中那一点以提供上下文:
	  journalctl -c "s=13497722134642a2ac1544bada0c8836;i=1120d;b=8491c05dabd3444ca122e7069b5de0a9;m=db2118a46;t=4e5e7d81c7402;x=d177768ac95df831"
解析 journalctl 输出的脚本可将指针值储存并在脚本下次运行时,从上次停止的地方继续:
	  journalctl --after-cursor "s=13497722134642a2ac1544bada0c8836;i=1120d;b=8491c05dabd3444ca122e7069b5de0a9;m=db2118a46;t=4e5e7d81c7402;x=d177768ac95df831"