ZFS
ZFS 文件系统是 FreeBSD 上的一等公民。这不仅意味着可以在 ZFS 上安装根目录,安装程序也支持这一点,而且还意味着很多基础系统工具都已经紧密地集成或构建了对 ZFS 的支持。在 FreeBSD 上运行 ZFS 和在 Linux 上运行 ZFS 是不同的。在 FreeBSD 上,你会得到更多的工具,可以用来研究 ZFS 的性能问题或其他相关问题。
ZFS 的一些特点是(摘自维基百科)。
设计用于长期的数据存储,无限扩展的数据存储大小,零数据丢失,高配置性。
对所有数据和元数据进行分层校验和,确保整个存储系统在使用时可以进行验证,并确认是否正确存储,如果损坏则进行补救。校验和存储的是块的父块,而不是块本身。这与许多文件系统形成鲜明对比,在这些系统中,校验和(如果持有)与数据一起存储,因此,如果数据丢失或损坏,校验和也可能丢失或不正确。
可以存储用户指定数量的数据或元数据副本,或选定的数据类型,以提高重要文件和结构的数据损坏后的恢复能力。
在某些情况下,在发生错误或不一致的情况下,自动回滚最近对文件系统和数据的更改。
当检测到数据不一致和写入失败时,对于数据能够重建的所有错误,自动和(通常)无声地自愈。数据可以通过以下方式重建:存储在每个块的父块中的错误检测和校正校验和;磁盘上保存的多个数据副本(包括校验和);在 SLOG ( ZIL )上记录的应该发生但没有发生的写入意图(断电后); RAID/RAIDZ 磁盘和卷的奇偶校验数据;镜像磁盘和卷的数据副本。
标准 RAID 级别和额外的 ZFS RAID 布局("RAIDZ")的本地处理。为了提高效率,RAIDZ 级别只在所需的磁盘上进行数据剥离(许多 RAID 系统在所有设备上不加区分地进行剥离),而校验和允许重建不一致或损坏的数据,以最小化有缺陷的块。
原生处理分层存储和缓存设备,这通常是一个与卷相关的任务。因为 ZFS 也了解文件系统,所以它可以利用文件相关的知识来告知、整合和优化其分层存储处理,这是单独的设备无法做到的。
对快照和备份 /复制的本地处理,可以通过整合卷和文件处理来提高效率。相关工具提供的水平较低,需要外部脚本和软件才能利用。
原生的数据压缩和重复数据删除,不过后者主要在 RAM 中处理,且对内存有一定的消耗。
高效重建 RAID 阵列--RAID 控制器经常需要重建整个磁盘,但 ZFS 可以结合磁盘和文件知识,将任何重建限制在实际丢失或损坏的数据上,大大加快了重建速度。
不受 RAID 硬件变化的影响,而这些变化会影响许多其他系统。在许多系统中,如果自带的 RAID 硬件(如 RAID 卡)发生故障,或者数据被移动到另一个 RAID 系统中,文件系统将缺少原 RAID 硬件上的信息,而这些信息是管理 RAID 阵列上的数据所需要的。这可能会导致数据的完全丢失,除非能够获得接近相同的硬件并作为 "垫脚石"。由于 ZFS 自己管理 RAID,所以 ZFS 池可以迁移到其他硬件上,或者重新安装操作系统,RAIDZ 结构和数据将再次被 ZFS 识别并立即访问。
能够识别出本来可以在缓存中找到但最近反而被丢弃的数据,这使得 ZFS 可以根据以后的使用情况重新评估其缓存决策,有利于实现非常高的缓存命中率( ZFS 缓存命中率通常超过 80%)。
对于那些原本会造成数据处理延迟的数据,可以使用替代的缓存策略。例如,能够减慢存储系统速度的同步写入可以通过写入一个快速的独立缓存设备,即 SLOG (有时称为 ZIL--ZFS 意图日志)来转换为异步写入。
高度可调性--许多内部参数可以被配置为最佳功能。
可以用于高可用性集群和计算,尽管不是完全为这个用途设计的。
当然,当你在 Linux 上使用 ZFS 运行时,你也能获得所有这些功能。然而,这其中有一个很大的区别,因为没有任何一个 Linux 发行版甚至接近 FreeBSD 与 ZFS 的集成程度。

启动环境
由于与 ZFS 的紧密集成,FreeBSD 也支持引导环境。通过启动环境,您可以安装多个版本的核心操作系统,并选择其中的一个来启动。因此,启动环境是一个可启动的系统的克隆或快照。有了启动环境,你可以对系统进行防弹升级或更改,你不必担心破坏任何东西,因为你总是可以回滚。
这也意味着您可以在新的 ZFS 引导环境中更新 FreeBSD 系统,而无需接触正在运行的系统。您也可以在 FreeBSD Jail 中进行升级和测试结果。您甚至可以将 ZFS 引导环境复制或移动到另一台机器上。
FreeBSD 的 bectl 工具可以让您轻松管理启动环境。

BSD 启动
  FreeBSD 使用传统的 BSD 风格的 init 。
  在 BSD 风格的 init 中,没有运行级别,也不存在 /etc/inittab 。取而代之的是,启动是由 rc 脚本来控制的。
  在 /etc/rc.d/中找到的脚本是为基本系统的应用程序服务的,比如 cron 、sshd 、syslog 等。而 /usr/local/etc/rc.d/中的脚本则是用户安装的第三方应用程序, 例如 NGINX 或 Postfix 。
  如前所述, 由于 FreeBSD 是作为一个完整的操作系统而开发的, 用户安装的第三方应用程序并不是基本系统的一部分。第三方应用程序是通过包或端口来安装的。为了保持它们与基本系统的分离, 用户安装的应用程序被安装在 /usr/local/ 下。因此,用户安装的二进制文件位于 /usr/local/bin/,而配置文件则位于 /usr/local/etc/。
  在 BSD 初始化系统中,通过在 /etc/rc.conf 中添加服务条目来启用服务。默认设置位于 /etc/defaults/rc.conf 中,这些默认设置会被 /etc/rc.conf 中的设置所覆盖。
  下面的 /etc/rc.conf 中的条目可以启用 sshd 。

  sshd_enable="YES"
  你可以手动添加条目,也可以运行。

  # service sshd enable
  这将自动编辑 /etc/rc.conf 并添加条目。

  你可以用以下方法手动启动一个服务: # service sshd start

  # service sshd start
  如果一个服务没有被启用,但你仍然想启动它,可以使用命令行启动它。

  # service sshd onestart
  你可以在维基百科上阅读更多关于 init 系统的内容。

选择 FreeBSD 而不是 Linux 的技术性原因2的更多相关文章

  1. 选择 FreeBSD 而不是 Linux 的技术性原因3

    选择 FreeBSD 而不是 Linux 的技术性原因3 jail FreeBSD Jails 系统是另一个惊人的工程壮举. 在 2000 年 3 月 14 日的 4.0 版本中,FreeBSD 引入 ...

  2. 选择 FreeBSD 而不是 Linux 的技术性原因4

    Linux 二进制兼容性 FreeBSD 提供了与 Linux 的二进制兼容.这使得用户可以在 FreeBSD 系统上安装和运行许多 Linux 二进制文件, 而无需首先修改二进制文件.在某些特定情况 ...

  3. 选择 FreeBSD 而不是 Linux 的技术性原因1

    Ports FreeBSD Ports 是一个惊人的工程壮举.NetBSD 的 pkgsrc (package source) 和 OpenBSD 的 ports collection 都源于 Fre ...

  4. 【热文】 为什么很多硅谷工程师偏爱 OS X,而不是 Linux 或 Windows?

    校对:伯乐在线 - 黄利民 链接: 1. Why do most of the developers in Silicon Valley prefer OS X over Linux or Windo ...

  5. 让 FreeBSD 和 Gentoo Linux 在 ZFS 存储卷上共存

    自我回归到 Librem 15 已经有段时间了.我一般会选择 FreeBSD 来处理所有的事情,但有时会要访问一个运行在 Librem 平台上的 Linux OS,以便用它来帮助我对一些遗留的设备驱动 ...

  6. 企业开发中选择logback而不是log4j的理由

    不知道看到这篇文章的Java工程师有没有考虑过这个问题:为什么在企业开发中会选择logback来记录日志,而不是log4j呢? 如果你以前没有考虑过这个问题,那么现在如果让你考虑一下,你可能觉的会是因 ...

  7. Effective C# 学习笔记(原则二:为你的常量选择readonly而不是const)

    原则二.为你的常量选择readonly而不是const      Prefer readonly to const 对于常量,C#里面有两个不同的版本:运行时常量(readonly)和编译时常量(co ...

  8. 优先选择nullptr而不是0和NULL

    我们知道:0是一个int,而不是一个指针.如果C++在一个只有指针才能够使用的上下文中发现它只有一个0,那么它会勉强将0解释成空指针,但那时一种倒退行为.C++的主要方针是0就是一个int,而不是指针 ...

  9. 如何选择适合自己的Linux版本

    如何选择适合自己的Linux版本: 1.Linux桌面系统,首选Ubuntu; 2.服务器端的Linux系统,首选RHEL或CentOS,这两种中首选CentOS,如果公司有钱,不在乎成本也可以选择R ...

随机推荐

  1. Linux系统编程【3.2】——ls命令优化版和ls -l实现

    前情提要 在笔者的上一篇博客Linux系统编程[3.1]--编写ls命令中,实现了初级版的ls命令,但是与原版ls命令相比,还存在着显示格式和无颜色标记的不同.经过笔者近两天的学习,基本解决了这两个问 ...

  2. HDU 4336 Card Collector(状压 + 概率DP 期望)题解

    题意:每包干脆面可能开出卡或者什么都没有,一共n种卡,每种卡每包爆率pi,问收齐n种卡的期望 思路:期望求解公式为:$E(x) = \sum_{i=1}^{k}pi * xi + (1 - \sum_ ...

  3. shit vuepress docs

    shit vuepress docs https://deploy-preview-2764--vuepress.netlify.app/guide/directory-structure.html ...

  4. Emacs和Vim:神的编辑器和编辑器之神, 到底哪个更好?

    Emacs和Vim:神的编辑器和编辑器之神, 到底哪个更好? 在这个蔚蓝色的星球上,流传着两大神器的传说:据说Emacs是神的编辑器,而Vim是编辑器之神. 一些人勇敢地拾起了Vim或Emacs,却发 ...

  5. css picture

    css picture https://github.com/cyanharlow https://diana-adrianne.com/ demo https://github.com/cyanha ...

  6. document.getElementById & document.querySelector

    document.getElementById & document.querySelector https://developer.mozilla.org/en-US/docs/Web/AP ...

  7. Flutter: IntrinsicWidth类,将孩子的宽度调整为孩子的最大内在宽度

    文档 原文 class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePage ...

  8. JS实现点击加载更多效果

    适用场景:后端直接把所有的文章都给你调出来了,但是领导又让做点击加载更多效果...(宝宝心里苦啊)   点击加载更多效果:         第一个和第二个参数分别是btn和ul的DOM(必填)     ...

  9. 线上CPU飙升100%问题排查

    本文转载自线上CPU飙升100%问题排查 引子 对于互联网公司,线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升时),按照本文的步骤排查,基本1分钟即可搞定!特此整理排查方法一篇,供大家参考 ...

  10. Nginx之Location匹配规则

    概述 经过多年发展,nginx凭借其优异的性能征服了互联网界,成为了各个互联网公司架构设计中不可获取的要素.Nginx是一门大学问,但是对于Web开发者来说,最重要的是需要能捋的清楚Nginx的请求路 ...