ec2でのdisk拡張方法
TRANSCRIPT
![Page 1: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/1.jpg)
EC2でのDisk拡張方法
Takamasa Sakai
![Page 2: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/2.jpg)
自己紹介
• 酒井崇匡
• Twitter:@nullpop
• 株式会社ディーネット Cloudeoチーム
• AWS,Zabbix,fluentd
![Page 3: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/3.jpg)
今日話すこと
•EC2でのDisk拡張方法
–Amazon Linux
–RHEL6
–CentOS6
![Page 4: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/4.jpg)
注意点
• Amazon Linux, RHEL/CentOS6 でのお話です。
• それ以外のディストリビューションや*BSD、windows等のOSは今回は対象外です。
• RootDeviceがEBSなインスタンスが対象です。
• Diskは全てEBSを使います。
• エフェメラルディスクは今回使いません。
• 東京リージョンで提供されているAMIを使って検証してます。
![Page 5: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/5.jpg)
本題
![Page 6: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/6.jpg)
まずはざっくりとした手順
1.インスタンスを停止する
2.ボリュームをデタッチ
3.スナップショットを取る
4.スナップショットからボリュームを作成
5.大きいサイズで作ったボリュームをインスタンスにアタッチ
6.インスタンスを起動
7.起動できたらSSHログインしてOSごとの対応
![Page 7: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/7.jpg)
•基本的な手順はAmazon LinuxもRHEL6もCentOS6も一緒 •ただしディストリビューション毎に微妙にクセがあったりなかったりする •クセを知った上でやらないとハマる
![Page 8: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/8.jpg)
インスタンスの停止
![Page 9: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/9.jpg)
対象インスタンスにSSHログイン # shutdown -h now もしくはマネジメントコンソールからstop
![Page 10: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/10.jpg)
ボリュームをデタッチ
![Page 11: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/11.jpg)
アタッチされているボリュームを確認
後で忘れると悲惨なので ちゃんとメモって置く
![Page 12: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/12.jpg)
デバイス名をクリックしてすると図のようにEBSIDが表示されるのでそのIDをクリック
![Page 13: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/13.jpg)
ボリュームの詳細が出る
![Page 14: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/14.jpg)
[Actions]をクリックし [Detach Volume]をクリック
![Page 15: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/15.jpg)
スナップショットの取得
![Page 16: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/16.jpg)
[Actions]をクリックし [Create Snapshot]をクリック
![Page 17: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/17.jpg)
[Name]と[Description]を入力
![Page 18: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/18.jpg)
スナップショットのIDが出るのでそこをクリック
![Page 19: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/19.jpg)
しばらく待つ
![Page 20: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/20.jpg)
ボリュームの作成
![Page 21: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/21.jpg)
[Create Volume]をクリック
![Page 22: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/22.jpg)
必要事項を入力してボリュームを作成
インスタンスと同じAZに作ること!!
![Page 23: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/23.jpg)
VolumeIDをクリック
![Page 24: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/24.jpg)
ボリュームのアタッチ
![Page 25: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/25.jpg)
[Attach Volume]を選択
![Page 26: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/26.jpg)
対象インスタンスを選択
![Page 27: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/27.jpg)
Deviceにメモったパスを入力
![Page 28: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/28.jpg)
サーバの起動
![Page 29: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/29.jpg)
マネジメントコンソールから起動
ログインできるようになるまで祈る
![Page 30: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/30.jpg)
Amazon Linuxの場合
![Page 31: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/31.jpg)
Amazon謹製のおかげでDisk拡張する上においては一番クセが無い
![Page 32: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/32.jpg)
唯一の注意点はVolumeを アタッチするときの位置
![Page 33: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/33.jpg)
特にRootDeviceの容量を アップしたい時はここ間違えると起動しなくなるので注意が必要
![Page 34: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/34.jpg)
ちゃんと起動できればあとは 起動時によしなに処理してくれる。
![Page 35: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/35.jpg)
SSHログインして # sudo df –h ディスク容量が拡張されていれば終了
![Page 36: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/36.jpg)
RHEL6の場合
![Page 37: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/37.jpg)
RHELはPVとHVMで挙動が違う
• PV
– AmazonLinuxと同様に起動したら終わってる
• HVM
–起動しただけじゃうまくいかない
![Page 38: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/38.jpg)
というかHVMのイメージ どんなディスクサイズで インスタンス作っても
そのサイズになってない!
![Page 39: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/39.jpg)
HVM形式のイメージは 予め手を加える必要がある
![Page 40: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/40.jpg)
ということで手を入れる
![Page 41: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/41.jpg)
RHEL6.5の時にやってた インスタンス起動時にやること
1. EPELをインストール
2. cloud-utils-growpartをインストール
3. cloud-initの設定に「- growpart」を追加
4. growpart コマンドを叩く
5. リブート
![Page 42: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/42.jpg)
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拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/43.jpg)
念のため確認
# 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拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/44.jpg)
GPTって?
• GUIDパーティションテーブル
• マスターブートレコード (MBR)に置き換わる次の規格らしい
• 扱えるDiskの最大容量が大幅にアップ
• ちなみにfdiskでいじると死ぬ。
![Page 45: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/45.jpg)
じゃあどうすんの
• ウィキペディアによると
「fdisk等のツールはGPTを扱えない。
gdisk、GNU_GRUB、grub2などがGPTに対応。」
![Page 46: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/46.jpg)
gdiskを探してみる
どうやらあるっぽいので入れてみる
ちなみにepelに含まれてました
インストール
# yum install gdisk –y
# yum search gdisk gdisk.x86_64 : An fdisk-like partitioning tool for GPT disks
![Page 47: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/47.jpg)
リトライ
今度は成功
あとは再起動すれば作成した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拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/48.jpg)
RHEL6.6(HVM)で インスタンス起動時にやること
1. EPELをインストール
2. gdiskをインストール
3. Cloud-initの設定に「- growpart」を追加
4. growpart コマンドを叩く
5. リブート
![Page 49: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/49.jpg)
RHEL6.6で ボリューム拡張時にやること
1. 状況を確認(df –hとかparted –lとか)
2. リブート
![Page 50: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/50.jpg)
DEMO
![Page 51: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/51.jpg)
CentOS6の場合
![Page 52: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/52.jpg)
前提
• 今回は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拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/53.jpg)
インスタンス起動時にやること
1. EPELをインストール
2. cloud-utils-growpartをインストール
3. growpart コマンドを叩く
4. リブート
5. 起動してきたらresize2fsコマンドを叩く
![Page 54: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/54.jpg)
ボリューム拡張時にやること
1. 状況を確認(df –hとかparted –lとか)
2. growpart コマンドを叩く
3. リブート
4. 起動してきたらresize2fsコマンドを叩く
![Page 55: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/55.jpg)
ちなみに
• Cloud-initが入ってないのでUSERDETAが使えない。
• デフォルトではrootログインのみ可能
![Page 56: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/56.jpg)
DEMO
![Page 57: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/57.jpg)
まとめ
![Page 58: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/58.jpg)
個人的に思うこと
• EC2ではDISK容量は拡張は可能
• ただしダウンタイムが必要
• なおかつOSのクセ、AMIのクセをつかんだうえで作業しないといけない
• なので非常に工数がかかる作業になってしまう。
![Page 59: Ec2でのdisk拡張方法](https://reader034.vdocuments.net/reader034/viewer/2022052118/55a9fb2e1a28ab517a8b4848/html5/thumbnails/59.jpg)
つまり
• 容量拡張が必要とならない設計にするのがベター
• DBならRDS使うとかログファイルはS3に保存するとかEC2以外のサービスと組み合わせてやってくのがよいですね。