Raspberry Piでファイルサーバ、Part2 外付けハードディスクの導入編

Part1のSamba基本編では、共有データを保存する場所が8GB(3GB使用中)のSDカード内でした。つまり最大でも5GBまでしか共有データを保存できません。

ここで家に転がっていた内蔵型HDDを外付けHDDにして、大容量のファイルサーバへアップグレードします。

Raspberry Piでお勧めの保存先

まず最初に全般的な話から始めます。

使う容量が54GB以下

Model BならSDカード、Model B+ならマイクロSDカードを使っていますが、使う容量が54GB以下なら64GBのSDカード/マイクロSDカードを2枚買って、1枚にRaspberry Piをインストールして使って、もう1枚は自動バックアップ用に使用します。

SDカードを容量いっぱいいっぱいで使い続けると寿命が縮むらしいので、64GBなら6GBくらいはあけておいたほうがいいです。つまり実質的に使える共有フォルダのサイズは54GBくらいです。(システム領域に4GB確保しておきます)

SDカード/マイクロSDカードは壊れやすいですが大容量のものほど壊れにくいです。
そのため容量の少ないファイルサーバでも64GBのSDカード/マイクロSDカードを買うべきです。

また壊れたときに自動バックアップ用のSDカード/マイクロSDカードに付け替えれば、1日前のデータになるかもしれませんが、元に戻すことができるので買う枚数は2枚です。自動バックアップについては別の機会に説明します。

ただ購入したSDカード/マイクロSDカードの相性か何かで使えない可能性があるので、まず最初に1枚買って、問題ないようなら同じものをもう一枚買うというやりかたをしましょう。

Transcend microSDXCカード 64GB Class10 UHS-I対応 (無期限保証) TS64GUSDU1E
【Amazon.co.jp限定】Transcend microSDXCカード 64GB Class10 UHS-I対応 (無期限保証) TS64GUSDU1E (FFP)

使う容量が54GB超~数TB

素直にハードディスクを使います。家に余分なハードディスクが転がっていたらそれを使いましょう。外付けならそのまま利用して、内臓型HDDなら外付けケースを買いましょう。

ちなみに私は余分な内臓型HDDが転がっていたので、外付けケースを買って使うことにしました。

玄人志向 3.5型HDDケース SATA接続 USB2.0対応 GW3.5AA-SUP/MB
玄人志向 3.5型HDDケース SATA接続 電源連動 USB2.0対応 マットブラック GW3.5AA-SUP/MB

超古いパソコンのHDDだとIDEを使っている可能性があるので、IDEに対応したケースが必要です。上記のは一般的なHDDでSATA対応です。

余分なハードディスクを持っていない場合、
買うなら2.5インチの内臓ハードディスクと2.5インチ用の外付けケースです。

なんで2.5インチを勧めるかと言うと省エネだからです。
普通の3.5インチのハードディスクは使用時10W、アイドル時4Wくらいの電力を食います。
2.5インチのハードディスクの場合は使用時4W、アイドル時2Wくらいの電力で済みます。
(最近のHDDだともっと省エネだと思いますが、基本的に2.5インチのほうが電気代が安くなります)

3.5インチのHDDの場合、一番かかって月150円です。
2.5インチのHDDの場合、一番かかっても月60円です。

ハードディスクのメーカーで避けるべきはSeagateです。
Seagateは故障しやすいです。あとSamsungも怪しいです。

お勧めは日立(HGST)ですが、若干値段が他よりも高いです。

そのほかのメーカーは団子状態なのであまり気にしなくていいです。
SeagateとSamsungを避けてあとは運まかせです。

容量は現時点(2014年10月末)では1TBがお得です。

東芝 TOSHIBA 2.5インチHDD(SerialATA)/容量:1TB/回転数:5400rpm/キャッシュ:8MB MQ01ABD100
東芝 TOSHIBA 2.5インチHDD(SerialATA)/容量:1TB/回転数:5400rpm/キャッシュ:8MB MQ01ABD100

上記のHDDを下記のケースに入れます。

玄人志向 2.5インチ HDDケース USB2.0 ケーブルを本体収納 専用ポーチ付き 簡単組み立て GW2.5SC-SU2
玄人志向 2.5インチ HDDケース USB2.0 ケーブルを本体収納 専用ポーチ付き 簡単組み立て GW2.5SC-SU2

Raspberry PiでHDDをフォーマット

HDDとケースの準備ができたら、HDDをケースに入れてUSBでRasbperry Piにつなげます。

2.5インチHDDの場合でRaspberry Pi Model Bを使っている人、
またはModel B+だけど2Aの充電アダプタを使っていない場合、
セルフパワーのUSBハブが必要になります。

2.5インチHDDは最大1Aくらい使うので、
Raspberry Piの電源が貧弱だとRaspberry Piがまともに動かなくなります。

ELECOM USBハブ USB2.0対応 ACアダプタ付 セルフ・バスパワー両対応 U2H-EG4SBK
ELECOM USBハブ USB2.0対応 ACアダプタ付 セルフ・バスパワー両対応 4ポート ブラック U2H-EG4SBK

ちなみに私はRaspberry Pi Model B、ハードディスクは日立のDeskstar(250GB)、セルフパワーのUSBハブを使っています。
実際にRaspberry PiにHDDをつなげてフォーマットして、共有フォルダとして使えるようにしてみます。

HDDをフォーマットする

ハードディスクをRaspberry Piにつなぎます。

Raspberry Piから

sudo fdisk -l

Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001243a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63   488392064   244196001    7  HPFS/NTFS/exFAT

6年前(?)くらいにWindowsパソコンで使っていたハードディスクです。
パーティションを削除して新たにパーティションを作成します。

sudo fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001243a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63   488392064   244196001    7  HPFS/NTFS/exFAT

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): d
Selected partition 1

Command (m for help): p

Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001243a

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-488397167, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-488397167, default 488397167):
Using default value 488397167

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

sudo fdisk -l

Disk /dev/sda: 250.1 GB, 250059350016 bytes
81 heads, 63 sectors/track, 95707 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001243a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   488397167   244197560   83  Linux

新しくパーティションが作成できたのでext4でフォーマットします。
ntfsでフォーマットする人もいるけど普通はext4が良いと思う。

速度的にext4が一番良いらしいです。(未検証です)

sudo mkfs.ext4 /dev/sda1

mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
15269888 inodes, 61049390 blocks
3052469 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
1864 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872

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

フォーマットが完了したのでマウントします。
あ、ちょっと事情により日立のハードディスクはあとで使うことにしました。

最初に悪名高いSeagate(320GB)のハードディスクを使うことにしました。
Seagateのパティション新しくしてフォーマット。

あらためてハードディスクをマウントします。
ハードディスクのUUIDを調べてfstabにマウントの仕方を追加します。

sudo blkid /dev/sdb1
/dev/sdb1: UUID="23d24d57-4dcd-2fb4-abc1-1dd63e7f6bc1" TYPE="ext4"

USBメモリと外付けハードディスクのハブの位置を変えたら、ハードディスクがsdbになってた。
こういうのをさけるために、UUIDでfstabを設定します。

※ 下記のコマンドは危険なので実行してはいけません。

sudo vim /etc/fstab

UUID=23d24d57-4dcd-2fb4-abc1-1dd63e7f6bc1  /media/hdd1           ext4    defaults          0       2

リブートします。

死にました。
Rasbperry PiがSSHで反応しなくなりました。
起動に失敗している模様です。

バックアップしてるSDカードを持ち出してあれやこれやして、ようやく原因がわかりました。

原因は最後の2です。

UUID=23d24d57-4dcd-2fb4-abc1-1dd63e7f6bc1  /media/hdd1           ext4    defaults          0       2

この行の一番最後の数字の2が犯人です。

調べたら2というのはfsckチェックをしろというオプションで、
何かしらの原因でfsckチェックでRaspberry Piが止まっています。

5分くらい待ってみましたが、Raspberry Piが動きません。
fsckチェックをするのにとてもパワーが必要でRaspberry Piが反応しないのかもしれません。
もしくは単にエラーで止まっているだけかもしれません。

fsckチェックはHDDがまともな状態かどうかをチェック?しているらしいです。
0でそのチェックを無視できます。ということで0にしました。

UUID=23d24d57-4dcd-2fb4-abc1-1dd63e7f6bc1  /media/hdd1           ext4    defaults          0       0

ついでに、念のためmediaディレクトリにhdd1ディレクトリを作っておきました。

sudo mkdir /media/hdd1

これでリブートすればHDDを自動的にマウントしてRaspberry Piも普通に起動してくれます。

現在の構成

df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          7.4G  2.7G  4.4G  39% /
/dev/root       7.4G  2.7G  4.4G  39% /
devtmpfs        239M     0  239M   0% /dev
tmpfs            49M  528K   48M   2% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda1       7.5G   52M  7.5G   1% /media/usb0
tmpfs            97M     0   97M   0% /run/shm
/dev/sdb1       294G   63M  279G   1% /media/hdd1
/dev/mmcblk0p1   56M  9.7M   47M  18% /boot
tmpfs            32M     0   32M   0% /tmp
tmpfs            16M     0   16M   0% /var/tmp
tmpfs            32M  116K   32M   1% /var/log

320GBの外付けハードディスクが/media/hdd1へマウントしてくれています。
ところで、320GBのハードディスクなのにSizeが194Gになっているのですが・・。

Availにいたっては279Gになってしまっています。
残りの41GBはいずこへいったのでしょう??

とりあえず見なかったことにします。
知っている人いたら教えてください。

外付けHDDにSambaの共有フォルダを作成する

SDカードにSambaの共有フォルダを作成していましたが、これからは外付けHDDに共有フォルダを作成してそこを使うことにします。

cd /media/hdd1
sudo mkdir samba
sudo chown your_username:your_username samba
cd samba
mkdir public

sudo vim /etc/samba/smb.conf

#publicのpathだけ変更する
[public]
   comment = Public
   path = /media/hdd1/samba/public
   public = yes
   read only = no
   browsable = yes
   force user = your_username

#Sambaをリスタートする
sudo service samba restart

WindowsでSambaの共有フォルダに適当なファイルを作成する。

Raspberry Piから確認してみたところ、
ちゃんと外付けHDDのほうに保存されていました。

以上で外付けハードディスクの導入編の終了です。
お疲れ様でしたー。

Raspberry Piでファイルサーバ、Part2 外付けハードディスクの導入編” への1件のコメント
  1. チキン より:

    ハードディスクの容量の違いですが、
    製品の表記上のG=1000*1000*1000

    OS上では
    G=1024*1024*1024で計算するために生じる差です。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください