ディスクが不安だよ(´・ω・`)
適当な空き時間を見繕って構築中の社内Labプロジェクトですが、前回のエントリでひとまず環境が整いました。
……が、一点不安なことが……。それは、ストレージ周り!
Raspberry PiはSDカード以外のストレージデバイスを持っていないので……
- 容量の不足
- 書き込み回数上限
といった懸念事項と向き合う必要があります。
これらの対処法として一番手っ取り早いのは、「ストレージを追加する」って方法ですね。
幸いにもRaspberry PiにはUSB2.0のポートが4つ用意されています。今回はUSBな外付けストレージを追加していきたいと思うです。
最初に注意事項
USBポートに外付けのHDDとかを単純に繋ぐ……って所からスタートするのですが、環境によってはラズパイの動作が不安定になる可能性があるらしいです。
電源の供給量が限られているので、電力消費の激しい系デバイスを接続するとアレになってしまうケースがあるそうで。
ラズパイが再起動したり、ストレージ等の認識が不安定だったりするときは、この電力不足を疑うといいかも……?1)
本体についている赤色のLED(PWR)が点滅していたり、消灯しているときはその兆候
対処法としてはセルフパワー型のUSBハブ2)USBハブ自体にACアダプタとかさせる奴を間に挟んだり、電源付きの外付けストレージをチョイスするなどすればよさげですね。
要は外付けストレージの電源周りをラズパイに依存しないようにすればOK。
USBポートに外付けストレージを接続!
今回は、家に転がっていたUSB HDD/SSDケースと80GBくらいのSSDを使ってみたいと思います。
どのご家庭でも余っている普通のものですね(`・ω・´)b
普通の外付けUSBストレージとして機能するように組み立てたら、何も考えずにUSBポートに接続します。
そして、ラズパイにSSHでログインして、下記のコマンドを打ってみます。
[user1@centos-rpi3 ~]$ dmesg (中略) [61202.159663] usb 1-1.3: new high-speed USB device number 4 using dwc_otg [61202.351460] usb 1-1.3: New USB device found, idVendor=174c, idProduct=5106 [61202.351672] usb 1-1.3: New USB device strings: Mfr=2, Product=3, SerialNumber=1 [61202.351873] usb 1-1.3: Product: USB3.0 DEVICE [61202.351998] usb 1-1.3: Manufacturer: Generic [61202.352118] usb 1-1.3: SerialNumber: A0000000000000000002 [61202.353240] usb-storage 1-1.3:1.0: USB Mass Storage device detected [61202.355834] scsi host0: usb-storage 1-1.3:1.0 [61203.350761] scsi 0:0:0:0: Direct-Access INTEL SS DSA2MH080G1HP 045C PQ: 0 ANSI: 5 [61203.352382] sd 0:0:0:0: [sda] 156301488 512-byte logical blocks: (80.0 GB/74.5 GiB) [61203.353125] sd 0:0:0:0: [sda] Write Protect is off [61203.353283] sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00 [61203.353784] sd 0:0:0:0: [sda] No Caching mode page found [61203.353950] sd 0:0:0:0: [sda] Assuming drive cache: write through [61203.365555] sda: sda1 sda2 [61203.368336] sd 0:0:0:0: [sda] Attached SCSI disk [61203.375033] sd 0:0:0:0: Attached scsi generic sg0 type 0
ここで注目すべきは、
- ストレージがちゃんと認識されているか
- どのデバイス名で認識されているか
の2点ですね。
上記は手元の環境で実行した例ですが、しっかりと認識しており、「sda」というデバイス名でアクセス可能であることがわかります。
一旦立ち止まって……
続きの作業をするまえに、方針を決めましょう。
単純にストレージの容量を増やしたいだけなら、LinuxのLVM(Logigal Volume Manager)に組み込んじゃうって手もありますね。
しかし、いくらClass10のSDカードとはいえ、性質の異なるSSDと混ぜるのはちょっと怖い。
……ということで、普通にマウントしてしまいましょう(`・ω・´)b
まずは真っ白に
とりあえず、そこら辺に転がっていたストレージなので、中身を真っ白にしましょう。
最初に、「fdisk -l」ってコマンドで、現状どうなってるかをチェックします。
[user1@centos-rpi3 ~]$ sudo fdisk -l (中略) Disk /dev/sda: 80.0 GB, 80026361856 bytes, 156301488 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: gpt # Start End Size Type Name 1 40 409639 200M EFI System EFI System Partition 2 409640 156039303 74.2G Apple HFS/HFS+ AirMacExtreme_TimeMachene
今回拾ってきたSSDは、AirMac Extreme3)っていう、Apple社製の無線LAN APのUSBポートに繋いでたモノ。なので、それっぽいアレになってますね。
コイツらは邪魔者以外のなにものでもないので、この世から消し去ります。
こんな感じで。
[user1@centos-rpi3 ~]$ sudo fdisk /dev/sda WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. コマンド (m でヘルプ): d パーティション番号 (1,2, default 2): 1 Partition 1 is deleted コマンド (m でヘルプ): d Selected partition 2 Partition 2 is deleted コマンド (m でヘルプ): w パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 ディスクを同期しています。 [user1@centos-rpi3 ~]$
たまたまパーティションが2つあったので、その両方を「d」コマンドで消し去って、「w」コマンドでディスクに書き込む……って流れですね。
パーティションを新設する
新たにラズパイ用のパーティションを作成します。
例えばこんな感じで。
[haya@centos-rpi3 ~]$ sudo fdisk /dev/sda WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. コマンド (m でヘルプ): p Disk /dev/sda: 80.0 GB, 80026361856 bytes, 156301488 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: gpt # Start End Size Type Name コマンド (m でヘルプ): n パーティション番号 (1-128, default 1): 1 First sector (34-156301454, default 2048): 34 Last sector, +sectors or +size{K,M,G,T,P} (34-156301454, default 156301454): 156301454 Created partition 1 コマンド (m でヘルプ): p Disk /dev/sda: 80.0 GB, 80026361856 bytes, 156301488 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト Disk label type: gpt # Start End Size Type Name 1 34 156301454 74.5G Linux filesyste コマンド (m でヘルプ): w パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 ディスクを同期しています。
流れ的には
- 最初に「p」コマンドで何も無いことを確認
- 「n」コマンドで新規パーティションを作成(パーティションNo:1、セクタの指定はフルで)
- 「p」コマンドで意図した感じになっていることを確認
- 「w」コマンドで書き込み
って感じですね。
ここで作成したパーティションへは「/dev/sda1」でアクセスできます。
パーティションをフォーマットする
まだ、ラズパイ(ってか、Linux)では使えない状態なので、何らかのファイルシステムを作る必要があります。いわゆるフォーマットって奴ですかね。
いろいろと選択肢はあるんですけど、今回は「ext4」で行きましょう。「mkfs.ext4」ってコマンドでできます。
[user1@centos-rpi3 ~]$ sudo mkfs.ext4 /dev/sda1 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 4890624 inodes, 19537677 blocks 976883 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2168455168 597 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 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done [user1@centos-rpi3 ~]$
これで先ほど作成したパーティション(/dev/sda1)をext4なファイルシステムでフォーマットできました。
マウントする
ここまできたら、後はマウントするだけです。
最初にマウントポイントを作りましょう。
[user1@centos-rpi3 ~]$ sudo mkdir -p /mnt/disk1
どこでもいいんですけど、今回は「/mnt」ディレクトリ内に「disk1」ってディレクトリを作りました。それをマウントポイントにします。
続いて、手動でマウントしてみます。
[user1@centos-rpi3 ~]$ sudo mount -t ext4 /dev/sda1 /mnt/disk1/
これでマウントできたはずなので、確認してみます。
[user1@centos-rpi3 ~]$ sudo mount (中略) /dev/sda1 on /mnt/disk1 type ext4 (rw,relatime,data=ordered) [user1@centos-rpi3 disk1]$ df -aH ファイルシス サイズ 使用 残り 使用% マウント位置 (中略) /dev/sda1 79G 55M 75G 1% /mnt/disk1
はい、ちゃんとマウントできてますね(`・ω・´)b
再起動してもマウントされるようにする
このままだと再起動するとマウントが解除されてしまうので、ブート時に自動マウントされるよう設定します。
下記コマンドで/etc/fstabを開いて……
[user1@centos-rpi3 ~]$ vi /etc/fstab
ファイルの末尾に下記のように追記します。
/dev/sda1 /mnt/disk1 ext4 defaults 0 0
これをやった後に再起動してみてマウントされていればOK!