Giter Site home page Giter Site logo

blogs's People

Watchers

 avatar

blogs's Issues

FreeNAS on HP Microserver Gen8

配置

E3 1260L
16GB ECC
240GB SSD * 4
480GB SSD * 1
3TB HDD * 4

背景

Gen8一直用Windows Server 2019运行,性能方面没有什么问题,就一点,由于将SSD作为分层存储和WBC加入到缓存池,导致SSD寿命下降严重。并且难以更改分层,缓存大小等设置。
综合考虑下来,准备切换到FreeNAS使用ZFS系统。

FreeNAS配置

系统安装在32GB的U盘,U盘插在内部的USB口。
一个480GB的SSD作为主存储,存放系统数据集,以及系统镜像等。
4个240SSD组Raidz作为主存,存放大多数的文件。
4个3TBHDD组Raidz作为存档,存放大的数据集以及冷数据。

安装过程

问题

FreeNAS无法安装其他软件

为了保证安全和隔离,基于FreeBSD的FreeNAS是禁止直接安装软件的。直接在主机上用pkg install是无效的。虽然可以通过修改修改配置强制启用安装,但是也不推荐。

推荐的方式为,通过FreeBSD自带的Jail,在Jial中安装自己想要的软件。另外在Plugins里面提供了不少官方或者社区插件(例如nextcloud,Plex等等)。
当然FreeNAS也提供了FreeBSD的硬件虚拟化Bhyve,支持BSD,Linux,Windows。
在FreeNAS中运行Docker就是通过在Bhyve中安装Linux主机来实现的。

Jail和主机不互通

因为被隔离了,可以视为Jial和宿主机是两台机器,所以无法互相访问是可以理解的。
那么如何解决呢,通过Mount Ponits挂载点。将宿主机的文件挂载到Jail中。

权限问题

权限配置问题/挂载无编辑或写权限:
权限配置是最让我头痛的一个问题(甚至考虑过放弃FreeNAS,因为一开始不知道怎么配),因为一开始我以为无法不修改拥有者就让所有规定的用户具备写权限。这也导致一开始Transmission无法下载,Plex无法删除文件。

参考iXSystems官方社区后,于是决定来让组权限具有修改和写权限,解决了所有问题

因为FreeNAS本身的部分组和Jail的组 名称和GID是相同的,于是我就直接用了wheel这个组(FreeNAS默认关闭了wheel组的sudo权限,而且大部分文件 组用户和其他用户 都是一样只有读和运行的权限,所以不用担心安全问题)

先将你挂载到Jail的Dataset的权限修改成775(组用户可读写),并设置到你需要的拥有者和组

在Jail的Shell里面输入以下内容,即可将Plex(范例,修改成Jail里软件需要的用户)加入Wheel组(范例,可以修改成你需要的组)

pw groupmod wheel -m plex

如果你想添加的组不是Jail和FreeNAS自带有相同名称和GID的组,你需要在Jail里面添加这个组(FreeNAS也要有这个组),按照FreeNAS里的组名称(范例EXAMPLE_GROUP)和ID(范例5555)添加即可

pw groupadd -n EXAMPLE_GROUP -g 5555

不建议在Jail上直接用root权限运行程序,不建议在任何情况用root权限运行程序,权限配置不周是安全隐患。

Scrub/SMART任务:

FreeNAS默认没有自动规划Scrub任务和SMART任务(也是我在看到Pool的Scrub Status一直不存在才意识到的),不过设置起来不难,直接在Task - S.M.A.R.T Tests 和 Scrub Tasks里面设置就行,右上角分别添加Long Test,Short Test,还有每个Pool的Scrub。

直接参考了其他人的配置,个人的配置是SMART 选全盘,短测试每个月5,12,19,26号 早上4点,长测试每个月8,22号 早上4点。Scrub任务也是把所有Pool在每个月1,15号 早上4点测试,阈值(Threshold)设10天(阈值是成功测试后过多少天才再次测试,例如每天执行一次Scrub任务,但是因为阈值是十天,如果第一次成功执行第二次实际执行是在十天后,如果第一次失败了,第二天又会马上执行,每天执行直到成功)。

在添加界面Schedule选Custom,然后输入需要的日期。范例是 每个月5,12,19,26号 早上4点执行,不需要更改Preset或者设置Months和Days of Week。

虚拟机安装Debian花屏:

修改虚拟机的Debian配置。设备->VNC->分辨率。修改为800x600即可。

Debian安装后无法启动

原因:这是一个众所周知的问题,指的是GRUB启动管理器没有在Bhyve期望的地方保存文件,以及Bhyve没有在GRUB保存的位置寻找启动文件。
解决办法:
启动后,在错误界面等一会,会进入EFI Shell。
输入Exit,会到Bhyve boot 界面。
选择 Boot Maintenance Manager -> Boot from file。
依次选择磁盘->EFI->debian->grubx64.efi。
成功引导,进入系统。
然后执行以下命令解决自动引导问题:

mkdir /boot/efi/EFI/BOOT
cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/BOOT/bootx64.efi

完成。

NOTE: 如果更新了引导文件,比如更新了grub,那么需要再次执行上面的命令。

参考

数据恢复

FreeNAS仅支持UFS,NTFS等少数文件格式。而主流Linux如Debian,Ubuntu常用的ext3,ext4,xfs等都无法使用。

移动Swap分区到SSD

参考

检查图片完整性

平台

linux以及freebsd,通过find+jpeginfo工具来实现。

如何做

debian系:apt install jpeginfo
bsd系:pkg install jpeginfo

命令

# 在需要检查的目录下运行命令,会只反馈损坏的照片
find . -name "*.jpg" -exec jpeginfo -c {} \; | grep -E "WARNING|ERROR"

CPU性能测试

操作系统

Ubuntu 20.04 LTS with WSL2 on Windows 10 20H2 x64.

测试项目

编译Linux 5.11内核,默认配置。

过程

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.11.tar.xz
tar -xvf linux-5.11.tar.xz

apt install -y make gcc vim libncurses-dev libssl-dev flex bison build-essential 
make clean
make mrproper
make menuconfig
# 替换{x}为线程数
make -j{x} 

结果

R5-3550H on Lenovo Pro13 -> 6 分钟

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.