之前星际蜗牛矿难, 流出了一大堆矿难机器, 正好收过来做 NAS (绝对超值)

Intro

星际蜗牛的机器差不多是这样的配置 Intel J1900 4GB 不知名 DDR3 内存 16GB 垃圾板载 SSD(U 盘水平) 四个硬盘位 千兆网口

虽然这个配置不咋的, 但是拿来做 NAS 绰绰有余了, 接下来将讲述如何挂载上多枚硬盘并且作为 NAS 来使用

安装

安装 Arch Linux

虽然到手之后自带了一个 CentOS 不过我们不知道 root 密码也不知道里面有着什么鬼东西, 直接整个抹盘重装.

此处准备了一个存有 ArchLinux ISO 的 U盘并 Boot 到 LiveCD 模式 首先 fdisk -l 列出磁盘, 我内置的磁盘在 /dev/sda 下面

然后清空磁盘并分区

1dd if=/dev/zero of=/dev/sda
2#^C
3cfdisk /dev/sda

我的分区如下

  • 300M EFI System 分区 /dev/sda1
  • 剩余空间 EXT4 /dev/sda2

使用以下命令挂载系统分区

1mount /dev/sda2 /mnt
2cd /mnt
3mkdir -p boot
4mount /dev/sda1 boot

然后插上网线就可以开始安装 ArchLinux 了

1pacstrap -i /mnt base base-devel

该过程会联网下载 ArchLinux 相关软件包, 可能会占用较长时间, 泡杯咖啡然后坐和放宽

完成系统安装和安装引导

1genfstab -U /mnt > /mnt/etc/fstab
2bootctl --path=/boot install
3
4cd /boot/loader/entires
5nano default.conf

编写 启动项 这里给上我的来参考

1title Arch Linux
2linux /vmlinuz-linux
3initrd /initramfs-linux.img
4options root=PARTUUID=YOUR_PART_ROOT_PART_UUID rw

YOUR_PART_ROOT_PART_UUID 可以通过 blkid -s PARTUUID -o value /dev/sda2 来获取

接下来执行

1# 添加用户
2useradd -m indexyz
3# 修改密码
4passwd
5exit
6reboot
7# 拔掉 U 盘

配置 Arch Linux

上一个步骤完成了 Arch Linux 的安装 接下来就该配置 Arch Linux 了

首先先在 /etc/systemd/network 下建立 wired.network 文件

systemd 全家桶大法好

内容为

1[Match]
2Name=enp*
3
4[Network]
5DHCP=ipv4

然后执行

1systemctl enable --now systemd-networkd
2systemctl enable --now systemd-resolved

就为全部的有线网口启用了 DHCP 了

如果要自己配置静态地址的话 参考 Arch Linux WIKI - systemd-network

然后可以安装 OpenSSH Server 来远程访问

1pacman -S openssh
2systemctl enable --now sshd

储存

我这里使用了 LVM 来进行储存 > 如果不配置 RAID 就直接 LVM 的话有数据丢失风险!

将磁盘格式化成 Linux LVM 格式

 1# fdisk -l
 2Disk /dev/sdb: 3.65 TiB, 4000787030016 bytes, 7814037168 sectors
 3Units: sectors of 1 * 512 = 512 bytes
 4Sector size (logical/physical): 512 bytes / 512 bytes
 5I/O size (minimum/optimal): 512 bytes / 512 bytes
 6Disklabel type: gpt
 7
 8Device     Start        End    Sectors  Size Type
 9/dev/sdb1   2048 7814037134 7814035087  3.7T Linux LVM
10
11
12Disk /dev/sdc: 3.65 TiB, 4000787030016 bytes, 7814037168 sectors
13Units: sectors of 1 * 512 = 512 bytes
14Sector size (logical/physical): 512 bytes / 512 bytes
15I/O size (minimum/optimal): 512 bytes / 512 bytes
16Disklabel type: gpt
17
18Device     Start        End    Sectors  Size Type
19/dev/sdc1   2048 7814037134 7814035087  3.7T Linux LVM

然后进行创建

 1# pvcreate /dev/sdb1 /dev/sdc1
 2# vgcreate data /dev/sdb1 /dev/sdc1
 3# pvs
 4  PV         VG   Fmt  Attr PSize  PFree
 5  /dev/sdb1  data lvm2 a--  <3.64t <3.64t
 6  /dev/sdc1  data lvm2 a--  <3.64t <3.64t
 7# lvcreate --name storage -l 100%FREE data
 8# lvdisplay
 9  --- Logical volume ---
10  LV Path                /dev/data/storage
11  LV Name                storage
12  VG Name                data
13  LV Write Access        read/write
14  LV Creation host, time nas.internal.indexyz.me, 2019-06-21 07:15:54 +0000
15  LV Status              available
16  # open                 0
17  LV Size                <10.92 TiB
18  Current LE             2861583
19  Segments               3
20  Allocation             inherit
21  Read ahead sectors     auto
22  - currently set to     256
23  Block device           254:0
24# mkfs.ext4 /dev/data/storage
25# mkdir /data
26# mount /dev/data/storage /data
27# blkid | grep data-storage # 获取磁盘的 UUID

然后编辑 /etc/fstab 加入

1# LVM Data
2UUID=磁盘UUID /data ext4 defaults 0 2

然后执行 mount -a 就可以看到

1# df -h
2/dev/mapper/data-storage   11T   61M   11T   1% /data

应用

安装 Docker

Docker 大法好

先在 Data 卷下面划分出一个文件夹软链接到 /var/lib/docker 下, 因为内置就只有一个 16GB 的垃圾 SSD, 储存 Docker Image 可能会不够用

1cd /data
2mkdir docker
3ln -s /data/docker /var/lib/docker

然后安装 Docker

1pacman -S docker
2systemctl enable --now docker

安装 smb

1pacman -S samba
2nano /etc/samba/smb.conf
3# 编辑配置文件
4smbpasswd -a indexyz

我的配置文件为

 1[global]
 2  workgroup =
 3  server string = Indexyz NAS
 4  server role = standalone server
 5  log file = /var/log/samba/%m.log
 6  max log size = 50
 7  wins support = yes
 8
 9[Indexyz]
10  comment = Indexyz Shared Files
11  browseable = yes
12  writable = yes
13  path = /data/files
14  valid users = indexyz
15  public = yes
16  printable = no
17  guest ok = no

可以用于参考