首发日期 , 以下为原文内容:
在本地局域网搭建一个文件服务器, 有很多种方式. 本文介绍的是窝觉得比较简单的一种.
文件直接存储在 btrfs 文件系统之中, 底层使用 LVM 管理磁盘, 方便扩容. 使用 btrfs RAID 1 进行镜像备份 (一个文件在 2 块硬盘分别存储一份), 防止一块硬盘突然损坏造成的数据丢失. 使用 btrfs 的 subvol 和快照等功能, 方便存储管理.
HTTP 服务器使用 deno 标准库 (jsr/std) 之中自带的简单文件服务器, 对局域网提供只读的文件访问. deno 在容器中运行, 使用 systemd --user 和 podman 管理运行容器.
注意: 本文中的文件服务器, 并没有访问权限控制, 只要在局域网之中, 就能够访问 (只读) 下载文件. 不要把秘密放上去哦 !
+ 《使用多用户增强服务器的安全性》 https://www.bilibili.com/read/cv
+ 《逻辑卷管理器 (LVM) 简介》 https://www.bilibili.com/read/cv
+ 《构建 deno/fresh 的 docker 镜像》 https://www.bilibili.com/read/cv/
+ 存储 1 (使用 RAID 0): 存储 允许丢失 的数据.
这里的文件只存储一份, 节省空间. 如果一块硬盘损坏, 可能造成数据丢失.
这里的每个文件, 在 2 块硬盘分别存储一份 (总共存储 2 份). 只有 2 块硬盘全部损坏, 才会造成数据丢失.
实际使用过程中, 根据具体情况, 把不同的文件分别丢进不同的存储区域. 从而在避免数据丢失和节省存储空间之间达到平衡.
实际上, 大部分数据都是不太重要, 允许丢失的, 比如 原神安装包, 如果丢失大不了重新下载即可. 只有少量数据是非常重要, 绝对不可忍受丢失的. 所以上述存储方案在实际使用中是可行的.
为了在一块硬盘损坏时, 不影响另一块硬盘, 每块硬盘都有自己的 VG. 在 LVM 层次主要使用存储空间动态分配 (在线扩容) 的功能, 不使用 RAID.
参考资料: <https://wiki.archlinux.org/title/Btrfs>
可以看到, 因为使用 RAID 0 (文件只存储一份), 可用空间为 198GB. 而 因为使用 RAID 1 (镜像备份), 可用空间只有 99GB.
参考资料: <https://wiki.archlinux.org/title/Snapper> <http://snapper.io/>
重启, 然后创建配置:
这个配置表示: 保留最近 48 个每小时快照, 14 个每天快照, 8 个每周快照, 6 个每月快照, 0 个每年快照.
文件系统快照, 主要用于防止 误操作 (误删除) 造成的数据丢失. 如果不小心删除了重要文件, 可以从之前的快照之中恢复. btrfs 文件系统基于写时复制 (CoW), 所以快照是低成本的, 只有变动 (新增/修改) 的文件才会占用额外的存储空间, 效率很高.
上面对 (重要数据, RAID 1) 配置了自动快照. (RAID 0) 中的数据因为本来就允许丢失, 就没必要使用快照了.
参考资料: <https://jsr.io/@std/http>
参考资料: <https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html> <https://docs.podman.io/en/latest/markdown/podman-run.1.html>
其中 的 选项, 表示容器内的程序对文件 只读. 这是一种安全措施: 假如容器内的程序, 因为存在安全漏洞, 被黑客入侵了, 那么黑客仍然无法修改文件.
本文安装配置了一个在局域网内部使用的本地 文件存储服务器, 使用 sftp 上传文件, HTTP 下载文件. 存储的文件分为 2 类: 重要数据 (不允许丢失, RAID 1), 以及允许丢失的数据 (RAID 0), 分别使用不同的存储策略. 对于重要数据配置了每小时的自动快照 (snapper), 防止误操作造成的数据丢失. 每个月自动检查 (读取) 一次全盘数据 (btrfs scrub), 可以发现底层的静默数据错误.
在 LVM 和 btrfs 的加持之下, 虽然只有 2 块硬盘, 却可以将其一部分作为 RAID 0 使用, 另一部分作为 RAID 1 使用, 并且支持存储空间的动态分配 (在线扩容), 后续添加新的硬盘也很方便. 这种软件层面的高度灵活, 是硬件 RAID 难以实现的, 也就更适合没几块硬盘的窝等穷人.
sftp 使用 SSH 公钥认证登录, 不使用密码, 提高了服务器的安全性. HTTP 服务器使用 deno 标准库自带的轻量程序, 安装方便. deno 运行在容器之中, 对数据目录 只读 访问, 提高了安全性.
本文的存储方案, 没有访问权限控制, 只要在局域网内部, 都可以访问下载文件. 上传文件也不太方便. 本文为了安装配置的简单方便, 牺牲了功能的丰富程度, 这些方面后续可以考虑改进.
到此这篇chrony服务端配置(chronyd配置)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/13930.html