V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fanxasy
V2EX  ›  宽带症候群

家庭网络是否应该 计算/存储分离?

  •  
  •   fanxasy · 297 天前 · 6182 次点击
    这是一个创建于 297 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前家里使用的 nas 是白裙,plex 、emby 、qbittorrent 等都是以 docker 形式部署在 nas 里与本机硬盘交互。想把这些 docker 迁移到另一台 pve 机器的 debian 虚机中,通过 smb 与 nas 硬盘交互,这样做有哪些优缺点?
    68 条回复    2023-07-06 18:14:09 +08:00
    paopjian
        1
    paopjian  
       297 天前   ❤️ 1
    电费高,占地方?
    fanxasy
        2
    fanxasy  
    OP
       297 天前
    @paopjian 对于折腾人来说这都不叫事...
    lcy630409
        3
    lcy630409  
       297 天前
    耗时间,会出现意想不到的 bug

    如果目前使用没问题 不建议动
    当然 ,当你出现这么想法的时候 不管别人咋劝你, 你大概率都会去试试,反正家庭使用 ,不折腾不 diy
    ruidoBlanco
        4
    ruidoBlanco  
       297 天前   ❤️ 4
    从「 single point of failure 」变成「 multiple point of failure 」,没有做到「 high availability 」,出问题的地方反倒多了,维护成本也高了。

    何必?
    MeteorVIP
        5
    MeteorVIP  
       297 天前 via iPhone   ❤️ 3
    应该
    一个月后写个使用报告
    mozhizhu
        6
    mozhizhu  
       297 天前
    性能上的差距?看他们说白裙都是软件强硬件弱;自己改个计算机器,服务跑起来更快,如果有独显 视频解码转码也更快嘛。
    fanxasy
        7
    fanxasy  
    OP
       297 天前
    @mozhizhu 因为我从不在外网接回家看影片所以不涉及到转码问题..
    Baoni
        8
    Baoni  
       297 天前
    如果 pve 有一个大容量 ssd ,会不会比你设想的更高效呢?
    fanxasy
        9
    fanxasy  
    OP
       297 天前
    @Baoni 再大也大不过 nas 的几十 T 磁盘阵列吧
    Baoni
        10
    Baoni  
       297 天前
    @fanxasy 所以白裙高端机型连几个 docker 都跑不好嘛?
    Jeremial
        11
    Jeremial  
       297 天前
    目前 PVE 虚拟了个黒群晖, 直通 sata 控制器给群晖, 然后开启 nfs 服务
    然后 PVE 使用 lxc 跑 plex, jellyfin, 直通了显卡作编解码, 挂载 nfs 硬盘.

    和你想要的效果应该是类似.
    DinoStray
        12
    DinoStray  
       297 天前
    我目前就这样做的, 白群辉单纯存储, 组装了一个电脑 (unraid) 安装服务.
    xiaoyuesanshui
        13
    xiaoyuesanshui  
       297 天前   ❤️ 2
    应该。但是家用没必要,只要把系统、服务和数据分开就行

    亲身经历
    我的 1.0 服务器是
    esxi+Debian ,大部分的服务都是以 docker-compose 部署。但是是部署在 debian 的根目录下
    后来手贱,一不小心删掉了 debian 虚拟机的硬盘,于是所有服务和数据都灰飞烟灭
    痛定思痛,重新设计了 1.1 版本
    新版本下,新加了 program 目录,并且挂载了独立的硬盘分区。这样服务和数据都和系统本身都分离了。
    服务依旧通过 docker-compose 部署,相关目录都通过 volume 字段持久化到本地 program 目录下。甚至 docker-compose.yml 也都存在 program 里
    这样将来哪怕 Debian ,甚至 esxi 挂了。我只需要把分区挂载到新的 program 目录下,再重新起服务,数据我都不需要迁移

    当然这个版本没有考虑异地容灾的情况,如果挂载 program 目录的 HDD 分区挂了,那就是真的灰飞烟灭了

    不过家用嘛…………异地容灾真的有必要嘛
    thhbdd
        14
    thhbdd  
       297 天前
    我现在就是这样,但是运算部分全是二手,这样运算机成本就可以很低了,更重要的是随便玩也不担心炸,反正数据还在
    thhbdd
        15
    thhbdd  
       297 天前
    至于费电倒不至于,因为存储 nas 都是低功耗的也没有太占地方,不过如果自己跑的服务也不吃性能那还是合并吧,没必要分离。
    shanguo
        16
    shanguo  
       297 天前
    @Jeremial +1 我也是这样搞的
    fanxasy
        17
    fanxasy  
    OP
       297 天前
    @xiaoyuesanshui 我准备在 pve 挂载 nas ,创建定时备份作业
    fanxasy
        18
    fanxasy  
    OP
       297 天前
    @thhbdd @DinoStray @Jeremial 感谢,看来靠谱
    TerranceL
        19
    TerranceL  
       297 天前
    缺点就是解码性能大幅提升,天天在外网看剧损失家里的上传带宽。
    来自无核显 1621+挂载到 1165G7 emby 解码的机主留言。
    TerranceL
        20
    TerranceL  
       297 天前
    不过要注意 qb 这种下载器尽量还是在 nas 上,不然网络问题会导致下载出问题。emby/jellyfin/sonarr/radarr 等工具需要写一个脚本检测不到挂载的目录自动 stop 容器,检测到自动 start 。不然也会出问题。
    fanxasy
        21
    fanxasy  
    OP
       297 天前
    @TerranceL #19 好的,我没有服务端转码需求,假设家庭内网稳定,看来没啥问题
    remonsawa
        22
    remonsawa  
       297 天前
    提醒 op ,smb 过去务必单独开个账号,设定好权限服务,防止木马通过 smb 把其他文件一波带走
    root01
        23
    root01  
       297 天前
    254 个 ip 不够用?
    totoro625
        24
    totoro625  
       297 天前
    不折腾,对系统比较放心可以不分离

    我经常折腾炸系统/重装系统,转移数据太麻烦了,已经有意识的分离数据了
    软路由、PVE 下分多个 Debian 放不同的 docker 、白裙存储+备份到云端
    各个系统独立,功能单一

    我看别人 AllinBOOM 也是专门弄一个 TrueNAS 做存储,而不是直接挂载硬盘
    greatbody
        25
    greatbody  
       297 天前
    我的方案:一个纯文件服务器,挂载所有的硬盘( 20T ),通过 nfs 共享文件。一个干活的服务器,挂载上文件服务器通过 nfs 共享的磁盘,上面客户部署各种服务,例如 jellyfin ,nextcloud 。目前一直工作顺利。
    SpringHack
        26
    SpringHack  
       297 天前 via iPhone
    我在家里就是分离的,三台机器上机柜跑 k3s 组集群,一台白裙用来提供存储,已经稳定跑了一年半了,k3s 配置入库即使推倒重来也没问题,三台机器只配了很小一块硬盘用来处理无关紧要的数据
    yvescheung
        27
    yvescheung  
       297 天前
    我曾经也是 all in one ,结果有次 NAS 主板坏了,直接 all in boom ,从那之后乖乖分离,NAS 只负责和存储相关的任务
    cy18
        28
    cy18  
       297 天前
    @yvescheung #27 我看到你的案例,想到的方法是用 PVE 做好虚拟化跟备份,然后直接恢复...
    07ly
        29
    07ly  
       297 天前
    现在是一台星际蜗牛 J1900 来做所有的功能,很明显感觉性能和内存都不够用了。准备拿自己要退役的笔记本单独做 emby 等服务的服务器。NAS 就纯存储了
    yvescheung
        30
    yvescheung  
       297 天前
    @cy18 品牌 NAS 没法虚拟化,也懒得折腾黑群晖 TrueNAS 啥的,现在是把各项服务分离到虚拟 debian 上,定期备份整个系统
    locoz
        31
    locoz  
       297 天前 via Android
    意义不大,不如做好备份。与其说计算和存储分离,不如说服务和网络分离,把路由器做成个虚拟机跟其他服务跑一起最容易 boom 了。
    XiaoBaiYa
        32
    XiaoBaiYa  
       297 天前
    个人觉得没必要,但和楼上所说的,网络一定要和存储/服务分离,不然故障率非常高
    StoneHuLu
        33
    StoneHuLu  
       297 天前
    op 我建议你先试试 qbit 的 docker 容器能在挂载 nfs 的情况下启动不,我知道的是 transmission 是不可以的,没办法把下载目录设定为挂载盘,控制台会直接报错,告诉你不能使用挂载盘,我在 issue 上查了是基本无解的,所以我 pt 、sonnar 、plex 这一套都是在 omv 的 portainer 下进行管理的,其他非媒体库和 pt 相关容器是走我的 k3s 集群进行编排的
    我家拓补结构就是,2 台物理机组成 pve 集群,1 号机跑 omv 作为 nas ,同时 nas 里跑媒体库和 pt 相关容器,1 号机还有个 K3S-master ,2 号机跑一个 MinecraftGTNH 服务器,同时还跑 k3s-agent 、openwrt 旁路由透明代理还有 homeassistant 。
    StoneHuLu
        34
    StoneHuLu  
       297 天前
    @StoneHuLu #33 补充一下:用 nfs 对其他虚拟机提供服务时,尤其是作为 docker 、k3s 的数据卷时,经常会出现一些文件权限问题,需要 nfs 或者 smb 带上附加参数才能解决,总体来说比较诡异,建议就是不要搞架构洁癖,让容器跑在它运行最稳定的地方,不然长年累月下来,经常要对服务器进行维护,也是一个不小的时间成本,而搞这些东西原意不都是为了图个方便么,切莫本末倒置
    adoal
        35
    adoal  
       297 天前
    在未扩容的斐讯 N1 上跑了 3 个虚拟机的表示啥都不是事
    xxfye
        36
    xxfye  
       297 天前 via Android
    我还以为是啥,到头来一看 smb ?
    有钱 rdma 搞起来,没钱 s3 啊。
    Wpaengd
        37
    Wpaengd  
       297 天前 via iPhone
    我用虚拟机分离了,硬盘搞了直通给 omv
    pcmid
        38
    pcmid  
       297 天前 via iPhone
    我老的集群是一台存储机器跑 ceph ,另一台机器跑 pve ,体验下来不是很好
    原因是有一部分文件存储是用 cephfs ,在 pve 上加存储池不符合我的需求,所以重启 pve 之后需要手动挂载一次
    后面我起的集群是超融合,把 openstack 加 ceph 部署在一起
    XiLingHost
        39
    XiLingHost  
       297 天前
    我现在就是这样的
    存储是 QNAP 的 NAS ,主要是提供 NFS 和 SMB 以及 WebDAV 形式的访问,存放温数据和备份
    备份靠桌面磁带机,每周备份一次,冷数据归档和常规备份
    网络是独立的 x86 软路由 opnsense
    计算是 3 台机器组成的 vsphere 集群,DELL T620 放主要的负载,两台 NUC8i5BEHS 放临时负载和开发环境,所有的缓存和热数据都放在计算节点本地
    raysonx
        40
    raysonx  
       297 天前
    我也建议重要数据专门用一台机器(甚至多台机器)存储,避免 all in boom ,
    anubu
        41
    anubu  
       297 天前
    没什么应该不应该的,我的重心是折腾本身,所以各种都会试试。如果你的重心是服务和数据本身,那应尽量避免折腾。或者,至少做好数据安全的情况下折腾。
    如果做网络共享存储,仅仅文件存储( SMB 、NFS )应该是不够的,至少还需要一个块存储(比如 iSCSI ),有些服务对权限比较敏感,调试比较费劲,直接上块存储省事。最后往往还会再拉一个对象存储,这就差不多齐活了。
    BeautifulSoap
        42
    BeautifulSoap  
       297 天前 via Android
    如果不在乎通过网络传输文件的性能和 io 损失,这么做也不是不行
    lithiumii
        43
    lithiumii  
       297 天前 via Android
    emby qbittorrent 都可以这样搞,因为我是小主机跑服务,空间不够了才买的 nas 。而且我服务都是 docker compose ,原生支持 cifs 或 nfs 挂成 volume 。另外我有俩电脑有显卡,用 docker 装 stable diffusion web ui ,模型也是放 nas 再挂载
    fanxasy
        44
    fanxasy  
    OP
       297 天前
    @locoz 感谢提醒,我用的 rb5009 硬路由,跟虚机软路由 openwrt 做 vrrp 保证稳定性
    fiht
        45
    fiht  
       297 天前
    白群 NAS 负责存储需要保存 10 年+的内容,设置合理 RAID ,数据有保障。
    工作站用来跑 PVE ,定期备份数据到白裙 NAS 上。

    在安全、成本中、性能和易用性保持平衡
    ikano
        46
    ikano  
       297 天前 via Android
    根据我这种小白的情况来说,不要把事情变得太复杂,还是白裙管理文件吧
    vsyf
        47
    vsyf  
       297 天前
    @StoneHuLu
    nfs 不清楚,但我 omv smb 挂载 truenas 的硬盘是没问题的。要不你试试 smb ,我现在用的参数是
    iocharset=utf8,vers=3.0,nofail,_netdev,mfsymlinks,x-systemd.automount,noauto,uid=1000,gid=1000

    另外这种方式千兆内网使用 jellyfin 会存在一个问题。在 DirectPlay 的时候,jellyfin 会先将源文件(存在 truenas 上) remux 成适合串流的 fragment MP4 (在 omv 的 cache ssd 上),,相当于要拷一遍。如果源文件较大,在起播的时候就会等很久。
    而客户端起播只会等待一段时间(似乎 15s),还未播放成功就直接暂停了,导致根本无法播放成功,只能改成 transcoding 或者用万兆。
    zayia
        48
    zayia  
       297 天前 via iPhone
    @TerranceL 大佬,你的具体方案是啥
    我现在白裙外网看视频,遇到必须转码的就非常痛苦
    darksword21
        49
    darksword21  
       297 天前
    如果你要保存服务配置的话要看下这个服务是不是用 sqlite ,因为 sqlite 好像不支持 nfs ,我现在都是手动备份一下
    mithrilyue
        50
    mithrilyue  
       297 天前   ❤️ 1
    机器上不一定,概念/管理上可以区别开来。

    算归算,存归存,确保算的部分能稳定可靠的归档到存的部分,并且存的部分能有可靠的应急方式。

    个人实践是:
    PVE 的 allinone ,vm 有 黑裙、unraid 、debian docker 等
    unraid 直通 hba 卡,做一个 PBS 的 docker ,一个 rsync 的 docker
    PVE 直接往 unraid 的 pbs 里面备份,这样包括黑裙在内各种 vm 都被备份了
    黑裙再单独 rsync 同步到 unraid 做一个可以直接读取的单备份,

    至于 PVE 的宿主机,那个重新配置也很简单。

    唯一的问题是 unraid 自己不能备份到 PBS ,但 unraid 可以走 vzdump 备份,可以很方便的导出来。而 PBS 数据都在 unraid 下的硬盘里面。

    如果完全 boom 了恢复顺序是 重装并配置 PVE-->从 vzdump 恢复 unraid 和一些其他虚拟机-->从 unraid pbs 恢复其他虚拟机

    不考虑硬件 boom 的情况下,这个思路很可靠,其实只要确保多备份,备份能简单的导入导出就都很可靠了。
    TerranceL
        51
    TerranceL  
       297 天前
    @zayia 白群 SMB 挂给 unraid ,unraid 用 docker 装 emby 解码。写一个脚本循环执行当检测不到 SMB 文件的时候自动 docker stop
    solodxg
        52
    solodxg  
       297 天前
    应该,现在我是软路由(pve+ lxc +openwrt+docker) + NAS(docker), 混在一起感觉不太方便动 openwrt, 后续打算把 openwrt 拆出来 变成 ,软路由 + 服务器 + NAS 。 软路由负责网络相关,服务器 就是各种 docker 服务之类,nas 可以只放一些负责下载和影音的 docker 服务。
    emptyzone
        53
    emptyzone  
       297 天前 via iPhone
    nfs 挂载后你会失去 inotify ,plex 只能通过扫盘更新媒体库。为了媒体库更新及时硬盘就不能休眠了。
    bs10081
        54
    bs10081  
       296 天前
    我一開始也是用分佈式的方式,Router Hosting Storage 分離,但是這樣就會造成家用的維護難度上升,我異地上學的時候,沒辦法維護。

    所以現在是用 DS920+ 做 All in One ,甚至直接把 NAS 放在 DMZ 裡面,然後在 NAS 裡面做防火墻的工作,數據的話,則是通過 Hyper Backup 和 CloudSync 備份到學校的 NAS 還有 Azure SharePoint
    basncy
        55
    basncy  
       296 天前
    https://www.v2ex.com/t/954204 这个提案有没有兴趣? 还能把计算部分随身带.
    ericzhou1994
        56
    ericzhou1994  
       296 天前
    我就是这么搞得
    1.首先是机器内存不够 nas 只有 8g 而且里面太多定制化了 不是很方便 nas 就应该拿来做存储
    2.nuc 装 pve docker 配置文件放一个文件夹 每天定时打包压缩 然后 ssh 到 nas 上面 存一个文件夹 做备份
    3.nas 有网盘备份功能的 每六小时比对远程文件夹 有新增就会备份到网盘

    这样一来 存储归存储 折腾归折腾 加上双重备份 怎么搞都不怕了
    ltkun
        57
    ltkun  
       296 天前 via Android
    all in one pve 配合 zfs 用硬盘笼 十几个硬盘无压力
    vitoliu
        58
    vitoliu  
       296 天前
    建议购入云厂商计算服务通过 ssh 穿透,家庭网络在老家也放一个,做多 region ,配条专线网络,计算、存储分离。异地容灾,读写分离啥的都能做了。
    misadonfdfl
        59
    misadonfdfl  
       296 天前
    我现在是 nas 只干它应该干的事,自建服务都在其他服务器里面
    menghan
        60
    menghan  
       296 天前
    我就是这么干的。

    既然谈到计算存储分离,那就是应用的计算和存储分离。现在给应用分下类:

    - 依赖特殊硬件的,有 router (openwrt) 需要多网卡,有 plex 等需要 gpu 直访或者直通的,这类应用的部署位置往往固定
    - 依赖特殊 OS 的,比如 synology 系软件,openwrt 系软件,openmediavault 系软件等,这类应用部署位置也固定
    - 不依赖 os 和硬件的,这些应用就可以实施存储计算分离了

    为了更好的资源隔离和利于迁移,我把这些应用部署在虚拟机里。
    我部署了一个 4 节点 k3s 集群,两个本地 x86 vm 节点,一个本地 arm 板子节点,一个云节点。这是计算
    我把所有的应用存储都暴露在同一个 nfs 下,所有对存储的访问都走 nfs 协议。这是存储
    在此基础上,我部署了近十个应用,包括 cronjobs, daemonsets, deployments 等

    上面只是逻辑概念。其实我的两个本地 x86 节点,是群晖上的 2 个 vm ,但我觉得这样也算存储与计算分离。
    kkwa56188
        61
    kkwa56188  
       296 天前
    从需求出发: 我有什么需求, 有什么痛点, 想好了, 再找解决办法.
    而不是反过来.
    thereone
        62
    thereone  
       296 天前
    网络虚拟化存储分开最好,我这边一个物理机爱快软路由作为出口本想用高恪奈何没有 IPv6 ,一个 物理机 op 软路由科学作为旁路由和三层交换机起 VRRP 。后端 ESXI 专门跑服务器和 nas 。基本没啥事不会登录到爱快和 op 里面去。一般只登录到 VCSA 里面创建和删除一些虚拟机。
    后面再准备把冷数据硬盘再搞到一个低配置 nas 需要用的时候就远程开机不用就关机。热数据 PT 这类的还是和虚拟机跑在一台物理机上面用 NFS 挂载。定期将热数据里面的转移到存储专用 NAS 上面,这样也比较省电一些。
    真正最好的就是网络计算存储全部解耦分离,这个也是常见的云计算里面的架构。但问题是需要开机不停地设备就多了。好处是存储计算分离随时可以自由迁移虚拟机和动数据不用管虚拟机这边。
    digimoon
        63
    digimoon  
       296 天前
    我懒,存储下载软路由 aio 全在一个 linux 搞定,服务能用容器的用容器,虚拟机也就跑个 windows 用
    本身两个网络出口,炸了 aio 还有个硬路由的出口没啥问题
    zcjfesky
        64
    zcjfesky  
       296 天前 via Android
    岁数大了一点之后只想一切简化,家里摆的东西越少越好,能 all in one 的绝不分两个
    levelworm
        65
    levelworm  
       296 天前 via Android
    这么折腾做啥。。。
    byte10
        66
    byte10  
       296 天前
    你把 nas 换一个 8 代以上的 i3 不就是什么都解决了么。那些任务 很简单的,没啥计算 的
    thevita
        67
    thevita  
       296 天前
    不是应该考虑优缺点的问题,单纯从逻辑上说,存算分离 带来了更高的复杂性,顺带的是更高的成本(大部分可能是折腾成本,但你好像不是很在意),但这写复杂性都是为了解耦计算和存储资源,使之更灵活,更符合业务的需求,所以关键问题是,你是否面临这样的需求。(最后,我觉得你的需求应该不是 要不要存算分离,你的需求应该就是 "折腾",那关系什么缺点呢?
    huihuilang
        68
    huihuilang  
       296 天前 via Android
    没啥好处,折腾快乐无比
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2866 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:26 · PVG 20:26 · LAX 05:26 · JFK 08:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.