ZFS
如何:重建根 zpool
这篇和较早的 线上重做 FreeBSD GPT 引导分区 情况有些类似,但略有不同。
前段时间 Andriy Gapon 为 Samsung 860 / 870 SSD 增加了一个 quirk。 Samsung 的 SSD 内部使用的是 8K 或 16K 的存储页,但为了和业界标准兼容, 它的控制器为 4K 扇区做了优化。
阅读全文…这次的 ZFS 数据损坏问题
12月1日,FreeBSD 发布了 FreeBSD-EN-23:16.openzfs, 用于修正近期发现的 ZFS 数据损坏问题。 这个问题是由 Rob Norris 最终修正的,这里记一笔。
阅读全文…用 poudriere 完成包管理
由于使用的 port 的编译选项与官方的往往不一致(例如我非常讨厌 gnutls、avahi 这两个包,此外有时我希望使用一个和官方不太一样的 OpenLDAP 版本, 或者采用不同的编译选项等等),我之前一直是 portmaster(8) 的用户。 portmaster 是 Doug Barton 早年用 shell 脚本写的一个 portupgrade(1) 的替代品,和后者相比,它不需要使用数据库,并且充分利用了 shell 的任务管理功能实现了尽可能利用 CPU 的计算能力,我个人也从这个脚本中学到了不少 shell 脚本的技巧。
不过,使用 portmaster 需要在每一台机器上都有一份 ports tree,并且由于直接操作的是本地的生产环境, 因此对于比较基础的库,如 gettext 之类,或是在升级操作系统时, 由于升级时间较久导致出现问题的可能性相对要大一些。 另一方面,使用 port 来管理第三方软件意味着需要把联编过程中的所有依赖软件包全都都装到生产环境中, 有时这是非常不经济的,例如大部分时候运行环境并不需要完整的跨平台 LLVM,等等,而使用 port 安装的话, 每一个系统中都需要整体重新联编一遍。
我之前已经用过很长时间的 poudriere 了。 这是一款现代化的联编系统,它充分利用了 FreeBSD 的一系列特性,包括 ZFS 快照/克隆、 tmpfs、 jail 等等,支持交叉编译。除此之外它还支持使用 ccache 来减少重复编译,等等。 不过,线上的机器出于习惯^H^H懒惰导致的惯性一直还是在沿用之前采用 portmaster 来进行更新。
阅读全文…线上重做 FreeBSD GPT 引导分区
记一笔。
我现在这台服务器已经用了蛮久(超过10年)了,刚刚安装的时候还是 FreeBSD 8.1 RC,一路升级到 FreeBSD 12.2。 前段时间因为工作比较忙,一直没顾上把它升级到 FreeBSD 13.0,今天总算是找了点时间来做升级。
总体上这次升级比预想的还要平稳一些,由于 FreeBSD 13.0 和 12.2 的内核接口变化不大,因此我也没按照正规的做法, 即升级内核、重启第一次、etcupdate、installworld,重启第二次、delete-old/delete-old-libs,而是在 installkernel 之后直接做了 etcupdate 和 installworld。
阅读全文…基于Asrock C2750D4I的全加密存储
去年第四季度的时候,在网上看到 华擎科技 推出了一款基于 Intel Atom C2750 SoC 的主板, Asrock C2750D4I,感觉很赞,于是立即和华擎科技取得了联系(当时这款主板还没进入量产),并着手开始了测试等工作。这张主板的重要特色包括:
- mini-iTX尺寸
- CPU支持Intel AES-NI,加密加速
- 提供了两个千兆以太网口
- 支持ECC内存(更重要的是,采用的是台式机和服务器常见的4x240-pin DDR3 DIMM规格,不像同类产品通常使用的是204-pin的SO-DIMM,这一点可以节省很多成本)
- 提供了8个SATA III 6.0Gbps接口和4个SATA II 3.0Gbps接口
- 支持IPMI并提供了独立网口
此处强行插入一条广告: 我厂 目前这一代的 FreeNAS Mini 采用了这张主板,组装好的产品可以通过 Amazon 购买,我厂每年都会将一部分利润捐给 FreeBSD 基金会,如果先 在 smile.amazon.com 注册支持 FreeBSD 基金会,并使用前述链接, Amazon 公司还会再捐出 0.5% 的金额给 FreeBSD 基金会。
目前这张主板已经进入了量产阶段,因此也可以从其他零售渠道获得相关组件自行组装。
阅读全文…ZFS实现快速部署(作弊条)
FreeBSD从8.0开始支持从ZFS引导系统,因此,可以使用ZFS的快照功能来实现快速部署。
新机器使用LiveFS启动,Fix it,CDROM。
阅读全文…ZFS做/是个好主意吗?
一段时间之前我曾经和很多人讨论过使用ZFS作为/的可能性。现在看来,这个也未必真就是一个很好的主意。
目前FreeBSD 8-CURRENT已经完全支持从ZFS启动了(换言之,连 /boot 也不需要了),方法是透过 GPT 分区(我最近MFC了最后一套gpart的补丁回7-STABLE,gpart将在7.1-RELEASE中以一种可用的形式出现)的gptboot。简单地说,配合ZFS v13和支持ZFS的gptboot,FreeBSD就可以从ZFS启动了。针对RAID-Z和RAID-Z2的支持也在计划中。
但是,我认为现阶段使用ZFS做/仍然是风险相当大的事情。
阅读全文…ZFS时代FreeBSD系统的数据冗余策略
2008硬盘磨损年!
我相信很多人都遇到过硬盘卡壳、掉链子的情况。当然,这篇文档的主旨不是告诉你怎么样可以绕过那些老爷子写的课本上说的金科玉律──重要的数据都应该有备份──如果你的数据最终丢失了,那么我的问题是:你的备份呢?
但是,即使你有经常备份的习惯,有些数据还是会难免出现一些没有及时备份而导致丢失的情况。我的观点是,没有备份计划的数据都不是重要数据,不要等到数据丢失了再去后悔,但是我们显然应该采取各种各样的手段来阻止没有及时备份的那一小部分数据的丢失。
硬盘
大家一起默念:它很便宜!它会坏掉!
是的,实战经验会告诉你,它很便宜!它也会坏掉!不管这个硬盘是来自什么厂商,也不管它是SATA、SCSI、SAS或者是传统的ATA接口,它出现故障只是时间早晚的问题。
为了解决这个问题,人们提出了廉价磁盘冗余阵列(RAID)的概念。例如,使用两块相同容量的磁盘组成 RAID-1 (MIRROR) 阵列,可以在其中任意一块出现问题时,从另一块中取出数据。而如果有至少3块硬盘,便可以组成 RAID-5 (注:还有其他RAID级别可以用3块硬盘组成冗余结构),只损失 1/n 的容量(n为硬盘数量)来得到带冗余的存储,使得存储可靠性得以提高。
除了改善可靠性之外,RAID还可以用来改善读写性能。例如用多块硬盘组成 RAID-0 阵列,可以将读写性能提高 n 倍,等等。我们并不讨论这些RAID级别。
不幸会发生
和很多人已经想到的一样──不要高兴的太早……
带数据冗余的 RAID 的一个基本假设是,磁盘是不骗人的,它有两种状态:好、坏,并且,主机(或RAID控制器)能够可靠地识别这种状态。
很不幸,这句话只对了一半。一块磁盘要么是好的、要么是坏的(这里,“坏的"的定义是读写时会发生任何错误),但是主机未必能够识别这种状态。
更为严重的是,有些时候主机甚至连读出来的数据是否是正确的这件事都不知道!当你发现自己的程序在其它机器上都很正常,但是在某台机器上总是神秘的崩溃的时候,你就要看看是不是那台机器的内存或者其他存储器出现问题了。
阅读全文…FreeBSD ZFS from scratch
This article describes how to install FreeBSD on ZFS from installation CD-ROM, with ZFS as root partition.
PREPARATION
You need to prepare a ‘disc1’ of FreeBSD, as well as a ‘LiveFS’ disc. Also, you should be familiar with daily operation of FreeBSD system administration.
In order to use ZFS on FreeBSD, one has to use FreeBSD 7.0 or better. For better stability and performance, you should have at least 1GB of RAM, and preferably running on a CPU which is capable to run FreeBSD/amd64, fortunately, most modern CPUs does support this.
阅读全文…