今年の5月からEC2でbare metal instance (i3.metal)の一般公開が始まりました.
VMwareやKVM, Hyper-vの動作報告はありますが,果たしてBitVisorはどうでしょうか.
結果
結論を言うと,起動できませんでした
まずそもそもi3.metalのOSはどうやって起動しているのでしょうか.
i3.metalでは最近のAWSのインスタンスで採用されているNitroと呼ばれるシステムが利用されています.
Nitroは独自のHWを利用して,透過的なEBSやENAの利用や,HW的な仮想化(MR-IOV?)を実現しています.
ファームウェアもUEFIなどではなく,独自のものを利用しているようです1.
dmesgや/sys/firmware/を確認する限り,EFIの利用を示すものはなく,またルートディスクにもEFI用のファイルシステムは存在しません.
一方でルートディスクにはBIOS用のパーティションがあるので,どうやら形式的にはBIOSで起動しているみたいです (AMIとしてAmazon Linuxを利用しています).
$ fdisk -l
...
ディスク識別子: 534763C8-FA09-4A6F-9848-957F8DF63F89
デバイス 開始位置 最後から セクタ サイズ タイプ
/dev/nvme0n1p1 4096 16777182 16773087 8G Linux ファイルシステム
/dev/nvme0n1p128 2048 4095 2048 1M BIOS 起動
パーティション情報の項目がディスクの順序と一致しません。
また,/etc/default/grubのブートオプションに適当なパラメータを追加したところ,そのパラメータがちゃんと設定されてOSが起動したので,grubからOSが起動していることは間違いなさそうです.
そこで,grubからBitVisorを起動するような設定で試してみました... が, 残念ながら起動しませんでした.
そういえばEPT用に1コアあたり4MBぐらいメモリを確保していた気がしたので,もしかしたらメモリの確保に失敗しているのかと思いBitVisorが確保するメモリ量を増やして見ましたが,結果は変わらず.
他にもいくつか設定を試しましたが,再起動に時間がかかる(5分~)こと,BitVisorでログをシリアルコンソールに出力するようにしても,"システムログの取得"にBitVisorのログが全く表示されなかったことなどから,今回は断念しました.
基本的にレガシーなサポートは切っているように思えるので,BIOSの機能が利用できないんでしょうか.よく分かりません.
頑張ればできなくもない気もするので時間(とお金)に余裕ある方お試しください.
ちなみに
i3.metalは4.992USD/hです.それなりにいいお値段ですので不要なインスタンスの放置に注意しましょう.
またまだ東京リージョンにはi3.metalはありません.自分はオレゴンを使いました.
そういえば,SoftLayerはIPMIからUEFI BIOSにアクセスできて,BitVisorも普通に動くということを聞いたような気がします.お金がないので試せませんが..
おまけ
調べたi3.metalの情報をいくつか載せておきます.
lspci | grep Non
17:00.0 Non-Volatile memory controller: Amazon.com, Inc. Device 0061
36:00.0 Non-Volatile memory controller: Amazon.com, Inc. Device cd00
36:00.1 Non-Volatile memory controller: Amazon.com, Inc. Device cd00
37:00.0 Non-Volatile memory controller: Amazon.com, Inc. Device cd00
37:00.1 Non-Volatile memory controller: Amazon.com, Inc. Device cd00
81:00.0 Non-Volatile memory controller: Amazon.com, Inc. Device cd00
81:00.1 Non-Volatile memory controller: Amazon.com, Inc. Device cd00
82:00.0 Non-Volatile memory controller: Amazon.com, Inc. Device cd00
82:00.1 Non-Volatile memory controller: Amazon.com, Inc. Device cd00
nvme list
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 AWS13D9ED66A867451AB Amazon EC2 NVMe Instance Storage 1 1.90 TB / 1.90 TB 512 B + 0 B 0
/dev/nvme1n1 AWS1300BEA35EAC32D86 Amazon EC2 NVMe Instance Storage 1 1.90 TB / 1.90 TB 512 B + 0 B 0
/dev/nvme2n1 AWS0F284CE7BFC0BA529 Amazon EC2 NVMe Instance Storage 1 1.90 TB / 1.90 TB 512 B + 0 B 0
/dev/nvme3n1 AWS01A5520632FFCB2ED Amazon EC2 NVMe Instance Storage 1 1.90 TB / 1.90 TB 512 B + 0 B 0
/dev/nvme4n1 vol0237140f542b7f16e Amazon Elastic Block Store 1 0.00 B / 8.59 GB 512 B + 0 B 1.0
/dev/nvme5n1 AWS031C9ED6172B2C80D Amazon EC2 NVMe Instance Storage 1 1.90 TB / 1.90 TB 512 B + 0 B 0
/dev/nvme6n1 AWS13B8756FFC6D9306A Amazon EC2 NVMe Instance Storage 1 1.90 TB / 1.90 TB 512 B + 0 B 0
/dev/nvme7n1 AWS08C26BC91B701F61E Amazon EC2 NVMe Instance Storage 1 1.90 TB / 1.90 TB 512 B + 0 B 0
/dev/nvme8n1 AWS13D3D2753DD21E866 Amazon EC2 NVMe Instance Storage 1 1.90 TB / 1.90 TB 512 B + 0 B 0
i3.metalには8本のローカルなNVMeストレージ及び,ルートディスクがついています.
ルートのディスクはNVMe SSDにOSからは見えますが,実体としてはNitroの独自のチップでEBSに接続されているようです.
OSの起動もこのディスクからおこなわれています.
- cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
stepping : 1
microcode : 0xb000022
cpu MHz : 1202.209
cache size : 46080 KB
physical id : 0
siblings : 36
core id : 0
cpu cores : 18
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cdp_l3 invpcid_single pti intel_ppin tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt_a rdseed adx smap intel_pt xsaveopt cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf
bogomips : 4600.00
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
- lstopo