LoginSignup
0
0

More than 1 year has passed since last update.

Amazon EC2(Amazon Linux2)での色々設定

Posted at

最近Redhatのサーバ構築案件があり、練習がてらAmazon EC2(Amazon Linux2)で色々お試ししましたので、備忘録がてら記事にします。利用したAMIはAmazon Linux2ですがRedhat系とほぼ同じコマンドで行けるので、練習環境があるのはありがたいです。

前提条件

  • 使用するインスタンスはAmazon Linux2 です。
  • コマンド入力はEC2にログインして、Rootユーザに昇格した状態で行うものとします。
  • 各種ファイル(/etc/fstabなど)を設定するときは必ずバックアップを取得してから中身を変更してください。
  • 実行しているコマンドについては詳細な解説までは載せません。他に詳しく記載されている記事があるのでそちらを参照してください。LPIC Lv2まで勉強した人は何となく見たことがあるコマンドだと思います。

複数EBSをアタッチして、LVM論理ボリュームを設定する

概要

EC2(Amazon Linux2)のルートボリュームはデフォルト=/dev/xvda というデバイス名になっています。
追加でEBSをアタッチすると/dev/xvdb,/dev/xvdcという形でデバイス認識されます。
今回は追加で2つのEBSをアタッチして、LVM論理ボリュームとして設定したいと思います。
なおEBSの追加アタッチ方法やEC2初期設定については割愛します。

イメージ図
スライド1.PNG

手順

①アタッチしたEBSがどういうデバイス名で認識されているか確認する

 [root@AWS ec2-user]# lsblk  →認識されているデバイスの一覧を表示
 NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
 xvda    202:0    0   8G  0 disk 
 └─xvda1 202:1    0   8G  0 part /
 xvdb    202:16   0   8G  0 disk 
 xvdc    202:32   0   8G  0 disk 

xvdaというディスクにxvda1で1つパーティションが割り当てられており、マウント先はルート(”/”)になっており、
追加で割り当てたEBSはxvdbとxvdcというディスク名で認識されていることがわかりました。

②パーティションを設定する

ではxvdbにパーティションを設定していきます。

[root@AWS ec2-user]# parted /dev/xvdb
GNU Parted 3.1
Using /dev/xvdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
  (parted) mklabel gpt →パーティションのタイプをGPTに指定します。
  (parted) mkpatrt
           Partition name?  []? test-xvdb   →適当に名前を付けます
           File system type?  [ext2]? ext4  →任意のファイルシステムを設定します
           Start? 0%   →ディスクのどこから利用し始めるかを記載します。今回はディスクの先頭から使っていくので0%で指定します。
           End? 100%  →ディスクのどこまで利用するか記載します。今回はディスクの最後まで使うので100%で指定します。
  (parted) p →今の設定状況の確認

Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdb: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name       Flags
 1      1049kB  8589MB  8588MB               test-xvdb


   (parted) set 1 lvm on  →対象となるパーティションナンバー「1」に対してLVMを有効にします。
   (parted) p
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdb: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name       Flags
 1      1049kB  8589MB  8588MB               test-xvdb  lvm

  (parted) q →終了
Information: You may need to update /etc/fstab. →/etc/fstabの修正も忘れずに!と注意されるので、覚えておきましょう。

xvdcも同様にパーティションを設定しておきます。

もう1度認識されてデバイスの一覧を表示させて、パーティション設定を確認します。

[root@AWS ec2-user]# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk 
└─xvda1 202:1    0   8G  0 part /
xvdb    202:16   0   8G  0 disk 
└─xvdb1 202:17   0   8G  0 part 
xvdc    202:32   0   8G  0 disk 
└─xvdc1 202:33   0   8G  0 part 

xvdbとxvdcの下にTYPEがpartになっているxvdb1とxvdc1が追加されているのでOKです。

③物理ボリュームの作成
xvdb1に物理ボリュームを設定します。

[root@AWS ec2-user]# pvcreate /dev/xvdb1
  Physical volume "/dev/xvdb1" successfully created.

xvdc1に対しても同様に設定します。
では物理ボリュームを認識できているかを確認します。

[root@AWS ec2-user]# pvdisplay
  "/dev/sdc1" is a new physical volume of "<8.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name               
  PV Size               <8.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               R2E3qM-mnNS-ixxx-RI1d-S9Yd-SeuP-xxxxx

  "/dev/sdb1" is a new physical volume of "<8.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               <8.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               kt238d-oMLJ-xxxx-81yZ-Tvvh-iW1K-xxxxx

新しく/dev/sdb1と/dev/sdc1が出来ていることがわかりました。

④ボリュームグループの作成
物理ボリュームをボリュームグループとして登録していきます。ボリュームグループ名はtest-vgとします。

#ボリュームグループtest-vgを作成し/dev/sdb1 を追加します。
[root@AWS ec2-user]# vgcreate test-vg /dev/sdb1
Volume group "test-vg" successfully created

#test-vgに/dev/sdc1も追加します
[root@AWS ec2-user]# vgextend test-vg /dev/sdc1
Volume group "test-vg" successfully extended

⑤論理ボリュームの作成
ボリュームグループを使って、論理ボリュームを作成します。

[root@AWS ec2-user]# lvcreate -l 100%VG test-vg -n test-lvg  
#lオプションで 容量指定(test-vgの容量100%使用)し、nオプションで論理ボリューム名をtest-lvgに設定
Logical volume "test-lvg" created.

では論理ボリュームが作成されたか確認します。

[root@AWS ec2-user]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/test-vg/test-lvg
  LV Name                test-lvg
  VG Name                test-vg
  LV UUID                GjcYa1-kNKy-hll3-oxnT-xxxx-Phri-xxxxx
  LV Write Access        read/write
  LV Creation host, time AWS.ap-northeast-1.compute.internal, 2021-07-26 15:15:22 +0000
  LV Status              available
  # open                 0
  LV Size                15.99 GiB
  Current LE             4094
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

上記からサイズ15.99Gibの論理ボリュームが作成されていることがわかります。
今回は8GibのEBSを2つ使ったので約16GiBとなっています。

⑥ファイルシステムの作成
では作成した論理ボリュームにファイルシステムを作成しましょう。

[root@AWS ec2-user]# mkfs -t ext4 /dev/test-vg/test-lvg
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1048576 inodes, 4192256 blocks
209612 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
128 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
4096000

Allocating group tables:   0/128       done                            
Writing inode tables:   0/128       done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information:   0/128       done

⑦ファイルシステムのマウント
ファイルシステムが作成できたら、マウントしてみます。
マウント用ディレクトリをまず/home下にtestという名前で作成します。

[root@AWS ec2-user]# cd /home
[root@AWS home]# mkdir test
[root@AWS home]# ls -l
total 0
drwx------ 3 ec2-user ec2-user 74 Jul 26 14:53 ec2-user
drwxr-xr-x 2 root     root      6 Jul 26 15:24 test

上記で作成したtestフォルダに先ほど作成したファイルシステムをマウントします。マウントする際のデバイス名はlvdisplayで表示されたLV Pathをを指定します。
[root@AWS home]# mount /dev/test-vg/test-lg test

ではどのようにディスクが認識されているか確認します。

[root@AWS home]# df -h
Filesystem                     Size  Used Avail Use% Mounted on
devtmpfs                       482M     0  482M   0% /dev
tmpfs                          492M     0  492M   0% /dev/shm
tmpfs                          492M  488K  492M   1% /run
tmpfs                          492M     0  492M   0% /sys/fs/cgroup
/dev/xvda1                     8.0G  1.6G  6.5G  20% /
tmpfs                           99M     0   99M   0% /run/user/1000
tmpfs                           99M     0   99M   0% /run/user/0
/dev/mapper/test--vg-test--lg   16G   45M   15G   1% /home/test

上記より/home/testに約16Gの容量の論理ボリュームが存在することがわかります。
※LVMのデバイスマップ表示は/dev/mapper/ボリュームグループ名-論理ボリューム名となります。

これで2つの8GibのEBSをまとめて1つのLVM論理ボリュームとして設定できました。
ただし/etc/fstabを修正していないので、再起動するとマウントが外れてしまいます。
必要に応じて/etc/fstabに追記してあげましょう。

SWAPを設定する

概要

Amazon Linux2ではデフォルトでSWAPは作成されていないので、手動で作成していきます。
SWAPに割り当てる容量は以下を参考にしてください。
スワップ領域

今回はメモリ1GBのサーバなので、SWAPは2GBで設定します。

手順

①SWAPファイルの作成
swap用のファイルを作成します。その前にまず現状メモリの状態がどうなっているか調べります。

[root@AWS ec2-user]# free
              total        used        free      shared  buff/cache   available
Mem:        1006892       86564      729660         480      190668      783736
Swap:             0           0           0

上記から現状SWAP領域は割り当てられていないことがわかります。

ではSWAP用ファイルを作成します。ファイルは「/swapfile」で、ファイルサイズは2GBで作成します。

[root@AWS ec2-user]# dd if=/dev/zero of=/swapfile bs=1024K count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 31.0973 s, 69.1 MB/s

これでSWAP用ファイルが作成されました。ファイルのアクセス権を読み書きできるように変更します。

[root@AWS ec2-user]# chmod 600 /swapfile

②作成したファイルをSWAP用に設定する

[root@AWS ec2-user]# mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=06116f11-77d6-xxxx-b180-xxxxxxxxx

③SWAP設定を有効化する

[root@AWS ec2-user]# swapon /swapfile

ここで再度現状メモリの状態を確認します。

[root@AWS ec2-user]# free
              total        used        free      shared  buff/cache   available
Mem:        1006892       80752       80328         480      845812      777576
Swap:       2097148           0     2097148

上記からSWAP料金が約2GBで設定されていることがわかります。

④再起動しても自動的に利用されるようにする

このままでは再起動したら設定が消えてしまうので、/etc/fstabに追記して、再起動後も自動的にSWAPが利用できるようにします。

[root@AWS ec2-user]# vi /etc/fstab
###以下を追記###
/swap /swap swap defaults 0 0

NFSを使って、他サーバのボリュームをネットワークマウントする

概要

サーバのボリュームを他のサーバからもアクセスできるように設定します。Windowsでいうところの共有の設定みたいなものです。

イメージ図
スライド2.PNG

今回は上記図でいうとEC2#2の/home/nfs-testにEC2#1の/home/testをマウントしてみます。

手順

①設定したいボリュームがあるサーバ(NFSサーバ)で以下のコマンドを実行し、必要なサービスがインストールおよび動作しているか確認します。

[root@AWS ec2-user]#systemctl status rpcbind nfs-server
起動していない、もしくはインストールされていなければ起動、インストールしてください。
[root@AWS ec2-user]#systemctl enable rpcbind nfs-server
再起動後も自動でサービスが起動するようにします。

②同様にNFSクライアントで以下のコマンドを実行し、必要なサービスがインストールおよび動作しているか確認します。

[root@AWS ec2-user]#systemctl status rpcbind nfs-server
[root@AWS ec2-user]#systemctl enable rpcbind nfs-server

③NFSサーバで以下コマンドを実行し、ディレクトリを他サーバがマウントすることを許可します。

#/etc/exports に外部からのマウント許可を記述します。
[root@AWS ec2-user]#vi /etc/exports
 ####以下を追記####
 /home/test 10.0.0.0/24(rw,no_root_squash)  →/24の後ろにスペースはいれない!

 [記述例]
マウント許可するディレクトリ マウント許可するホストもしくはNW(マウントオプション)
"no_root_squash"はクライアントの root のアクセスをサーバ上の root として扱うオプション

#記述できたら保存して、設定反映させるためにサービス再起動
[root@AWS ec2-user]#exportfs -ra

④NFSクライアントでマウントコマンドを実行します。

#10.0.0.223がNFSサーバのIPで、/home/testが被マウントディレクトリ
[root@AWS ec2-user]#mount -t nfs 10.0.0.223:/home/test /home/nfs-test

⑤再起動してもアンマウントされてないようにNFSクライアント側の/etc/fstabに追記しておきます

[root@AWS ec2-user]vim /etc/fstab

####以下追記####
10.0.0.223:/home/test /home/nfs-test nfs rw,auto 1 1

ではマウント出来ているか確認します。NFSクライアント側で以下コマンドを実行します。

[root@AWS ec2-user]#df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               482M     0  482M   0% /dev
tmpfs                  492M     0  492M   0% /dev/shm
tmpfs                  492M  412K  492M   1% /run
tmpfs                  492M     0  492M   0% /sys/fs/cgroup
/dev/xvda1             8.0G  1.5G  6.5G  19% /
10.0.0.223:/home/test   16G   44M   15G   1% /home/nfs-test
tmpfs                   99M     0   99M   0% /run/user/1000

/home/nfs-testにNFSサーバの/home/testがマウントされているのが見えました!

終わりに

CentOSの設定についてPING-Tの問題をやってただけでは全然理解でていなかったんだなぁ~というのが身に染みて分かりました...実機でコマンド打ってみるって大切です!

参考にしたサイト

https://aws.amazon.com/jp/premiumsupport/knowledge-center/create-lv-on-ebs-volume/
https://hara-chan.com/it/infrastructure/how-to-mount-server/
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-memory-swap-file/
https://www.server-world.info/query?os=Ubuntu_20.04&p=nfs&f=2
https://qiita.com/rikudai/items/f9900e4865ce25a8464e
https://hara-chan.com/it/infrastructure/how-to-mount-server/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0