OSイメージより大容量なDiskを借りたさくらのクラウドにおいてパーティション追加とマウント


さくらのクラウドで60GばかりHDDを借りて、20GのOSイメージからインスタンスを作成
したところ、ディスクが20Gしか使われてない。

ディスクを確保して使う方法の例を示す。

# 環境

前述どおり、60Gかりて、20GのOSイメージからインスタンス作成。OSはDebian7。

```
~# cat /etc/issue
Debian GNU/Linux 7 \n \l
```


# 調べ方

## 空き容量

まずは、ディスク空き容量チェックコマンドから。 / にマウントされているデバイスと、容量がわかる。60G借りたのに、 / は 17Gしかないとわかる。

``` shell-session
# df -h
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                   18G  840M   17G   5% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   101M  200K  101M   1% /run
/dev/disk/by-uuid/dc0004a3-24d9-4825-808a-47c518fadcaa   18G  840M   17G   5% /
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
tmpfs                                                   582M     0  582M   0% /run/shm
```

## uuidによるDisk

さっきのコマンドで / にマウントされているのは `/dev/disk/by-uuid/dc0004a3-24d9-4825-808a-47c518fadcaa` らしい。これは実際のデバイスの symbolic link なので、そのディレクトリを `ls -l` すればわかる。

``` shell-session
~# ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Feb  5 01:11 dc0004a3-24d9-4825-808a-47c518fadcaa -> ../../vda1
lrwxrwxrwx 1 root root 10 Feb  5 01:11 fc9d3c6a-709f-499b-95f4-dd533f1a95c7 -> ../../vda2
```

## マウント方式を調べる

マウント状況は `mount` で。そして、Linuxが起動したとき、自動的にどこにどのディスクをマウントするのかは、 `/etc/fstab`をみればわかる。


``` shell-session
~# cat /etc/fstab
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/vda1 during installation
UUID=dc0004a3-24d9-4825-808a-47c518fadcaa /               ext4    relatime,errors=remount-ro 0       1
# swap was on /dev/vda2 during installation
UUID=fc9d3c6a-709f-499b-95f4-dd533f1a95c7 none            swap    sw              0       0
```

``` shell-session
~# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=126895,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=102708k,mode=755)
/dev/disk/by-uuid/dc0004a3-24d9-4825-808a-47c518fadcaa on / type ext4 (rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=595960k)
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
```

## パーティションを確認する

これまでの上記コマンドで、 ディスクは `/dev/vda` と予想できる。 /dev/vda上に作られた1が/、2がswapで、まだ空き容量があるはず。

`/dev/vda`パーティション一覧をみる。これで空き容量があることは確認できた。

``` shell-session
~# fdisk -l

Disk /dev/vda: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders, total 125829120 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: 0x000947be

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    38035455    19016704   83  Linux
/dev/vda2        38035456    41940991     1952768   82  Linux swap / Solaris
```

# パーティション作成

## fdisk

最初に作成を指示すれば、あとは [ENTER]ですむ。

``` shell-session
~# fdisk /dev/vda

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

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

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

~# fdisk /dev/vda -l

Disk /dev/vda: 64.4 GB, 64424509440 bytes
16 heads, 63 sectors/track, 124830 cylinders, total 125829120 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: 0x000947be

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    38035455    19016704   83  Linux
/dev/vda2        38035456    41940991     1952768   82  Linux swap / Solaris
/dev/vda3        41940992   125829119    41944064   83  Linux
```

## まだ見えない？

warn通り、再起動か何かをしろと。私はpartprobeを叩いたら見えた。formatしないとuuidも得られないらしい。

``` shell-session
~# ls /dev/vda
vda   vda1  vda2

~# partprobe

~# ls /dev/vda
vda   vda1  vda2  vda3

~# blkid /dev/vda3

```

## format

短いプロジェクトの使い捨てのファイル共有インスタンスの予定なので特に深く考えず、 ext4を採用。uuidも得られた。

``` shell-session
~# mkfs.ext4 /dev/vda3
mke2fs 1.42.5 (29-Jul-2012)
warning: 256 blocks unused.

Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2626560 inodes, 10485760 blocks
524300 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
320 block groups
32768 blocks per group, 32768 fragments per group
8208 inodes per group
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
	4096000, 7962624

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

~# blkid /dev/vda3
/dev/vda3: UUID="0d3035b5-7790-48ca-bdd6-b36b7f0b290d" TYPE="ext4"
```

## mount

uuidでマウントする。なんでuuidがいるのか？となるのは、複数台HDDがついている場合、実はどれが/dev/vdaとかvdbとかになるか保証してくれないので、（特にクラウド上ではない実機の場合、6台のHDDの接続を間違えるなんてあるあるである)これで指定するのである。

とりあえず新Diskは /home/ に採用するようにする。 **ていうかもう/home/<username/ができている場合には上塗りされてしまうので注意**。以下の`cat`は抜粋

``` shell-session
~# vi /etc/fstab

~# cat /etc/fstab
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/vda1 during installation
UUID=dc0004a3-24d9-4825-808a-47c518fadcaa /               ext4    relatime,errors=remount-ro 0       1
UUID=0d3035b5-7790-48ca-bdd6-b36b7f0b290d /home           ext4    relatime,errors=remount-ro 0       1
```

`/etc/fstab`がまともにかけたかは、`mount -a` でテストできる。fstabはしくじるとほんとboot不能になったりするので注意。 `df -h` で `/home` が40Gあることを確認できた。

``` shell-session
~# mount -a
~# df -h
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                   18G  840M   17G   5% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   101M  204K  101M   1% /run
/dev/disk/by-uuid/dc0004a3-24d9-4825-808a-47c518fadcaa   18G  840M   17G   5% /
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
tmpfs                                                   582M     0  582M   0% /run/shm
/dev/vda3                                                40G  176M   38G   1% /home
```