我的 NAS 方案(硬件篇)

背景

首先说说我的需求,为什么打算组装 8 盘位的 NAS 呢?

第一是数据量的需求,作为一个老网民,经过十几年的积累,个人资料、照片、无损音乐、高清电影已经达到了几十T,硬盘数量也达到了十几个,原先 4 盘位的 HPE MicroServer Gen8 已经无法满足我的日常需求。第二是便利性的需求,之前被 HPE MicroServer Gen8 的颜值吸引,先后买了两台,数据分散存储在这两台机器里,很难随心所欲地放置,而且两台经常需要同时开机,一台 8 盘位机器维护会简便很多。第三是数据可靠性的考虑,4 盘位综合考虑性能成本可靠性的情况下,RAID5/RAIDZ 可能是最好的选择,但两台 4 盘位的机器组 RAID5/RAIDZ 远不如一台 8 盘位的组 RAID6/RAIDZ2 可靠。第四,为什么不用群晖,威联通等商业方案呢?贵是一个原因,其次是系统比较封闭,因为我的工作和云密切相关,对 Linux、Docker、Kubernetes 等技术也非常熟悉,通过开源方案搭建家用 NAS 是一个很吸引人的解决方案。

然后再说说我关注的几点:

  • 盘位,至少 8 盘位,否则升级的意义不大,因为我已经有两台 4 盘位机器了
  • 体积,我对体积很敏感,因为家里的空间有限,没有条件放置全尺寸机箱和刀片服务器,所以小钢炮是第一选择
  • 成本:预算有限,不会为了完美而追求很贵的机箱,但为了颜值还是愿意多花一点钱,总之还是遵循垃圾佬的思维,花最少的钱买到最值得的东西
  • 功耗:虽然不会 7*24 开机,而是随用随开,但是功耗仍然是我关注的一个方面
Read more

《Google SRE 工作手册》阅读笔记

SRE 与 DevOps 的关系

站点可靠性工程师(SRE)是 Google 工程副总裁 Ben Treynor Sloss 创造的术语。DevOps 是一种理念和工作方法,SRE 是 DevOps 的实现,比 DevOps 更具体、更清晰。

DevOps 核心思想

  • 运维和开发团队不应该独立,各自为政,需要打穿部门墙。
  • 意外不可避免,缺少保障措施才是问题。重心应该放在如何从故障中恢复,而不是防范故障的发生。
  • 每次变更要尽量小,变更次数要尽量多。不应该为了提高效率或者为了“降低”风险,把变更积攒起来一起做。应该用正确的方式面对变更的风险,比如将其拆分为规模更小、风险也更小的变更,拼接起来形成一个前向稳定的变更序列,并在实施过程中不断优化变更流程,实现变更管理方式的转型。
  • 自动化工具固然非常重要,但工程师文化更重要,良好的文化可以解决糟糕工具造成的麻烦,反之不然。
  • 统一的度量是不同部门之间沟通的基石。

SRE 核心思想

  • 做好运维是一个软件开发问题。SRE 应该使用软件工程的方法来解决问题。
  • 不企图提供 100% 的可用性。应该以服务质量目标(SLO)为准绳,任何设计不应该违反 SLO。
  • 尽量减少琐事,琐事不是工作。在运维任务上多花一分钟,在项目上就少了一分钟。虽然合理的运维任务可以更好地为设计系统提供信息,但是项目工作才能提高服务的可靠性和扩展性。
  • 确定自动化目标(哪些需要自动化,什么条件下的自动化,如何自动化)。团队成员在琐事上花费的时间不能超过 50%。
  • 减少常规故障平均修复时间(MTTR),会提升开发人员的迭代速度。
  • 理想情况下 SRE 和产品团队都应该对技术栈有整体的了解(包括前端、后端、存储、内核、物理机),SRE 需要和产品团队共享服务的所有权。
  • 负责同一个服务的不同团队应该使用相同的工具,这样优化工具的成本越小,收益更大。
Read more

Kubernetes 快速部署方法

安装 Docker

https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker

国内加速替换软件源

http://mirrors.ustc.edu.cn/

1
2
3
4
5
6
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key --keyring /etc/apt/trusted.gpg.d/docker.gpg add -

sudo add-apt-repository \
"deb [arch=amd64] http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(lsb_release -cs) \
stable"

安装 kubeadm

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

Read more

基于 KVM 的开发环境搭建

创建虚拟机

首先下载 ubuntu cloud image 使用 virsh 参考这个教程创建虚拟机:

Using Cloud Images With KVM [2021-02-07].html

固定 IP

KVM libvirt assign static guest IP addresses using DHCP on the virtual machine - nixCraft [2021-02-07].html

SSH

如果 sshd 启动失败,报错 sshd: no hostkeys available -- exiting,需要执行:

1
ssh-keygen -A

sshd_ no hostkeys available – exiting [2021-02-07].html

克隆虚拟机

How to clone existing KVM virtual machine images on Linux - nixCraft [2021-02-07].html

Read more

youtube-dl 配置备忘

youtube-dl 下载配置:

/etc/youtube-dl.conf

1
2
3
4
5
6
7
8
9
-f bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio
--merge-output-format mp4
--add-metadata
--embed-thumbnail --embed-subs --all-subs --xattrs
--yes-playlist
--write-info-json
--output "%(uploader)s/%(playlist).40s/[%(upload_date)s] %(title).68s [%(id)s].%(ext)s"
--output-na-placeholder ""
--ignore-errors
Read more

Linux 路由表简介

Linux 路由表管理主要通过 ip route 命令,早前的发行版可以用 routenetstat -r 命令,本质上是一样的,但因为前者功能更强大所以已逐渐取代后者。

下面两张图是笔者在自己的树莓派上分别使用 ip routeroute -n 命令查看路由的输出结果:

ip route 命令:

route -n 命令:

一个 IP 包的寻路过程是通过目的 IP 去匹配路由条目,匹配过程是最长路径匹配,也就是说报文优选掩码最长的路由,比如 10.0.0.0/2410.0.0.1/32,会优先匹配后者。
路由条目按照目标地址不同可以分为主机路由网络路由默认路由,下面我们按照这三种分类举例解释一下每种条目所代表的含义。

Read more

解决 “Windows 安装程序无法将 Windows 配置为在此计算机的硬件上运行”

我的 NAS 的配置是 HP Gen8 + Intel 志强 1220L v2,之前用 1T 的机械硬盘作为系统盘,因为感觉日常 IO 速度有些慢,恰好台式电脑淘汰下一个 Samsung 860 EVO SSD,所以决定替换磁盘。而此前一直是 Debian 10 + Windows Server 2008 R2 双系统,Linux 备份还原很简单,dd 命令使用起来非常方便,用 LiveCD chroot 刷新一次 grub 即可,但 Windows 就要重新安装和配置了。

因为 Windows 安装程序会覆盖掉硬盘的主引导记录 (MBR),所以一般是先安装 Windows,再安装 Linux 用 grub 重写 MBR。

然而,当我认为一切尽在掌握之时,Windows Server 2008 R2 的安装程序在复制完文件重启配置时弹出“Windows 安装程序无法将 Windows 配置为在此计算机的硬件上运行”错误,然后就中断重启了。

Read more

2020 年 2 月手记

Kubernetes

deletion timestamp

如果 Pod 的 DeletionGracePeriodSecondsTerminationGracePeriodSeconds 同时存在时,哪个生效?

kubelet 代码DeletionGracePeriodSeconds 的优先级高。

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×