CentOS 7 Virtual Machine (VM) on VMware Workstation 12 Playerのディスクを拡張する方法の備忘録です.以下は最も基本的な方法と思われます.

ディスク追加の流れ

VMware Playerの設定でディスク容量を拡張します.次にCentOS仮想マシン(VM)にloginし,fdiskでpartitionを追加し,partitionにファイルシステムを作成します.最後に,そのファイルシステムをマウントすることで,CentOSで追加ディスクを利用できるようになります.各ステップ毎にリブートが必要なことに要注意です.

partitionを追加する

fdiskを用いてpartitionを作成します.こちらのサイトが参考になります.
最初にVMware Playerの仮想マシン設定の「ハードディスク(SCSI)」でディスク容量を拡張します.このとき仮想マシンはシャットダウンされている必要があります.
次にVMを起動し,fdiskで見てみると,私の環境では以下のようになっていました.

# fdisk -l

Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000c5c14

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     6907903     3145728   82  Linux swap / Solaris
/dev/sda3         6907904    62914559    28003328   83  Linux

次に,fdiskで/dev/sdaにprimary partitionの/dev/sda4を追加します.primary partitionは4つまでですので,primary partitionをこれ以上追加することはできません.extended partition(拡張パーティション)を作成することはできます.
長いですが,以下のように対話的に進めて行きます.デフォルト値のあるものはEnterを入力しています.なお,以下のコマンド「t」はデフォルトでよいので,不要です.

# fdisk /dev/sda
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 でヘルプ): n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): p
Selected partition 4
最初 sector (62914560-125829119, 初期値 62914560):
初期値 62914560 を使います
Last sector, +sectors or +size{K,M,G} (62914560-125829119, 初期値 125829119):
初期値 125829119 を使います
Partition 4 of type Linux and of size 30 GiB is set

コマンド (m でヘルプ): t
パーティション番号 (1-4, default 4):
Hex code (type L to list all codes): L

 0  空              24  NEC DOS         81  Minix / 古い Li bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux スワップ  c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隠し C: ド c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 拡張領域  c7  Syrinx        
 5  拡張領域        41  PPC PReP Boot   86  NTFS ボリューム da  非 FS データ  
 6  FAT16           42  SFS             87  NTFS ボリューム db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux プレーン  de  Dell ユーティリ
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt        
 9  AIX ブート可能  4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access    
 a  OS/2 ブートマネ 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad ハ eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 拡張領域 (L 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
11  隠し FAT12      56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq 診断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  隠し FAT16 <32M 61  SpeedStor       ab  Darwin ブート   f2  DOS セカンダリ
16  隠し FAT16      63  GNU HURD または af  HFS / HFS+      fb  VMware VMFS    
17  隠し HPFS/NTFS  64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  65  Novell Netware  b8  BSDI スワップ   fd  Linux raid 自動
1b  隠し W95 FAT32  70  DiskSecure Mult bb  隠し Boot Wizar fe  LANstep        
1c  隠し W95 FAT32  75  PC/IX           be  Solaris ブート  ff  BBT            
1e  隠し W95 FAT16  80  古い Minix    
Hex code (type L to list all codes): 83
Changed type of partition 'Linux' to 'Linux'

コマンド (m でヘルプ): p

Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x000c5c14

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     6907903     3145728   82  Linux swap / Solaris
/dev/sda3         6907904    62914559    28003328   83  Linux
/dev/sda4        62914560   125829119    31457280   83  Linux

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。

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)
ディスクを同期しています。

リブートすると/dev/sda4が追加されます.

ファイルシステムを作成する

CentOS 7からxfsがデフォルトファイルシステムになりました.現在,マウントされているファイルシステムの「タイプ」を参照すると確認できます.

# df -T
# mkfs.xfs -f /dev/sda4
meta-data=/dev/sda4              isize=256    agcount=4, agsize=1966080 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=7864320, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=3840, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

マウントする

既に存在するマウントポイントに重複してマウントすることはできないようです(他に方法はあるようですが).そこで,今回は/hgfs下にsda4_mountディレクトリを作成し,そこに/dev/sda4をマウントし,さらに必要に応じてシンボリックリンクを張ることで対処します.

# cd /mnt
# mkdir sda4_mount
# mount /dev/sda4 /mnt/sda4_mount/

最後に/etc/fstabを編集して,再起動後も常にmountされるようにします./etc/fstabを開き,最後に以下の様に追記ます.

/dev/sda4          /mnt/sda4_mount/          xfs

シンボリックリンクを張る

/optを/mnt/sda4_mount/opt/にリンクすることを考えます.これは元々/optにソフトをインストールしようとしてディスク容量が不足したため,/optに拡張したディスクを充てたいという動機によります.

# cd /mnt/sda4_mount
# mkdir opt
# cd /
# ln -s /mnt/sda4_mount/opt/ /

これはリブートしても消えません.

パーティションを削除する

パーティションを削除するにはfdiskコマンドを使います.例として,/dev/sda4を削除してみます.

# fdisk -l ### 存在するパーティションを調べる
# fdisk /dev/sda  ### /dev/sda4ではない
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-4, default 4): 4
Partition 4 is deleted

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。

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)
ディスクを同期しています。

リブートすると/dev/sda4が消えています.