前言

最近在考虑nas的最优硬盘方案和数量,稍微运用一下经济学知识,于是便有此文

概念

首先科普一些概念

边际效应即商品的价值会随着价格增加而减少(自己编的,大概是这么个意思),例如你很想吃冰淇淋,当冰淇淋的价格逐渐增加时,你会有如下反应

  • 当冰淇淋价格为0.5元时,你会觉得很便宜,不会犹豫就会买下
  • 当冰淇淋价格为1元时,你会觉得可以接受,稍微犹豫一下就会买下
  • 当冰淇淋价格增加到10元20元这个价格时,你就会开始思考,你是否真的想花这么多钱满足你吃冰淇淋的欲望,此时商品对你的价值已经开始下降了。当然如果你是富哥,还是会毫不犹豫的买下

知道这个概念后可以来看一下问题

问题建模

硬盘价格均来自于淘宝,价格具有波动性,仅供参考

注意,此问题不考虑硬盘质量,只参考便宜的矿盘/二手盘价格(带两年包换的硬盘),非新盘

当冰淇淋0.5元时,你会毫不犹豫的买

问题一

问题,板u80,电源50,机箱60,内存20 4G,机械硬盘价格500g 30元,1t 100元,2t 160元,3t 200, 4T320,8T590,10T570,12T600,14T739,16t 919,组n(n==1)台三盘位nas,3盘要求容量相同,求出每T最便宜的主机方案,告诉我n的数量和选用的硬盘容量大小,如方案一:3 x 500G
硬盘成本:30元 x 3 = 90元
总成本:80 + 50 + 60 + 20 + 90 = 300元,则300/((3*500)/1000)=200,得到200元每T,最后使用python描绘曲线图,得出边缘效应递减的最适合点

此问题为只组一台的情况

问题二

问题,板u80,电源50,机箱60,内存20 4G,机械硬盘价格500g 30元,1t 100元,2t 160元,3t 200, 4T320,8T590,10T570,12T600,14T739,16t 919,组n(1<=n<=4)台三盘位nas,使用raid5阵列,所以容量等效只有2块硬盘,3盘要求容量相同,求出每T最便宜的主机方案,告诉我n的数量和选用的硬盘容量大小,如方案一:3 x 500G
硬盘成本:30元 x 3 = 90元
总成本:80 + 50 + 60 + 20 + 90 = 300元,则300/((2500)/1000)=300,得到300元每T,此时一共有1T,方案2,3 1000G 硬盘成本 100 * 3 = 300 元,总成本为: 510元,此时一共有2T,则方案一达到2T的成本为 2 * 300 = 600 > 510 所以应选用方案2,此时n=1,我要求你给出n的数量和选用的硬盘容量大小,可以遍历所有n但最大只能是4最小是1

此问题为组n台的情况,实际上问题一就是问题二的解,只不过最优解乘n而已

问题解决

问题一

可以分为两种解法

  • 最经济效益型的,使用边际效应求出最适合点
  • 不差钱的但又不想白花钱,买经济实惠的方案

以下是gemini给出的参考代码

import matplotlib.pyplot as plt

# 定义硬件成本
motherboard_cost = 80
power_cost = 50
case_cost = 60
memory_cost = 20

# 定义硬盘容量和价格
disk_sizes = [500, 1000, 2000, 3000, 4000, 8000, 10000, 12000, 14000, 16000]  # 以 GB 为单位
disk_prices = [30, 100, 160, 200, 320, 590, 570, 600, 739, 919]

# 初始化列表存储结果
nas_configurations = []
cost_per_tb = []

# 循环遍历所有可能的硬盘容量组合
for disk_size in disk_sizes:
    # 计算三盘位 NAS 的总容量
    total_capacity = disk_size * 3

    # 计算硬盘成本
    disk_cost = disk_prices[disk_sizes.index(disk_size)] * 3

    # 计算总成本
    total_cost = motherboard_cost + power_cost + case_cost + memory_cost + disk_cost

    # 计算每 TB 成本
    cost_per_tb_value = total_cost / (total_capacity / 1000)

    # 添加结果到列表
    nas_configurations.append(f"方案 {disk_sizes.index(disk_size) + 1}: 3 x {disk_size}GB")
    cost_per_tb.append(cost_per_tb_value)

# 打印所有方案和每 TB 成本
for i in range(len(nas_configurations)):
    print(f"{nas_configurations[i]},每 TB 成本:{cost_per_tb[i]:.2f} 元")

# 绘制曲线图
plt.plot(disk_sizes, cost_per_tb)
plt.xlabel("硬盘容量 (GB)")
plt.ylabel("每 TB 成本 (元)")
plt.title("三盘位 NAS 成本分析")
plt.xticks(disk_sizes)
plt.grid(True)
plt.show()

marginal_costs = []
for i in range(1, len(cost_per_tb)):
    marginal_cost = cost_per_tb[i] - cost_per_tb[i-1]
    marginal_costs.append(marginal_cost)

# 打印边际成本
print("边际成本:", marginal_costs)

# 找到边际成本开始明显增加的点
for i in range(1, len(marginal_costs)):
    if marginal_costs[i] > marginal_costs[i-1] * 1.2:  # 设置一个阈值,例如 1.2 倍
        optimal_point = i
        break

print(f"边际效应递减的最适合点:{disk_sizes[optimal_point]}GB")

结果如下

方案 1: 3 x 500GB,每 TB 成本:200.00 元
方案 2: 3 x 1000GB,每 TB 成本:170.00 元
方案 3: 3 x 2000GB,每 TB 成本:115.00 元
方案 4: 3 x 3000GB,每 TB 成本:90.00 元
方案 5: 3 x 4000GB,每 TB 成本:97.50 元
方案 6: 3 x 8000GB,每 TB 成本:82.50 元
方案 7: 3 x 10000GB,每 TB 成本:64.00 元
方案 8: 3 x 12000GB,每 TB 成本:55.83 元
方案 9: 3 x 14000GB,每 TB 成本:57.79 元
方案 10: 3 x 16000GB,每 TB 成本:61.81 元
边际成本: [-30.0, -55.0, -25.0, 7.5, -15.0, -18.5, -8.166666666666664, 1.952380952380949, 4.026785714285715]
边际效应递减的最适合点:2000GB

曲线图如下

三盘为nas成本分析

可以得出结论

  1. 购买2T * 3. 此时边际效应随硬盘容量增大而变化最大(即斜率变化最大)
  2. 购买12T * 3. 此时每TB成本最低

问题二

解与上面第二结论相同,但此时

最佳方案:
n: 4.0
硬盘容量:12000.0G
总成本:7410.0元
每T成本:77.1875元

一共7410元,请量力而行

且12T的氦气盘一般都是16T,18T的问题盘屏蔽后得到的盘,从个人的角度来看还是建议不要买,买那么多盘应该也不会在意那点差价,直接上16T和18T了

本人配置

选好了硬盘怎么能不实践呢?

我选用的nas配置如下,可以参考

  • N3150 80元(cpu+主板连在一起的)
  • pcie转SATA扩容 30 元
  • 350w电源 40元
  • 2T * 3 180 * 3 = 540 元
  • DDR3 4G内存 20元
  • 酷鱼S3 MATX机箱 50元
  • 立人硬盘架 30元
  • 启动u盘当引导盘 15元

合计805元,你可以获得一个4T存储空间RAID 5的nas一台,整机耗电待机不到10w

结论

主要是针对最没钱的群体,最好买2T的

如果不差钱,就上12T以上,最好上16,18T硬盘