VMware로 인스톨한 Linux(CentOS 5.3)를 LVM을 이용하여 HDD용량 늘리기

2010. 3. 19. 16:3499. 정리전 - IT/29. IT 잡동지식

버추얼머신에 20기가 할당하고 인스톨한 CentOS 5.3 역시 부족하다.

넉넉히 최소 25~30기가 정도는 줘야 함을 알았다.


원문 : http://narucissus.blogspot.com/2009/08/vmwarelinuxcentoslvmhdd.html

CentOS5.3のHDD容量がまた足りないケースが出てきたので、 今度はLVMを使ってディスク容量を増やしてみる。 CentOS5では最初からLVMが使用されているので、 いちいちマウントする場所を気にしたりせずにディスク容量が増やせて非常に楽。 CentOS5のインストール時には「高度なストレージ設定」をしなかったと仮定。 今回のVMwareはServerではなくVMware Workstation 5.5。

VMwareにHDDを追加

まずゲストOSをシャットダウン。 CentOSなのでshutdown -h nowを実行した。 終了後以下の手順でHDDを追加。

  1. お気に入りからHDDを追加したい仮想マシンを右クリックして設定を選択
  2. ハードウェアタブの追加ボタンをクリック
  3. ハードウェア追加ウィザードへようこそ: 「次へ」ボタンをクリック
  4. ハードウェアの種類: 「ハードディスク」を選択して「次へ」ボタンをクリック
  5. ディスクの選択: 「仮想ディスクの新規作成」を選択して「次へ」ボタンをクリック
  6. ディスクタイプの選択: この仮想マシンで使用しているHDDと同じタイプを選択して「次へ」ボタンをクリック。SCSI (推奨)
  7. ディスク容量の指定: ディスクサイズ(GB)を好きなサイズに設定する。 今回は「ディスクを2GBに分割」を選択するがどちらでもOK。「次へ」ボタンをクリック
  8. ディスクファイルの指定: 好きなファイル名を指定。「完了」ボタンをクリックしてウィザードが終了し、HDDが追加される
  9. Virtual Machine Settings画面のHardwareタブにHard Disk 2 (SCSI 0:1)が追加されているはず

Linuxのパーティション設定

仮想マシンを起動すると、以下のようにデバイスファイルsdbが増えていることが分かる。

# cd /dev

# ls -l sd*

brw
-r----- 1 root disk 8,  0  8 27 18:39 sda

brw
-r----- 1 root disk 8,  1  8 27 18:40 sda1

brw
-r----- 1 root disk 8,  2  8 27 18:39 sda2

brw
-r----- 1 root disk 8, 16  8 27 18:39 sdb

SCSI 0:0はsdaに、SCSI 0:1はsdbになっている。 fdisk -lの実行結果は以下の通り。

# fdisk -l


Disk /dev/sda: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = シリンダ数 of 16065 * 512 = 8225280 bytes


デバイス Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        2610    20860402+  8e  Linux LVM


Disk /dev/sdb: 8589 MB, 8589934592 bytes

255 heads, 63 sectors/track, 1044 cylinders

Units = シリンダ数 of 16065 * 512 = 8225280 bytes


ディスク /dev/sdb は正常な領域テーブルを含んでいません

/dev/sda2がId:8eでLinux LVMになっていることが分かる。 sdbはまだ初期化されていないのでなにも表示されない。

ちなみに現在のディスク容量は以下の通り。 インストール時に「高度なストレージ設定」を行っていないが、 ファイルシステムがVolGroup00-LogVol00になっている。

# df -h

Filesystem          サイズ  使用  残り 使用% マウント位置

/dev/mapper/VolGroup00-LogVol00

                       
19G  2.9G   15G  17% /

/
dev/sda1              99M   18M   76M  19% /boot

tmpfs                 125M     0  125M   0% /
dev/shm

以下のようにしてパーティション設定を行う。

  1. fdisk /dev/sdbを実行
  2. nコマンドで新たに領域を作成
  3. 拡張または基本領域を聞かれるのでpをタイプ
  4. 領域番号を聞かれるので1をタイプ
  5. 最初シリンダ(First cylinder)を聞かれるのでそのままEnter
  6. 終点シリンダまたは+サイズ...を聞かれるのでそのままEnter
  7. tコマンドで領域のシステムIDを変更(ここ前回と違うので注意!)
  8. 16進数でLinux LVMのシステムID「8e」をタイプ(ここ前回と違うので注意!)
  9. wコマンドで書き込み、fdiskを終了
  10. (fdisk /dev/sdbを実行してpコマンドで領域を確認)
# fdisk /dev/sdb

デバイスは正常な DOS 領域テーブルも、Sun, SGI OSF ディスクラベルも

含んでいません

新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は

メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。


このディスクのシリンダ数は 1044 に設定されています。

間違いではないのですが、1024 を超えているため、以下の場合

に問題を生じうる事を確認しましょう:

1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)

2) 別の OS のブートやパーティション作成ソフト

   
(例. DOS FDISK, OS/2 FDISK)

警告: 領域テーブル 4 の不正なフラグ 0x0000 w(書き込み)によって

正常になります


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

コマンドの動作

   a  
ブート可能フラグをつける

   b   bsd
ディスクラベルを編集する

   c   dos
互換フラグをつける

   d  
領域を削除する

   l  
既知の領域タイプをリスト表示する

   m  
このメニューを表示する

   n  
新たに領域を作成する

   o  
新たに空の DOS 領域テーブルを作成する

   p  
領域テーブルを表示する

   q  
変更を保存せずに終了する

   s  
空の Sun ディスクラベルを作成する

   t  
領域のシステム ID を変更する

   u  
表示/項目ユニットを変更する

   v  
領域テーブルを照合する

   w  
テーブルをディスクに書き込み、終了する

   x  
特別な機能 (エキスパート専用)


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


Disk /dev/sdb: 8589 MB, 8589934592 bytes

255 heads, 63 sectors/track, 1044 cylinders

Units = シリンダ数 of 16065 * 512 = 8225280 bytes


デバイス Boot      Start         End      Blocks   Id  System


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

コマンドアクション

   e  
拡張

   p  
基本領域 (1-4)

p

領域番号 (1-4): 1

最初 シリンダ (1-1044, default 1):

Using default value 1

終点 シリンダ または +サイズ または +サイズM または +サイズK (1-1044, default 1044):

Using default value 1044


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

Selected partition 1

16進数コード (L コマンドでコードリスト表示): L


 
0               1e  Hidden W95 FAT1 80  古い Minix    bf  Solaris        

 
1  FAT12           24  NEC DOS         81  Minix / 古い  c1  DRDOS/sec (FAT-

 
2  XENIX root      39  Plan 9          82  Linux swap / So c4  DRDOS/sec (FAT-

 
3  XENIX usr       3c  PartitionMagic  83  Linux           c6  DRDOS/sec (FAT-

 
4  FAT16 <32M      40  Venix 80286     84  OS/2 隠し C:  c7  Syrinx        

 
5  拡張領域    41  PPC PReP Boot   85  Linux 拡張領 da   FS デー  

 
6  FAT16           42  SFS             86  NTFS ボリュ  db  CP/M / CTOS / .

 
7  HPFS/NTFS       4d  QNX4.x          87  NTFS ボリュ  de  Dell ユーテ

 
8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext df  BootIt        

 
9  AIX ブート   4f  QNX4.x 3rd part 8e  Linux LVM       e1  DOS access    

 a  OS
/2 ブート  50  OnTrack DM      93  Amoeba          e3  DOS R/O        

 b  W95 FAT32      
51  OnTrack DM6 Aux 94  Amoeba BBT      e4  SpeedStor      

 c  W95 FAT32
(LBA) 52  CP/M            9f  BSD/OS          eb  BeOS fs        

 e  W95 FAT16
(LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad    ee  EFI GPT        

 f  W95
Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ef  EFI (FAT-12/16/

10  OPUS            55  EZ-Drive        a6  OpenBSD         f0  Linux/PA-RISC  

11  隠し FAT12    56  Golden Bow      a7  NeXTSTEP        f1  SpeedStor      

12  Compaq 診断   5c  Priam Edisk     a8  Darwin UFS      f4  SpeedStor      

14  隠し FAT16 <3 61  SpeedStor       a9  NetBSD          f2  DOS セカン  

16  隠し FAT16    63  GNU HURD また ab  Darwin boot     fb  VMware VMFS    

17  隠し HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE

18  AST SmartSleep  65  Novell Netware  b8  BSDI スワッ  fd  Linux raid 自

1b  Hidden W95 FAT3 70  DiskSecure Mult bb  隠し Boot Wiz fe  LANstep        

1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            

16進数コード (L コマンドでコードリスト表示): 8e

領域のシステムタイプを 1 から 8e (Linux LVM) に変更しました


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

領域テーブルは交換されました!


ioctl() を呼び出して領域テーブルを再読込みします。

ディスクを同期させます。
# fdisk /dev/sdb


このディスクのシリンダ数は 1044 に設定されています。

間違いではないのですが、1024 を超えているため、以下の場合

に問題を生じうる事を確認しましょう:

1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)

2) 別の OS のブートやパーティション作成ソフト

   
(例. DOS FDISK, OS/2 FDISK)


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


Disk /dev/sdb: 8589 MB, 8589934592 bytes

255 heads, 63 sectors/track, 1044 cylinders

Units = シリンダ数 of 16065 * 512 = 8225280 bytes


デバイス Boot      Start         End      Blocks   Id  System

/dev/sdb1               1        1044     8385898+  8e  Linux LVM


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

PVの作成

fdiskでパーティションを設定したら通常はext3でフォーマットするところだが、 LVMの場合はPV(Physical Volume、物理ボリューム)を作成するためpvcreateコマンドを実行する。

# pvcreate /dev/sdb1 

 
Physical volume "/dev/sdb1" successfully created

あっけなく終了。 pvdisplayで確認してみる。

# pvdisplay 

 
/dev/hdc: open failed: メディアが見つかりません

 
--- Physical volume ---

  PV
Name               /dev/sda2

  VG
Name               VolGroup00

  PV
Size               19.89 GB / not usable 19.49 MB

 
Allocatable           yes (but full)

  PE
Size (KByte)       32768

 
Total PE              636

 
Free PE               0

 
Allocated PE          636

  PV UUID              
WtrOWh-XLaf-IPdj-cBPh-Tytj-IWJW-pPaJGP

   

 
"/dev/sdb1" is a new physical volume of "8.00 GB"

 
--- NEW Physical volume ---

  PV
Name               /dev/sdb1

  VG
Name              

  PV
Size               8.00 GB

 
Allocatable           NO

  PE
Size (KByte)       0

 
Total PE              0

 
Free PE               0

 
Allocated PE          0

  PV UUID               MJOW2Y
-dMXr-SvOy-zUT3-w53h-OWgh-eUZf8U

/dev/sdb1の記述が追加されていることが確認できる。

PVをVGに登録

PVが作成できたらVG(Volume Group、ボリュームグループ)にPVを登録する。 VG自体はすでに作成されているのでvgcreateの必要はない。 現在の状況をvgdisplayで確認してみる。

# vgdisplay 

 
--- Volume group ---

  VG
Name               VolGroup00

 
System ID            

 
Format                lvm2

 
Metadata Areas        1

 
Metadata Sequence No  3

  VG
Access             read/write

  VG
Status             resizable

  MAX LV                
0

 
Cur LV                2

 
Open LV               2

 
Max PV                0

 
Cur PV                1

 
Act PV                1

  VG
Size               19.88 GB

  PE
Size               32.00 MB

 
Total PE              636

 
Alloc PE / Size       636 / 19.88 GB

 
Free  PE / Size       0 / 0  

  VG UUID              
3VAI4V-VILP-LfJF-YL3l-qEde-Dwyd-XlFFPV

VolGroup00が約20GBであることが分かる。Free PE / Sizeは0。 これにvgextendコマンドでsdb1を追加する。

# vgextend VolGroup00 /dev/sdb1

 
Volume group "VolGroup00" successfully extended

もう一度vgdisplayしてみるとこう変わっている。

# vgdisplay 

 
--- Volume group ---

  VG
Name               VolGroup00

 
System ID            

 
Format                lvm2

 
Metadata Areas        2

 
Metadata Sequence No  4

  VG
Access             read/write

  VG
Status             resizable

  MAX LV                
0

 
Cur LV                2

 
Open LV               2

 
Max PV                0

 
Cur PV                2

 
Act PV                2

  VG
Size               27.84 GB

  PE
Size               32.00 MB

 
Total PE              891

 
Alloc PE / Size       636 / 19.88 GB

 
Free  PE / Size       255 / 7.97 GB

  VG UUID              
3VAI4V-VILP-LfJF-YL3l-qEde-Dwyd-XlFFPV

VG SizeとFree PE / Sizeがともに約8GB増えていることが確認できる。 が、この状態でdf -hを実行するとまだ使える領域は増えていない。 LVの拡張とファイルシステムの拡張が必要。 道のりは長い...

LVの拡張

LV(Logical Volume、論理ボリューム)の拡張を行う。 lvextendコマンドを使用するが、指定可能な最大サイズがいくつか分からないので以下のように100%FREEを指定する。

# lvextend -l +100%FREE /dev/VolGroup00/LogVol00 

 
Extending logical volume LogVol00 to 26.84 GB

 
Logical volume LogVol00 successfully resized

lvdisplayで確認するとLV Sizeが26.84 GBまで増えていることがわかる。

# lvdisplay 

 
--- Logical volume ---

  LV
Name                /dev/VolGroup00/LogVol00

  VG
Name                VolGroup00

  LV UUID                lfmle5
-GyOh-aYPD-IrFo-FL27-ogtz-Iw4xWk

  LV
Write Access        read/write

  LV
Status              available

 
# open                 1

  LV
Size                26.84 GB

 
Current LE             859

 
Segments               2

 
Allocation             inherit

 
Read ahead sectors     auto

 
- currently set to     256

 
Block device           253:0

ファイルシステムの拡張

やっとラスト。resize2fsコマンドでext3を拡張する。 オンラインリサイズが可能なのでOSを止める必要がない。

# resize2fs /dev/VolGroup00/LogVol00

resize2fs
1.39 (29-May-2006)

Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required

Performing an on-line resize of /dev/VolGroup00/LogVol00 to 7036928 (4k) blocks.

The filesystem on /dev/VolGroup00/LogVol00 is now 7036928 blocks long.

1分程度で終了。df -hを実行すると、残り15GBだった/が22GBまで増えたことが確認できる。

# df -h

Filesystem          サイズ  使用  残り 使用% マウント位置

/dev/mapper/VolGroup00-LogVol00

                       
27G  2.9G   22G  12% /

/
dev/sda1              99M   18M   76M  19% /boot

tmpfs                 125M     0  125M   0% /
dev/shm

以前のHDDの追加方法だとマウントする場所を決める必要があったが、 このやり方なら特定のディレクトリ以下だけ増やすわけではないのでより使いやすい。