求一个超级丐的nas,要求足够便宜?

Sep 21, 2023 at 20:14:00

其实最好是有一台 LINUX 服务器,好处之后会说。树莓派什么的也行,但是如果有台式机要打游戏的话,可以相应一台。如果家庭网络中已经有长期运行的 Linux 设备,可以直接跳转到 NAS 创建部分。

首选需要确认你想要存储内容的磁盘已经连接到了电脑并且已经格式化。如果通过USB连接,建议在磁盘管理里把它挂载到固定驱动器,驱动器号是否保留随意。

磁盘管理——更改驱动器号和路径的截图。
磁盘管理——更改驱动器号和路径的截图。

先打开硬件虚拟化,然后开启 Hyper-V(这年头大家都用 WSL,我就不推荐其他软件了)。重启之后打开 Hyper-V 管理器右侧的“虚拟交换机管理器”,选择“新建虚拟网络交换机” - “外部” - “创建虚拟交换机”。给交换机设置一个名字,选择你的网卡,一定要勾选“允许管理操作系统共享此网络”,然后点击应用。

Hyper-V 虚拟交换机管理器的截图,展示了一个外部以太网交换机的详情。
Hyper-V 虚拟交换机管理器的截图,展示了一个外部以太网交换机的详情。

之后创建虚拟机。去 Ubuntu 网站下载一个最新的 LTS 版本的 Ubuntu Server 镜像。在 Hyper-V 管理器的右侧点击“新建”-“虚拟机”,按照“新建虚拟机向导”的指引完成虚拟机的新建,这里建议使用第二代虚拟机、开启动态内存分配(根据我的实测,只安装 samba 服务的 Ubuntu Server 大约需要 1800MB 左右的内存,因此固定分配 4GB 会导致浪费)。因为我们打算做网络存储,所以不需要分配特别大的系统盘。

虚拟机创建完成之后,右键打开设置。根据需要进行以下设置:

  • 使用“添加硬件”添加一个网络适配器,让它连接到刚刚创建的虚拟交换机
  • 在 SCSI 控制器下添加一个硬盘驱动器,创建一个虚拟硬盘,存放到你的硬盘里。通过 USB 连接的磁盘建议把虚拟硬盘的路径设置为路径挂载点。
  • 在“安全”选项卡中间安全启动的模板更改为“Microsoft UEFI 证书颁发机构”。如果你使用的不是 Ubuntu、RHEL 这些支持安全启动的发行版,关闭安全启动。

完成设置之后,打开磁盘管理,选择“操作”-“附加 VHD”并定位到刚刚创建的虚拟磁盘进行挂载。在下方的磁盘列表中找到虚拟磁盘并进行初始化,然后新建一个分区,不需要格式化。然后选择“操作”-“分离 VHD”卸载虚拟磁盘。

启动虚拟机并完成 Ubuntu Server 的安装,记住设置的主机名。如果你存数据的磁盘很大,不建议在安装系统的时候进行格式化,耗时太久了。虚拟机系统安装完成之后,先添加你的 SSH Key (Ubuntu Server 安装过程中有一步是直接从 GitHub 下载 SSH Key,建议在这里就设置好),然后直接从宿主机或者其他任何机器 SSH 进去。

登录进系统后,使用 lsblk 命令查找磁盘,通常来讲应该是 sdb

lsblk 的输出
lsblk 的输出

找到目标磁盘,使用

sudo mkfs.ext4 /dev/sdb2

创建文件系统。然后使用

sudo blkid

查找到 /dev/sdb2PARTUUID。之后创建一个挂载点

sudo mkdir <挂载点>

用你喜欢的编辑器打开 /etc/fstab 并添加:

PARTUUID=<前面找到的 PARTUUID> <挂载点> ext4 auto,nofail,noatime,rw,user 0 0

重启系统之后检查是否正确挂载。

然后安装 samba 和 mDNS:

sudo apt install samba avahi-daemon

启动这两个服务:

sudo service smbd start
sudo service avahi-daemon start

编辑一下 samba 的配置,这是一个典型的共享目录配置:

[Data]
    comment = Data
    path = /mnt/data
    valid users = username
    writeable = yes

也可以开启用户主目录的分享,取消掉这几行前面的注释。不过需要注意用户主目录用的是系统盘空间。

[homes]
   comment = Home Directories
   browseable = no

如果你想要让服务器被 macOS 发现,那可以在全局配置([global])里面添加:

    min protocol = SMB2
    vfs objects = acl_xattr catia fruit streams_xattr
    fruit:metadata = stream
    fruit:model = MacPro
    fruit:posix_rename = yes
    fruit:veto_appledouble = no
    fruit:wipe_intentionally_left_blank_rfork = yes
    fruit:delete_empty_adfiles = yes
    fruit:aapl = yes
    spotlight = yes
    server min protocol = SMB2
    mdns name = mdns

注:fruit:model = MacPro 会让设备在访达里看起来像是刨丝器 Mac Pro,有以下可以选:

plutil -p /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist | grep -A 1 "device-model-code"

如果你想让服务器可以作为时间机器目标,可以添加:

[Time Machine]
    comment = Time Machine
    guest only = Yes
    path = /mnt/data/timemachine
    force user = username
    writeable = yes
    fruit:time machine = yes

之后为你的用户设置 SMB 密码

sudo smbpasswd -a $(whoami)

重启 SMB 服务,应该就可以使用了

sudo service smbd restart

发布于 2023-09-21 20:14・IP 属地美国