引子
07年我就在《人人都需要一台服务器
》
中说到,我有个家用服务器,是用的一台淘汰的P3微型台式机做的,装的是ubuntu系统。主要的工作是网络防火墙,文件共享,源码版本控制,开发用数据
库和WebServer,SSH/SFTP等。这么多年一直工作正常。但是毕竟时代在发展,这机器实在是太老了,还是换了吧。
当年设想的省
电方案现在已经很普及了,成品的NAS服务器就不说了,自己组装也有很多选择,比如INTEL平台就有低端的有ATOM一类,高端的有CULV系
列,AMD也有相应的产品线。现在网上自己组装配置NAS或家用服务器的人也相当不少,各种软件方案也不少,比如基于FreeBSD的FreeNAS,或
是基于Windows的WHS。
硬软件方案
首先是硬件。因为我的需求和一般的NAS用户需求不同,所以产品NAS基本不能满足我的DIY需要,只能选择自己组装。
CPU
选定的是INTEL的ATOM系列,看中的是它的发热相对比AMD小一些。主板必须是17X17的MINI-ITX,因为我用来放机器的地方比较小,里面
的位置只能放下像立人Q5这样的小机箱,而这种机箱只能装下这种主板。内存支持当然越大越好,但还是要受CPU的限制。各种端口也是越多越好,因为存储功
能很重要的,所以SATA口至少要2个,IDE能有最好,没有也能接受。USB虽然用处不大,但少于4个也是不太方便的。网卡能多几个当然好,有一个基本
也够用,当然最好是千兆的。
按这些条件去找的话,首先所有的上网本主板就只能放弃了,因为它们都只有一个SATA。只能从台式机或工业主板
中去找。如果要图省电的话,ATOM的N系列应该是最佳选择,但可惜的是它主要是为上网本设计,缺少DIY方案。就算能找到也都是很老的N270,但那个
性能实在不行,不考虑。我起先是考虑Atom 330,这是耗电和性能之间一个比较好
的平衡选择,但因为已经退市,市场上基本都是翻新返修货,试了一块问题太多。所以最后还是选了D525,双核,支持4G内存,D系列的缺点就是耗电比N系
列大了不少,发热问题比较麻烦。大致的配置如下:
CPU:Intel D525
主板:NM10芯片组
内存:2G(计划扩到4G,据说2G的内存跑ZFS还是比较勉强的,暂时先试试)
硬盘:1T(计划扩到2T)
至
于软件,我肯定是不会考虑WHS了,因为我不喜欢Windows是说过N多次的了,除了个人喜好以外,版权问题(除了系统版权以外还要考虑应用软件的版权
问题)、病毒问题、安全问题、稳定性问题等都太费事。FreeNAS因为是针对NAS实现,只带了一个很小的FreeBSD内核,显然也是不够我用的,虽
然可以在其基础上再折腾,但终归是麻烦。所以决定直接装个FreeBSD,然后在其中装些软件来满足需要。之所以不再使用ubuntu,最主要的原因是我
想试试ZFS——虽然linux上已经有各种移植的ZFS或是类似ZFS的方案,但终归是成熟度不够,话说就算是FreeBSD目前的8.2版所带的
ZFS 15版也还不算很完美,希望FreeBSD 9出来会有一个比较完美的ZFS。
硬件的安装没什么好说的。只是D525的发热还是有点大的,不加风扇夏天估计撑不过去,最后还是不得不加了个6010的小风扇,不能完全静音是比较遗憾的事情。要是对性能没要求的话,用N270的方案散热就不是什么问题了。
下面只谈软件的安装。
安装前的准备工作
原来看中的另一块主板是有IDE口的,可以接一个光驱来装系统,但是因为那个板缺货没买着。现在用的板子没有IDE口,只能用USB启动,所以需要先做一个USB启动盘,当然外接USB光驱也是可以的。
制作FreeBSD USB启动盘方法参考这篇文章
:
首
先下载memstick.img版本的FreeBSD安装文件,目前最新的是8.2稳定版,因为我要用ZFS,需要大内存,所以下载的是64位版本,虽然
据说32位版也勉强能用,但配置要麻烦很多。插入U盘后在系统(我的桌面系统是ubuntu 10.04,Windows用户请自己研究)中用:
sudo fdisk -l
看一下U盘的设备名,比如 sdb。然后用:
sudo dd if=FreeBSD-8.2-RELEASE-amd64-memstick.img of=/dev/sdb bs=10240 conv=sync
做好后用它启动服务器开始安装。
整个安装过程主要参考这篇文章
。以下内容大部分来自该文,特此说明。
硬盘规划
在开始安装之前,先规划一下硬盘的分配。虽然说在ZFS里分区神马的都是浮云,全都可以动态调整,但是还是有一些问题需要考虑。
第
一是GPT。随着硬盘容量的不断增加,老式的MBR分区已经不能满足需要,所以GPT将要或者已经成为主流。第二是AF扇区(即所谓4KiB扇区)将要或
者已经成为大容量硬盘的标准格式,老式的512B扇区格式虽然还被AF硬盘所兼容,但是在AF硬盘上用512B扇区格式(所谓512e模式)效率会比较
低,见这篇文章
。
所以我是这么规划这个1T的硬盘的(实际容量932G):
boot: 64K
swap: 4G
zroot: 16G
tank: 912G
这
是四个GPT分区,其中boot为引导区,swap为交换分区,zroot和tank是两个ZFS
Pool分区。之所以要分两个zpool,是因为上面所说的AF硬盘问题。其中zroot作为系统的根ZFS,因为在系统未装载完成前,暂时不能支持
4KiB扇区,所以只能放在zroot里,并且使用传统512B扇区格式。tank为用户ZFS,把home、ports、src什么的都放在这里,这个
是使用4KiB扇区的。
虽然FreeBSD早就支持GPT分区了,但是sysinstall里带的还是老式的fdisk分区工具,加上因为zroot也是一个ZFS分区,sysinstall里也没法搞,所以以下的安装过程是全手动的。
首是在启动完成运行sysinstall的时候选择Fixit-USB进入Fixit模式(提示符为:fixit#)
安装:GPT分区
手动使用gpart分区:
gpart create -s gpt ad4
gpart add -s 64K -t freebsd-boot ad4
gpart add -s 4G -t freebsd-swap -l swap0 ad4
gpart add -s 16G -t freebsd-zfs -l zroot ad4
gpart add -t freebsd-zfs -l tank ad4
gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad4
其中ad4是我用U盘启动后硬盘的名字,请自己在启动后检查你的硬盘名字并加以替换。
以上命令分别为创建GPT分区表,创建boot分区、swap分区、zroot分区、tank分区,写入GPT引导记录。其中除boot分区以外全都加上了label,以方便后续操作使用。
安装:创建ZFS
首先需要加载相关zfs模块:
kldload /mnt2/boot/kernel/opensolaris.ko
kldload /mnt2/boot/kernel/zfs.ko
kldload /mnt2/boot/kernel/geom_nop.ko
其中geom_nop是为了后面使用4KiB分区格式使用的。
然后先创建系统zpool:
mkdir /boot/zfs
zpool create zroot /dev/gpt/zroot
zpool set bootfs=zroot zroot
再创建支持4KiB的tank zpool:
gnop create -S 4096 /dev/gpt/tank
zpool create tank /dev/gpt/tank.nop
zdb -C tank # 检查ashift=12说明4KiB成功
zpool export tank
gnop destroy /dev/gpt/tank.nop
zpool import tank
zdb -C tank # 再次检查ashift仍然为12
做
法是先创建一个虚拟的gnop设备,指定使用4KiB格式,注意那个
tank.nop。创建后检查ashift参数是否为12,如果还是9(对就512B格式)说明不对,请检查后重做。确认无误后导出zpool,删除
gnop设备再重新导入zpool,再次检查ashift参数无误后这个使用4KiB的zpool就算创建成功了。
创建zfs分区,因为系统不支持4KiB格式,所以就把root整个放在zroot里了(/tmp除外,这个将在后面用md加载),不过home还是放到了tank里:
zfs create tank/home
安装:准备安装系统
如前面所说,手工安装:
export DESTDIR="/zroot"
cd /dist/8.*
cd base && ./install.sh
cd ../lib32 && ./install.sh
cd ../manpages && ./install.sh
cd ../src && ./install.sh all
cd ../kernels && ./install.sh generic
cp -Rlpv /zroot/boot/GENERIC/* /zroot/boot/kernel/
配置基础系统和zfs引导配置
chroot /zroot
安装:安装前的配置
基础配置文件
vi /etc/src.conf
LOADER_ZFS_SUPPORT=YES
vi /boot/loader.conf
ahci_load="YES"
zfs_load="YES"
vfs.root.mountfrom="zfs:zroot"
vfs.root.mountfrom.options="rw"
vfs.zfs.prefetch_disable=0
hw.pci.do_power_nodriver=3
vi /etc/rc.conf
hostname="gptzfsboot.freebsd.org"
defaultrouter="10.0.0.1"
ifconfig_re0="inet 10.0.0.1 netmask 255.255.255.0"
tmpmfs="YES"
tmpsize="512M"
zfs_enable="YES"
powerd_enable="YES"
powerd_flags="-a hadp -b hadp -n hadp -i 25 -p 1500"
vi /etc/resolv.conf
nameserver 8.8.8.8
vi /etc/fstab
/dev/gpt/swap0 none swap sw 0 0
安装:编译安装
编译安装支持zfs的bootloader
mount -t devfs devfs /dev
export DESTDIR=""
cd /usr/src/sys/boot/
make obj && make depend && make
cd i386/loader
make install
安装:安装后的配置
基础的设置命令
passwd
tzsetup
cd /etc/mail && make aliases
# 退出chroot
umount /dev
exit
安装:完成
cp /boot/zfs/zpool.cache /zroot/boot/zfs/
export LD_LIBRARY_PATH=/mnt2/lib
zfs unmount -a
zfs set mountpoint=legacy zroot
zfs set mountpoint=/home tank/home
exit
重启即可。
这个家用服务器系统的基本安装就算是完成了,之后可以进行系统优化和应用配置。比如用ZFS的压缩功能来放源码和ports,对重要的数据建立定时快照,对于冗余数据进行去重之类,ZFS的优势就在这里了。另外就是安装一些系统监控软件,各种服务软件什么的。
分享到:
相关推荐
最近在学习内核时需要大量分析到很多汇编代码,不重要的就喜欢用gpt了解大致,但是gpt间隔得有点烦,所以我就基于gpt3.5的模型API用python写了个自动分析汇编代码算法的工具 使用方法:解压打开目录中的“main.exe...
GPT分区一键安装.exe
开源的 GPT 神器 今天我给大家推荐两款基于 GPT 开源的程序员效率神器
Bito 插件无需魔法,亲测有效,可以基于 GPT-4 来写代码同时还提供了一些有用的功能,如自动补全提交信息、快速查看历史记录等。 没使用魔法的情况下,注册的时候反应比较慢,后续使用速度其实还好。不过,也有同学...
基于python的GPT2中文文本生成模型项目实现
本项目使用 GPT2-Chinese 的模型将wiki中文的数据导入模型训练了通用模型。将GPT2-chitchat的对话任务稍作修改来适用于中文摘要...由于NLPCC的摘要数据为新闻语料,涉及话题和内容较多,应用在垂直领域下效果会好一些。
Amazing-GPT2-钢琴 OpenAI 基于 GPT2 的音乐 AI Google Colab Notebooks 用于音乐生成/作曲和能力评估
基于 GPT-4 的实验性项目,目的是让 GPT-4 完全自动化运行
基于gpt3.5对话 实现Java情感分析的对话过程
一款不错的基于 GPT-4 的 AI 聊天机器人。Apo AI Chat 是最先进的 GPT4 Open Chatbot 应用程序,可为任何提出的查询提供即时解决方案。 解锁部分高级功能如下: 无限消息 ChatGPT 4 接入 高级解锁 可以使用GTP4,...
基于GPT的快速即时应用开发框架.zip
ChatGPT插件是基于GPT3.5优化的一个模型,支持问答、编程.zip
这些海量的评价文本蕴含着更加深层次的意义,也就是说这些文本包含着发布者对于一些事情和物品的真实看法和评价,并且随着文本数量的增加,这些文本所整体呈现出的对于事物的情感倾向也就越加真实。基于以上的真实...
推荐理由:一个基于GPT的文档查询工具,用于与文档进行实时对话。它允许用户通过自然语言进行文档查询,获得详细的解释和答案。DocsGPT通过强大的自然语言处理能力,将文档理解和查询变得更加直观和用户友好。
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程...基于Qt C++实现的基于GPT 语言模型的聊天系统源码+项目说明(支持输入输出文本处理插件).zip
技术动态 - 基于GPT-4的知识图谱构建能力评测
基于SOTA GPT3 的多乐器 MIDI 音乐 AI 实现 现在采用 TMIDIX 改进了 MuseNet 多乐器 TXT 编码的再现 原始基线性能音乐 AI 实现:Optimus-VIRTOOSO 这是一种自回归实现(基于字符的方法),有其优点但也有缺点。然而...
TabNine:基于GPT-2、用百万级源码文件训练的全语言编程自动补全,支持VS Code、Sublime Text、Vim、Atom等各种IDE
https://gitee.com/chenyang918/GPT2-chitchathttps://gitee.com/chenyang918/GPT2-chitchathttps://gitee.com/chenyang918/GPT2-chitchat
基于python加载GPT-3.5中的text-davinci-003模型,利用OpenAI API和HTML语言搭建简单的聊天网页。注意:本程序基于gpt=3.5,并非chatgpt,效果并没有chatgpt那么强大