闲置老硬盘利用,打造低成本NAS存储

从小到大, 买过大大小小的电脑和配件, 回头一看,总有那么几个积累的老硬盘,有3.5寸的大硬盘,也有2.5寸从笔记本上拆下来的。 往往这些硬盘规格都不大, 200G,320G,500G。真是食之无味,弃之可惜。手上只有单个盘其实没什么大用,不如直接买大容量新盘更直接省心。 但是有多个盘就不一样了, 何况能用则用,能省则省不是美德么(还不是qiong)。下面提供一种旧物利用的使用方式。

花最少的钱组RAID

和现在的SSD固态硬盘相比,性能差不说,因为还说机械旋转磁头原理,经不起折腾容易坏。 所以有必要组建RAID阵列。对于老硬盘,RAID1是最佳选择, 虽然空间减半,但是重在双份数据的可靠性。RAID0虽然相当于同时写盘加快速度,其实和现代硬盘比,也还是慢很多。如果有特殊要求的可以玩玩RAID0。我选择的是市面上比较便宜的,叫双硬盘RAID硬盘盒。

RAID双盘硬盘盒

这种硬盘盒一般可以插两个2.5大小的SATA硬盘, 稍微高级的硬盘也支持M.2等硬盘。我们这里没必要, 只需要支持2.5/3.5大小的支持机械硬盘SATA的RAID硬盘盒即可。

上面是品牌还可以的,价位一般在150到300之间。 我省钱优先,选择了国产小品牌,功能一致,价格在100块以内。为刚刚买来质量未验证就不说品牌了。大家可以在淘宝,pdd,smzdm等网站很容易找得到。重要的是有RAID功能的。

RAID双盘硬盘盒使用

等拿到硬盘盒之后,就可以直接把老硬盘插上格式化使用了。如果老硬盘还有一些资料需要备份,可以在通电前切换跳针到PM模式。插上电脑后相当于一个外接硬盘,两个硬盘都同时读取出来,和同时插两个外接硬盘没什么区别。

接下来要组RAID1,将硬盘盒断电,拨动跳针到RAID1模式。有些硬盘盒切换模式要求按住reset键插电脑,照说明书做即可。插电脑后, 一般来说,硬盘盒让操作系统作为未格式化的单硬盘使用,这是正常的。 如果是Win或者Mac,插上后直接格式化成NTFS或者AFS等文件格式即可。

但是我这里希望结合Linux为基础的NAS使用, 需要Linux下支持良好的ext4格式。(有希望在Win或许mac下仍然格式化城ext4的,需要额外安装软件,这里不涉及,请百度相关方法)。

下面提供Linux(树莓派下也支持)操作方法。

Linux(Ubuntu)下格式化硬盘

找到需要格式化的硬盘

sudo fdisk -l

这个时候出现一个列表, 通过磁盘大小,标签等信息确定是哪块硬盘。我这里的例子是/dev/sdb 这块。(注意看准, 格错了就悲剧了。)

Disk /dev/sdb: 298.3 GiB, 320008617984 bytes, 625016832 sectors
Disk model: Tech            
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes

可以看到以下信息, 是没有分区的(如果已经存在分区, 会显示类似/dev/sdb1这样的信息)。这个时候需要先分区。如果已经分区了, 跳过即可。

硬盘分区

直接使用命令

sudo fdisk /dev/sdb

此时进入交互命令行,输入n 回车创建分区(这里不赘述,详细参考分区步骤
需要注意的在最后按q退出前, 如果想保存修改,要按w回车写入, 否则一切变更都不会生效。
此时可以重新执行

sudo fdisk -l

以确认分区的确生效了,会有类似这样打印出来:

Device     Boot Start       End   Sectors  Size Id Type
/dev/xxx1       65536 625016831 624951296  298G 83 Linux

格式化成ext4格式

因为我要在Linux系统下挂载使用,因此选择ext4格式。 如果硬盘是其他OS下使用:如希望在Windows下使用,建议格式化成NTFS;如在mac下,最好直接插mac上,使用diskutil工具格式化成(AFS,HFS+)等苹果使用的格式。 以下以ext4格式为例:

sudo mkfs.ext4  /dev/xxx1

这里需要注意/dev/xxx1 和上方新建的分区地址必须一样,以你电脑为准! 请仔细核对,否则你就是错误格式化别的分区导致数据丢失!!(高危)。
如果看到类似这样的输出,就是格式化成功了

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done  

挂载硬盘

一次性挂载, 直接执行mount命令即可:

sudo mount /dev/xxx1 /mnt/xxx  (/mnt/xxx要求是目录且存在)

机器启动即挂载, 需要修改fstab文件
sudo vi /etc/fstab
增加一行配置,类似:

UUID=360xxxxx-xxxx /mnt/xxx1 ext4 defaults 0 0

使用以下命令可以取得需要挂载的硬盘UUID

blkid /dev/sdb1
/dev/sdb1: UUID="360exxxxx-71cd-xxxx" TYPE="ext4" PARTUUID="92feexxxxx"

截至目前,挂载硬盘就完成了, 后续提供类似Samba共享文件夹服务等NAS服务,请参考其他系列文章。

Troubleshooting(故障排除)

  1. 性能警告
/dev/xxx1 alignment is offset by 512 bytes.
This may result in very poor performance, (re)-partitioning suggested.

这个意思就是分区时没有对齐,我的硬盘默认其实当时分区起始位置65535。(不清楚为什么会这样)。而上面写的 fdisk命令出来有下面字样:

I/O size (minimum/optimal): 4096 bytes / 33553920 bytes

显然65535无法整除4096, 此时应该删除分区。重新建立时,手动设置为65536,多1个字节。这样就整除了,警告信息没有再出现。

  1. 错误, 格式化失败
mkfs.ext4: inode_size (128) * inodes_count (0) too big for a
	filesystem with 0 blocks, specify higher inode_ratio (-i)
	or lower inode count (-N).

这个原因很有可能是没有找到有效分区。即扩展分区之后未建立逻辑分区。可以参考这篇文章解决。