Memo/AmazonWebServices/EC2/EBS

https://dexlab.net:443/pukiwiki/index.php?Memo/AmazonWebServices/EC2/EBS
 

EBS(Elastic Block Store)

  • 記事

バックアップ

AWS DLMとAWS Backupがある。
Backupの方がバックアップの削除や保護、対応リソースが多いので良い。

1台のEBSを複数のEC2へマルチアタッチ

今の所使い道に困る機能。

  • 2台以上のEC2から、同じEBSをアタッチできる。
  • 同じファイルを2台のEC2から、同時に見えない。

EBSの自動拡張


EBSの動的拡張

  • 条件が揃えば、root volumeでも動的拡張できる
    • gp2
    • 現行世代のインスタンス(m3以上?)
    • 2TB未満
  • パーティションは作成しない方が良い。この場合resize2fsだけで拡張できる
  • パーティションを作ってしまうと、growpart -> reboot -> resize2fsのような手順が発生する。
  • 参考 Memo/AmazonWebServices/awscli/EC2#l1d9fc56

EBSのデバイス名


EBSのライフサイクル


EBSをLVMでストライピングしてIOPSを上げる


EBS/エフェメラルディスクのデバイス名

  • AMIによって開始名が異なる。AWS上では/dev/sda でもCentOS6では /dev/xvde として認識される。
  • エフェメラルディスクは /dev/sdb 〜 sde までの4台が予約されている。CentOS6では/dev/xvdf 〜 xvdi
  • EBSは /dev/sdf 〜 。CentOS6では/dev/xvdj 〜

パーティション作成済みEBSを拡張する

EBSではスナップショット作成後、スナップショットからより大きなEBSを作成できる。
しかし、パーティションが一つでもあると、resize2fsが失敗し、OSから拡張した部分が認識されない。
これを growpart コマンドで修正する。

非常に面倒で時間がかかるので、通常はパーティションを作成せずにフォーマットだけして利用する方が楽。

  • パーティションが無いEBS: /dev/xvdf
    sudo mkfs.ext4 /dev/xvdf
  • パーティションが有るEBS: /dev/xvdf1
    # fdiskやpartedでパーティションを作るとresize2fsが失敗するようになる。
    sudo parted /dev/xvdf
    sudo mkfs.ext4 /dev/xvdf1
  • CentOS 6.x 64bitの場合:
    sudo yum install --enablerepo=epel cloud-utils-growpart parted
    
    # パーティション1を拡張。結構時間がかかる
    sudo growpart /dev/xvdf 1
    
    # パーティションサイズが増えている事を確認
    sudo parted -l
    
    # resize2fsを実行。先にe2fsckを実行するように指示される。
    sudo resize2fs /dev/xvdf1
    Please run 'e2fsck -f /dev/xvdf1' first.
    
    # e2fsckでチェック。これも結構時間がかかる
    sudo e2fsck -f /dev/xvdf1
    
    # OSからパーティションサイズが正しく認識されるように
    sudo resize2fs /dev/xvdf1
    
    sudo mkdir /mnt/ebs1
    sudo mount /dev/xvdf1 /mnt/ebs1
    
    # 必要であれば/etc/fstabにも追加
    echo "/dev/xvdf /mnt/ebs1 ext4 defaults,nofail,comment=manual 0 0"
    
    # OSから正しく認識されたか確認
    df -h
  • rootボリュームの場合は再起動が必要
  1. パッケージを追加
    sudo yum install cloud-init dracut-modules-growroot cloud-utils-growpart
  2. dracutで修正。この時現在のkernelしか指定できなかった。それ以外のinitramfsを指定すると起動しなくなった。
    dracut --force --add growroot /boot/initramfs-$(uname -r).img
  3. cloud-initの設定で growpart を実行するように指定
    cat /etc/cloud/cloud.cfg
    
    resize_rootfs_tmp: /dev
    
    cloud_init_modules:
     - growpart
     - resizefs
  4. AMIを作成。作成したAMIからEC2起動時に任意のrootボリュームサイズを指定して起動し、起動後にOSから正しくサイズが認識されているかを確認
  • cloud-utilsはインストールしない方が良い。依存関係でglusterfs(3.6.0.54-1.el6)がインストールされるが、/etc/logrotate.d/glusterfs にグローバル設定が書いてあり、/etc/logrotate.confの設定が上書きされてしまう。

トラブルシューティング


Marketplace codes may not be attached

  • 例: CentOS 6.5 (x86_64) - Release Media から起動したEC2のrootボリュームはEBSに「製品コード: marketplace: xxxxxxx」と記載があり、rootボリューム(/dev/sda)以外にアタッチできない。
    これはrootボリュームから起動しなくなった場合のトラブルシュート時に困る事になる。
    AWS Supportに該当ボリュームのスナップショットを共有すると、制限を解除してくれる模様

EC2:CentOS7でエフェメラルディスクのマウントに失敗し、起動しなくなる

AMI: CentOS 7 (x86_64) with Updates HVM を使った場合、エフェメラルディスクがマウントできない時、EC2の起動ができなくなった。

  • EC2 インスタンスにインスタンスストアボリュームを追加する
    • m1シリーズのエフェメラルディスクはext3でフォーマット済み
    • I2/R3シリーズ等のTRIMをサポートしているSSDベースのエフェメラルディスクはフォーマットされていない
    • m3シリーズはSSDベースのエフェメラルディスクだが、TRIMをサポートしてないので、ext3でフォーマット済み。
  • /etc/fstab
    • OK: /dev/xvdb /mnt auto defaults,nofail 0 0
    • NG: /dev/xvdb /mnt ext3 defaults 0 0

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-06-15 (月) 16:06:19 (168d)