この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
ども。
EBSはSSDで使うと16TBまで使う事が出来る様になりました。
ですが、SSDはMagneticに比べるとやはり高価です。
§ 1か月あたりの料金(1024GBで換算)
Magnetic:$49.70
General Purpose(SSD):$99.40
Provisioned IOPS:$128.00
そもそも、AWSにはS3と呼ばれる堅牢で安価なストレージがありますが、少し癖があって使いにくかったりします。
そこで今回はMagneticのEBSをLVMを使って、EBS1個あたりの上限である1TBを越えてみたいと思います。
EBS作成(1TB×2)
awscliを使って東京リージョンに1TBのEBSを2個作成します。
awscliがインストールされていない場合は、下記のエントリで先にawscliをインストールしてください。
(CentOS7の場合のみですが・・・)
【AWS】awscliを入れてみた(CentOS7)
# aws ec2 create-volume --size 1024 --region ap-northeast-1 --availability-zone ap-northeast-1a --volume-type magnetic
{
"AvailabilityZone": "ap-northeast-1a",
"Encrypted": false,
"VolumeType": "standard",
"VolumeId": "<span style="color: #ff0000;">vol-xxxxxxxx</span>",
"State": "creating",
"SnapshotId": null,
"CreateTime": "2015-04-01T13:00:28.169Z",
"Size": 1024
}
# aws ec2 create-volume --size 1024 --region ap-northeast-1 --availability-zone ap-northeast-1a --volume-type magnetic
{
"AvailabilityZone": "ap-northeast-1a",
"Encrypted": false,
"VolumeType": "standard",
"VolumeId": "<span style="color: #ff0000;">vol-xxxxxxxx</span>",
"State": "creating",
"SnapshotId": null,
"CreateTime": "2015-04-01T13:04:17.095Z",
"Size": 1024
}
1TBのEBSを2個作成するので、上記を2回実行しています。
LVMインストール
下記のコマンドでlvmをインストールします。
# yum install -y lvm2
EBSアタッチ
対象となるEC2インスタンスのIDを確認し、先ほど作成したEBSボリューム2個をアタッチします。
・インスタンスID確認
# curl http://169.254.169.254/latest/meta-data/instance-id
・EBSボリュームID確認
# aws ec2 describe-volumes --region ap-northeast-1 --filter "Name=size,Values=1024"
・EBSアタッチ(必要分実行)
# aws ec2 attach-volume --volume-id vol-xxxxxxxx --instance-id i-xxxxxxxx
実行例)
# aws ec2 attach-volume --volume-id vol-xxxxxxxx --instance-id i-xxxxxxxx --device /dev/xvdb
{
"AttachTime": "2015-04-01T13:29:32.855Z",
"InstanceId": "i-xxxxxxxx",
"VolumeId": "vol-xxxxxxxx",
"State": "attaching",
"Device": "/dev/xvdb"
}
EBSをLVM用にフォーマット
マウントしたEBSのファイルシステムをLVMに変更します。
・アタッチ確認
# fdisk -l
Disk /dev/xvda: 32.2 GB, 32212254720 bytes, 62914560 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 label type: dos
Disk identifier: 0x000aec37
Device Boot Start End Blocks Id System
/dev/xvda1 * 2048 62910539 31454246 83 Linux
Disk /dev/xvdb: 1099.5 GB, 1099511627776 bytes, 2147483648 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 /dev/xvdc: 1099.5 GB, 1099511627776 bytes, 2147483648 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
・LVMに変更
# fdisk /dev/xvdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x845ebeeb.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):<Enter>
First sector (2048-2147483647, default 2048):<Enter>
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2147483647, default 2147483647):<Enter>
Using default value 2147483647
Partition 1 of type Linux and of size 1024 GiB is set
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): p
Disk /dev/xvdb: 1099.5 GB, 1099511627776 bytes, 2147483648 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 label type: dos
Disk identifier: 0x845ebeeb
Device Boot Start End Blocks Id System
/dev/xvdb1 2048 2147483647 1073740800 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
/dev/xvdb、/dev/xvdcと2回繰り返します。
LVM設定
・PV(物理ボリューム)作成
# pvcreate /dev/xvdb1 /dev/xvdc1
Physical volume "/dev/xvdb1" successfully created
Physical volume "/dev/xvdc1" successfully created
・VG(ボリュームグループ)作成
# vgcreate vg01 /dev/xvdb1 /dev/xvdc1
Volume group "vg01" successfully created
・LV(論理ボリューム)作成
# lvcreate -l 100%FREE -n data vg01
Logical volume "data" created
・ファイルシステム作成
# mkfs.xfs /dev/vg01/data
meta-data=/dev/vg01/data isize=256 agcount=4, agsize=134217216 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=536868864, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0/
log =internal log bsize=4096 blocks=262143, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
・マウント
# mount /dev/vg01/data /mnt/
・確認
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 30G 2.4G 28G 8% /
devtmpfs 482M 0 482M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 13M 484M 3% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/mapper/vg01-data 2.0T 33M 2.0T 1% /mnt ←2TBの領域がマウント出来た!
如何だったでしょうか。
LVMを使えばEBS Magneticの上限である1TBを越えた領域を確保する事が出来ます。
ただし、EBSスナップショット取得の際にはioを停止させる「xfs_freeze」といった処理を入れるなど、面倒な面もありますので素直にS3を使った方が良いかも知れませんが、EBS Magneticで2TB以上使いたい場合は重宝すると思いますので用途によって使い分けると良いかも知れないですね。