ec2でのdisk拡張方法

59
EC2でのDisk拡張方法 Takamasa Sakai

Upload: takamasa-sakai

Post on 18-Jul-2015

983 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Ec2でのdisk拡張方法

EC2でのDisk拡張方法

Takamasa Sakai

Page 2: Ec2でのdisk拡張方法

自己紹介

• 酒井崇匡

• Twitter:@nullpop

• 株式会社ディーネット Cloudeoチーム

• AWS,Zabbix,fluentd

Page 3: Ec2でのdisk拡張方法

今日話すこと

•EC2でのDisk拡張方法

–Amazon Linux

–RHEL6

–CentOS6

Page 4: Ec2でのdisk拡張方法

注意点

• Amazon Linux, RHEL/CentOS6 でのお話です。

• それ以外のディストリビューションや*BSD、windows等のOSは今回は対象外です。

• RootDeviceがEBSなインスタンスが対象です。

• Diskは全てEBSを使います。

• エフェメラルディスクは今回使いません。

• 東京リージョンで提供されているAMIを使って検証してます。

Page 5: Ec2でのdisk拡張方法

本題

Page 6: Ec2でのdisk拡張方法

まずはざっくりとした手順

1.インスタンスを停止する

2.ボリュームをデタッチ

3.スナップショットを取る

4.スナップショットからボリュームを作成

5.大きいサイズで作ったボリュームをインスタンスにアタッチ

6.インスタンスを起動

7.起動できたらSSHログインしてOSごとの対応

Page 7: Ec2でのdisk拡張方法

•基本的な手順はAmazon LinuxもRHEL6もCentOS6も一緒 •ただしディストリビューション毎に微妙にクセがあったりなかったりする •クセを知った上でやらないとハマる

Page 8: Ec2でのdisk拡張方法

インスタンスの停止

Page 9: Ec2でのdisk拡張方法

対象インスタンスにSSHログイン # shutdown -h now もしくはマネジメントコンソールからstop

Page 10: Ec2でのdisk拡張方法

ボリュームをデタッチ

Page 11: Ec2でのdisk拡張方法

アタッチされているボリュームを確認

後で忘れると悲惨なので ちゃんとメモって置く

Page 12: Ec2でのdisk拡張方法

デバイス名をクリックしてすると図のようにEBSIDが表示されるのでそのIDをクリック

Page 13: Ec2でのdisk拡張方法

ボリュームの詳細が出る

Page 14: Ec2でのdisk拡張方法

[Actions]をクリックし [Detach Volume]をクリック

Page 15: Ec2でのdisk拡張方法

スナップショットの取得

Page 16: Ec2でのdisk拡張方法

[Actions]をクリックし [Create Snapshot]をクリック

Page 17: Ec2でのdisk拡張方法

[Name]と[Description]を入力

Page 18: Ec2でのdisk拡張方法

スナップショットのIDが出るのでそこをクリック

Page 19: Ec2でのdisk拡張方法

しばらく待つ

Page 20: Ec2でのdisk拡張方法

ボリュームの作成

Page 21: Ec2でのdisk拡張方法

[Create Volume]をクリック

Page 22: Ec2でのdisk拡張方法

必要事項を入力してボリュームを作成

インスタンスと同じAZに作ること!!

Page 23: Ec2でのdisk拡張方法

VolumeIDをクリック

Page 24: Ec2でのdisk拡張方法

ボリュームのアタッチ

Page 25: Ec2でのdisk拡張方法

[Attach Volume]を選択

Page 26: Ec2でのdisk拡張方法

対象インスタンスを選択

Page 27: Ec2でのdisk拡張方法

Deviceにメモったパスを入力

Page 28: Ec2でのdisk拡張方法

サーバの起動

Page 29: Ec2でのdisk拡張方法

マネジメントコンソールから起動

ログインできるようになるまで祈る

Page 30: Ec2でのdisk拡張方法

Amazon Linuxの場合

Page 31: Ec2でのdisk拡張方法

Amazon謹製のおかげでDisk拡張する上においては一番クセが無い

Page 32: Ec2でのdisk拡張方法

唯一の注意点はVolumeを アタッチするときの位置

Page 33: Ec2でのdisk拡張方法

特にRootDeviceの容量を アップしたい時はここ間違えると起動しなくなるので注意が必要

Page 34: Ec2でのdisk拡張方法

ちゃんと起動できればあとは 起動時によしなに処理してくれる。

Page 35: Ec2でのdisk拡張方法

SSHログインして # sudo df –h ディスク容量が拡張されていれば終了

Page 36: Ec2でのdisk拡張方法

RHEL6の場合

Page 37: Ec2でのdisk拡張方法

RHELはPVとHVMで挙動が違う

• PV

– AmazonLinuxと同様に起動したら終わってる

• HVM

–起動しただけじゃうまくいかない

Page 38: Ec2でのdisk拡張方法

というかHVMのイメージ どんなディスクサイズで インスタンス作っても

そのサイズになってない!

Page 39: Ec2でのdisk拡張方法

HVM形式のイメージは 予め手を加える必要がある

Page 40: Ec2でのdisk拡張方法

ということで手を入れる

Page 41: Ec2でのdisk拡張方法

RHEL6.5の時にやってた インスタンス起動時にやること

1. EPELをインストール

2. cloud-utils-growpartをインストール

3. cloud-initの設定に「- growpart」を追加

4. growpart コマンドを叩く

5. リブート

Page 42: Ec2でのdisk拡張方法

RHEL6.5と同じ手順でやってみる

Yumでcloud-utils-growpartしたら怒られたので確認 # rpm -q cloud-utils-growpart cloud-utils-growpart-0.27-13.el6.noarch RHEL6.6はcloud-utils-growpartがデフォルトで入ってるっぽい

# growpart /dev/xvda 1 FAILED: GPT partition found but no sgdisk GPTでsgdiskコマンドがねえよって怒られる

Page 43: Ec2でのdisk拡張方法

念のため確認

# parted –l

Model: Xen Virtual Block Device (xvd)

Disk /dev/xvda: 21.5GB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Number Start End Size File system Name Flags

1 1049kB 6443MB 6442MB ext4 boot

Page 44: Ec2でのdisk拡張方法

GPTって?

• GUIDパーティションテーブル

• マスターブートレコード (MBR)に置き換わる次の規格らしい

• 扱えるDiskの最大容量が大幅にアップ

• ちなみにfdiskでいじると死ぬ。

Page 45: Ec2でのdisk拡張方法

じゃあどうすんの

• ウィキペディアによると

「fdisk等のツールはGPTを扱えない。

gdisk、GNU_GRUB、grub2などがGPTに対応。」

Page 46: Ec2でのdisk拡張方法

gdiskを探してみる

どうやらあるっぽいので入れてみる

ちなみにepelに含まれてました

インストール

# yum install gdisk –y

# yum search gdisk gdisk.x86_64 : An fdisk-like partitioning tool for GPT disks

Page 47: Ec2でのdisk拡張方法

リトライ

今度は成功

あとは再起動すれば作成したDiskサイズのパーティションになっている

# growpart /dev/xvda 1 CHANGED: disk=/dev/xvda partition=1: start=2048 old: size=12582911,end=12584959 new: size=20969438,end=20971486

Page 48: Ec2でのdisk拡張方法

RHEL6.6(HVM)で インスタンス起動時にやること

1. EPELをインストール

2. gdiskをインストール

3. Cloud-initの設定に「- growpart」を追加

4. growpart コマンドを叩く

5. リブート

Page 49: Ec2でのdisk拡張方法

RHEL6.6で ボリューム拡張時にやること

1. 状況を確認(df –hとかparted –lとか)

2. リブート

Page 50: Ec2でのdisk拡張方法

DEMO

Page 51: Ec2でのdisk拡張方法

CentOS6の場合

Page 52: Ec2でのdisk拡張方法

前提

• 今回はCentOS.orgがMarketPlaceに出しているAMIを使います。

• CentOS6.5(PV)のAMI-ID ami-25436924

• CetnOS6.5(HVM)のAMI-ID ami-13614b12

• CentOS.orgから出ているAMIは最低限のパッケージのみのインストール。

• cloude-initやpartedコマンド等はインストールされていない。

• PVもHVMもどんなボリュームサイズでインスタンスをLaunchしても初期のパーティションは8GBのまま

Page 53: Ec2でのdisk拡張方法

インスタンス起動時にやること

1. EPELをインストール

2. cloud-utils-growpartをインストール

3. growpart コマンドを叩く

4. リブート

5. 起動してきたらresize2fsコマンドを叩く

Page 54: Ec2でのdisk拡張方法

ボリューム拡張時にやること

1. 状況を確認(df –hとかparted –lとか)

2. growpart コマンドを叩く

3. リブート

4. 起動してきたらresize2fsコマンドを叩く

Page 55: Ec2でのdisk拡張方法

ちなみに

• Cloud-initが入ってないのでUSERDETAが使えない。

• デフォルトではrootログインのみ可能

Page 56: Ec2でのdisk拡張方法

DEMO

Page 57: Ec2でのdisk拡張方法

まとめ

Page 58: Ec2でのdisk拡張方法

個人的に思うこと

• EC2ではDISK容量は拡張は可能

• ただしダウンタイムが必要

• なおかつOSのクセ、AMIのクセをつかんだうえで作業しないといけない

• なので非常に工数がかかる作業になってしまう。

Page 59: Ec2でのdisk拡張方法

つまり

• 容量拡張が必要とならない設計にするのがベター

• DBならRDS使うとかログファイルはS3に保存するとかEC2以外のサービスと組み合わせてやってくのがよいですね。