OpenBSD 6.0 でのディスク追加とファイルシステムの移動

# はじめに

先日、[OpenBSD 6.0 で Xfce4 日本語デスクトップ環境の構築](http://qiita.com/kinichiro/items/dac58e29b7fca01de705) をしました。

この時はデスクトップ環境のみで、その他のソフトを入れていませんでした。そこで GNOME とか KDE4 とか LibreOffice 等々を入れてみようとしたのですが、どうも /usr/local の空き容量が足らなさそうです。
pkg_add でパッケージをインストールするなら /usr/local には大きなディスク容量を割り当てておくべきでした。
そこで新たにディスクを追加して、/usr/local の中身を移してみます。

*ディスク操作の公式FAQは http://www.openbsd.org/faq/index.html の [Disk Setup](http://www.openbsd.org/faq/faq14.html) を参照*

# 現在のディスクのパーティション状況

8GB のディスクで初期インストールを行ったところ /usr/local には 2GB が割り当てられていました。
以下は disklabel -h で現在のディスク wd0 のパーティション情報を表示した様子です。

```shell-session
# disklabel -h wd0
...
duid: 1234567890abcabc
...
16 partitions:
#                size           offset  fstype [fsize bsize  cpg]
  a:           131.1M               64  4.2BSD   2048 16384    1 # /
  b:           182.1M           268480    swap                   # none
  c:          8192.0M                0  unused
  d:           201.7M           641504  4.2BSD   2048 16384    1 # /tmp
  e:           212.8M          1054560  4.2BSD   2048 16384    1 # /var
  f:           951.1M          1490304  4.2BSD   2048 16384    1 # /usr
  g:           542.6M          3438080  4.2BSD   2048 16384    1 # /usr/X11R6
  h:          2150.1M          4549376  4.2BSD   2048 16384    1 # /usr/local
  i:          1044.4M          8952832  4.2BSD   2048 16384    1 # /usr/src
  j:          1340.8M         11091808  4.2BSD   2048 16384    1 # /usr/obj
  k:          1432.5M         13837856  4.2BSD   2048 16384    1 # /home
```

# ディスク追加からファイルシステム作成まで

新たに VMWare で 8GB の IDE のディスクを追加し再起動を掛けます。
追加したディスクは wd1 として認識されました。
disklabel -h で見てみるとこんな感じになっています。

```shell-session
# disklabel -h wd1
# /dev/rwd1c:
type: ESDI
...
duid: 0987654321xyzxyz
...
16 partitions:
#                size           offset  fstype [fsize bsize  cpg]
  c:             8.0G                0  unused
```

これを `disklabel -e wd1` で編集し以下のように d パーティションの行を追加しました。
d にディスク全体を割り当てています。
fstype は 4.2BSD とし、fsize、bsize、cpg は wd0 の情報を真似ました。

```shell-session
...
#                size           offset  fstype [fsize bsize  cpg]
  c:         16777216                0  unused
  d:         16777216                0  4.2BSD   2048 16384    1
```

パーティション設定できたら newfs でファイルシステムを作成します。

```shell-session
# newfs wd1d
```

# 既存ファイルシステムから新ファイルシステムへのファイルの移動

次に /usr/local の中身を新しいディスクにコピーします。
念のためにシングルユーザモードで行いました。
新しいディスクを /mnt に仮マウントしておいて、find と cpio を使って /usr/local の中身をコピーしています。

```shell-session
# shutdown now
...
#
# mount /dev/wd1d /mnt
#
# cd /usr/local
# find . -print -depth | cpio -pdmu /mnt
...
#
# exit
```

# 新ディスクのマウント設定

最後に /etc/fstab の中身を書き換えて新しいディスクが /usr/local としてマウントされるようにします。

```bash:/etc/fstab(変更前)
...
1234567890abcabc.h /usr/local ffs rw,wxallowed,nodev 1 2
...
```

以下のようにディスクの所は **"duid"."パーティション名"** で書かれていますので、disklabel -h の時の情報を元に次のように書き換えます。

```bash:/etc/fstab(変更後)
...
0987654321xyzxyz.d /usr/local ffs rw,wxallowed,nodev 1 2
...
```

リブートすると新しいディスク /dev/wd1d が /usr/local としてマウントされるようになります。

# まとめ
OpenBSD 6.0 でのディスク追加とファイルシステムの移動について説明しました。
ファイルシステムの引越しは面倒ですが上記の方法で完了しました。
こんなことなら最初からもっと大きなサイズのディスクを使えばよかったかもしれません。

OpenBSD プロジェクトは寄付を募ってます。
詳しくはこちら： http://www.openbsd.org/donations.html