• 検索結果がありません。

電子情報通信学会ワードテンプレート (タイトル)

N/A
N/A
Protected

Academic year: 2021

シェア "電子情報通信学会ワードテンプレート (タイトル)"

Copied!
10
0
0

読み込み中.... (全文を見る)

全文

(1)

VESPER(Virtual Embraced Space ProbER)の設計と実装

守屋 哲 金 成昊 大島 訓

株式会社 日立製作所 システム開発研究所

{satoru.moriya.br, sungho.kim.zd, satoshi.oshima.fk}@hitachi.com

概要

本論文では,我々が開発している,仮想化環境においてホストOS上でゲストOSの情報を効率的に収集するフレ

ームワークであるVESPER(Virtual Embraced Space ProbER)について説明する.VESPERは仮想化環境においてクラス

タシステムを構築する際に,クラスタ管理ソフトウェアに対し,ノード切り替え等の判断要素となる情報を提供す

ることを目的に開発している.VESPERでは,ホストOSからゲストOSへKprobesを挿入することで詳細情報の取得

を実現した.そして,VMM

1

が提供しているVM

2

間通信機構を利用することで,クラスタ管理ソフトウェアに対し

収集した情報の迅速な通知を実現した.本論文ではVESPERの基本的な構造および実装を説明後,Xen環境における

クラスタシステムへVESPERを適用し,その有効性を示す.なお,VESPERは 2008 年 8 月にオープンソースとして

公開する予定である.

1. は じ め に

現 在 Linux は UNIX 系 OS の中 で高 いシェアを占 め、企 業 におけるファイル共 有 サーバ、Web サーバだけでなく、金 融 機 関 における業 務 システムの様 な大 規 模 システムへと適 用 範 囲 が拡 大 している。このような基 幹 業 務 向 けシステムで は信 頼 性 に加 え可 用 性 が重 要 であり,多 くの場 合 ,複 数 の サーバを用 い てクラスタシステムを構 成 することで可 用 性 の 向 上 を図 っている. 一 方 , 近 年 サ ー バ 台 数 の 増 加 に よ る 管 理 負 荷 の 増 大 や サ ー バ シ ス テ ム の ハ ー ド ウ ェ ア 性 能 の 著 し い 向 上 に よ り 仮 想 化 技 術 が 注 目 さ れ て お り , オ ー プ ン ソ ー ス ・ コ ミ ュ ニ テ ィ で も Xen [1] や KVM [2] 等 の 開 発 が 活 発 に 行 な わ れ て い る . 仮 想 化 技 術 を 使 う こ と に よ り , 1 つ の 物 理 ハ ー ド ウ ェ ア の 上 で 複 数 の OSを 動 か す こ と が で き , こ れ に よ り 既 存 サ ー バ の 集 約 や リ ソ ー ス の 効 率 的 な 利 用 が 可 能 で あ る . 以 上 に よ り 、 仮 想 化 環 境 に お け る ク ラ ス タ シ ス テ ム の 構 築 ・ 運 用 技 術 は , 効 率 的 な サ ー バ 資 源 の 活 用 及 び シ ス テ ム の 可 用 性 向 上 の 観 点 か ら ,非 常 に 重 要 で あ る . ま た ,仮 想 化 環 境 で ク ラ ス タ シ ス テ ム を 構 成 す る 場 合 , 仮 想 化 技 術 が 提 供 し て い る 機 能 を 利 用 す る こ と で , 障 害 の 検 知 等 を 高 速 に 行 な う こ と が 可 能 で あ る . Heartbeat [3] [4] に 代 表 さ れ る ク ラ ス タ 管 理 ソ フ ト ウ ェ ア で は , 仮 想 化 環 境 に お い て も , 一 定 間 隔 の メ ッ セ ー ジ 交 換 に よ る 生 死 監 視 を 行 な っ て い る . こ の 方 法 で は , サ ー ビ ス を 提 供 し て い る ノ ー ド か ら 一 定 時 間 応 答 が 無 い 場 合 , ク ラ ス タ 管 理 ソ フ ト ウ ェ ア は 該 当 ノ ー ド に 障 害 が 発 生 し た と 判 断 し , サ ー ビ ス 提 供 ノ ー ド を 切 り 替 え る . こ の よ う な 方 法 で は , 実 際 に 障 害 が 発 生 し て か ら , ク ラ ス タ 管 理 ソ フ ト ウ ェ ア が 障 害 を 検 知 す る ま で に 時 間 が か か り 結 果 と し て フ ェ イ ル オ ー バ が 遅 く な る , 障 害 が 発 生 し た ノ ー ド の 詳 細 な 情 報 が 取 得 で き な い 等 の 問 題 が あ っ た .こ の 問 題 を 解 決 す る た め ,我 々 は , 仮 想 化 環 境 の ク ラ ス タ シ ス テ ム に お け る , ク ラ ス タ ノ ー ド の 障 害 検 知 の 高 速 化 と 詳 細 な 障 害 情 報 の 取 得 を 実 現 す る た め の 障 害 検 知 フ レ ー ム ワ ー ク の 検 討 , 開 発 を 行 な っ た .

2. 障 害 検 知 フ レ ー ム ワ ー ク の 検 討

従 来 の メ ッ セ ー ジ 交 換 に よ る 生 死 監 視 は , ポ ー リ ン グ 方 式 で あ る た め 障 害 検 知 に 遅 延 が 生 じ て い た . こ れ を 解 決 す る 方 法 の 一 つ と し て , イ ベ ン ト ド リ ブ ン 方 式 の 障 害 検 知 が あ る . こ れ は , 障 害 と 判 断 す る イ ベ ン ト を あ ら か じ め 登 録 し て お き , 運 用 中 に 該 当 イ ベ ン ト が 発 生 し た 場 合 , 即 座 に 障 害 と 判 断 し フ ェ イ ル オ ー バ を 実 行 す る 方 式 で あ る . こ の 方 式 で は , イ ベ ン ト の 登 録 と 検 出 を 行 な う 必 要 が あ る が , サ ー ビ ス を 提 供 す る VM に 対 し て Linuxの Kprobes [6] に 代 表 さ れ る 動 的 プ ロ ー ブ 機 能 を 適 用 す る こ と で , イ ベ ン ト の 登 録 と 検 知 が 可 能 で あ る . 動 的 プ ロ ー ブ 機 能 に よ り , 下 記 項 目 が 可 能 に な る .

(2)

• シ ス テ ム 停 止 が 不 要 な 動 的 な プ ロ ー ブ の 挿 入 • 任 意 の ア ド レ ス へ の プ ロ ー ブ の 挿 入 • プ ロ ー ブ し た イ ベ ン ト が 発 生 し た 際 の 迅 速 な 検 知 仮 想 化 環 境 上 で 動 作 し て い る ク ラ ス タ シ ス テ ム に お い て 、 上 記 の 特 徴 を 持 っ た 動 的 プ ロ ー ブ 機 能 を 利 用 し ,イ ベ ン ト ド リ ブ ン 方 式 の 生 死 監 視 を 行 な う こ と で , フ ェ イ ル オ ー バ の 高 速 化 , 効 率 化 が 可 能 で あ る . Linux で は 動 的 プ ロ ー ブ 機 能 と し て Kprobes が 提 供 さ れ て い る . Kprobes を 含 む カ ー ネ ル モ ジ ュ ー ル を 作 成 , ロ ー ド す る こ と で , Linux カ ー ネ ル に 対 し , 動 的 に プ ロ ー ブ を 挿 入 す る こ と が で き る . カ ー ネ ル が プ ロ ー ブ さ れ た 命 令 を 実 行 す る と , あ ら か じ め ユ ー ザ が 定 義 し た 関 数 が 呼 ば れ る た め , 詳 細 な 情 報 の 取 得 も 可 能 で あ る . 一 方 , 仮 想 化 環 境 に お け る ク ラ ス タ シ ス テ ム の 構 成 方 法 と し て ,従 来 は サ ー ビ ス を 提 供 す る ゲ ス ト OSに ク ラ ス タ 管 理 ソ フ ト ウ ェ ア を イ ン ス ト ー ル し , ク ラ ス タ を 構 成 し て い た が ,ホ ス ト OSに 障 害 が 発 生 し た 場 合 の 挙 動 の 設 定 等 が 複 雑 で あ る こ と な ど か ら ,ホ ス ト OSに ク ラ ス タ 管 理 ソ フ ト ウ ェ ア を イ ン ス ト ー ル し , ゲ ス ト OS を 監 視 す る 方 法 が 提 案 さ れ た [5] . 本 方 式 を 用 い て ク ラ ス タ シ ス テ ム を 構 築 す る 場 合 , ク ラ ス タ 管 理 ソ フ ト ウ ェ ア が 動 作 し て い る ホ ス ト OSで ,サ ー ビ ス が 動 作 し て い る ゲ ス ト OSの 情 報 を 取 得 し な け れ ば な ら な い . し か し ,上 述 し た Kprobesは ,ホ ス ト 間 の プ ロ ー ブ 挿 入 機 能 が 無 い た め ,Kprobesを 利 用 し た 動 的 プ ロ ー ブ 機 能 を 本 構 成 で 利 用 す る 場 合 に は ,次 の 機 能 が 必 要 と な る . • ホ ス ト OS か ら ゲ ス ト OS へ の プ ロ ー ブ 挿 入 機 能 本 課 題 を 解 決 す る た め に ,Xenprobesが 提 案 さ れ て い る を 用 い て OS の 情 報 を

. VESPER の 仕 様 設 計

設 計 の 方 針 と し た . 異 な る 動 作 環 境 へ の 対 応 が 容 易 な こ と で 動 作 す の ユ ー ザ 空 間 の 障 害 の 影 響 を 受 け に く れ に 基 づ き ,VESPRE の 機 能 要 件 を 次 の よ う に 定 義 し 1 ホ ス ト OS お よ び ゲ ス ト OS の カ ー ネ ル の 変 更 が 不 . 特 定 の VMM に 依 存 し た 構 造 に し な い こ と .VM 間 . ホ ス ト OS の み が ゲ ス ト OS へ プ ロ ー ブ モ ジ ュ ー ル . ゲ ス ト OS で 収 集 し た 情 報 は 即 座 に ホ ス ト OS へ 転 . ゲ ス ト OS で は モ ジ ュ ー ル を ロ ー ド す る と き に カ 通 • 収 集 し た 情 報 の ホ ス ト OS へ の 転 送 転 送 [7] .Xenprobesは Kprobeの 概 念 を VM間 プ ロ ー ブ に 拡 張 し た も の で ,ホ ス ト OSか ら ゲ ス ト OSに プ ロ ー ブ を 挿 入 す る こ と が 可 能 で あ る . し か し , Xenprobesは VMM が 提 供 す る デ バ ッ グ 機 能 [8] を 必 要 で あ り ,プ ロ ー ブ 挿 入 時 に は ゲ ス ト OSを 停 止 し な け れ ば な ら な い . ま た , プ ロ ー ブ さ れ た 命 令 を 実 行 す る と ,必 ず ホ ス ト OSに 処 理 が 遷 移 す る た め , 非 常 に オ ー バ ヘ ッ ド が 大 き く , サ ー ビ ス の 品 質 を 確 保 す る こ と が 難 し い . そ こ で , Kprobes を 使 っ た 障 害 検 知 の フ レ ー ム ワ ー ク VESPER を 設 計 , 実 装 し た . 具 体 的 に は , Kprobes と relayfs 採 取 す る プ ロ ー ブ モ ジ ュ ー ル を , VESPER が ホ ス ト OS か ら ゲ ス ト OS へ ロ ー ド す る .そ し て ,プ ロ ー ブ モ ジ ュ ー ル が 採 取 し た デ ー タ を , VESPER が , VMM が 提 供 し て い る VM 間 通 信 機 能 を 用 い て , ゲ ス ト OS へ 転 送 す る . こ こ で , プ ロ ー ブ モ ジ ュ ー ル が 採 取 し た 情 報 は relayfs の バ ッ フ ァ に 格 納 さ れ て お り , ま た , VM 間 通 信 機 能 に よ り ,ゲ ス ト OS と ホ ス ト OS で は メ モ リ を 共 有 で き る た め , 実 際 に デ ー タ を 転 送 す る 必 要 は な く ,relay バ ッ フ ァ と し て 利 用 し て い る メ モ リ を 共 有 す る だ け で あ る . 本 方 法 に よ り , VESPER 自 体 は , Xenprobes と 異 な り , プ ロ ー ブ ハ ン ド ラ を 保 持 し な い た め , プ ロ ー ブ 毎 の ホ ス ト OS へ の 処 理 遷 移 は 発 生 せ ず , オ ー バ ヘ ッ ド を 削 減 で き る .

3

VESPER は 以 下 の 3 点 を 仕 様 • • ク ラ ス タ 管 理 ソ フ ト ウ ェ ア は ホ ス ト OS る こ と • ゲ ス ト OS い こ と こ た . ま た , VESPER は Xen 及 び KVM で 動 作 で き る よ う に す る た め , そ れ ら の 機 能 を 前 提 に 設 計 す る . . 要 で あ る こ と . カ ー ネ ル モ ジ ュ ー ル と し て 実 装 す る こ と で , 移 植 性 が 向 上 す る と 共 に , シ ス テ ム へ の 機 能 の 追 加 , 削 除 が 容 易 に 可 能 に な る . 2 信 部 等 VMM に 依 存 し て し ま う 部 分 は あ る が ,最 小 限 に す る こ と で , 移 植 性 を 高 め る . 3 を 転 送 で き る こ と ( プ ロ ー ブ を 挿 入 で き る こ と ). 前 章 で 述 べ た よ う に , 仮 想 化 環 境 に お い て は ホ ス ト OS 上 で ク ラ ス タ 管 理 ソ フ ト ウ ェ ア が 動 作 す る . そ の た め , プ ロ ー ブ の 挿 入 や 削 除 と い っ た 作 業 も ホ ス ト OS で 一 括 管 理 す る べ き で あ る . 4 送 す る こ と .収 集 し た 情 報 を 即 座 に ホ ス ト OS へ 渡 す こ と で ,ホ ス ト OS 上 の ク ラ ス タ 管 理 ソ フ ト ウ ェ ア へ の 迅 速 な 障 害 発 生 の 通 知 が 可 能 に な る . 5 ー ネ ル 空 間 だ け 利 用 す る こ と .ホ ス ト OS か ら 転 送 さ れ た モ ジ ュ ー ル を ゲ ス ト OS が ロ ー ド す る 際 ,ユ ー ザ 空 間 を 使 用 し な い こ と で , ユ ー ザ 空 間 に 障 害 が 生 じ て い る 場 合 で も , 調 査 が 可 能 と な る .

(3)

上 記 1, 2 に よ り 移 植 性 を 確 保 し , 3, 4 に よ り ホ ス ト た め に VESPER は 仮 想 デ バ イ ス ド ラ イ バ と

4.

の 構 造 と 動 作

集 す る た め に , プ

4.1. VESPER の構 造

ー ブ す る た め に Kprobes を ー ル は , プ ロ ー ブ 時 の 情 報 を 記 OS 上 の ク ラ ス タ 管 理 ソ フ ト ウ ェ ア へ 対 応 す る . ま た ,5 に よ り ゲ ス ト OS の ユ ー ザ 空 間 の 障 害 の 影 響 を 低 減 で き る . 1 を 満 た す し て 実 装 す る . 2 の 実 現 す る た め に , VEPSER は , 階 層 構 造 を 持 た せ , VMM に 依 存 す る 部 分 を 最 小 限 に す る . 3, 4 の 要 件 を 満 た す た め に は VESPER は ホ ス ト OS と ゲ ス ト OS の 間 で ,何 ら か の 通 信 を す る 必 要 が あ る が , Xen や KVM で は , 既 に フ ロ ン ト エ ン ド ド ラ イ バ と バ ッ ク エ ン ド ド ラ イ バ か ら な る 分 割 ド ラ イ バ 方 式 の VM 間 通 信 イ ン フ ラ が 用 意 さ れ て い る . Xen で は Xenbus が 提 供 さ れ て お り , KVM で は virtio と い う 仕 組 み が 利 用 で き る .ま た ,5 で は ,本 来 ゲ ス ト OS の ユ ー ザ 空 間 で 実 施 す る 作 業 を , ホ ス ト OS の ユ ー ザ 空 間 で 実 施 す る . 階 層 構 造 や 実 装 の 詳 細 に つ い て は 次 章 以 降 で 説 明 を 行 な う . 図 1 VESPER の 構 造 上 述 し た よ う に , VESPERは 2 組 の 分 割 ド ラ イ バ か ら 構 成 さ れ る が ,こ れ ら の ド ラ イ バ は 下 層 に あ る VMM に 強 く 依 存 し て い る た め ,VMM毎 に 実 装 す る 必 要 が あ る . そ の た め , VESPERは , VMM依 存 部 分 を 最 小 限 に す る た め , 図 2 に 示 す よ う に UI 層 , Action 層 , Communication層 か ら な る 3 層 構 造 で 設 計 し た .こ れ に よ り ,VESPERは VMMに 依 存 す る Comm nication層 を 入 れ 替 え る だ け で , Xenや KVM上 で 動 作 す る こ と が 可 能 に な る u

VESPER

VESPER で は ,ゲ ス ト OS の 情 報 を 収 ロ ー ブ の 挿 入 に は Kprobes を 利 用 し , プ ロ ー ブ ハ ン ド ラ に お け る 情 報 の 記 録 に は relayfs を 利 用 す る .本 章 で は , 3 階 層 構 造 を 特 徴 と す る VESPER の 構 造 と そ の 動 作 に つ い て 説 明 す る . VEPSER は ゲ ス ト OS を プ ロ 利 用 す る . し か し , Kprobes は ロ ー カ ル シ ス テ ム へ の プ ロ ー ブ 挿 入 機 能 で あ る た め , ホ ス ト OS か ら ゲ ス ト OS と い っ た ,外 部 の OS に 対 し て プ ロ ー ブ を 直 接 挿 入 す る こ と は で き な い . ま た , Kprobes を 利 用 し て プ ロ ー ブ を 挿 入 す る 場 合 , カ ー ネ ル モ ジ ュ ー ル と し て 実 装 す る の が 普 通 で あ る . そ の た め , Kprobes を 利 用 し て ゲ ス ト OS に プ ロ ー ブ を 挿 入 す る た め に は ,VESPER は , Kprobes を 利 用 し た プ ロ ー ブ モ ジ ュ ー ル を ホ ス ト OS か ら ゲ ス ト OS に ロ ー ド す る 必 要 が あ る . VESPER で は ,こ の モ ジ ュ ー ル ロ ー ド 機 能 を Probe Loader と し , 分 割 ド ラ イ バ 方 式 で 実 装 す る . VESPERで は , プ ロ ー ブ モ ジ ュ 録 す る た め に relayfsを 利 用 す る . プ ロ ー ブ モ ジ ュ ー ル は ゲ ス ト OS内 で 動 作 し て い る た め ,記 録 し た デ ー タ を ゲ ス ト OSか ら ホ ス ト OSへ 転 送 す る 必 要 が あ る . VESPERで は , こ の 記 録 し た デ ー タ を 転 送 す る 機 能 を Probe Listenerと し ,Probe Loaderと 同 様 に 分 割 ド ラ イ バ 方 式 で 実 装 す る . 上 記 , 分 割 ド ラ イ バ 方 式 を 用 い た VESPERの 全 体 構 造 を 図 1 に 示 す . 図 2 VESPER の 3 階 層 構 造 各 層 の 説 明 を 以 下 に 示 す . 1. UI 層 VESPER と ア プ リ ケ ー シ ョ ン と の イ ン タ フ ェ ー ス と な る 層 で あ る . UI層 は ア プ リ ケ ー シ ョ ン に 対 し , ゲ ス ト OSへ の モ ジ ュ ー ル の ロ ー ド や ア ン ロ ー ド , ゲ ス ト OSで 記 録 さ れ た デ ー タ へ の ア ク セ ス 用 イ ン タ フ ェ ー ス を 提 供 す る . こ れ ら の イ ン タ フ ェ ー ス は 6 章 で 説 明 す る . 2. Action 層 UI 層 , Communication 層 か ら の 要 求 を 処 理 す る 中 心 的 な 層 で あ る .具 体 的 に は ,ゲ ス ト OS へ の モ ジ ュ ー ル の ロ ー ド や ア ン ロ ー ド ,ゲ ス ト OS と ホ ス ト OS 間 で の デ ー タ 共 有 の 実 質 的 な 処 理 を 行 な う .

(4)

3. Communication 層 ホ ス ト OS と ゲ ス ト OS 間 の 通 信 チ ャ ネ ル を 提 供 す る .本 層 は VMM の ア ー キ テ ク チ ャ に 強 く 依 存 し て い る た め ,VMM 毎 に 実 装 す る 必 要 が あ る .VESPER で は , VMM 間 の 差 異 を こ の 層 で 吸 収 す る .

4.2. VESPER の動 作

VESPER で は , プ ロ ー ブ を ゲ ス ト OS に 挿 入 す る た め に ,プ ロ ー ブ モ ジ ュ ー ル を ホ ス ト OS か ら ゲ ス ト OS に ロ ー ド し な け れ ば な ら な い . そ し て , プ ロ ー ブ モ ジ ュ ー ル が 収 集 し た デ ー タ を ゲ ス ト OS か ら ホ ス ト OS へ 転 送 し な け れ ば な ら な い . VESPER の 処 理 の 流 れ を 図 3に 示 す .

4.2.1. モ ジ ュ ー ル の ロ ー ド

ゲ ス ト OS を プ ロ ー ブ す る た め の 最 初 の 処 理 は , ゲ ス ト OS に プ ロ ー ブ モ ジ ュ ー ル を ロ ー ド す る こ と で あ る . モ ジ ュ ー ル の ロ ー ド 処 理 の 流 れ を 以 下 に 示 す . な お , A1~ A8 は 図 3に 対 応 し て い る . 0. プ ロ ー ブ モ ジ ュ ー ル の 作 成 最 初 に Kprobes 及 び relayfs を 利 用 し た プ ロ ー ブ モ ジ ュ ー ル を 作 成 す る . A1. モ ジ ュ ー ル ロ ー ド コ マ ン ド の 実 行 Probe Loader が 提 供 す る モ ジ ュ ー ル ロ ー ド コ マ ン ド を 実 行 す る .な お ,ユ ー ザ は 必 要 に 応 じ て モ ジ ュ ー ル パ ラ メ タ を 指 定 す る こ と も 可 能 で あ る . A2. モ ジ ュ ー ル 情 報 の 取 得

ホ ス ト OS側 の Probe Loaderの Action層 に お い て ,A1 に お い て 指 定 さ れ た モ ジ ュ ー ル に 関 し て ,そ の 名 前 や サ イ ズ , ア ド レ ス 等 を ユ ー ザ 空 間 か ら 取 得 す る . A3. モ ジ ュ ー ル ロ ー ド 要 求 の 送 信 /受 信 VMM が 提 供 し て い る VM 間 通 信 機 能 を 利 用 し て , ホ ス ト OS か ら ゲ ス ト OS へ モ ジ ュ ー ル 及 び 関 連 情 報 を 転 送 す る . A4. モ ジ ュ ー ル の ロ ー ド

ゲ ス ト OS 側 Probe Loader の Action 層 で は ,ユ ー ザ 空 間 を 利 用 せ ず に モ ジ ュ ー ル の ロ ー ド を 実 行 す る .

A5. relay バ ッ フ ァ の 共 有

A6. relay バ ッ フ ァ 情 報 の 送 信 /受 信

Probe Listenerの Communication層 で は ,A5 に て ゲ ス ト OS側 Action層 で 取 得 し た relayバ ッ フ ァ に 関 す る 情 報 を ,VM間 通 信 機 能 を 利 用 し て ,ゲ ス ト OSか ら ホ ス ト OSへ 転 送 す る .

A7. relayfs 用 構 造 体 の 作 成

ホ ス ト OS 側 Probe Listener の Action 層 は relayfs の イ ン タ フ ェ ー ス を 利 用 し て , ゲ ス ト OS の 情 報 を UI 層 に 提 供 す る .そ の た め ,ゲ ス ト OS か ら 取 得 し た 情 報 を 利 用 し て , relayfs 管 理 構 造 体 を 作 成 す る .

A8. プ ロ ー ブ し た デ ー タ の 提 供 /分 析

UI 層 で は relayfs の イ ン タ フ ェ ー ス を 利 用 し て ,ホ ス ト OS 側 Probe Listener の Action 層 か ら 情 報 を 取 得 し , ユ ー ザ ア プ リ ケ ー シ ョ ン に 提 供 す る .

4.2.2. ゲ ス ト OS 情 報 の 取 得

4.2.1 の 処 理 が 終 了 す る と , Probe Listenerは ゲ ス ト OS と ホ ス ト OSの 間 で ,プ ロ ー ブ モ ジ ュ ー ル の relayバ ッ フ ァ の 共 有 を 開 始 す る . こ こ で , 採 取 し た 情 報 自 体 は 共 有 バ ッ フ ァ に 格 納 さ れ て い る た め ,ゲ ス ト OSか ら ホ ス ト OSへ 転 送 す る 必 要 は な い が ,読 み 込 み 開 始 イ ン デ ッ ク ス 等 の バ ッ フ ァ 管 理 情 報 は , 共 有 し て い な い た め , ゲ ス ト OSか ら ホ ス ト OSへ 転 送 す る 必 要 が あ る .こ の た め , ゲ ス ト OSを 監 視 中 の VESPERの 動 作 は 下 記 の よ う に な る . B1. ゲ ス ト OS 情 報 の 収 集 プ ロ ー ブ モ ジ ュ ー ル は , ロ ー ド さ れ る と , プ ロ ー ブ さ れ た 命 令 が 実 行 さ れ る 度 に 情 報 を 採 取 し , relay バ ッ フ ァ へ 格 納 す る . B2. ゲ ス ト OS 側 イ ン デ ッ ク ス 情 報 の 取 得 relay バ ッ フ ァ は 複 数 の サ ブ バ ッ フ ァ か ら 構 成 さ れ て い る . Probe Listener で は サ ブ バ ッ フ ァ の 切 り 替 え が 発 生 し た 際 に , relay バ ッ フ ァ の イ ン デ ッ ク ス 情 報 を 取 得 し ,ホ ス ト OS に 通 知 す る た め の メ ッ セ ー ジ を 作 成 す る . B3. ゲ ス ト OS 側 イ ン デ ッ ク ス 情 報 の 転 送 VM 間 通 信 機 能 を 利 用 し て , ホ ス ト OS 側 Probe Listener は バ ッ フ ァ の イ ン デ ッ ク ス 情 報 を 含 む メ ッ セ ー ジ を ゲ ス ト OS か ら 取 得 す る .

ゲ ス ト OS 側 Probe Listener の Action 層 が , プ ロ ー ブ モ ジ ュ ー ル よ り , relay バ ッ フ ァ の サ イ ズ や ア ド レ ス 等 の 情 報 を 取 得 し ,ホ ス ト OS と の 共 有 を 行 な う た め の 処 理 を 実 行 す る .

(5)

図 3 VESPER の 処 理 の 流 れ B4. ホ ス ト OS 側 イ ン デ ッ ク ス 情 報 の 更 新 ホ ス ト OS 側 Probe Listener は ,ゲ ス ト OS か ら 取 得 し た イ ン デ ッ ク ス 情 報 に 基 づ き ,ホ ス ト OS 内 の relay バ ッ フ ァ の イ ン デ ッ ク ス を 更 新 す る .

4.2.3. モ ジ ュ ー ル の ア ン ロ ー ド

モ ジ ュ ー ル の ア ン ロ ー ド 処 理 は , 基 本 的 に , 4.2.1 に 示 し た モ ジ ュ ー ル ロ ー ド の 処 理 と ほ ぼ 同 じ で あ る . 相 違 点 は , 実 際 に モ ジ ュ ー ル の ア ン ロ ー ド を す る 部 分 が 2 段 階 に 分 け ら れ て い る 点 で あ る . こ れ は , ゲ ス ト OSの モ ジ ュ ー ル を ア ン ロ ー ド す る 前 に ,ホ ス ト OSに 作 成 し て あ る イ ン タ フ ェ ー ス を 削 除 す る 必 要 が あ る た め で あ る . モ ジ ュ ー ル ア ン ロ ー ド の 処 理 を 下 記 に 示 す . C1. モ ジ ュ ー ル ア ン ロ ー ド コ マ ン ド の 実 行 C2. モ ジ ュ ー ル 情 報 の 取 得 C3. モ ジ ュ ー ル ア ン ロ ー ド 要 求 の 送 信 /受 信 /受 信 C4. モ ジ ュ ー ル の ア ン ロ ー ド 1 C4. モ ジ ュ ー ル の ア ン ロ ー ド 1 C5. relay バ ッ フ ァ 共 有 の 終 了 C5. relay バ ッ フ ァ 共 有 の 終 了 C6. バ ッ フ ァ 共 有 終 了 要 求 の 送 信 /受 信 C6. バ ッ フ ァ 共 有 終 了 要 求 の 送 信 /受 信 C7. relay バ ッ フ ァ の 削 除 C7. relay バ ッ フ ァ の 削 除 C8. モ ジ ュ ー ル の ア ン ロ ー ド 2 C8. モ ジ ュ ー ル の ア ン ロ ー ド 2

5. VESPER の 実 装

5. VESPER の 実 装

5.1. Probe Loader

5.1. Probe Loader

Probe Loader は ゲ ス ト OS の ユ ー ザ 空 間 を 利 用 せ ず に ,ホ ス ト OS か ら ゲ ス ト OS へ プ ロ ー ブ モ ジ ュ ー ル を ロ ー ド す る . こ れ を 実 現 す る た め に , Probe Loader に は 2 つ の 機 能 が 必 要 で あ る . 1 つ は , プ ロ ー ブ モ ジ ュ ー ル を ホ ス ト OS か ら ゲ ス ト OS へ 転 送 す る 機 能 で あ り , も う 一 つ は , ゲ ス ト OS に お い て ユ ー ザ 空 間 を 利 用 せ ず に モ ジ ュ ー ル を ロ ー ド す る 機 能 で あ る . Probe Loader は ゲ ス ト OS の ユ ー ザ 空 間 を 利 用 せ ず に ,ホ ス ト OS か ら ゲ ス ト OS へ プ ロ ー ブ モ ジ ュ ー ル を ロ ー ド す る . こ れ を 実 現 す る た め に , Probe Loader に は 2 つ の 機 能 が 必 要 で あ る . 1 つ は , プ ロ ー ブ モ ジ ュ ー ル を ホ ス ト OS か ら ゲ ス ト OS へ 転 送 す る 機 能 で あ り , も う 一 つ は , ゲ ス ト OS に お い て ユ ー ザ 空 間 を 利 用 せ ず に モ ジ ュ ー ル を ロ ー ド す る 機 能 で あ る .

5.1.1. モ ジ ュ ー ル 転 送 機 能

5.1.1. モ ジ ュ ー ル 転 送 機 能

プ ロ ー ブ モ ジ ュ ー ル を ホ ス ト OS か ら ゲ ス ト OS へ ロ ー ド す る た め に , VESPER は , ま ず , プ ロ ー ブ モ ジ ュ ー ル を ホ ス ト OS か ら ゲ ス ト OS へ 転 送 す る 必 要 が あ る . 通 常 , VMM は メ モ リ 共 有 機 能 を 利 用 し た VM 間 通 信 機 能 を 備 え て お り , Xen で は grant table と I/O ring が 提 供 さ れ て い る . 本 機 能 を 利 用 す る た め に , Probe Loader は , ゲ ス ト OS 上 に フ ロ ン ト エ ン ド ド ラ イ バ , ホ ス ト OS 上 に バ ッ ク エ ン ド ド ラ イ バ を 有 す る , Xenbus を 利 用 し た 分 割 ド ラ イ バ 方 式 で 実 装 す る . プ ロ ー ブ モ ジ ュ ー ル を ホ ス ト OS か ら ゲ ス ト OS へ ロ ー ド す る た め に , VESPER は , ま ず , プ ロ ー ブ モ ジ ュ ー ル を ホ ス ト OS か ら ゲ ス ト OS へ 転 送 す る 必 要 が あ る . 通 常 , VMM は メ モ リ 共 有 機 能 を 利 用 し た VM 間 通 信 機 能 を 備 え て お り , Xen で は grant table と I/O ring が 提 供 さ れ て い る . 本 機 能 を 利 用 す る た め に , Probe Loader は , ゲ ス ト OS 上 に フ ロ ン ト エ ン ド ド ラ イ バ , ホ ス ト OS 上 に バ ッ ク エ ン ド ド ラ イ バ を 有 す る , Xenbus を 利 用 し た 分 割 ド ラ イ バ 方 式 で 実 装 す る . VESPER で は ,バ ッ ク エ ン ド ド ラ イ バ に お い て grant table を 利 用 し て 共 有 メ モ リ を 確 保 し ,モ ジ ュ ー ル の イ メ ー ジ を 書 き 込 む .そ し て ,バ ッ ク エ ン ド ド ラ イ バ は , I/O ring に メ モ リ 共 有 要 求 を 送 信 す る .そ の 後 ,I/O ring を 介 し , フ ロ ン ト エ ン ド ド ラ イ バ は 要 求 を 受 信 し , 該 当 す る 共 有 メ モ リ を 自 身 の 仮 想 ア ド レ ス 空 間 に マ ッ プ す る . VESPER で は ,バ ッ ク エ ン ド ド ラ イ バ に お い て grant table を 利 用 し て 共 有 メ モ リ を 確 保 し ,モ ジ ュ ー ル の イ メ ー ジ を 書 き 込 む .そ し て ,バ ッ ク エ ン ド ド ラ イ バ は , I/O ring に メ モ リ 共 有 要 求 を 送 信 す る .そ の 後 ,I/O ring を 介 し , フ ロ ン ト エ ン ド ド ラ イ バ は 要 求 を 受 信 し , 該 当 す る 共 有 メ モ リ を 自 身 の 仮 想 ア ド レ ス 空 間 に マ ッ プ す る .

4

4 章 で 説 明 し た よ う に ,VESPERは Probe Loaderと Probe Listenerの 二 つ か ら 構 成 さ れ て い る . 現 在 , Xen向 け の VESPERを 開 発 し て お り , 本 章 で は , そ の 実 装 に つ い て 説 明 す る .

章 で 説 明 し た よ う に ,VESPERは Probe Loaderと Probe Listenerの 二 つ か ら 構 成 さ れ て い る . 現 在 , Xen向 け の VESPERを 開 発 し て お り , 本 章 で は , そ の 実 装 に つ い て 説 明 す る . 通 常 は , セ キ ュ リ テ ィ 上 の 問 題 か ら , 上 記 VESPER の 場 合 と は 異 な り , フ ロ ン ト エ ン ド ド ラ イ バ が バ ッ ク エ ン ド ド ラ イ バ に 対 し て , I/O ring を 利 用 し て 要 求 を 送 信 す る . こ れ は , 仮 に , バ ッ ク エ ン ド ド ラ イ バ が フ ロ ン ト エ ン ド ド ラ イ バ に 対 し て I/O ring を 利 用 し て 要 通 常 は , セ キ ュ リ テ ィ 上 の 問 題 か ら , 上 記 VESPER の 場 合 と は 異 な り , フ ロ ン ト エ ン ド ド ラ イ バ が バ ッ ク エ ン ド ド ラ イ バ に 対 し て , I/O ring を 利 用 し て 要 求 を 送 信 す る . こ れ は , 仮 に , バ ッ ク エ ン ド ド ラ イ バ が フ ロ ン ト エ ン ド ド ラ イ バ に 対 し て I/O ring を 利 用 し て 要

(6)

求 を 送 信 し た 場 合 , フ ロ ン ト エ ン ド ド ラ イ バ で は 要 求 を 満 た す た め に , 共 有 メ モ リ に 対 し て read/write を 行 な わ な け れ ば な ら な い が , こ れ に よ り ホ ス ト OS の 内 容 を ゲ ス ト OS が 書 き 換 え る こ と に な る か ら で あ る . し か し な が ら , VESPER で は 前 述 し た と お り , ホ ス ト OS が ゲ ス ト OS に 対 し て ,モ ジ ュ ー ル ロ ー ド の 要 求 を す る 必 要 が あ る . 一 方 で , セ キ ュ リ テ ィ の 側 面 を 考 慮 す る と , VESPER に お い て も , ゲ ス ト OS が ホ ス ト OS に 対 し て 要 求 す る 形 式 を と る べ き で あ る . そ こ で , こ の 本 来 の 形 式 を 守 る た め に ,VESPER で は ゲ ス ト OS の フ ロ ン ト エ ン ド ド ラ イ バ が , 最 初 に ダ ミ ー の 要 求 を ホ ス ト OS の バ ッ ク エ ン ド ド ラ イ バ に 対 し て 送 信 す る こ と に し た . バ ッ ク エ ン ド ド ラ イ バ で は , リ ク エ ス ト を 受 信 後 ,UI 層 で モ ジ ュ ー ル ロ ー ド の コ マ ン ド が 実 行 さ れ る と , モ ジ ュ ー ル ロ ー ド の 要 求 を , 最 初 の ダ ミ ー 要 求 へ の 応 答 と し て フ ロ ン ト エ ン ド ド ラ イ バ へ 送 信 す る . こ の よ う に し て , フ ロ ン ト エ ン ド ド ラ イ バ は , サ イ ズ 等 , モ ジ ュ ー ル に 関 す る 情 報 を 取 得 し , モ ジ ュ ー ル イ メ ー ジ 用 の 共 有 メ モ リ を grant table を 利 用 し て 確 保 す る . 共 有 メ モ リ を 確 保 し 終 わ る と , フ ロ ン ト エ ン ド ド ラ イ バ は , 実 際 の モ ジ ュ ー ル ロ ー ド の 要 求 を バ ッ ク エ ン ド ド ラ イ バ に 対 し て 発 行 す る . バ ッ ク エ ン ド ド ラ イ バ で は モ ジ ュ ー ル ロ ー ド 要 求 を 受 信 す る と , copy_from_user() を 利 用 し て , モ ジ ュ ー ル イ メ ー ジ を ユ ー ザ 空 間 か ら 共 有 メ モ リ へ コ ピ ー し , フ ロ ン ト エ ン ド ド ラ イ バ か ら の 応 答 と し て そ の イ メ ー ジ を 送 信 す る . モ ジ ュ ー ル の ロ ー ド が 終 了 す る と , フ ロ ン ト エ ン ド ド ラ イ バ は , そ の 結 果 を , 新 た な ダ ミ ー 要 求 と し て バ ッ ク エ ン ド ド ラ イ バ へ 送 信 す る . 再 度 , ホ ス ト OS に て モ ジ ュ ー ル ロ ー ド の コ マ ン ド が 実 行 さ れ た 場 合 に は , 本 ダ ミ ー 要 求 へ の 応 答 と し て , バ ッ ク エ ン ド ド ラ イ バ は モ ジ ュ ー ル ロ ー ド の 要 求 を フ ロ ン ト エ ン ド ド ラ イ バ に 対 し て 送 信 す る . 上 記 , フ ロ ン ト エ ン ド ド ラ イ バ と バ ッ ク エ ン ド ド ラ イ バ 間 の 通 信 プ ロ ト コ ル を 下 記 に 示 す . 1. フ ロ ン ト エ ン ド ド ラ イ バ が ダ ミ ー 要 求 を 送 信 2. ホ ス ト OS 上 で ア プ リ ケ ー シ ョ ン が VESPER の モ ジ ュ ー ル ロ ー ド コ マ ン ド を 実 行 3. バ ッ ク エ ン ド ド ラ イ バ が モ ジ ュ ー ル ロ ー ド 要 求 を ダ ミ ー 要 求 へ の 応 答 と し て 送 信 4. フ ロ ン ト エ ン ド ド ラ イ バ が 共 有 メ モ リ を 確 保 し た 後 , 本 当 の モ ジ ュ ー ル ロ ー ド 要 求 を 送 信 5. バ ッ ク エ ン ド ド ラ イ バ は モ ジ ュ ー ル の イ メ ー ジ を 共 有 メ モ リ へ コ ピ ー 6. フ ロ ン ト エ ン ド ド ラ イ バ が モ ジ ュ ー ル を ロ ー ド 7. フ ロ ン ト エ ン ド ド ラ イ バ が ,ロ ー ド 結 果 を 新 た な ダ ミ ー 要 求 と し て 送 信 8. バ ッ ク エ ン ド ド ラ イ バ は モ ジ ュ ー ル の ロ ー ド 結 果 を ア プ リ ケ ー シ ョ ン へ 通 知 9. 以 降 , 2~ 8 の 繰 り 返 し 上 記 プ ロ ト コ ル を 実 現 す る た め に , VESPER で は 初 期 化 時 に , 1 回 ダ ミ ー 要 求 を 送 信 し て い る . こ の 方 法 で 現 在 は 本 プ ロ ト コ ル を 利 用 し な か っ た 場 合 に 発 生 す る , セ キ ュ リ テ ィ 上 の 問 題 を 回 避 し て い る .

5.1.2. モ ジ ュ ー ル ロ ー ド 機 能

実 際 に シ ス テ ム を 運 用 し て い る と , ユ ー ザ ア プ リ ケ ー シ ョ ン が 制 御 不 可 能 に な り , ア プ リ ケ ー シ ョ ン は 実 行 で き な い が , カ ー ネ ル は 動 作 可 能 な 場 合 が 時 々 発 生 す る . こ の よ う な 状 況 に お い て , 仮 に , ユ ー ザ 空 間 を 利 用 せ ず に プ ロ ー ブ モ ジ ュ ー ル が ロ ー ド で き れ ば , シ ス テ ム の 不 具 合 の 原 因 を 調 査 可 能 で あ る . そ の た め , VESPER で は , モ ジ ュ ー ル ロ ー ド 機 能 を ゲ ス ト OS の ユ ー ザ 空 間 を 利 用 せ ず に 実 装 す る . 現 在 ,Linuxに お け る モ ジ ュ ー ル ロ ー ド の 中 心 的 機 能 を 提 供 す る load_module() 等 の 関 数 で は ,モ ジ ュ ー ル の ロ ー ド は ユ ー ザ 空 間 か ら 実 行 さ れ る と い う 前 提 で 実 装 さ れ て い る た め , copy_from_user() を 利 用 し て モ ジ ュ ー ル の イ メ ー ジ を 取 得 し て い る .copy_from_user()内 部 で は ア ド レ ス を 確 認 す る た め に access_ok() を 呼 び 出 す .こ こ で ,access_ok() は 実 際 に は 呼 び 出 し 元 の 関 数 が ユ ー ザ 空 間 に 存 在 し て い る か を 確 認 し て い る の で は な く , ア ド レ ス が 該 当 プ ロ セ ス の ア ド レ ス 空 間 内 か ど う か を 確 認 し て い る . そ の た め , VESPERで は , モ ジ ュ ー ル ロ ー ド 機 能 を ゲ ス ト OS側 Action層 に お け る カ ー ネ ル ス レ ッ ド と し て 実 装 し た . こ の カ ー ネ ル ス レ ッ ド は load_module() を 呼 び 出 す sys_init_module() を 利 用 す る .モ ジ ュ ー ル の イ メ ー ジ は ,5.1.1 で 説 明 し た モ ジ ュ ー ル 転 送 機 能 に よ り ,既 に ゲ ス ト OSの ア ド レ ス 空 間 に マ ッ プ さ れ て お り ,load_module() 内 で 呼 び 出 さ れ る copy_from_user() は 問 題 な く 動 作 す る . し か し な が ら , sys_init_module()や load_module()は エ ク ス ポ ー ト さ れ て い な い た め , カ ー ネ ル モ ジ ュ ー ル か ら 直 接 呼 び 出 す こ と が で き な い . こ の 問 題 に 対 し , VESPER で は , ゲ ス ト OS の シ ン ボ ル テ ー ブ ル か ら こ れ ら の シ ン ボ ル の ア ド レ ス を あ ら か じ め 取 得 し て お き , ホ ス ト OS で モ ジ ュ ー ル を ロ ー ド す る 際 に , パ ラ メ タ と し て 渡 す こ と で 解 決 し て い る .

5.2. Probe Listener

Probe Listener は ゲ ス ト OS か ら プ ロ ー ブ 時 に 記 録 し た デ ー タ を 取 得 し , ホ ス ト OS 上 の ア プ リ ケ ー シ ョ ン に 対 し , そ の デ ー タ を 提 供 す る 必 要 が あ る . プ ロ ー ブ モ ジ ュ ー ル は プ ロ ー ブ ポ イ ン ト に お け る ゲ ス ト OS の

(7)

情 報 を 記 録 す る た め に relayfs を す る .こ こ で ,relayfs は 自 身 の バ ッ フ ァ を ペ ー ジ 単 位 で 管 理 し て い る .ま た , grant table に よ る 共 有 メ モ リ も , ペ ー ジ 単 位 の 管 理 を 行 な っ て い る . そ の た め , relay バ ッ フ ァ を grant table を 用 い て 共 有 す れ ば , ホ ス ト OS と ゲ ス ト OS の 間 で , デ ー タ の コ ピ ー を す る 必 要 は な い .ま た ,relay バ ッ フ ァ を 共 有 す る こ と に よ り , そ の 他 に 必 要 な 制 御 機 構 も 大 幅 に 削 減 す る こ と が 可 能 で あ る . 上 記 の よ う に , プ ロ ー ブ し た デ ー タ を 格 納 す る バ ッ フ ァ を ホ ス ト OS と ゲ ス ト OS で 共 有 す る 場 合 ,ホ ス ト OS 上 の ア プ リ ケ ー シ ョ ン が 正 し い デ ー タ に ア ク セ ス す る た め に は ,relay バ ッ フ ァ の 読 み 出 し イ ン デ ッ ク ス や padding 値 等 の 管 理 情 報 を 更 新 す る 必 要 が あ る . こ の た め ,Probe Listener は バ ッ フ ァ 共 有 機 能 と 管 理 情 報 更 新 機 能 と か ら 構 成 す る . ま た , Probe Loader と 同 様 に , 分 割 ド ラ イ バ 方 式 で 実 装 す る .

5.2.1. バ ッ フ ァ 共 有 機 能

前 述 し た よ う に , プ ロ ー ブ モ ジ ュ ー ル は relay バ ッ フ ァ に ゲ ス ト OS の 情 報 を 記 録 す る た め ,Probe Listener は ホ ス ト OS と ゲ ス ト OS の 間 で , relay バ ッ フ ァ を 共 有 す る 必 要 が あ る . バ ッ フ ァ の 共 有 は , Probe Loader の モ ジ ュ ー ル 転 送 機 能 と 同 様 に , grant table を 用 い て 実 現 す る . ま た , 共 有 バ ッ フ ァ に 関 す る 情 報 に 関 し て も ,I/O ring を 利 用 し て ゲ ス ト OS か ら ホ ス ト OS に 対 し て 送 信 す る .

5.2.2. 管 理 情 報 更 新 機 能

Probe Listener が バ ッ フ ァ を 共 有 す る と , ホ ス ト OS と ゲ ス ト OS で relayfs の バ ッ フ ァ だ け 共 有 し て い る 状 態 に な る .こ の と き ,実 際 に デ ー タ 記 録 が 行 な わ れ る , ゲ ス ト OS 側 で は バ ッ フ ァ の イ ン デ ッ ク ス 等 , relayfs 管 理 構 造 体 の デ ー タ が 更 新 さ れ る が , ホ ス ト OS 側 で は 管 理 構 造 体 は 共 有 し て い な い た め , 更 新 さ れ な い . そ の た め ,ホ ス ト OS 上 の UI 層 へ 記 録 し た デ ー タ を 正 し く 提 供 す る た め に は ,ホ ス ト OS 上 の relayfs 管 理 構 造 体 の 情 報 を 更 新 す る 必 要 が あ る . そ こ で , Probe Listener で は ,こ の 問 題 を 解 決 す る た め に ,I/O ring を 利 用 し て ,必 要 な 管 理 情 報 を ゲ ス ト OS か ら ホ ス ト OS へ 転 送 す る .ゲ ス ト OS 側 Probe Listener は 更 新 が 必 要 な 情 報 を 含 め た メ ッ セ ー ジ を 作 成 し , I/O ring へ 書 き 込 む . ホ ス ト OS 側 Probe Listener は I/O ring か ら メ ッ セ ー ジ を 読 み 出 し ,relayfs の 管 理 用 構 造 体 を 更 新 す る . 上 記 管 理 情 報 の 更 新 は , ゲ ス ト OS の 情 報 が 変 化 し た ら 即 座 に ホ ス ト OS 上 の 管 理 情 報 へ 反 映 さ せ る の が 理 想 的 で あ る . し か し な が ら , I/O ring を 介 し た メ ッ セ ー ジ の 送 信 は , 割 り 込 み を 伴 う た め , 管 理 情 報 の 更 新 の 度 に 実 施 す る に は , オ ー バ ヘ ッ ド が 大 き い . そ の た め , Probe Listener で は , relay バ ッ フ ァ の サ ブ バ ッ フ ァ の 切 り 替 え が 発 生 し た 際 に , 管 理 用 構 造 体 を 更 新 す る こ と に し た .

6. イ ン タ フ ェ ー ス

ゲ ス ト OS 側 で relay バ ッ フ ァ の 共 有 処 理 が 終 了 し た こ と を ホ ス ト OS が 受 信 す る と , ホ ス ト OS で は , UI 層 に 対 し て ,relayfs の イ ン タ フ ェ ー ス を 利 用 し て デ ー タ を 提 供 す る た め に ,relayfs の 管 理 用 構 造 体 を 作 成 す る . こ の と き , Probe Listener で は , 通 常 relayfs 管 理 用 構 造 体 を 作 成 す る た め に 利 用 す る relay_open()を 使 用 し な い . こ れ は , Probe Listener で は , relay バ ッ フ ァ 用 の ペ ー ジ を 新 た に 確 保 す る 必 要 は な く ,ゲ ス ト OS と 共 有 し て い る ペ ー ジ を relay バ ッ フ ァ の 仮 想 ア ド レ ス 領 域 に マ ッ プ す れ ば よ い か ら で あ る . こ の た め , Probe Listener で は relayfs 管 理 用 構 造 体 で あ る rchan を 手 動 で 設 定 し て い る . rchan の 設 定 が 終 了 す る と , 他 の relayfs を 利 用 し て い る サ ブ シ ス テ ム と 同 様 に ,sysfs 上 に エ ン ト リ が 作 成 さ れ る . 実 際 の パ ス は ゲ ス ト OS の ID や モ ジ ュ ー ル の 名 前 を 含 み , 次 の よ う に な る .

6.1. アプリケーション用 インタフェース

VESPER は ア プ リ ケ ー シ ョ ン に 対 し , ゲ ス ト OS に 対 し モ ジ ュ ー ル を ロ ー ド /ア ン ロ ー ド 用 及 び ゲ ス ト OS の 情 報 取 得 用 の 簡 潔 な イ ン タ フ ェ ー ス を 提 供 す る . こ れ ら の イ ン タ フ ェ ー ス を 下 記 に 示 す .

int virt_insmod( const int target_guest, const char *modname, const char *opt);

int virt_rmmod( const int target_guest, const char *modname, const long flags);

virt_insmod 及 び virt_rmmod は モ ジ ュ ー ル の ロ ー ド / ア ン ロ ー ド に 使 用 し , 引 数 は target_guest を 追 加 し た 以 外 は , insmod や rmmod と 同 様 で あ る . ま た , 現 在 は ,ア プ リ ケ ー シ ョ ン は 直 接 relayfs の イ ン タ フ ェ ー ス を 利 用 し て ゲ ス ト OS の 情 報 を 取 得 す る 仕 組 み と な っ て い る . /sys/kernel/debug/vesper/guestID/modname/. バ ッ フ ァ の 共 有 を 終 了 す る 場 合 に は , 上 記 の 共 有 開 始 手 順 を 逆 順 に 実 行 し , 次 の よ う に な る . ホ ス ト OS 上 の relayfs 管 理 構 造 体 rchan を 削 除 後 , ゲ ス ト OS に て バ ッ フ ァ 共 有 の 終 了 処 理 を 実 行 す る .

(8)

6.2. モジュール用 インタフェース

VESPER は , ゲ ス ト OS で 動 作 す る プ ロ ー ブ モ ジ ュ ー ル が ,relay バ ッ フ ァ を ホ ス ト OS と 共 有 す る た め の イ ン タ フ ェ ー ス を 提 供 し て い る .ま た ,relay バ ッ フ ァ の サ ブ バ ッ フ ァ 切 り 替 え 時 に 呼 び 出 さ れ る callback 関 数 も 提 供 し て い る . こ れ ら の イ ン タ フ ェ ー ス を 下 記 に 示 す .

int relay_export_start( struct rchan :rchan, const char *modname);

void relay_export_stop( const char *modname);

int virtrelay_subbuf_start_callback(

struct rchan_buf *buf, void *subbuf, void *prev_subbuf, size_t prev_padding); 全 て の プ ロ ー ブ モ ジ ュ ー ル は relay_open() の 後 に relay_export_start() を , relay_close() の 前 に relay_export_end() を 呼 び 出 す 必 要 が あ る . ま た , relay_open()を 呼 び 出 す と き に 必 要 な ,コ ー ル バ ッ ク 関 数 登 録 用 構 造 体 で あ る , struct rchan_callbacks の subbuf_start メ ン バ に virtrelay_subbuf_start_callback() を 設 定 す る 必 要 が あ る .

7. 評 価

本 章 で は Xen 上 の ゲ ス ト で Web サ ー ビ ス を 提 供 す る ク ラ ス タ シ ス テ ム を 構 成 し ,VESPER の 評 価 を 行 な う .

7.1. 評 価 環 境

評 価 環 境 と し て は , 物 理 サ ー バ を 2 台 用 意 し , 各 サ ー バ で ゲ ス ト OS を 2 つ 起 動 す る . 物 理 サ ー バ 1 で 動 作 し て い る ゲ ス ト OS を VM1-1, VM1-2 と し , 物 理 サ ー バ 2 で 動 作 し て い る ゲ ス ト OS を VM2-1,VM2-2 と し た と き , VM1-1 と VM2-1 で ク ラ ス タ 1 を 構 成 し , VM1-2 と VM2-2 で ク ラ ス タ 2 を 構 成 す る . ク ラ ス タ 管 理 ソ フ ト ウ ェ ア と し て は Linux-HA が 提 供 し て い る Heartbeat を 利 用 す る . こ こ で , ク ラ ス タ 1 は 通 常 の Heartbeat で 監 視 し , ク ラ ス タ 2 は Heartbeat を 拡 張 し VESPER で 監 視 を 行 な う . ク ラ ス タ 1 で は Heartbeat で 監 視 す る が , 監 視 方 法 と し て は , ゲ ス ト OS を 一 つ の 資 源 と し て 監 視 す る .そ の た め ,内 部 の http サ ー バ の 監 視 は 対 応 し て い な い た め 行 な わ な い . 監 視 対 象 の VM に 異 常 が 発 生 し た 場 合 に は , Heartbeat 内 の LRM(Local Resource Manager)に 知 ら さ れ , サ ー ビ ス 提 供 ノ ー ド の 切 り 替 え を 行 な う .評 価 環 境 を 図 4に 示 す .

7.2. heartbeat によるゲスト OS の監 視 方 法

heartbeat で は ,仮 想 化 環 境 で ク ラ ス タ を 構 築 す る 際 , ホ ス ト OS 上 で 動 作 す る こ と で ,ゲ ス ト OS を 一 つ の 資 源 と し て 制 御 ・ 監 視 す る こ と が 可 能 で あ る . 資 源 の 制 御 と し て は 次 の 3 つ が あ る . • start 資 源 を 開 始 (起 動 )す る .xen の ゲ ス ト OS の 場 合 xm コ マ ン ド を 利 用 し て 起 動 す る . • stop 資 源 を 停 止 す る . xen 環 境 で は , start 同 様 xm コ マ ン ド を 利 用 し て い る . • monitor (status) 資 源 の 監 視 を 行 な う . xen で は xm コ マ ン ド を 利 用 し て ,ゲ ス ト OS が 存 在 し て い れ ば ,問 題 な し ,存 在 し て い な け れ ば 障 害 発 生 と 判 断 し て い る .

7.3. VESPER によるゲスト OS の監 視 方 法

VESPER を 用 い て ゲ ス ト OS の 情 報 を ホ ス ト OS で 取 得 し , 正 常 / 異 常 終 了 の 監 視 を 行 な っ た . プ ロ ー ブ ポ イ ン ト と し て は panic()関 数 , exit()関 数 を プ ロ ー ブ し た .

7.4. 結 果 と考 察

上 記 の 環 境 で 実 験 を 行 な っ た 結 果 , ゲ ス ト OS に パ ニ ッ ク が 発 生 す る 等 , ゲ ス ト OS が 停 止 し て し ま う よ う な 状 況 で は ,heartbeat に よ る 監 視 と VESPER に よ る 監 視 で は フ ェ イ ル オ ー バ ま で の 時 間 に 差 が 生 じ な か っ た . こ れ は , heartbeat が xm コ マ ン ド で ゲ ス ト OS を 監 視 し て い る た め , ゲ ス ト OS が 停 止 し た 場 合 に も 即 座 に 検 知 で き る 仕 組 み に な っ て い る か ら だ と 考 え ら れ る . 一 方 , ゲ ス ト OS は 動 作 し て い る が , 内 部 の http サ ー バ に 障 害 が 発 生 し て , ア プ リ ケ ー シ ョ ン が 終 了 す る 場 合 等 に は , heartbeat に よ る 監 視 で は 障 害 を 検 出 で き ず , フ ェ イ ル オ ー バ を 実 行 す る こ と は 無 か っ た . し か し , VESPER で 監 視 し て い る 際 に は 障 害 を 検 知 し , 即 座 に フ ェ イ ル オ ー バ を 開 始 し , サ ー ビ ス の 停 止 時 間 を 最 小 限 に す る こ と が で き た . こ れ ら の こ と か ら , VESPER を 利 用 す る こ と で , Heartbeat で は 検 知 不 可 能 で あ っ た 障 害 の 検 知 に 成 功 し た . ま た , 本 実 験 で は 確 認 で き な か っ た が , イ ベ ン ト ド リ ブ ン 方 式 の 障 害 通 知 を 採 用 し て い る こ と か ら , 障 害 発 生 か ら 検 知 ま で の 時 間 を 縮 め , サ ー ビ ス の 停 止 時 間 を 最 小 限 に す る こ と が 可 能 で あ る と 予 想 し て い る . 一 方 で , VESPER で の 監 視 を 行 う 際 に , 2 つ の 問 題 が 生 じ た .1 つ は ,ゲ ス ト OS の 監 視 場 所 の 決 定 で あ る .

(9)

図 4 評 価 環 境 VESPER で は , 提 供 し て い る サ ー ビ ス に 応 じ て 監 視 場 所 を 変 更 す る こ と が 可 能 だ が , 逆 に 監 視 場 所 を 決 定 す る こ と が 非 常 に 難 し く , 熟 練 者 に よ る 知 識 が 必 要 と な っ て し ま う . 2 つ 目 は , プ ロ ー ブ の オ ー バ ヘ ッ ド で あ る . Xenprobes に 比 べ , オ ー バ ヘ ッ ド は 格 段 に 小 さ く な っ た が , そ れ で も , 多 数 の プ ロ ー ブ を 挿 入 す る と , 本 来 の サ ー ビ ス に 影 響 を 与 え る 可 能 性 が あ る . 1 つ 目 の 問 題 と 関 係 す る が , や は り , 適 切 な 場 所 だ け に プ ロ ー ブ を 挿 入 す る 必 要 が あ る .

8. ま と め と 今 後 の 開 発 項 目

本 論 文 で は , 仮 想 化 環 境 に お い て ホ ス ト OS 上 で ゲ ス ト OS の 情 報 を 効 率 的 に 収 集 す る こ と が 可 能 な フ レ ー ム ワ ー ク で あ る VESPER を 提 案 し ,そ の 設 計 や 実 装 方 法 に つ い て 説 明 し た . そ し て , ク ラ ス タ シ ス テ ム に お け る フ ェ イ ル オ ー バ 遅 延 を 改 善 し た こ と を 示 し , VESPER の 有 効 性 を 示 す と と も に , 課 題 を 述 べ た . 最 後 に , 今 後 の 開 発 項 目 に つ い て 説 明 す る . な お , 8.6 は 直 接 的 に は VESPERと 関 係 な い が , 今 後 , 仮 想 化 環 境 に お け る ク ラ ス タ シ ス テ ム を 推 進 し て い く 際 に , 解 決 す べ き 課 題 と 考 え る た め , こ こ に 挙 げ て お く . こ れ ら の 機 能 を 開 発 し , 仮 想 化 環 境 で の よ り 高 信 頼 な ク ラ ス タ シ ス テ ム を 実 現 し て い く 予 定 で あ る .

8.1. VESPER 基 本 機 能 の強 化

現 在 の VESPER に お い て も ,障 害 検 知 の 迅 速 化 等 を 実 現 す る こ と は で き た . し か し な が ら , ホ ス ト OS の バ ッ フ ァ 管 理 情 報 を サ ブ バ ッ フ ァ の 切 り 替 え 時 に し か 更 新 し な い こ と や , ゲ ス ト OS の マ イ グ レ ー シ ョ ン に 対 応 指 定 い な い 等 , 未 だ 不 足 し て い る 機 能 が あ り , 基 本 機 能 の 強 化 が 必 要 で あ る .

8.2. プローブ補 助 機 能

ク ラ ス タ 管 理 ソ フ ト ウ ェ ア や そ の 他 の ア プ リ ケ ー シ ョ ン が VESPER を 容 易 に 利 用 で き る よ う に ,プ ロ ー ブ 補 助 機 能 を 開 発 す る . 本 機 能 に よ り , 各 プ ロ ー ブ ポ イ ン ト は そ の 特 徴 に よ り , 複 数 の グ ル ー プ へ と 分 類 さ れ 管 理 さ れ る . ま た , 本 機 能 で は , メ モ リ 関 連 グ ル ー プ や ネ ッ ト ワ ー ク 関 連 グ ル ー プ な ど を , 前 も っ て 定 義 し て お き ,ユ ー ザ は 必 要 に 応 じ て グ ル ー プ を 選 択 れ ば , 必 要 な 部 分 だ け の 情 報 を 採 取 可 能 に な る .

8.3. SystemTap との連 携

VESPERで は プ ロ ー ブ モ ジ ュ ー ル を 必 要 と す る が , 通 常 モ ジ ュ ー ル の 作 成 に は C言 語 の 知 識 に 加 え , カ ー ネ ル の 知 識 も 必 要 と な り , 開 発 が 難 し い . こ の 問 題 に 対 し , 簡 単 な ス ク リ プ ト を 書 く こ と で , モ ジ ュ ー ル を 作 成 可 能 な SystemTap [9] と い う ツ ー ル が 存 在 す る . SystemTapに よ っ て ,VESPERで 利 用 す る プ ロ ー ブ モ ジ ュ ー ル が 作 成 で き れ ば , 非 常 に 利 便 性 が 向 上 す る と 考 え ら れ る .そ の た め ,今 後 SystemTapの 拡 張 へ 取 り 組 ん で い く 予 定 で あ る .

8.4. virtio への対 応

virtio は KVM 等 い く つ か の VMM に お い て ,ゲ ス ト OS と ホ ス ト OS 間 の 通 信 機 能 を 実 現 し て い る . 今 後 , VESPER は KVM へ 対 応 す る 予 定 で あ る た め ,virtio へ の 対 応 は 必 須 で あ る .

8.5. ホスト OS 障 害 の予 兆 検 知

仮 想 化 環 境 で は , ホ ス ト OS に 障 害 が 発 生 し た 場 合 に は ,そ の ホ ス ト OS 上 で 動 作 し て い る ゲ ス ト OS は 全 て 影 響 を 受 け る . こ の た め , ホ ス ト OS の 障 害 の 予 兆

(10)

を 検 知 す る こ と は 非 常 に 重 要 で あ る . 一 方 , 仮 想 化 環 境 に お い て は , 基 本 的 に ホ ス ト OS の み が 実 ハ ー ド ウ ェ ア に ア ク セ ス で き ,本 当 の 状 態 を 知 る こ と が で き る . 以 上 の こ と か ら , VESPER で は 今 後 ホ ス ト OS に 対 し て も プ ロ ー ブ を 挿 入 し , 実 ハ ー ド ウ ェ ア も 含 め 監 視 を 行 な え る よ う 拡 張 す る .

8.6. LRM における VM 内 サービス監 視 のサポート

前 述 し た と お り , 仮 想 化 環 境 に お い て , ク ラ ス タ シ ス テ ム を 構 成 す る 際 に , ク ラ ス タ 管 理 ソ フ ト ウ ェ ア を ホ ス ト OS 上 で 動 作 さ せ ,ゲ ス ト OS を 資 源 と し て 監 視 す る 方 法 が 提 案 さ れ て い る . こ の 方 法 の 場 合 , ゲ ス ト OS 内 で 動 作 し て い る サ ー ビ ス の 監 視 に つ い て は ,現 在 サ ポ ー ト さ れ て お ら ず , 監 視 方 法 も 含 め 今 後 検 討 す る 必 要 が あ る .

9. 参 考 文 献

[1] The Xen virtual machine monitor,

http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ [2] KVM, http://kvm.qumranet.com/

[3] Heartbeat, http://linux-ha.org

[4] Alan Robertson, Linux-HA Heartbeat Design, In Proceedings of the 4t h International Linux Showcase and Conference, 2000.

[5] Alan Robertson, World Class HA with Linux-HA, 7t h

The Linux Foudation Japan Symposium,

http://www.linux-foundation.jp/uploads/seminar2008 0312/Linux-HA-Japan2008.pdf

[6] Ananth N. Mavimalayanahalli et al., Probing the Guts of Kprobes, In Proceedings of Ottawa Linux Symposium, 2006.

[7] Nguyen Anh Quynh, Xenprobes, A Lightweight User-space Probing Framework for Xen Virtual Machine, In USENIX Annual Technical Conference Proceedings, 2007.

[8] Nitin A. Kamble et al., Evolusion in Kernel

Debugging using Hardware Virtualization With Xen, In Proceedings of Ottawa Linux Symposium, 2006. [9] SystemTap, http://sourceware.org/systemtap/ [10] Rusty Russel, lguest:Implementating the little Linux

hypervisor, In Proceedings of Ottawa Linux Symposium, 2007.

[11] VESPER, http://vesper.sourceforge.net/

商 標

• Linux は Linus Tovalds の 米 国 及 び そ の 他 の 国 に お け る 登 録 商 標 あ る い は 商 標 で す .

• そ の 他 の 記 載 さ れ て い る 社 名 及 び 製 品 名 は 各 社 の 登 録 商 標 ま た は 商 標 で す .

図   3  VESPER の 処 理 の 流 れ B4. ホ ス ト OS 側 イ ン デ ッ ク ス 情 報 の 更 新   ホ ス ト OS 側 Probe Listener は ,ゲ ス ト OS か ら 取 得 し た イ ン デ ッ ク ス 情 報 に 基 づ き ,ホ ス ト OS 内 の relay バ ッ フ ァ の イ ン デ ッ ク ス を 更 新 す る .   4.2.3
図   4  評 価 環 境   VESPER で は , 提 供 し て い る サ ー ビ ス に 応 じ て 監 視 場 所 を 変 更 す る こ と が 可 能 だ が , 逆 に 監 視 場 所 を 決 定 す る こ と が 非 常 に 難 し く , 熟 練 者 に よ る 知 識 が 必 要 と な っ て し ま う . 2 つ 目 は , プ ロ ー ブ の オ ー バ ヘ ッ ド で あ る . Xenprobes に 比 べ , オ ー バ ヘ ッ ド は 格 段 に 小 さ く

参照

関連したドキュメント