配置基于Ubuntu Server的NAS

本文为JC studio视频《NAS组装从入门到持续折腾》的配套文档。

不自动设置控制台分辨率

Ubuntu的引导菜单条目下按E键,进入编辑模式;在linux /casper/vmlinuz 后加入nomodeset,按F10键启动系统。

安装Ubuntu Server

在语言选择页面,选择English,回车;

Keyboard Configuration(键盘配置)页面,LayoutVariant 均保持为English (US),选择Done(完成),按回车;

Network Connections(网络连接)页面,直接选择Done

Configure Proxy(代理配置)页面,直接选择Done

Configure Ubuntu archive mirror(软件源镜像配置)页面,将Mirror Address(镜像源地址)改为http://mirrors.ustc.edu.cn/ubuntu ,选择Done

如果提示Installer update available(安装程序有更新),选择Continue without updating(继续而不更新);

Guided storage configuration(硬盘分区)页面,选择Custom storage layout(自定义存储布局),方向键移动,空格键选中;然后选中Done;进入Storage configuration(存储配置)页面,在Available Devices 列表下用方向键选中要安装系统的硬盘,回车键打开菜单,先创建ESP分区:选择Use As Boot Device(作为启动盘),会自动创建一个512M的ESP分区;再创建其他分区:Add GPT Partition,在对话框的Size(大小)框内输入大小,例如512M或60G;Format(格式)选择ext4,Mount(挂载点)选择一个挂载点,然后选择Create 创建分区。推荐创建三个分区:512M,ext4,/boot(启动分区)、>60G,ext4,/(根分区,也就是系统分区)、10G,swap、剩下的空间给一个ext4的/home 分区;

创建软件RAID,选择Create software RAID (md)name(设备名)保持md0 不动,再选择RAID Level(RAID等级),视频中因数据完整性起见我选择1 (mirrored),也就是将数据一式两份地存储,其他的RAID等级的作用和特点可以自行上网查找,然后在Devices(设备)部分勾选要建立阵列的两块机械硬盘,再选择Create(创建)。这时Available Devices 里面会出现md0,然后仿照上面的步骤创建/srv分区;

Profile setup(资料设置)页面,输入Your name(姓名)、Your server’ s name(主机名)、Pick a username(登录用的用户名),然后输入两次密码,选择Done

SSH Setup(SSH设置)页面,勾选Install OpenSSH server,选择Done;

Featured Server Snaps页面,暂不勾选任何项目,选择Done,开始安装进程,安装结束后会提示拔掉U盘,按回车重启进入新系统。

为NAS分配固定IP

以OpenWrt为例,选择网络 - DHCP/DNS,在静态地址分配中找到你的NAS,输入要设置的IPv4地址,租期(如有)推荐infinite,然后保存设置。

用SSH连接到NAS

1
$ ssh 你的用户名@NAS的IP地址

例如:

1
$ ssh wwq@192.168.0.2

然后输入登陆密码,第一次登录会出现一长串的提示后面跟着一句Are you sure you want to continue connecting (yes/no)?,输入”yes”并回车即可;需要注意的是这里不会显示已经输入的密码;完成后按回车。

安装Cockpit(控制面板)

1
$ sudo apt-get install cockpit

首先会提示输入密码,出现Do you want to continue? [Y/n]时,直接按回车。安装好之后浏览器打开你的IP地址:9090即可进入控制台。

安装其他软件时可以参照以上步骤:

1
$ sudo apt-get install 软件1 软件2 软件3 ...

卸载软件:

1
$ sudo apt-get remove 软件1 软件2 软件3 ...

刷新软件源:

1
$ sudo apt-get update

更新系统中的所有软件:

1
$ sudo apt-get upgrade

创建SMB共享

安装samba:

1
$ sudo apt-get install samba

创建SMB共享用户和密码:

1
$ sudo smbpasswd -a 你的SMB用户名

这里你的SMB用户名可以和你的登录用户名重名,也可以不同,然后输入两遍密码;

配置samba:

1
$ sudo nano /etc/samba/smb.conf

当然你也可以用vi等其他编辑器;

滚动到文件最后,输入以下内容:

1
2
3
4
5
6
7
8
9
10
11
[共享文件夹名称]
comment = 文件夹注释
path = 文件存储位置
public = yes
writable = yes
directory mask = 0777
create mask = 0777
valid users = 你的SMB用户名,root
write list = 你的SMB用户名,root
browseable = yes
available = yes

这样会创建一个名称为“共享文件夹名称”,注释为“文件夹注释”,路径位于“文件存储位置”的,能够由用户“你的SMB用户名”登录,并能由此用户在该共享文件夹下进行读写。有关详细的权限设置等内容可以自行查找;

我的配置是:

1
2
3
4
5
6
7
8
9
10
11
[Storage]
comment = JC NAS Server
path = /srv/share
public = yes
writable = yes
directory mask = 0777
create mask = 0777
valid users = wwq,root
write list = wwq,root
browseable = yes
available = yes

这代表在我的NAS中创建一个叫Storage的共享文件夹,注释是JC NAS Server,打开它所访问到的是/srv/share里面的文件,并且能够用wwq用户进行读写操作;

对于nano,按Ctrl+O保存,Ctrl+X退出,编辑其他文件可以:

1
$ sudo nano 文件路径

编辑大多数配置文件要增加sudo,否则无法保存;如果文件不存在,编辑器会为你创建它;

创建存储位置:

1
$ sudo mkdir 上面设置的文件存储位置

例如:

1
$ sudo mkdir /srv/share

设置权限使其可读写:

1
$ sudo chmod 777 上面设置的文件存储位置

例如:

1
$ sudo chmod 777 /srv/share

启用SMB服务:

1
$ sudo systemctl enable smbd

我们了解一下systemctl的使用,启用服务并设置为开机自启动:

1
$ sudo systemctl enable 服务名

启动服务但不设置开机自启:

1
$ sudo systemctl start 服务名

停止服务:

1
$ sudo systemctl stop 服务名

取消服务的开机自启:

1
$ sudo systemctl disable 服务名

重启服务(在你修改了配置文件之后会用到):

1
$ sudo systemctl restart 服务名

查看状态,显示绿灯为正常,红灯为失败:

1
$ sudo systemctl status 服务名

然后在Windows资源管理器的地址栏输入\\NAS的IP地址,例如\\192.168.0.2,就能看到共享文件夹的列表,然后双击共享文件夹,输入用户名和密码就可以访问文件了。

安装网盘服务端webd

先从webd的官网http://webd.cf/latest 获取安装包,这里需要选择webd-linux-x86_64.tar.gz,因为我们用的是常规Linux系统和x64架构;

可以用浏览器下载安装包再通过SMB上传到NAS进行安装,也可以用wget直接下载。这里介绍用wget直接下载安装包:

1
2
3
4
5
6
7
$ pkg=webd-linux-x86_64.tar.gz
$ cd /tmp
$ wget http://webd.cf/latest/${pkg}
$ tar -xzvf ${pkg}
$ sudo cp -fv webd/webd /usr/bin/
$ sudo cp -fv webd/webd.conf /etc/
$ sudo rm -rf /tmp/webd /tmp/${pkg}

创建回收站文件夹,这里把/srv/share作为网盘根目录:

1
$ mkdir -p /srv/share/.Trash

编辑配置文件:

1
$ sudo nano /etc/webd.conf

配置用户名和密码,找到Webd.User一项:

1
Webd.User rlum 用户名 密码

其中rlum是权限设置:

1
2
3
4
r - 访问文件
l - 获取文件列表
u - 上传文件
m - 删除和移动文件

再配置存储路径:

1
Webd.Root 存储路径

这里我设置成:

1
Webd.Root /srv/share

通过rc.localWebd开机自启动:

先创建链接,启用rc.local功能:

1
$ sudo ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service

再编辑rc.local文件

1
$ sudo nano /etc/rc.local

输入以下内容:

除第一行#!/bin/bash之外(它标志着这是一个脚本文件),这里#开头的内容是注释,在程序实际执行中不起作用。

1
2
3
4
#!/bin/bash

# Start webd netdisk server.
/usr/bin/webd &>/dev/null &

保存,重启系统:

1
$ sudo reboot

重启后webd会自动启动,浏览器打开IP地址:9212就能进入网盘页面。点击页面底部的Login,输入用户名和密码以登录到网盘。

配置硬盘自动休眠

设置自动休眠有助于延长寿命、降低功耗和噪音(特别是夜间)。

编辑rc.local

1
$ sudo nano /etc/rc.local

在末尾追加以下内容:

1
2
# HDD power saving
hdparm -S 休眠时间 设备名

休眠时间的常用取值:

1
2
3
4
5
6
7
60 = 5min
120 = 10min
180 = 15min
241 = 30min
242 = 1h
243 = 1.5h
244 = 2h

例如我有两块机械硬盘,分别是sdbsdc,无操作30分钟后休眠:

1
2
# HDD power saving
hdparm -S 241 /dev/{sdb,sdc}

这里/dev/{sdb,sdc}是指分别操作/dev/sdb/dev/sdc

重启生效。

$ EOF.