Raspberry Pi从零开始搭建低成本NAS(4)-存储设备

准备一块硬盘,以及一个移动硬盘盒(支持2.5/3.5寸的硬盘,以及外接供电)把硬盘分区,并格式化为ext4 格式,这样性能更好,寿命应该更长(待考证)。

由于RPi的USB口供电能力有限,所以移动硬盘需要外部供电Table 1是官方给出的数据(https://www.raspberrypi.org/help/faqs/#power) , 可以看到Raspberry Pi 2 Model B USB最大供电电流为600mA/1.2A(可切换),注意这是4个USB口总共加一起的最大电流。如果我们把电流改成1.2A,那么理论上带一个移动硬盘应该没有问题。但是请注意:进入网页在表格的下面有一段,我摘抄出来。

The Raspberry Pi model B+ and 2B can supply 600mA/1.2A to downstream USB peripherals, switchable by a firmware setting. This allows the vast majority of USB devices to be connected directly to these models, assuming the upstream power supply has sufficient available current. Very high-current devices or devices can draw a surge current such as certain 3G modems and USB hard disks will still require an external powered USB hub.


Table 1. 各种版本的供电参数

注意粗体句子,意思是说虽然电流够了,但是像3G模块和USB移动硬盘需要较高电流或者会产生浪涌电流的设备仍然需要外部带供电的USB集线器。所以为了设备安全最好按照官方的建议做。

实在是嫌麻烦或者不怕死的,比如像我这样的,嘿嘿,可以裸接2.5寸移动硬盘,但为了保险起见,就不要再接什么其它USB设备了,比如无线网卡(类似于3G模块)、鼠标、键盘等。

所以根据上面的分析对于想外接移动硬盘的人来说,有以下两种解决方案:

  1. 直接用RPi给2.5寸移动硬盘供电
    郑重声明:请考虑清楚是否一定要采用这种方式,自己评估风险(出现任何烧机,损坏,移动硬盘挂掉等任何硬件故障),出现一切问题自己负责,别哭着找我啊,我可不赔。
  2. 用带电源的USB集线器,USB集线器接上电源,然后连接上RPi的USB口,移动电源接到USB集线器上。USB集线器一定要选择质量信得过的牌子,供电能力足够的,带过流保护功能,如此一来就可以连接多个移动硬盘,比如接两个移动硬盘,其中一个用来做数据备份。

由于我暂时没有USB集线器,所以下面我以第一种方案为例进行测试,我这边有一个2.5寸1T移动硬盘和1个64G U盘。先把U盘格式化为ext4格式,移动硬盘之前有两个分区,一个FAT32,一个exFAT,由于我移动硬盘有其他用途,我就不格式化为ext4。但建议大家可以弄个专用的移动硬盘,然后格式化为ext4格式,这样好折腾,你想想,每天不关机,还要远程下载等等,U盘什么的经不起这么玩。

首先编辑/boot/config.txt,先备份,

sudo cp /boot/config.txt /boot/config.txt.orig
sudo vim /boot/config.txt

在文件末尾加上这行max_usb_current=1,把最大电流切换到1.2 A,关机,断电,插上USB移动硬盘和U盘,上电启动。然后登录SSH,查看磁盘信息, sudo fdisk –l,如果没有问题的话,会显示,

… …
Disk /dev/sda: 62.9 GB, 62914560000 bytes
… …

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   122879999    61438976   83  Linux

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
… …

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63   976760030   488379984    c  W95 FAT32 (LBA)
Partition 1 does not start on physical sector boundary.
/dev/sdb2       976760160  1953520063   488379952    7  HPFS/NTFS/exFAT

可以看到,/dev/sda为64G U盘,只有一个分区/dev/sda1,/dev/sdb为1T移动硬盘,有两个分区/dev/sdb1(FAT32)和/dev/sdb2(exFAT)。如果看不到移动硬盘,进行以下操作:

先安装git

sudo apt-get install git-core –y

克隆Wiring Pi

sudo git clone git://git.drogon.net/wiringPi

进入Wiring Pi文件夹,开始编译

cd wiringPi && sudo ./build

检查GPIO 38 Pin 电平

gpio –g read 38

应该返回1,表示高电平,如果返回0表示低电平,我们需要让pin脚输出高电平

gpio -g write 38 1

然后再检测一遍,如果还有问题,那我也没办法, 老老实实接USB集线器。

成功识别到硬盘后,可以查询文件系统类型、LABEL、UUID等信息

sudo blkid

会显示,

/dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="boot" UUID="15CD-3B79" TYPE="vfat"
/dev/mmcblk0p2: UUID="13d368bf-6dbf-4751-8ba1-88bed06bef77" TYPE="ext4"
/dev/sda1: UUID="7e623443-f19a-4564-8e60-e9d2170ac32a" TYPE="ext4"
/dev/sdb1: LABEL="COLORSPACE" UUID="F8E6-4FDB" TYPE="vfat"
/dev/sdb2: UUID="3007-F316" TYPE="exfat"

Raspbian默认不支持exFAT,需要安装exfat-fuse

sudo apt-get install exfat-fuse -y

再就是设置自动挂载,需要编辑/etc/fstab,先备份,

sudo cp /etc/fstab /etc/fstab.orig
sudo vim /etc/fstab

在文件最后加上下面几行内容,

UUID=F8E6-4FDB /home/pi/usbhdd/usbhdd1  vfat   defaults,noatime,umask=0000,utf8=1  0   0
UUID=3007-F316 /home/pi/usbhdd/usbhdd2  exfat  defaults,noatime,umask=0000         0   0
/dev/sda1      /home/pi/nas-data        ext4   defaults,noatime                    0   0

如果出现中文乱码,需要加参数utf8=1,保存,最后重启。关于/etc/fstab,可以参考https://wiki.archlinux.org/index.php/Fstab

创建挂载目录

mkdir /home/pi/usbhdd
mkdir /home/pi/usbhdd/usbhdd1
mkdir /home/pi/usbhdd/usbhdd2
mkdir /home/pi/nas-data

重启

sudo reboot

重新登录SSH,查看挂载信息

sudo mount -l

会显示,

… …
/dev/sdb1 on /home/pi/usbhdd/usbhdd1 type vfat (… …)
/dev/sdb2 on /home/pi/usbhdd/usbhdd2 type fuseblk (… …)
/dev/sda1 on /home/pi/nas-data type ext4 (… …)

或者输入命令

sudo df -h

会显示,

Filesystem      Size  Used Avail Use% Mounted on
rootfs           15G  3.0G   11G  22% /
/dev/root        15G  3.0G   11G  22% /
devtmpfs        460M     0  460M   0% /dev
tmpfs            93M  388K   93M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           186M  4.0K  186M   1% /run/shm
/dev/mmcblk0p1   56M   19M   37M  34% /boot
/dev/sdb1       466G  447G   19G  96% /home/pi/usbhdd/usbhdd1
/dev/sdb2       466G  457G  9.1G  99% /home/pi/usnhdd/usbhdd2

表明全部挂载成功。