2015年10月13日火曜日

[AWS] XFSフォーマットのEBSを拡張して、認識させる方法


なのまるです。

AWSのAmazonLinux使ってて、EBSの拡張した時のメモです。
たぶんほかのLinuxの時も、同じ方法を使うかと思います。


もくじ



前提条件

以下の環境で、行いました。
  • Red Hat Enterprise Linux Server release 6.7 (Santiago)
  • 対象Diskのフォーマットは『xfs
  • EBSを拡張(100GB⇒2TB)
  • 新しいEBSをアタッチ済み
  • fstabにmount情報を設定済み

手順

  • EBSの拡張
  • 拡張したEBSのDiskをOSに認識させる

EBSの拡張

EBSの拡張については、こちらのAWSドキュメントにお任せします。

とはいえ流れだけ。
  • 対象のインスタンスを停止(可能なら)
  • 対象のVolumeのSnapshot作成
  • Snapshotから、サイズ拡張したVolumeを作成
  • 対象のインスタンスを停止(上記でしていない場合)
  • Volumeのデアタッチ
  • 新ボリュームVolumeを対象のインスタンスに、アタッチする
  • インスタンスの起動



拡張したEBSのDiskをOSに認識させる

インスタンスに新しく「/dev/xvdb」として、アタッチ済みを想定しています。

2TBで作成しましたが、まだ100GBとして認識している
[ec2-user@localhost data]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      9.8G  4.0G  5.4G  43% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/xvdb1      100G  682M  100G   1% /data


Diskとしては、認識している(/dev/xvdb)
[ec2-user@localhost data]$ sudo file -s /dev/xvd*
/dev/xvda:  x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, boot drive 0x80, 1st sector stage2 0x156070, GRUB version 0.94; partition 1: ID=0xee, starthead 0, startsector 1, 20971519 sectors, extended partition table (last)\011, code offset 0x48
/dev/xvda1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (large files) (huge files)
/dev/xvdb:  x86 boot sector; partition 1: ID=0x83, starthead 1, startsector 63, 209712447 sectors, extended partition table (last)\011, code offset 0x0
/dev/xvdb1: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)


Diskスライス状況確認
[ec2-user@localhost ~]$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   10G  0 disk
└─xvda1 202:1    0   10G  0 part /
xvdb    202:16   0    2T  0 disk
└─xvdb1 202:17   0  100G  0 part /data


ext2,ext3,ext4ならこのコマンド・・・あ、xfsだった。。。
[ec2-user@localhost ~]$ sudo resize2fs /dev/xvdb1
resize2fs 1.41.12 (17-May-2010)
resize2fs: Bad magic number in super-block while trying to open /dev/xvdb1
Couldn't find valid filesystem superblock.

[ec2-user@localhost ~]$ sudo xfs_growfs -d /data
meta-data=/dev/xvdb1             isize=256    agcount=4, agsize=6553514 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=26214055, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=12799, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data size unchanged, skipping

data size unchanged, skippingと出ている。。。

「data size unchanged, skipping」を解消させる

fdiskコマンドで、状況確認
[ec2-user@localhost ~]$ sudo fdisk -l
 
WARNING: GPT (GUID Partition Table) detected on '/dev/xvda'! The util fdisk doesn't support GPT. Use GNU Parted.
 
 
Disk /dev/xvda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
 
    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1               1        1306    10485759+  ee  GPT
 
Disk /dev/xvdb: 2199.0 GB, 2199023255552 bytes
255 heads, 63 sectors/track, 267349 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2bf8ce0c
 
    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb1               1       13054   104856223+  83  Linux
※ Endのcylinders値がおかしいんでしょうね・・・

255 heads, 63 sectors/track, 267349 cylinders
に対して
  End
13054


パーティション情報変更のため、マウントポイントを一度unmountします。
[ec2-user@localhost ~]$ sudo umount /data


パーティション情報を「fdisk」コマンドで書き換える
[ec2-user@localhost ~]$ sudo fdisk /dev/xvdb
 
WARNING: The size of this disk is 2.2 TB (2199023255552 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID
partition table format (GPT).
 
 
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
 
Command (m for help): p
 
Disk /dev/xvdb: 2199.0 GB, 2199023255552 bytes
255 heads, 63 sectors/track, 267349 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2bf8ce0c
 
    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb1               1      267349  2147479818+  83  Linux
 
Command (m for help): d
Selected partition 1
 
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-267349, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-267349, default 267349):
Using default value 267349
 
Command (m for help): p
 
Disk /dev/xvdb: 2199.0 GB, 2199023255552 bytes
255 heads, 63 sectors/track, 267349 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2bf8ce0c
 
    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb1               1      267349  2147480811   83  Linux
 
Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
Syncing disks.


mountし直します!(fstabに書いてある前提)
[ec2-user@localhost ~]$ sudo mount -a


xfsはマウントしていないと拡張できないので、「xfs_growfs」コマンドで拡張します!
[ec2-user@localhost ~]$ sudo xfs_growfs -d /data
meta-data=/dev/xvdb1             isize=256    agcount=4, agsize=6553514 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=26214055, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=12799, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 26214055 to 536870202


「2TB」を認識しました!
[ec2-user@localhost ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      9.8G  4.0G  5.4G  43% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/xvdb1      2.0T  683M  2.0T   1% /data


まとめ

  • xfs拡張するときは、パーティションのサイズに気を付けて!
  • 「xfs_growfs」コマンドで、拡張するよ!
  • うん。相当面倒だね!(^o^)

参考サイト




画像

Zenback