由于实在受不了 Windows Storage Spaces 的读写性能,一拍脑门,转向 Linux。顺便体验一下大红大紫的 ZFS。
说干就干,虚拟机上安装 Ubuntu 20.04 LTS。选择 Ubuntu 是因为用的人多,apt 仓库里可用的软件多。选择 LTS 是因为稳定。照例,ESXi 上新开个虚拟机,很快就安装好了。
接下来就是一些配置。
1. 设置开机自动开启 Vino Server(VNC Server)
先将 Vino 设置为不需要密码就可以连接。
$ gsettings set org.gnome.Vino require-encryption false
然后创建自启动描述文件
$ nano ~/.config/autostart/vino-server.desktop
自启动文件内容如下
[Desktop Entry]
Type=Application
Name=Vino VNC server
Exec=/usr/lib/vino/vino-server
NoDisplay=true
2. 安装 Cockpit(网页管理前端)
这里我直接选用 45Drives 的仓库,因为要用到他们家的 Samba/NFS 共享管理插件。
$ curl -sSL https://repo.45drives.com/setup | sudo bash
$ sudo apt install cockpit cockpit-file-sharing cockpit-zfs-manager
cockpit-zfs-manager 会自动安装一个 znapzend(ZFS 自动快照服务),不需要的话可以关掉,否则系统会报告服务启动失败。
$ sudo systemctl disable znapzend.service
安装之后就可以使用 http://localhost:9090/
来管理服务器了。
3. 修正 mpt2sas 启动参数
基本上所有基于 mpt2sas 的 HBA 卡都会存在启动失败的问题,需要限制内核驱动的 queue size 设置。这是一个已知的 bug。
首先编辑 grub 配置文件
$ sudo nano /etc/default/grub
把 GRUB_CMDLINE_LINUX_DEFAULT
那一行更改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash mpt3sas.max_queue_depth=10000"
保存后更新 grub 设置并重启。
$ sudo update-grub
4. 将用户加入 sudo 用户组
虽然从安全角度来讲,不应该给普通用户 sudo 权限,但是如果服务器只用于家庭内网,人人都是超级管理员也没什么大问题。加入 sudo 用户组之后,每次使用 sudo 提权(比如更新系统,更改权限之类的操作)就不需要再输入密码了。
# Ubuntu 20.04
$ sudo usermod -aG sudo <username>
# Ubuntu 22.04
$ echo "$USER ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/$USER
5. 为文件添加用户访问权限
Linux 系统中,通常情况下文件访问权限都是通过所有者和用户组来确定的。但是如果我们需要其他特殊账户(例如 www-data 或者 plex 之类的应用软件特定账户)也能访问文件,则需要通过 ACL 来赋予访问权限。
$ sudo apt-get install acl
$ sudo setfacl -R -m u:www-data:rwx /path
6. 定位硬盘
如果服务器用了支持 SES 的 SAS 背板,可以点亮硬盘对应的报警灯来定位硬盘。
$ sudo apt-get install ledmon
$ sudo ledctl locate=/dev/sdk