2014年1月22日水曜日

仮想マシン上のLinuxでディスク容量を拡張してLVMとして追加する

VMWare Fusion に Debian7 を入れて使っているんだけど、最初の見立てが甘かったため、ディスク容量が一杯になってしまった。

そこで、ハードディスクの容量を増やして空き領域に新たなパーティションを作成し、LVMとして追加することにした。LVMなら再度容量を追加したりするとき便利だし。

まあ仮想マシンだから新たにディスクを増やしてもいいんだけれど、そこはせっかくなので仮想マシンならではの方法をやってみよう、ということでディスクの容量追加にした。

ただ容量増加前の状態だと20GBの容量ほぼ全部を1つのパーティションとして使っていて(かつLVMにしていない)、ここにルート(/)以下をまるごと突っ込んでしまっているので、このパーティション自体の容量を増やそうとすると色々と面倒だ。

そこで最も容量を圧迫している /home 以下に、新たに作成したLVMパーティションを割り当てることにした(参考にしたのはここ)。

まず、VMWare の設定画面からハードディスクの容量を変更する(20GB -> 50GB)。スナップショットがあると変更できないので、必要なデータは事前にバックアップしたうえでスナップショットは消しておく。
そしてルート権限で fdisk コマンドを実行する。-lオプションをつけて現在の状態を確認。

[root@localhost]~# fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 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: 0x000325f8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    40136703    20067328   83  Linux
/dev/sda2        40138750    41940991      901121    5  Extended
/dev/sda5        40138752    41940991      901120   82  Linux swap / Solaris

/dev/sdaは53.7GBと認識されてる。もちろん容量を増やしたから、現在のパーティションを全部合わせても空き領域がある。この空き領域に新しくパーティションを作成して/home用に使うことにする。その際、パーティションの開始セクタを空き領域の先頭に設定する。

そこで fdisk で続けて次の操作を行う。
・nコマンドを入力(パーティションを新規作成)
・パーティションタイプはデフォルト(プライマリ)でよいのでそのままEnter
・パーティション番号もデフォルト(この場合は3)でよいのでそのままEnter
・開始セクタは空き領域の先頭(この場合は41940992)を入力
・終了セクタは自動的に最終セクタがデフォルトになるのでそのままEnter

Command (m for help): n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): 
Using default response p
Partition number (1-4, default 3): 
Using default value 3
First sector (40136704-104857599, default 40136704): 41940992
Last sector, +sectors or +size{K,M,G} (41940992-104857599, default 104857599): 
Using default value 104857599

パーティションができたかpコマンドで確認。

Command (m for help): p

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 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: 0x000325f8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    40136703    20067328   83  Linux
/dev/sda2        40138750    41940991      901121    5  Extended
/dev/sda3        41940992   104857599    31458304   83  Linux
/dev/sda5        40138752    41940991      901120   82  Linux swap / Solaris

/dev/sda3としてできている。

パーティションのタイプをtコマンドでLVMに変更する。
fdiskでの操作は
・コマンドは t を入力
・パーティション番号は先ほど作成した番号(3)を入力
・ヘックスコードはLVMを表す 8e を入力

[root@localhost]~# fdisk /dev/sda

Command (m for help): t
Partition number (1-5): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)

pコマンドで結果を確認する。

Command (m for help): p

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 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: 0x000325f8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    40136703    20067328   83  Linux
/dev/sda2        40138750    41940991      901121    5  Extended
/dev/sda3        41940992   104857599    31458304   8e  Linux LVM
/dev/sda5        40138752    41940991      901120   82  Linux swap / Solaris

確認できたら、w コマンドでパーティションテーブルに書き込む。

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: デバイスもしくはリソースがビジー状態です.
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.

古いパーティションを使用中なので警告が出る。パーティションテーブルを有効化するために再起動する。

[root@localhost]~# reboot

再起動後、PVを作成しようと思ったらコマンドがなかったので lvm2 をインストール。

[root@localhost]~# apt-get install lvm2

コマンドを認識させるためログアウト&ログインしておく。そしてあらためてPVを作成。

[root@localhost]~# pvcreate /dev/sda3
  Writing physical volume data to disk "/dev/sda3"
  Physical volume "/dev/sda3" successfully created

VG作成、今回はPVを1つだけ使うことにする。

[root@localhost]~# vgcreate home1 /dev/sda3
  Volume group "home1" successfully created

LV作成、VG空き容量の全部を使うことにする。

[root@localhost]~# lvcreate -n home1-1 -l 100\%FREE home1
  Logical volume "home1-1" created

ext4としてフォーマット

[root@localhost]~# mkfs.ext4 /dev/home1/home1-1
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
1966080 inodes, 7864320 blocks
393216 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
240 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

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

/homeの中身を引っ越すため、一時的にマウントポイントを作成して新しく作成したパーティションをマウントし、コピーする。

[root@localhost]~# mkdir /mnt/home1-1
[root@localhost]~# mount /dev/home1/home1-1 /mnt/home1-1 
[root@localhost]~# cp -rp /home/* /mnt/home1-1

/etc/fstabを編集する。

[root@localhost]~# vim /etc/fstab

最終行に以下を追加して保存

/dev/home1/home1-1 /home ext4 defaults 1 2

最後に、コピー済みの/homeの中身を消して再起動

[root@localhost]~# rm -rf /home/*
[root@localhost]~# reboot

再起動後、dfで確認してみる。

[root@localhost]~# df -h
ファイルシス                                           サイズ  使用  残り 使用% マウント位置
rootfs                                                    19G  6.6G   12G   37% /
udev                                                      10M     0   10M    0% /dev
tmpfs                                                    397M  688K  396M    1% /run
/dev/disk/by-uuid/a1211e97-cb86-4aa7-8829-0700c8e26c1a    19G  6.6G   12G   37% /
tmpfs                                                    5.0M     0  5.0M    0% /run/lock
tmpfs                                                    969M  220K  969M    1% /run/shm
/dev/mapper/home1-home1--1                                30G  8.1G   20G   29% /home

/homeの容量が増えました。めでたしめでたし。

※この記事について指摘・意見・提案・感想などありましたら下のコメント欄にどうそ。

0 件のコメント:

コメントを投稿