目录

将家庭服务器从DELL R720迁移到蜗牛星际+MacbookPro

将家庭服务器从DELL R720迁移到蜗牛星际+MacbookPro

前几年网HomeLab, 买了一台二手Dell R720机架服务器, 用来做家庭服务器. 但是由于这台服务器的功耗太高, 双cpu待机就要快200w, 换了低功耗的志强后,只安装一个cpu,也有100w+, 一年下来电费不少,而且,到了夏天,非常的热,后来使用ipmi工具,用python写了个代码,根据温度来调节暴力风扇,要舒服许多,但是,夏天,室温升高,风扇还是会平方提高转速. 一直想换成低功耗的服务器. 之前买了蜗牛星际, 这个使用的是j1900, 功耗很低的, 于是就把家庭服务器从Dell R720迁移到了蜗牛星际.

尝试

Dell R720买回家后,前前后后装了太多vm, lxc, 折腾k8s, rancher等,内存加到了64G, 还可以往上加,毕竟ddr3 ecc的服务器内存太便宜了,不过64g足够了,根本用不完,搞多了费电.

目前保留了两个lxc, 一个跑bt,qt, 我都用的是qbittorrent, 把btpt服务分开了. 目前已经用qbittorrent下载了快40t的数据:

qbittorrent-statistics-1.png

qbittorrent非常稳定,之前用transmission,感觉不好用,速度也一般. 这个lxc是必须要迁移的.

另一个lxc也是是跑ubuntu, 用来存储整套媒体工作流:

  • jellyseerr 用来检索影片
  • prowlarr 用来检索index,提交下载任务
  • sonarr 用来提交电视剧任务
  • radarr 用来提价电影任务
  • jellyfin 用来播放影片

这套工作流非常稳定了, 需要迁移. 因为这些用不了太多资源, 放R720上太浪费资源.

步骤

  • 星际蜗牛上安装pve, 这个是必须的.
  • 星际蜗牛上配置两个ubuntulxc, 这个是必须的.
  • 将原来各个docker使用的docker-compose文件和挂载用的config文件夹,用rsync全部同步过来
  • 蜗牛上使用mount -t nfs挂载影视资源和下载目录.
  • docker-compose映射的目录改成mount后的目录
  • docker-compose up -d 启动所有服务

就这样完成了,为什么需要挂载nfs,而不直接将硬盘移动过来,因为我不知道蜗牛j1900+4G 内存是否能搞定这多的服务. 先测试过可以,最后再迁移硬盘.

发现的问题

内存不够

星际蜗牛开机没多久,就会出现cpu占用100%, 但是top查看, 是一个叫kswapd名称的进程, google了一下, 是交换空间管理进程, 说明4g内存不够了.

默认swap只有512M, 于是准备用swapon等命令创建几个G的swap分区, 结果发现root分区不够了,因为我一开始就是测试下, 所以在蜗牛上内置的sata接了一个120Gssd, 用来做root分区, 但是120Gssd太小了, 光是lxc的硬盘就占了80G, 现在没有去买大的sata接口的ssd了,就先将就,后面直接用大的ssd, 用clonezilla替换.

先把lxc的硬盘迁移到机械硬盘组的zpool上去,慢一点其实无所谓,都是后台服务,不需要太快的io读写. 然后用swapon加了4G空间,现在好多了: /migrate-homelab-from-dell-r720-to-j1900-and-macbookpro/j1900-htop.png 占用cpu最多的是baidupan的服务,其实什么也没有下载,截图的时候. 可以看到qbittorrent确实占了很多内存,因为任务太多了. /migrate-homelab-from-dell-r720-to-j1900-and-macbookpro/qbittorrent-status.png 几百个,能不多吗.

j1900 解码能力

j1900毕竟快10年了,好多解码不支持. 对比n100 解码: /migrate-homelab-from-dell-r720-to-j1900-and-macbookpro/j1900-n100-decode.png 特别是现在下载的都是4k HDR的视频,大多是h.256, HEVC编码的,都不支持,就做不了转码,好多客户端使用jellyfin就看不了4k的视频.

于是我想了一个办法,我的MacbookPro不是在家里吗, M1Max应该可以解码大部分了吧: /migrate-homelab-from-dell-r720-to-j1900-and-macbookpro/m1max-n100-decode.png 除了AV1, 基本都可以了,于是在MacbookPro上安装jellyfin, 这个时候又出了两个问题:

  1. jellyfinm1 mac上,运行一段时间,他的服务端就卡死了,原因不明,搜索了下github上的issue, 也有人提了这样的问题,但是没有解决.
  2. MacbookPro 我使用的是HP G2 的雷电hub, 连接了有线网卡, 只要合盖或者锁屏, 有线网卡就断开, 这个问题之前使用mac桌面共享就发现了,使用有线网卡的ip去连是不行的,这个时候如果用无线网卡的ip连一下,有线网卡的ip就通了.

解决办法

  1. emby, 没什么问题.
  2. 应该是休眠问题, 使用sudo pmset -g:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
System-wide power settings:
SleepDisabled          0
Currently in use:
standby              1
Sleep On Power Button 1
hibernatefile        /var/vm/sleepimage
powernap             1
networkoversleep     0
disksleep            10
sleep                0 (sleep prevented by EmbyServer, screensharingd)
hibernatemode        3
ttyskeepawake        1
displaysleep         3
tcpkeepalive         1
powermode            0
womp                 1

使用命令pmset -a disablesleep 1 禁用系统休眠, 完美解决, 还在m1待机功耗,真的太低了,比起R720真实天壤之别.

其他要迁移的

  • icloud_photo_backup 这个是用来备份icloud的照片的
  • cron 一些定时任务,比如使用acme更新证书等.
  • cups 打印机服务, 我直接迁移过来, 配好了,结果打印没有反应,最后把打印机重启,就好了.

全部完成后,再把硬盘转移过来, 重新在/etc/fstab中挂载就可以了.