Hatena::ブログ(Diary)

Web系がおもしろい。

2013-09-20

VM上のUbuntu Server(LVMあり)のパーティションを拡張したった

| 23:44 | VM上のUbuntu Server(LVMあり)のパーティションを拡張したったのブックマークコメント

仮想環境(ESXi)のHDDが足りんなったので拡張したった!

30GB -> 130GBです。その時のメモ。


環境

$ uname -a
Linux unko 3.5.0-36-generic #57~precise1-Ubuntu SMP Thu Jun 20 18:21:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

参考サイト

以下のサイトがすごい参考になりました。。( Thanks @ebiflyer )


そもそもLVMってなんなの

LVM(logical volume manager)とは、複数のハード・ディスクやパーティションにまたがった記憶領域を一つの論理的なディスクとして扱うことのできるディスク管理機能。LinuxをはじめとしたUNIX系OS上で利用できる。

LVMとは

パーティションすらも僕よく分かってなかったんですけど、上記日経BPの記事はすごい分かりやすいです…!

LVMには、

  • PV: 物理ボリューム
    • 実際にささってるHDDの領域
  • LV: 論理ボリューム
    • 使う側が普段意識するボリューム
  • VG: ボリュームグループ
    • 上記を統括するおおきなグループ

の3つがあるみたいです。

HDDの容量を増やすというのは、新しい領域を認識させた後、それらの領域をそれぞれ拡張してあげることが必要みたいです。


流れ

  1. vSphere Client経由でVMHDDを増設
  2. fdiskでパーティションを拡張
  3. PVの拡張
  4. LVの拡張
  5. ファイルシステムの拡張

vSphere Client経由でVMHDDを増設

GUIで普通にHDDを増設します。フィーリングで設定できます。たぶん。

増設できたら起動して、コマンドだして確認しましょう。

$ sudo lshw -C disk
  *-disk                  
       description: SCSI Disk
       physical id: 0.0.0
       bus info: scsi@2:0.0.0
       logical name: /dev/sda
       size: 130GiB (139GB)
       capabilities: partitioned partitioned:dos
       configuration: signature=00017ad2
  ...

僕の場合は 30GB -> 130GB なのでこれでうはおk。


fdiskでパーティションを拡張

…するんですが、その前にいろいろ情報を見ておきましょう。


$ df -H

Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/unko-root    106G   51G   51G  50% /
udev                     2.1G  4.1k  2.1G   1% /dev
tmpfs                    830M  267k  830M   1% /run
none                     5.3M     0  5.3M   0% /run/lock
none                     2.1G     0  2.1G   0% /run/shm
/dev/sda1                239M   56M  171M  25% /boot

今回、拡張するのは /dev/mapper/unko-root です。(上記はもう拡張後の情報なので増えちゃってます)


$ sudo fdisk -lu /dev/sda

Disk /dev/sda: 139.6 GB, 139586437120 bytes
255 heads, 63 sectors/track, 16970 cylinders, total 272629760 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: 0x00017ad2

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      499711      248832   83  Linux
/dev/sda2          501758    62912511    31205377    5  Extended
/dev/sda5          501760    62912512    31205376    5  Linux LVM

/dev/sda2 が拡張パーティション、/dev/sda5 が論理ボリューム?になるのかな。。(よく分かってない)

sdaはhdaだったりとかもしますが同じです。

あと、上記一覧上記は保持しておきましょう。この後使います。


※上記結果もですが、ここから先の記事は事後に書いてるので、HDD拡張後の値になってます…。試行錯誤でやったので、前のデータが以下しか残ってません。。参考までにおいておきます。

255 heads, 63 sectors/track, 16970 cylinders, total 272629760 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

/dev/sda1   2048    499711   248832  83 Linux
/dev/sda2 501758  62912511 31205377   5 Extended
/dev/sda5 501760  62912512 31205376  8e Linux LVM

で、この後、一旦マシンを落として、root権限を持ったrescue modeで起動。編集していきます。

# fdisk /dev/sda

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

コマンドを発行すると編集モードになるので、まずmを押してそれぞれのコマンドを確認。

Command (m for help): p

Disk /dev/sda: 139.6 GB, 139586437120 bytes
255 heads, 63 sectors/track, 16970 cylinders, total 272629760 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: 0x00017ad2

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      499711      248832   83  Linux
/dev/sda2          499712   272629759   136065024    5  Extended
/dev/sda5          501760   272629759   136064000   8e  Linux LVM

現在の状態も確認できます。

では、まずはパーティションを仕切りなおすため、一旦パーティションを削除します。(ここも僕よく分かってないんですが、拡張の場合パーティション内のデータは消えませんでした。仕切りなおすだけだからかな。)

Command (m for help): d
Partition number (1-5): 2

Command (m for help): p

Disk /dev/sda: 139.6 GB, 139586437120 bytes
255 heads, 63 sectors/track, 16970 cylinders, total 272629760 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: 0x00017ad2

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      499711      248832   83  Linux

/dev/sda2パーティション消えました。sda2に対する論理パーティションsda5も同時に消えました。元がなくなるので当然ですね。

では、新たに仕切りなおします。

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
Partition number (1-4, default 2): <リターン>
Using default value 2
First sector (499712-272629759, default 499712): <リターン>
Using default value 499712
Last sector, +sectors or +size{K,M,G} (499712-272629759, default 272629759): <リターン>
Using default value 272629759

sda2はプライマリではなく、拡張パーティションなので"e"(extended)を選択。今回は増設した分MAXに使うので、default値として計算してくれている値(First sectorは499712, Last sectorは272629759)を選択するため、数値を入力しないでそのままリターン連打で先に進みます。

続けて論理パーティション


Command (m for help): n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (501760-272629759, default 501760): <リターン>
Using default value 501760
Last sector, +sectors or +size{K,M,G} (501760-272629759, default 272629759): <リターン>
Using default value 272629759

Command (m for help): p

Disk /dev/sda: 139.6 GB, 139586437120 bytes
255 heads, 63 sectors/track, 16970 cylinders, total 272629760 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: 0x00017ad2

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      499711      248832   83  Linux
/dev/sda2          499712   272629759   136065024    5  Extended
/dev/sda5          501760   272629759   136064000   83  Linux

論理パーティションは"l"(logical)。sda5。値はすべてdefault値。

これで仕切りなおしができたのですが、sda5のパーティションIdがまだ"Linux LVM"になっていないので続けて以下を実行。

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

Command (m for help): p

Disk /dev/sda: 139.6 GB, 139586437120 bytes
255 heads, 63 sectors/track, 16970 cylinders, total 272629760 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: 0x00017ad2

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      499711      248832   83  Linux
/dev/sda2          499712   272629759   136065024    5  Extended
/dev/sda5          501760   272629759   136064000   8e  Linux LVM

無事なりました!ちなみに途中で入力した 8e は、fdiskの対話モードで l を押すと見れます。

Command (m for help): l

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 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 hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1 80  Old Minix     

そして最後に間違いないか確認しながら、 w で保存。

上記fdiskの対話モードの状態は、この「w」を発行するまでは書き込まれません。途中で不安になったり失敗した時は、Ctrl + cで一旦中断しましょう。


Command (m for help): w

# exit

上記fdiskコマンドの処理は、最後の「w」を発行するまでは書き込まれません。途中で不安になったり失敗した時は、Ctrl + cで一旦中断しましょう。

ここの拡張は、 【Linux サーバ構築 - Fedora Core5編】LVM - LVM - パーティションの拡張を伴うPV, VG, LVの拡張方法の 2 を見ながら行いました。



残りの処理

上記の3つあたりは【Linux サーバ構築 - Fedora Core5編】LVM - LVM - パーティションの拡張を伴うPV, VG, LVの拡張方法を参考にするとできました!(書き疲れた)

注意点は、

  • 上記の記事にある「/dev/VolGroup00/LogVol01」や「/dev/VolGroup00/LogVol02」に該当するものは、僕の記事にある「/dev/mapper/unko-root」です。
  • Ubuntu Serverには、上記の記事にある ext2online コマンドが無い
    • この部分は飛ばしても問題なかったです。
    • 代わりに(?)、resize2fsの前に、lvresizeコマンドは発行しました。
    • lvresizeコマンドはこの辺りからみつけた。


これで、晴れて拡張できました。なんかよく分かってないところ多くて大丈夫かな…って感じするけど、df -Hとかみてもちゃんとなってるし、もともとのデータも消えてないしよしとします!

トラックバック - http://d.hatena.ne.jp/esperia/20130920/1379688277
リンク元
Connection: close