2023-04-12 23:51:37    595    0    0

目标:纯 NVMe 固态的黑群晖

已知的群晖系统中,M.2 NVMe 只能做为存储池,并且不支持首次安装系统作为存储池,同时想使用 M.2 存储池的话,还得是特殊机型,目前来说,最后一点非常好解,可选的方案有:

  • 手动创建 M2 存储池,链接:Github
  • 手动修改 M2 盘的属性后,存储管理页面创建
  • Patch libhwcontrol.so 后,存储管理页面创建

那么目前来说,纯 NVMe 固态的黑群晖缺少的一环是:安装系统的时候,直接安装到 M.2 NVMe 固态,本文将粗略的讲解如何实现这一点的。

过程探索

虚拟黑群晖额外的环境准备如下:

  • 创建虚拟 NVMe SSD 盘(qemu-img create -f raw nvme0.raw 64G
  • 虚拟机添加 NVMe 参数(-drive file=nvme0.raw,if=none,format=raw,id=nvme0 -device nvme,drive=nvme0,serial=nvme0

本文测试环境添加了两块虚拟盘

1. 安装页面

按照上面的操作,仅添加虚拟的 NVMe SSD 盘的时候,安装页面会显示如下图的找不到盘的提示,我们这里看一下截图右边的网络请求,查看所有的异步请求,发现倒数第二个里有硬盘相关的信息,我们就从这里查看下去。

sa6400-nvme-install-no-disk.png

2. 进 ramdisk

查看 get_state.cgi 输出

get_state.cgi 是 nginx 代理的 cgi 程序,这个文件在 ramdisk 里其实上是一个 shell 脚本,我们先看一下输出,第 4 行直接说了没有磁盘:

  1. {
  2. "success": true,
  3. "data": {
  4. "has_disk": false,
  5. "dsinfo": {
  6. "product": "Synology NAS",
  7. "model": "SA6400",
  8. "internet_ok": "false",
  9. "internet_install_ok": false,
  10. "internet_migrate_ok": true,
  11. "internet_reinstall_ok": true,
  12. "internet_install_v
2023-02-14 04:20:10    17383    0    0

未经授权,禁止转载
授权转发如下:
Tank:https://www.mi-d.cn/4666
老高:https://www.bilibili.com/video/BV1eT411D7zb
网站评论使用 Disqus,需要评论请科学上网。

置顶信息

推荐我的黑群晖 i225&i226 驱动:https://github.com/jim3ma/synology-igc

更新记录

群晖已经发布了 DSM 7.2 beta,目前发布的 SA6400 引导不支持直接升级,请务必不要手动升级。适配 DSM 7.2 的 SA6400 引导驱动完善中,后面择期开放测试。PS: 目前放出来的 SA6400 DSM 7.2 非常非常初期,很多内核参数都是为了 DEBUG 打开的,会导致很多意想不到的问题,请勿升级。

  • 2023-02-15: 更新 PVE 创建虚拟机需要的配置
  • 2023-02-15: 更新支持的核显设备 ID 列表
  • 2023-02-17: 更新 igc 驱动,支持 i226 网卡
  • 2023-02-18: 更新 usb 键盘驱动
  • 2023-02-18: 更新螃蟹网卡驱动
  • 2023-02-20: 新增 vmware 虚拟显卡 vmwgfx 驱动,VirtIO GPU 驱动
  • 2023-02-24: 更新默认配置,强制开启 SHR 模式支持
  • 2023-03-06: 更新 arpl 到 1.1-beta2a,支持 NVMe SSD 缓存,可在存储页面直接添加缓存
  • 2023-03-20: 修复 r8168 驱动因为 oob 被群晖自动卸载的问题

实测 NVMe SSD 支持添加为存储池,具体方法请自行研究

已知问题

  • 公开版本目前不支持 DSM 7.2-64551,有需要的可以捐赠进内部群获取。

  • 目前部分 HBA 不可用,例如:Adaptec HBA 系列,包括 HBA 1000-8i,由于群晖修改了加载硬盘的逻辑,逆向后已修复,仅限内部捐赠群。需要 HBA 卡的,可选择 LSI 系列的卡,同时 DSM 7.1 不支持 expander(内核代码问题,加 expander 会宕机),DSM 7.2-64551 支持 expander。

  • VMM 无法运行,原因是群晖官方没有编译 kvm-inte

2022-12-07 12:11:41    721    0    0

测试设备

  • 硬酷 R1 N6005 16G
    r1

  • 威联通 QSW-M2116P
    qsw

设置 Bond

  • 创建新的 Bond

1.png

  • 添加所有网卡到 Slaves
  • 设置本地 IP 和网关
  • 设置 LACP
  • 设置 Hash 规则:layer3+4

2.png

设置交换机

设置后重启 R1,保证 LACP 生效

3.png

R1 上 Bond 网卡信息

ethtool.png

iperf3 测试

R1 接收 16 线程稳定跑满万兆,R1 发送 32 线程稳定跑满万兆

  • R1 接收 16 线程,CPU 20%

4.png

  • R1 发送 32 线程,CPU 10%

5.png

总结

这里仅仅是为了测试 R1 万兆可行性,日常要打满万兆,需要对应的应用支持多线程,例如文件同步使用 rcloneiscsi 开启多径传输等等,单线程肯定最高只有 2.5G 的。

2022-11-28 02:37:00    423    0    0

1. 使用 Charles 获取 API Token

随便用客户端创建个 Docker 容器,查看 Token:

  1. 'http://192.168.3.125:9999/containers/create?name=hack&ugreen_nas_model=docker&api_token=xxxxGJkMTIyMzM0Y2YxYTBlZTJmZGI2MDhlODE0YjM4YzhiODhkYg%3D%3D'

Token 示例:

  1. xxxxGJkMTIyMzM0Y2YxYTBlZTJmZGI2MDhlODE0YjM4YzhiODhkYg%3D%3D

2. 创建 Hack 容器

创建容器配置 container.json

container.json 文件内容如下:

  1. {
  2. "_query": {
  3. "name": "hack"
  4. },
  5. "name": "hack",
  6. "AttachStdout": false,
  7. "AttachStderr": false,
  8. "ExposedPorts": {},
  9. "Tty": true,
  10. "OpenStdin": true,
  11. "Env": [
  12. "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  13. ],
  14. "Cmd": [
  15. "/bin/sh"
  16. ],
  17. "Healthcheck": {},
  18. "Image": "alpine:latest",
  19. "Volumes": null,
  20. "Entrypoint": null,
  21. "OnBuild": null,
  22. "Labels": null,
  23. "HostConfig": {
  24. "PidMode": "host",
  25. "Privileged": true,
  26. "Devices": [
  27. {
  28. "CgroupPermissions": "mrw",
  29. "PathInContainer": "/dev/dri/renderD128",
  30. "PathOnHost": "/dev/dri/renderD128"
  31. },
  32. {
  33. "CgroupPermissions": "
2022-02-23 03:16:55    127    0    0
> https://docs.docker.com/registry/spec/auth/token/ ## 分步骤 ### 1. 获取认证地址 ``` curl -i -I https://harbor/v2/library/alpine/manifests/latest ``` ``` HTTP/1.1 401 Unauthorized Content-Length: 152 Con
2021-12-22 01:51:22    152    0    0
# Linux ## Update UEFI ``` # find and fix Windows update-grub2 ``` ## Add UEFI ⌘ ``` # efibootmgr -c -L "
2020-07-23 10:45:33    252    0    0
# 自签 CA > 参考 https://2heng.xin/2018/12/16/your-own-ca-with-openssl/ 并修改部分参数 ``` #!/bin/bash openssl genrsa -out cakey.pem 2048 cat << EOF > root.conf [ req ] default_bits = 2048 default_keyfile
2019-03-06 09:02:24    212    0    0
# 提名图书统计 陶哲轩实分析(第3版) http://www.ituring.com.cn/book/1822 陶哲轩教你学数学 http://www.ituring.com.cn/book/2049 数学分析八讲(修订版) http://www.ituring.com.cn/book/1622 Spark高级数据分析(第2版) http://www.ituring.com.cn/bo
2018-06-19 03:42:21    119    0    0
Repost from [https://codeburst.io/javascript-es-2017-learn-async-await-by-example-48acc58bad65](https://codeburst.io/javascript-es-2017-learn-async-await-by-example-48acc58bad65) > Async/Await expla
2018-06-15 06:37:42    305    0    0
# 生成自签CA以及证书 ## 1. 生成X509格式的CA自签名证书 ``` openssl req -new -x509 -keyout ca.key -out ca.crt # 去除密码 openssl rsa -in ca.key -out ca.key ``` ## 2. 生成服务端的私钥(key文件)及csr文件 ``` openssl genrsa -des3 -out s