ページ

2014年9月23日火曜日

【Linux】HDDにパーティションを作成する.(GPT編)

以前,【Linux】HDDにパーティションを作成する.(MBR編)という記事を書いたが,今回はその続き.というか番外編.


つい5日ほど前,Raspberry Pi で NFS サーバーを実装した.そのときはたまたま余っていたポータブル HDD を使用したため,電力供給源は当然 USB バスパワー.そのせいかは分からないが Raspberry Pi が頻繁に落ちるようになった...サーバーなのに安定性ゼロ!

そこで,どうせなら大容量の据置型外付けHDDを買うかってことで,アイ・オー・データの3.0TBの外付けHDDを購入した.


I-O DATA USB 3.0/2.0接続【家電対応】外付ハードディスク 3.0TB HDC-LA3.0



それが本日届いたため,早速 fdisk コマンドと mkfs コマンドでサクッとフォーマットを試みた.しかし,以下のようなエラーメッセージが表示され,敢え無く失敗.

警告: GPT (GUID パーティションテーブル) が '/dev/sdc' に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。

GPT・・・!?

なんぞそれ.

そこで調べてみると,

GPT は MBR(マスターブートレコード)に代わるもので,MBR では 2.0TB を超える大容量のディスクを扱うことができないため,新しく設けられたパーティション管理の方法だとか.FAT32 では 4GB を超えるファイルが扱えないとかと同じような制約ってことですかね.多分.

MBR と言えば,grub rescue とか色々と飛び火しそうな話題ですが,今回は割愛.とにかく fdisk コマンドでは GPT をサポートしてないので代替手段が必要だが,答えはすでに上に書かれていて,GNU Parted もとい parted コマンドでフォーマット及びパーティション作成を行なう.

まずは,parted コマンドで該当するディスクを指定する.
$ sudo parted /dev/sdc

その後は help コマンドを使用すれば,各コマンドの使い方がわかる.

今回は mklebal コマンドで,新しいgptパーティションテーブルを作成し,
(parted) mklabel
新しいディスクラベル? gpt
警告: いま存在している /dev/sdc のディスクラベルは破壊され、このディスクの全デー
タが失われます。続行しますか?
はい(Y)/Yes/いいえ(N)/No? yes

mkpart コマンドで,パーティションを切る.
(parted) mkpart
パーティションの名前?  []?
ファイルシステムの種類?  [ext2]?
開始? 0%
終了? 100%

パーテションの名前とファイルシステムの種類は指定せずにデフォルトのままで構わない.



【追記】
この記事をひと通り作成してから,fdisk コマンドによく似た gdisk コマンドがあることがわかった.gdisk コマンドでは gpt をサポートしているので,fdisk に慣れている人は gdisk コマンド + mkfs コマンドの合わせ技でも良いようだ.


2014年9月18日木曜日

Raspberry Pi で NFS サーバーを構築する.

Raspberry Pi はストレージとしてSDカードを利用するため,あまり大容量のファイルを保存するのには向かない.そこで,USB接続で外付けHDDを接続して/homeディレクトリにマウントし,さらにそれをNFSとして公開する.

■サーバー側の設定


外付けHDDを/homeディレクトリに自動でマウントするために,/etc/fstab を管理者権限で開き,以下の一文を追加する.
/dev/sda1 /home ext4 defaults 1 2

(外付けHDD は予め ext4 形式でフォーマットし,元の /home ディレクトリの中身を rsync コマンド等で複製しておく.)

作業後はサーバーを一度再起動し,dfコマンドで設定が反映されたか確認する.
pi@raspberry:$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.2G  2.8G  4.2G  40% /
devtmpfs        214M     0  214M   0% /dev
tmpfs            44M  268K   44M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            87M     0   87M   0% /run/shm
/dev/mmcblk0p1   56M   20M   37M  36% /boot
/dev/sda1       2.7T  578G  2.0T  23% /home

次にこれを NFSサーバーとして公開する.まずは必要なパッケージをインストール.
pi@raspberry:$ sudo apt-get install -y nfs-common nfs-kernel-server

インストールが完了したら,/etc/exports を管理者権限で開き,以下の一文を追加.
/home 192.168.100.0/24(rw,sync,no_subtree_check)

/etc/exports の記述形式は以下の通り.
公開するディレクトリ 公開先(オプション)

今回は /home ディレクトリを 192.168.100.0〜255(ネットワーク全体)に読み書き可能なネットワークストレージとして公開した.

最後に起動時に自動でサーバーが立ち上がるようにする.
pi@raspberry:# update-rc.d rpcbind enable
pi@raspberry:# update-rc.d nfs-common enable
pi@raspberry:# update-rc.d nfs-kernel-server enable

【2016.11.4追記】
jessieからはsystemdが標準になったので以下のコマンドで自動起動化する.
pi@raspberry:# systemctl enable rpcbind.service
pi@raspberry:# systemctl enable nfs-common.service
pi@raspberry:# systemctl enable nfs-kernel-server.service

【2019.7.24追記】
いつから変更になっていたのか正確には不明だが,起動スべきサービス名が変更になっていた.(しかもインストール直後からenableのため,実際にはコマンドを叩く必要は無い)
pi@raspberry:# systemctl enable nfs-server.service

最後に再起動してサーバー側の設定は終了.

■クライアント側の設定


クライアント側の設定は非常に簡単で,ただ /etc/fstab を編集するのみ.まずは必要なパッケージのインストール.
pi@raspberry:$ sudo apt-get install -y nfs-client

/etc/fstab を管理者権限で開き,以下の一文を追加する.192.168.100.5 はサーバーのアドレス.
192.168.100.5:/home /home nfs defaults 0 0

一度再起動し,df コマンドなどで設定が反映されたか確認する.
pi@raspberry:$ df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/root             15G  2.8G   11G  21% /
devtmpfs             459M     0  459M   0% /dev
tmpfs                 93M  288K   93M   1% /run
tmpfs                5.0M     0  5.0M   0% /run/lock
tmpfs                186M     0  186M   0% /run/shm
/dev/mmcblk0p1        56M   20M   37M  36% /boot
192.168.100.5:/home  2.7T  578G  2.0T  23% /home