はじめに
今回の記事は、VMwareからAWS EC2に移行する場合の Linux(本記事ではRocky 8で実機検証)の移行前後で比較するべきポイントを記載した記事です。
比較すべき主要ポイント
- ディスク構成(lsblk, fdisk, fstab)
- ハードウェアリソース(CPU, メモリ, NIC)
- OS/カーネル/ブートモード
- サービス・デーモンの有効化状況
- パッケージ一覧
- ログ・セキュリティ設定
以下はAWS上のマーケットプレイスのAMIから作成したRocky 8について実際に確認した例です。
1.ディスクについて
fdisk -l
fdiskとは、コンピューターのハードディスクなどのストレージを「パーティション」と呼ばれる論理的な区画に分割・管理するためのコマンドです。
ここで Device が /dev/nvme0n1p1 のようにNVMe(※Non-Volatile Memory Expressの略で、SSDをはじめ、不揮発性メモリを使用したフラッシュストレージのために最適化された通信プロトコルを採用したストレージデバイスになっていることに注意です。
レガシーのデバイスでは、SCSIディスクで /dev/sda1 のようになっている場合、オンプレミス環境のVMWareから AWS EC2にそのままExport/Importで移行できない場合があります。
lsblk
lsblkとは、Linuxでブロックデバイスの情報を表示するために使用されます。
実行すると以下のような結果が出力されます。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 8G 0 disk
├─nvme0n1p1 259:1 0 1M 0 part
└─nvme0n1p2 259:2 0 8G 0 part /
df -h
現在使用中のファイルシステムの全体の大きさ、使用可能な大きさ、使用率、ファイルシステムとマウントポイント情報などを調べます。以下出力例。
Filesystem Size Used Avail Use% Mounted on
devtmpfs 340M 0 340M 0% /dev
tmpfs 372M 0 372M 0% /dev/shm
tmpfs 372M 5.1M 367M 2% /run
tmpfs 372M 0 372M 0% /sys/fs/cgroup
/dev/nvme0n1p2 8.0G 2.7G 5.4G 34% /
tmpfs 75M 0 75M 0% /run/user/1000
2.ハードウェリソースについて
実行コマンド
lscpu
実行結果(例)
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 2
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
BIOS Vendor ID: Intel(R) Corporation
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
BIOS Model name: Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
Stepping: 7
CPU MHz: 2500.006
BogoMIPS: 5000.01
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 36608K
NUMA node0 CPU(s): 0,1
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves ida arat pku ospke
実行コマンド
free -h
実行結果(例)

total used free shared buff/cache available
Mem: 742Mi 112Mi 497Mi 5.0Mi 132Mi 517Mi
Swap: 0B 0B 0B
→ vCPU 数やメモリ容量が変わっていないか確認。
実行コマンド
ip addr show
実行結果(例)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 06:56:74:47:89:55 brd ff:ff:ff:ff:ff:ff
altname enp0s5
altname ens5
inet 172.31.43.246/20 brd 172.31.47.255 scope global dynamic noprefixroute eth0
valid_lft 2279sec preferred_lft 2279sec
inet6 fe80::456:74ff:fe47:8955/64 scope link
valid_lft forever preferred_lft forever
→ VMware の仮想 NIC と AWS の ENA/Nitro NIC の違いを確認。
3. OSカーネル情報
実行コマンド
cat /etc/os-release
実行結果(例)
NAME="Rocky Linux"
VERSION="8.10 (Green Obsidian)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.10"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Rocky Linux 8.10 (Green Obsidian)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:8:GA"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2029-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-8"
ROCKY_SUPPORT_PRODUCT_VERSION="8.10"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.10"
→ Rocky Linux のバージョンやカーネルが一致しているか。
実行コマンド
uname -r
実行結果(例)
4.18.0-553.76.1.el8_10.x86_64
実行コマンド
[ -d /sys/firmware/efi ] && echo "UEFI" || echo "BIOS"
実行結果(例)
BIOS
※Rocky 8ではBIOSでしたが、Rocky 9からはUEFIとなっているようです
→ UEFI/BIOS の違い、Secure Boot 有効/無効を確認。
4. サービス・デーモンの有効化状況
実行コマンド
systemd
※出力例は割愛。
→ 移行前後で有効化されているサービスが一致しているか。
5. パッケージ一覧
実行コマンド
systemctl list-unit-files --state=enabled
※出力例は割愛。
→ 移行前後で差分を取ると、足りないパッケージが分かる。
6.ログ・セキュリティ設定
SELinux 状態の確認コマンド
getenforce
→ 移行後にポリシーが変わっていないか確認。
AWS VMimport(ec2 importimage)の対応可否
以下の公式ドキュメントの記載にありますが、Rocky8の場合は、VMimport方式での移行は未サポートとなります(Rocky 9からの公式サポート)。
https://docs.aws.amazon.com/ja_jp/vm-import/latest/userguide/prerequisites.html
実際に試してみましたが、Client error grub.cfgが見つからないのエラーとなりec2 importimageは失敗します。
代替移行方法
VMware の仮想サーバーを「テンプレートとしてエクスポート」したovf形式ファイルおよびVMDKファイルが正しく出力されている前提で以下の移行方法があります。
vmdk は「仮想ディスクファイル」 なので、通常の Linux 環境から直接マウントすることができます。つまり、vmdk をマウントして中のファイルを中身を取り出して Marketplace AMI に反映するという方法です。
vmdk を S3 にアップロードし、S3経由でEC2 インスタンスにダウンロードしてマウントし、ブートローダーgrub.cfgや設定ファイルを書き換えて再起動するという方法論になります。
最後に
VMWare環境の仮想サーバーをAWSへの移行する場合は、AWS Application Migration Service(MGN) 方式での移行も検討してみたほうがいいでしょう。
