Oracle Solaris 11 Advanced System Administration (1Z0-822)サンプル問題

問題1:

Solaris11システム同士でNFSv4を使用してファイル共有をしています。nfsmapidデーモンを適切に機能させるためにはNFSv4で使用するドメインを同じにする必要があります。各システムで、現在NFSv4で使用されているドメインを判別するには、何を確認するのが最も適切ですか?1つ選択してください。

 

1.     /etc/default/nfsファイルのNFSMAPID_DOMAINパラメータの値

2.     sharectl get nfsコマンドのnfsmapid_domainプロパティの値

3.     /var/run/nfs4_domainファイルの内容

4.     DNS_nfsv4idmapdomain TXTレコード

 

正解:3

解説:

1.     /etc/default/nfsファイルはSolaris10までの構成ファイルで、Solaris11からはsharectlコマンドを使用してNFSの構成パラメータを設定します。

2.     このコマンドで出力されるnfsmapid_domainプロパティでも明示的に設定がされていればNFSv4ドメインの確認はできますが、デフォルト値(未設定)の場合は空になっています。nfsmapid_domainが未設定の場合はデフォルトでシステムのDNSドメインがNFSv4用のドメインとして使用されます。

3.     正解です。このファイルは現在システムで使用しているNFSv4ドメインを格納しています。

4.     DNS_nfsv4idmapdomain TXTレコードを提供するように設定することは大規模なNFSv4環境で有効です。ただし、各システムではローカルに設定されている情報が優先されるため、システムの現在のNFSv4ドメインを調べるという観点では正しくありません。

 

複数のホストへのOracle Solaris 11 OSのインストール

問題2:

以下の内容のファイルがあります。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE auto_install SYSTEM "file:///usr/share/install/ai.dtd.1">

<auto_install>

<ai_instance name="sparc_s11_1111" auto_reboot="true">

<target>

<logical>

<zpool name="rpool" is_root="true">

<filesystem name="export" mountpoint="/export"/>

<filesystem name="export/home"/>

<be name="solaris"/>

</zpool>

</logical>

</target>

<software type="IPS">

<destination>

<image>

<!-- Specify locales to install -->

<facet set="false">facet.locale.*</facet>

<facet set="true">facet.locale.de</facet>

<facet set="true">facet.locale.de_DE</facet>

<facet set="true">facet.locale.en</facet>

<facet set="true">facet.locale.en_US</facet>

<facet set="true">facet.locale.es</facet>

<facet set="true">facet.locale.es_ES</facet>

<facet set="true">facet.locale.fr</facet>

<facet set="true">facet.locale.fr_FR</facet>

<facet set="true">facet.locale.it</facet>

<facet set="true">facet.locale.it_IT</facet>

<facet set="true">facet.locale.ja</facet>

<facet set="true">facet.locale.ja_*</facet>

<facet set="true">facet.locale.ko</facet>

<facet set="true">facet.locale.ko_*</facet>

<facet set="true">facet.locale.pt</facet>

<facet set="true">facet.locale.pt_BR</facet>

<facet set="true">facet.locale.zh</facet>

<facet set="true">facet.locale.zh_CN</facet>

<facet set="true">facet.locale.zh_TW</facet>

</image>

</destination>

<source>

<publisher name="solaris">

<origin name="http://10.190.96.242"/>

</publisher>

</source>

<software_data action="install">

<name>pkg:/entire@0.5.11-0.175.0.0.0.2.0</name>

<name>pkg:/group/system/solaris-large-server</name>

<name>pkg:/group/system/solaris-desktop</name>

</software_data>

</software>

<configuration type="zone" name="zone1" source="http://10.190.96.242:81/zone1_config"/>

</ai_instance>

</auto_install>

 

このファイルについての正しい説明を3つ選択してください。

 

1.     このファイルは自動インストーラ(AI)用のマニフェストファイルである。

2.     このファイルは自動インストーラ(AI)用のシステム構成(SC)プロファイルである。

3.     このファイルはzone1という名前のゾーンの自動インストール用のマニフェストである。

4.     このファイルを利用してインストールされるシステムにはzone1という名前のゾーンが自動的に構成される。

5.     configuration要素で指定されているzone1_configファイルはゾーンの構成を定義したXML形式のファイルである。

6.     このファイルをインストールサービスに追加して利用可能にするにはinstalladm create-profileコマンドを使用する。

7.     このファイルをインストールサービスに追加して利用可能にするにはinstalladm create-manifestコマンドを使用する

 

 

正解:1,4,7

解説:

1.     正解です。2行目のDTDファイルの指定がai.dtd.1となっていることや全体がauto_installタグで囲まれていることからわかります。

2.     SCプロファイルはsysconfig create-profileコマンドで作成できます。同じXML形式のファイルになりますが、内容は全く異なります。

3.     下部のconfiguration要素でzone1というゾーンを構成するように指定していますが、zone1用のAIマニフェストはこのファイル自体ではなく、別途用意する必要があります。

4.     正解です。このファイルを使用してインストールされるシステムにはsource部分で指定した構成情報を使用してゾーンが自動的に構成されます。インストール後の最初の起動時にzones-installサービスによって、構成されたゾーンは自動的にインストールされます。このゾーンのインストールでも自動インストール(AI)が使用されます。

5.     XML形式ではなくzonecfg設定形式です。zonecfg設定形式とはzonecfgのサブコマンドの羅列で構成されるファイルのことで、定義済みのゾーンからzonecfg -z zone_name export コマンドで生成することができます。

6.     installadm create-profileコマンドはインストールサービスに、インストール対象システムで使用するシステム構成(SC)プロファイルを登録する際に使用します。

7.     正解です。AIマニフェストをインストールサービスに登録するにはinstalladm create-manifestコマンドを使用します。コマンドの詳細はinstalladmのマニュアルを参照してください。

問題3:

Solaris11のディストリビューション・コンストラクタ機能の説明のうち正しいものを3つ選択してください。

 

1.     様々なインストール用のカスタムISOイメージを作成することができる

2.     IPSサーバーへのアクセスは必須ではない

3.     distribution-constructorパッケージをインストールする必要がある

4.     distro_constコマンドを実行するホストのアーキテクチャとは関係なく、SPARC/x86のどちらのISOイメージでも作成できる

5.     チェックポイントでイメージの作成処理を一時停止および再開できる。一時停止中にイメージの状態を確認したり、バグの有無を確認できる。

 

正解:1,3,5

解説:

1.     正解です。x86用のLiveメディアや、SPARC/x86のそれぞれに対して、テキストインストールやAI用のISOイメージを作成できます。

2.     IPSサーバーへのアクセスは必須です。ローカルのIPSリポジトリの利用も可能です。

3.     正解です。distribution-constructorパッケージにはdistro_constコマンドやサンプルのDCマニフェストなどが含まれています。

4.     distro_constコマンドを実行するホストと同じアーキテクチャ(x86/SPARC)用のISOイメージしか作成できません。

5.     正解です。distro_constコマンドの-pオプションや-rオプションでチェックポイントを指定することにより、作成処理を指定のチェックポイントで一時停止したり再開したりすることが可能です。特にチェックポイントを指定しなかった場合には、イメージの作成中にエラーが発生した場合のみ、チェックポイントで処理が停止します。

 

Image Packaging System (IPS)とパッケージの管理

問題4:

Image Packaging System (IPS)についての正しい説明を3つ選択してください。

 

1.     IPSリポジトリとはソフトウェアパッケージの集まりでリポジトリ内のすべてのパッケージはカタログに含まれる。

2.     IPSリポジトリは各組織でローカルネットワーク内に作成する必要がある。

3.     IPSイメージとはパッケージをインストールできる場所(ディレクトリツリー)のことで、完全なシステムを提供できるフルイメージ、フルイメージ(親イメージ)にリンクされる部分イメージなどがある。また、必要に応じて様々な場所にマウントすることができる。

4.     OSの更新はパッチという形式でリポジトリに公開され、patchaddコマンドで適用する。

5.     デフォルトではすべてのパッケージ操作において、新しいブート環境(BE)が作成され、次のブート時にアクティブになるように設定される。

6.     IPSリポジトリには起点(origin)とミラーという概念があり、物理的なレイアウトを最適化することによりパッケージ操作を高速化することができる。

7.     NFSHTTPを通してクライアントにアクセスさせることができるが、パッケージファイルとして個別にやりとりすることはできない。

 

正解:1,3,7

解説:

1.     正解です。

2.     デフォルトのIPSリポジトリはsolarisパブリッシャー(発行元)としてhttp://pkg.oracle.com/solaris/release/に設定されており、インターネットにアクセスできる環境であればローカルに作成する必要はありません。

3.     正解です。

4.     Solaris11ではパッチという概念はなくなり、すべての更新はパッケージとしてリポジトリに公開されます。pkg updatepkg installコマンドで適用します。

5.     pkg propertyの出力のbe-policyの値で挙動が決まります。be-policyのデフォルト値はdefaultcreate-backupという指定と同じになり、リブートを必要とするパッケージ操作の場合に新しいブート環境が作成されます。選択肢のようにすべてのパッケージ操作でブート環境を作成するように強制するにはalways-newを指定します。pkg install --be-name newBE pkg_name be-policyにかかわらず、常に新しいBEを作成して、そのBEにパッケージをインストールすることもできます。

6.     正解です。起点は、パッケージのメタデータ (カタログ、マニフェスト、検索インデックスなど) とパッケージの内容 (ファイル) の両方を含むパッケージリポジトリです。ミラーは、パッケージの内容のみを含むパッケージリポジトリです。

7.     IPSサーバー側でNFSでシェアしておけば、クライアントはpkg set-publisherコマンドで起点をNFSマウントしたディレクトリに設定することもできます。さらにpkgrecv -s src -d dst -a [-r] pkg_nameコマンドで.p5pパッケージアーカイブファイルも作成できます。

 

問題5:

ローカル・ホストをIPSパッケージのローカル・リポジトリとして設定します。ローカル・リポジトリの格納場所は/export/IPSにし、既にZFSでファイルシステムが作成されています。また、現在のパブリッシャがデフォルトのhttp://pkg.oracle.com/solaris/release/で、これを新しいhttp://s11-serv1.mydomain.comに変更すると仮定します。パブリッシャの名前はsolarisです。この状況下で実行すべき作業として正しいものを3つ選択してください。

 

1.     IPSのフル・リポジトリイメージISOファイルをマウントして、ファイルをrsync/export/IPSにコピーする

2.     svccfgコマンドを使用してpkg/serverサービスのpkg/inst_rootプロパティの値を/export/IPS/repoに、pkg/readonlyプロパティの値をfalseに設定する

3.     svcadm refresh pkg/serverでサービスを更新し、svcadm enable pkg/serverでサービスを有効にする

4.     pkg set-publisher -P solarisでパブリッシャの優先順位を変更する

5.     pkg set-publisher -G '*' -g http://s11-serv1.mydomain.com solaris を実行する

6.     pkg set-publisher -g http://pkg.oracle.com/solaris/releaes -G http://s11-serv1.mydomain.com solaris を実行する

 

正解:1,3,5

解説:

1.     正解です。初期のSolaris11ではリポジトリの分割イメージをダウンロードしてcatコマンドでフル・リポジトリイメージISOを作成します。それをマウントしてアクセス可能にし、rsyncコマンドでコピーします。リポジトリイメージからコピーする方法以外にも、以下のようにpkgrecvコマンドで公開リポジトリからそのままコピーして作成する方法もあります。

# pkgrecv -s http://pkg.oracle.com/solaris/release -d /export/IPS/repo '*'

2.     公開用パッケージデータの準備ができている場合はpkg/readonlytrueに設定すべきで、外部からpkgsendコマンドなどで更新できないようにするのが一般的です。新しいパッケージを外部のシステムから送信・公開できる運用にする場合はpkg/readonlyfalseに変更します。

3.     正解です。svcadm refreshは変更したプロパティをサービスに反映するために必要な操作です。svcadm enableはローカル・ホストがIPSリポジトリ・サーバーになるために必要な操作です。

4.     このコマンドではパブリッシャsolarisの最優先にするように優先順位を変更しています。パブリッシャの場所(URI)の切り替えにパブリッシャ同士の優先順位の変更は関係ありません。

5.     正解です。-G で削除する起点(Origin)を指定、-g で追加する起点を指定するため、パブリッシャの起点を切り替えることができます。-G '*' で既存のパブリッシャのすべての起点を削除できます。

6.     -g -Gの使い方が逆です。

 

問題6:

パッケージが安全であることを保証するために、新しくインストールするパッケージに有効な署名が少なくとも1つ含まれるように強制する手段として正しいものを2つ選択してください。

 

1.     イメージ・プロパティのsignature-policyrequire-signaturesに設定する

2.     イメージ・プロパティのbe-policyalways-signaturesに設定する

3.     パブリッシャ・プロパティのsignature-policyrequire-signaturesに設定する

4.     パブリッシャ・プロパティのsignature-policyverifyに設定する

5.     イメージプロパティのbe-policyverify-signaturesに設定する

6.     使用しているパブリッシャをsticky(固定)に設定する

 

正解:1,3

解説:

1.     正解です。この設定によってイメージに対して署名を強制できます。

2.     be-policyは署名の強制ではなく、パッケージ適用時のブート環境の扱いに関するプロパティです。また、be-policyにはalways-signaturesという値は不正です。

3.     正解です。この設定をしたパブリッシャからのパッケージに対して署名を強制できます。

4.     これはデフォルトの設定です。署名が含まれているすべてのマニフェストが有効に署名されていることを確認しますが、インストール済みパッケージがすべて署名されている必要はありません。

5.     Bと同様に不正な値です。

6.     パブリッシャをsticky(固定)にすることは署名の強制とは関係ありません。パブリッシャをstickyにすると、各パッケージはパッケージのインストール時に使用したパブリッシャからのみ更新されるようになり、別のパブリッシャが同一名のパッケージを提供していても、そのパブリッシャからのパッケージは使用しません。複数のパブリッシャを登録している場合にこのようなsticky設定にすることがあります。

 

ビジネス・アプリケーション・データの管理

問題7:

以下はzpool statusコマンドの出力です。ここから読み取れる情報として間違っているものを2つ選択してください。

 

pool: testpool

state: ONLINE

scan: none requested

config:

 

NAME STATE READ WRITE CKSUM

testpool ONLINE 0 0 0

mirror-0 ONLINE 0 0 0

c3t2d0 ONLINE 0 0 0

c3t3d0 ONLINE 0 0 0

mirror-1 ONLINE 0 0 0

c3t4d0 ONLINE 0 0 0

c3t5d0 ONLINE 0 0 0

 

errors: No known data errors

 

1.     zpool split testpool newpoolコマンドでこのプールを分割するとtestpool2つのディスクからなるミラーになり、c3t4d0c3t5d0のディスクが切り離されエクスポートされる

2.     zpool detach コマンドでtestpoolのミラーデバイスのそれぞれからディスクを1つずつ取り除くことで非冗長構成のtestpoolにすることができる

3.     testpool4つのディスクからなる2-wayミラー構成である

4.     最上位の仮想デバイスの冗長性が異なっているので、testpoolは推奨された構成ではない

5.     testpool2つのディスク(c3t2d0, c3t3d0)からなる2-wayミラー構成から拡張して作成することができる

6.     testpool2つのディスク(c3t2s0, c3t4d0)からなる非冗長構成のプールから拡張して作成することができる

7.     未使用のディスクc3t6d0があると仮定すると、zpool replaceコマンドを使用してONLINEの状態のまま、使用中のc3t5d0のディスクをc3t6d0に置き換えることができる。

 

正解:1,4

解説:

1.     正解です。もともと2-wayミラーなのでsplitによりtestpoolはミラー構成ではなくなりc3t2d0c3t4d02つのディスクで構成される非冗長プールなります。またc3t3d0c3t5d02つのディスクで構成される非冗長プール(newpool)がシステムから切り離されエクスポートされます。

2.     正しい説明です。zpool detachコマンドでサブミラーを永続的に削除することができます。

3.     正しい説明です。各ミラー仮想デバイス(mirror-0, mirror-1)の構成要素となるディスクが2つなので2-wayになります。

4.     正解です。最上位仮想デバイスは mirror-0 mirror-1であり、それぞれ2-wayなので冗長性は同じです。

5.     正しい説明です。zpool add testpool mirror c3t4d0 c3t5d0 で拡張することが可能です。

6.     正しい説明です。zpool attach testpool c3t2d0 c3t3d0; zpool attach testpool c3t4d0 c3t5d0 で拡張することが可能です。

7.     正しい説明です。

 

問題8:

ストレージの容量を節約するためデータの書き込み時に重複するデータ・ブロックが書き込まれないようなtestpool/data1ファイルシステムを作成したいと考えています。

このようなファイルシステムを作成できるコマンドを2つ選択してください。

 

1.     # zpool add testpool cache c1t3d0

# zfs create testpool/data1

2.     # zfs create -o dedup=on testpool/data1

3.     # zfs create testpool/data1

# zfs set compression=on testpool/data1

4.     # zfs create testpool/data1

# zfs set dedup=on testpool/data1

5.     # zpool set dedupratio=on testpool

# zfs create testpool/data1

 

正解:2,4

解説:

1.     このコマンドはc1t3d0というデバイスを独立したキャッシュデバイスとしてtestpoolに追加しています。SSDのような高速なデバイスをキャッシュデバイスとして追加することで読み取り性能を高めることができますが、重複排除の目的とは関係ありません。

2.     正解です。重複排除はファイルシステムのdedupプロパティで設定します。ファイルシステムの 作成時に重複排除を有効にするには-oオプションの後にプロパティの指定を続けます。

3.     これは圧縮機能を有効化する設定です。ストレージ容量の節約にはつながりますが、要件にある「重複するデータ・ブロックを書き込まない」には当てはまりません。

4.     正解です。ファイルシステムを作成してからdedupプロパティで重複排除を有効にすることもできます。

5.     dedupratioは重複排除率を表すプールのプロパティです。また、読み取り専用プロパティであるため、このコマンドはエラーになります。

 

ネットワークとトラフィックのフェイルオーバーの設定

問題9:

以下のコマンド出力があります。

 

# netadm list

TYPE PROFILE STATE

ncp Automatic disabled

ncp start_state online

ncu:phys net0 online

ncu:ip net0 online

loc aces online

loc Automatic offline

loc NoNet offline

loc User disabled

 

ここから読み取れる情報のうち正しいものを2つ選択してください。

 

1.     このシステムはNWAM構成(リアクティブ・ネットワーク構成)で、ネットワーク構成が動的に管理されている。

2.     このシステムのDNSネームサーバを修正するにはacesというロケーション・プロファイルを修正する。

3.     2つのロケーションプロファイルがofflineになっているため、このシステムのネットワーク構成は機能していない。

4.     Automaticネットワーク構成プロファイル(NCP)には2つのNCUが構成されている。

 

正解:1,2

解説:

1.     正解です。DefaultFixed以外のNCPonlineになっている場合はNWAM構成です。この例の場合、start_stateというカスタムNCPが有効になっています。

2.     正解です。NWAM構成で使用するDNSサーバを変更するには使用しているロケーションプロファイルを修正します。詳しくはnetcfgコマンドのマニュアルを参照してください。

3.     ネットワーク構成プロファイル(NCP)とロケーションプロファイル(loc)は1つずつonlineになります。この例の場合、acesという名前のロケーションプロファイルがonlineになっているため問題はありません。

4.     ncu:physncu:ipという2つのNCUstart_stateというNCPに構成されています。NCPには最低でもphysクラスとipクラスの2つのNCUの設定が必要です。

問題10:

IPMPやリンク・アグリゲーション(リンク集積体)についての正しい記述はどれですか。3つ選択してください。

 

1.     リンク・アグリゲーションでは一部のリンクに障害があると通信できなくなる。

2.     IPMPでもリンク・アグリゲーションでも着信負荷は分散され帯域幅を増やすことができる。

3.     リンク・アグリゲーションでは、すべてのインタフェースで同じビット・レートである必要があるが、IPMPではその制限はない。

4.     GLDv3準拠のNICでは、デフォルトでリンク・ベースの障害検出は有効になっている。

5.     IPMPのプローブ・ベースの障害検出では/etc/default/mpathdファイルの設定でプローブ・ターゲットを決定する。

6.     IPMPグループを構成するIPインタフェースにテストアドレスを設定しなかった場合でも、IPMPは障害の検知はでき、インタフェースのフェイルオーバーは可能だが、障害復旧の検知はできないため、フェイルバックは自動的には行われない。

7.     IPMPを構成したがテストアドレスを設定していない場合に以下のような状態になる。

# ipadm show-if

IFNAME CLASS STATE ACTIVE OVER

lo0 loopback ok yes --

net0 ip ok yes --

net1 ip ok yes --

net2 ip ok yes --

ipmp0 ipmp ok yes net1 net2

# ipmpstat -i

INTERFACE ACTIVE GROUP FLAGS LINK PROBE STATE

net2 yes ipmp0 ------- up disabled ok

net1 yes ipmp0 --mbM-- up disabled ok

# ipmpstat -nt

INTERFACE MODE TESTADDR TARGETS

net2 disabled -- --

net1 disabled -- --

 

 

正解: 3,4,7

解説:

1.     IPMPでもリンク・アグリゲーションでもリンク障害の保護機能は提供されます。

2.     発信に関してはどちらも負荷が分散され帯域幅を増やすことができますが、着信に関しては全てのリンクで同じIPアドレスを使用するリンク・アグリゲーションでのみ負荷分散が可能です。

3.     正解です。

4.     正解です。GLDv3準拠のNICを使用してIPMPの構成をすれば、テストアドレスを指定しなくても、リンク・ベースのIPMP構成は有効になります。テスト・アドレスを指定することでプローブ・ベースの検知も有効になり、障害の検知レベルは上がります。

5.     プローブ・ターゲットの決定には、ルーティングテーブルが参照されます。ホストへのルート(ホスト経路)が設定されている場合、そのルータが優先的にターゲットとして使用されます。

6.     リンクベースのIPMPにより復旧の検知も可能です。デフォルトでは/etc/default/mpathdファイルのFAILBACK=yesで障害が復旧した時に自動的にフェイルバックするように設定されています。

7.     正解です。ipmpstat -i STATEokPROBEdisableになっています。また、ipmpstat -ntMODEdisabledTESTADDR--になっています。

ゾーンと仮想ネットワークの設定

問題11:

Solaris11サーバーにzone2という名前のゾーンを作成しました。構成は次のようになっています。

 

[大域ゾーンのネットワーク構成]

# ipadm show-addr

ADDROBJ TYPE STATE ADDR

lo0/v4 static ok 127.0.0.1/8

net0/v4 static ok 10.190.96.242/24

[zone2の構成]

# zonecfg -z zone2 info

zonename: zone2

zonepath: /zones/zone2

brand: solaris

autoboot: false

autoshutdown: shutdown

bootargs:

file-mac-profile:

pool:

limitpriv:

scheduling-class:

ip-type: exclusive

hostid:

tenant:

fs-allowed:

anet:

linkname: net0

lower-link: auto

allowed-address not specified

configure-allowed-address: true

defrouter not specified

...(一部省略)

capped-memory:

physical: 500M

 

このゾーンzone2に関する説明のうち正しいものはどれですか?3つ選択してください。

1.     /zones/zone2は独立したZFSファイルシステムである。

2.     ホストIDは大域ゾーンと同じである。

3.     不変ゾーンの設定がされている。

4.     物理メモリの上限を500MBに制限されている。

5.     netリソースが設定されていないのでネットワーク接続ができない。

6.     ネットワーク・インタフェースを大域ゾーンと共有している。

7.     ゾーン構成時にanetリソースを明示的に追加している。

 

正解:1,2,4

解説:

1.     正解です。zonepathで指定される場所は独立したZFSファイルシステムになります。

2.     正解です。ゾーンのhostidが空になっている場合は大域ゾーンと同じになります。

3.     file-mac-profileが設定されていないため、不変ゾーンではありません。

4.     正解です。capped-memoryリソースでphysical: 500Mとなっています。なお、以下のコマンドで稼働しているzone2に対して動的(一時的)に物理メモリの上限値を変更することも可能です。この例では1GBに変更しています。

# rcapadm -z zone2 -m 1G

5.     anetリソースによりゾーンには仮想NIC(VNIC)が自動的に割り当てられます。この仮想NICはゾーンの起動時に自動的に生成され、ゾーンが停止すると削除されます。

6.     ip-type: exclusiveになっているため、このゾーンは排他的IPゾーンになります。Solaris11ではこれがデフォルトのゾーンタイプです。

7.     Solaris11では排他的IPゾーンがデフォルトになったため、anetリソースが暗黙的に設定されるようになっています。事前作成済みのVNICや大域ゾーンで使用していない物理NICnetリソースで明示的に割り当てる場合は、ゾーン構成時に不要なanetリソースを削除することもできます。

問題12:

大域ゾーンで、dispadmin -d FSSを実行してデフォルトのスケジューラをFSSに変更後、再起動を完了させています。この状態で、現在稼働しているzone1CPUシェア数を20に設定して、ゾーンの再起動後もその設定が維持されるようにするにはどのようなコマンドを実行すればよいですか。正しいものを3つ選択してください。

 

1.     zonecfg -z zone1

zonecfg:zone1> add rctl

zonecfg:zone1:rctl> set name=zone.cpu-shares

zonecfg:zone1:rctl> add value(priv=privileged,limit=20,action=none)

zonecfg:zone1:rctl> end

zonecfg:zone1> exit

2.     zonecfg -z zone1

zonecfg:zone1> set cpu-shares=20

zonecfg:zone1> exit

3.     zonecfg -z zone1

zonecfg:zone1> add dedicated-cpu

zonecfg:zone1:dedicated-cpu> set ncpus=20

zonecfg:zone1:dedicated-cpu > end

zonecfg:zone1> exit

4.     zonecfg -z zone1

zonecfg:zone1> add capped-cpu

zonecfg:zone1:capped-cpu> set ncpus=20

zonecfg:zone1:capped-cpu> end

zonecfg:zone1> exit

5.     prctl -n zone.cpu-shares -v 20 -r -i zone zone1

6.     prctl -n capped.cpu-shares -v 20 zone1

7.     rctladm -e syslog=err zone.cpu-shares

 

正解:1,2,5

解説:

1.     正解です。CPUシェア数はrctlリソースのzone.cpu-sharesリソース制御で決定できます。

2.     正解です。rctlリソースのzone.cpu-sharesを設定することと同じですが、この設定方法が推奨されています。なおA)B)のようにCPUシェア数を設定しても、システムとしてFSSがデフォルトのスケジューラになっていない場合や、各ゾーンに割り当てられているリソース・プールでFSSがスケジューラとして指定されていない場合は、ゾーン起動時に以下のような警告が表示されます。

--------------------------------------------------------

WARNING: The zone.cpu-shares rctl is set but FSS is not the default scheduling class for this zone.FSS will be used for processes in the zone but to get the full benefit of FSS, it should be the default scheduling class.

--------------------------------------------------------

3.     dedicated-cpuリソースでは排他的に割り当てるCPUの個数を指定するためのもので、FSSで使用するCPUシェア数の設定ではありません。

4.     capped-cpuリソースではゾーンで使用できるCPUの能力の上限を指定するためのもので、FSSで使用するCPUシェア数の設定ではありません。

5.     このコマンドで稼働中のzone1CPUシェア数を動的に変更できます。再起動後は値が引き継がれないため、永続化するにはA)もしくはB)の設定も必要になります。また、prctlコマンドではリソース制御の現在の設定とシステム制限を確認するときにも使用できます。詳しくはprctlコマンドのマニュアルを参照してください。

6.     capped.cpu-sharesというリソース制御は存在しません。

7.     rctladmはシステムのリソース制御の大域アクションを設定できます。zone.cpu-sharesリソース制御に関してはsyslogアクションは無効なのでエラーになりますが、例えばzone.max-lwpsリソース制御に関して同様に実行した場合、zone.max-lwpsで指定したしきい値に達した場合にerrレベルのメッセージがsyslogに送られるようになります。

 

サービスとプロセスの管理

問題13:

以下のような内容のファイルがあります。

<?xml version="1.0"?>

<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">

 

...<<一部省略しています>>...

 

<service_bundle type='manifest' name='SUNWcsr:coreadm'>

 

<service

name='system/coreadm'

type='service'

version='1'>

 

<single_instance />

 

<dependency

name='usr'

type='service'

grouping='require_all'

restart_on='none'>

<service_fmri value='svc:/system/filesystem/minimal' />

</dependency>

 

...<<一部省略しています>>...

 

<instance name='default' enabled='false'>

<exec_method

type='method'

name='start'

exec='/usr/bin/coreadm -U'

timeout_seconds='60' />

 

<exec_method

type='method'

name='refresh'

exec='/usr/bin/coreadm -U'

timeout_seconds='60' />

 

<exec_method

type='method'

name='stop'

exec=':true'

timeout_seconds='60' />

 

<property_group name='startd' type='framework'>

<propval name='duration' type='astring'

value='transient' />

</property_group>

 

...<<一部省略しています>>...

 

</instance>

 

<stability value='Unstable' />

 

...<<一部省略しています>>...

 

</service>

 

</service_bundle>

 

このファイルの説明のうち正しいものを3つ選択してください。

1.     このファイルはサービス管理機能(SMF)のプロファイルである。

2.     このファイルはSMFのマニフェストファイルである。

3.     このファイルはSMFのログファイルである。

4.     coreadmサービスはfilesystem/minimalサービスに依存しており、filesystem/minimalサービスが有効になっていないとcoreadmサービスはonlineになることはできない。

5.     filesystem/minimalサービスはcoreadmサービスに依存しており、coreadmサービスが有効になっていないとfilesystem/minimalサービスはonlineになることはできない。

6.     coreadmサービスが有効でonlineになっている場合でも、このサービスに対応するプロセスは常駐するわけではない。

 

正解:2,4,6

解説:

1.     このファイルはSMFのマニフェストファイルです。SMFのプロファイルは/etc/svc/profileディレクトリ以下にあり、マニフェストと同様にXML形式ですがサービスごとに以下のような行が続く形式で、主に各サービス・インスタンスの有効/無効をシステム全体でカスタマイズする際に使用されます。

...省略...

<service name='system/coreadm' version='1' type='service'>

<instance name='default' enabled='true'/>

</service>

...省略...

 

2.     正解です。サービス同士の依存関係や起動/停止時に実行されるスクリプト(コマンド)などが定義されているので内容からすぐに判断できるものですが、先頭付近にある以下の行のtype='manifest'という部分でもマニフェストファイルであることは判断できます。

 

<service_bundle type='manifest' name='SUNWcsr:coreadm'>

 

デフォルトで提供されるSMFサービスのマニフェストファイルは/lib/svc/manifestディレクトリ以下にカテゴリ毎に分類されて置いてあります。また/var/svc/manifestSolaris10との互換性のためにマニフェストファイルの置き場所として利用可能です。

3.     このファイルはcoreadmサービスのSMFマニフェストファイルです。SMFサービスの個別ログファイルはsvcs -l coreadmコマンド等で確認することができます。永続的なログファイルは/var/svc/logディレクトリ、メモリベースの一時的なログファイルは/system/volatileディレクトリに存在します。/etc/svc/volatile/system/volatileへのシンボリックリンクです。

4.     正解です。以下のdependencyタグのエントリからfilesystem/minimalサービスに依存していることと、grouping='require_all'という設定から、依存しているfilesystem/minimalサービスは必須であることがわかります。grouping属性には、他にもrequire_anyoptional_allexclude_allなどの指定が可能です。詳しくはsmf(5)のマニュアルを参照してください。

 

<dependency

name='usr'

type='service'

grouping='require_all'

restart_on='none'>

<service_fmri value='svc:/system/filesystem/minimal' />

</dependency>

 

5.     上記のdependencyタグのエントリから、このマニフェストファイルのsystem/coreadmサービスがfilesystem/minimalに依存しているので、この説明は逆になります。この説明のように別のサービスから依存してもらう設定をするにはdependentタグを使用します。通常、dependentタグで依存関係を築く場合は、起動のタイミングを調整する目的のために使用しますので、grouping属性をoptional_allにすることが多くなります。

 

6.     正解です。以下のエントリから読み取れます。各サービスに対応するプロセスが常駐するのか起動時に一度だけ実行されるものなのかはstartdプロパティ・グループのduration属性で確認できます。transientとなっているものは起動時に一度だけ実行されます。実行されるコマンドやスクリプトはstartexec_methodタグのexec属性で指定されており、この例ではcoreadm -U コマンドが実行されます。

 

<property_group name='startd' type='framework'>

<propval name='duration' type='astring'

value='transient' />

</property_group>

 

duration属性のデフォルトはcontractで、対応プロセスが常駐することを表します。上記のエントリがない場合はcontractという扱いになるため、実行するコマンドやスクリプトで常駐プロセスを生成していない場合には、リスタータであるsvc.startdが誤認識をしてサービスの再起動を繰り返して、ただちにmaintenance状態になるので注意が必要です。

 

問題14:

前任のシステム管理者から引き継いだシステムがあります。このシステムはIPSのリポジトリサーバーであるため、pkg/serverサービスにどのようなカスタマイズが行われているかを確認したいと思います。以下のうち目的を達成できる最も適切なコマンドを1つ選択してください。

 

1.     svcs -l pkg/server

2.     svccfg -s pkg/server:default revert initial

3.     svccfg -s pkg/server:default listcust -L

4.     svccfg -s pkg/server:default delcust

5.     svcs -xv pkg/server

 

正解:3

解説:

1.     svcs -lではサービスの現在の状態やログファイルの位置、依存関係などさまざまな情報を確認できますが、デフォルト値から何を変更しているのかをつかむのは容易ではありません。

2.     svccfgrevertサブコマンドでは引数に構成のスナップショット(この例ではinitial)を指定することにより、サービスの構成プロパティを初期の状態や前の状態などに戻すことが可能ですが、現在のシステムで適用されているカスタマイズを確認することはできません。

3.     正解です。-Lオプションでローカルのカスタマイズ(管理レイヤーとサイトプロファイルレイヤーでのカスタマイズ)を表示することができます。

4.     これはC)listcustサブコマンドで表示されたカスタマイズを削除して元に戻すコマンドです。

5.     svcsコマンドの-xvオプションでは、サービス状態の説明を詳細に表示できますが、サービスへのカスタマイズ内容までは把握できません。

 

権限およびロール・ベースのアクセス制御の設定

問題15:

複数のゾーンが稼働しているOracle Solaris 11サーバーがあります。このサーバーの大域ゾーンではセキュリティ強化の目的で、特別な権限を持っていないすべてのユーザーは自分のプロセスしか表示/確認できないようする方針にしました。このような設定にする方法として最も適切なものはどれですか?1つ選択してください。

 

1.     /etc/user_attrファイルで各ユーザーのdefaultpriv値を修正する。

2.     /etc/security/policy.confファイルのPRIV_DEFAULTの値を修正する。

3.     userattr defaultpriv コマンドでデフォルトの特権を変更する。

4.     userattr profiles username コマンドでユーザーのデフォルトのプロファイルを切り替える。

5.     /etc/security/prof_attr.d/local-entries ファイルで各プロファイルのdefaultpriv値を修正する。

 

正解:2

解説:

1.     既存ユーザーに対してはusermodコマンドでdefaultpriv値を"basic,!proc_info"と設定することにより、自分のプロセス情報以外は表示できなくすることは可能ですが、ユーザー数が多かったり、今後追加されるユーザーも考えると現実的ではありません。

2.     正解です。PRIV_DEFAULT=basic,!proc_info とすることにより要求された設定にできます。

3.     userattrコマンドは各ユーザーに直接設定されているパラメータの値を表示するコマンドで、設定することはできません。userattr defaultpriv [username]コマンドにより、指定したユーザーの特権を確認することができます。

4.     このコマンドでは指定したユーザーに直接設定されている権利プロファイルを表示します。同様なコマンドでprofiles [username]コマンドもありますが、出力される権利プロファイルの範囲が異なります。userattr profiles [username]コマンドではusermodなどで直接割り当てた権利プロファイルだけを出力するのに対して、profiles [username] コマンドでは、直接割り当てた権利プロファイルとその補助プロファイル、/etc/security/policy.confで指定されているデフォルトの権利プロファイルも含めて表示されます。

5.     このファイルは/etc/security/prof_attrファイルに対するシンボリックリンクです。Solaris10まではすべての権利プロファイルはこのprof_attrにまとめられていましたが、Solaris11からは権利プロファイルが用途毎に分類され/etc/security/prof_attr.d/* の各ファイルに分けられて管理されています。/etc/security/prof_attr.d/local-entries ファイルは、サイトで新しく作成する権利プロファイル用に使用します。

 

問題16:

/etc/security/exec_attr.d/core-osファイルに以下のエントリがあります。

 

File System Management:solaris:cmd:RO::/usr/sbin/mount:privs=sys_mount

 

一部の一般ユーザーがmountコマンドを使ってローカルファイルシステムを手動でマウントできるようにするには何をすればよいですか?2つ選択してください。

 

1.     File System Management権利プロファイルをユーザーに割り当てる。

2.     sys_mountロールをユーザーに割り当てる。

3.     File System Management権利プロファイルが含まれているロールをユーザーに割り当てる。

4.     sys_mount権利プロファイルが含まれているロールをユーザーに割り当てる。

5.     File System Managementロールをユーザーに割り当てる。

 

正解:1,3

解説:

1.     正解です。usermodコマンドで権利プロファイルを直接ユーザーに割り当てることで、この権利プロファイルで指定されているsys_mount特権付きでmountコマンドを実行することができます。実行する際はプロファイルシェルに切り替えるか、pfexecコマンドを使用します。

2.     sys_mountはロールではなく特権です。

3.     正解です。ユーザーはsuコマンドでロールに切り替えられます。ロールに権利プロファイルが割り当てられていることで間接的にsys_mount特権を得ることができます。

4.     sys_mountは権利プロファイルではなく特権です。

5.     File System Managementはロールではなく権利プロファイルです。

 

Solarisの監査の使用によるシステム・リソースのセキュリティ保護

問題17:

以下のコマンド出力があります。

 

# auditconfig -getplugin

Plugin: audit_binfile (active)

Attributes: p_age=0h;p_dir=/var/audit;p_fsize=0;p_minfree=1

 

Plugin: audit_syslog (inactive)

Attributes: p_flags=

 

Plugin: audit_remote (inactive)

Attributes: p_hosts=;p_retries=3;p_timeout=5

 

この出力から読み取れる情報の説明として正しいものはどれですか?2つ選択してください。

 

1.     audit_binfileプラグインが有効になっている。

2.     Solaris監査がデフォルトで有効になっており、監査ログはsyslogに転送されている。

3.     監査証跡(ログ)/var/auditというファイルに記録される。

4.     監査証跡のファイルの最大サイズは無制限に設定されている。

5.     監査証跡のファイルの合計サイズはファイルシステムの容量の1%に制限される。

 

正解:1,4

解説

1.     正解です。デフォルトではaudit_binfileプラグインだけが有効になっており、監査証跡をローカルのファイルシステム(/var/auditディレクトリ以下)にバイナリ形式で保存します。

2.     audit_syslogプラグインは"inactive"となっており、有効になっていないので、syslogには転送されません。

3.     /var/auditはファイルではなくディレクトリです。このディレクトリに開始時刻.終了時刻.ホスト名(例:20161104104237.20161104105337.host01)のような形式でログファイルが生成されていきます。

4.     正解です。p_fsize=0という設定がこの意味になります。詳細はaudit_binfile(5)のマニュアルを参照してください。

5.     p_minfree=1は、/var/auditディレクトリを含むファイルシステムに必要な空き容量の割合が1%であることを示しています。

 

プロセスと優先順位の管理

問題18:

次のコマンドを実行しました。

 

# dispadmin -c TS -g -r 1000

# Time Sharing Dispatcher Configuration

RES=1000

 

# ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait PRIORITY LEVEL

200 0 50 0 50 # 0

200 0 50 0 50 # 1

200 0 50 0 50 # 2

200 0 50 0 50 # 3

200 0 50 0 50 # 4

200 0 50 0 50 # 5

200 0 50 0 50 # 6

200 0 50 0 50 # 7

...(以下省略)

 

この出力の説明として正しいものはどれですか?1つ選択してください。

 

1.     タイム定量値(クオンタム)がミリ秒単位で表示される。

2.     タイム定量値(クオンタム)200ミリ秒単位で表示される。

3.     タイム定量値(クオンタム)がマイクロ秒単位で表示される。

4.     タイム定量値(クオンタム)がナノ秒単位で表示される。

 

正解:1

解説:

このコマンドではタイムシェアリング(TS)クラス(-c TS)のディスパッチ・パラメータ・テーブルを表示(-g)しています。-rではタイム定量値を出力するための最小単位を指定します。1000とした場合、1/1000秒、つまりミリ秒となります。1000000とした場合はマイクロ秒単位で表示されることになります。詳細はdispadmin(1M)のマニュアルを参照してください。

 

問題19:

プロセスが属しているスケジューリング・クラスを確認する方法として正しいのはどれですか?1つ選択してください。

 

1.     dispadmin -l

2.     ps -efc

3.     prstat -c

4.     rctladm -l

5.     priocntl -l

 

正解:2

解説

1.     このコマンドは、システム内で現在構成されているスケジューリング・クラスの一覧を表示するもので、各プロセスのスケジューリング・クラスは確認できません。dispadmin -d FSSのように実行することでシステムのデフォルトのスケジューリング・クラスをFSSに変更することが可能です。ただし、このコマンドを実行しただけでは既存のプロセスはFSSにならないため、システムを再起動するか、priocntl -s -c FSS -i allコマンドですべてのプロセスをFSSに移行します。

2.     正解です。psコマンドのcオプションでスケジューリング・クラス列(CLS)が追加されます。

3.     prstat-cオプションではprstatの出力方法を変えて、前のレポートの下に新しいレポートを表示します。デフォルトは上書きされて表示されます。

4.     このコマンドは、システムのリソース制御の一覧表示するものです。

5.     dispadmin -lと同様にシステム内で現在構成されているスケジューリング・クラスの一覧を表示します。また、各プロセスのスケジューリング・クラスを動的に変更することもできます。例えば、priocntl -s -c FSS -i allコマンドで再起動せずに、すべてのプロセスをFSSに移行できます。詳しくはpriocntl(1)のマニュアルを参照してください。

 

システム・リソースの評価

問題20:

ゾーン内で過剰なプロセスや軽量プロセス(LWP)が生成されることにより、システム全体のリソースに影響が出ないように、各ゾーンに対してzone.max-processeszone.max-lwpsなどのリソース制御を設定しました。これらのリソース制御で設定されたしきい値に達した場合にsyslogにメッセージを送信するように設定するにはどのコマンドを使用するのが適切ですか?1つ選択してください。

 

1.     prctl

2.     priocntl

3.     rctladm

4.     zonecfg

5.     svccfg

 

正解:3

解説

1.     このコマンドは実行中のプロセス、タスク、プロジェクト、ゾーンのリソース制御の取得や設定に使用します。ゾーンに対するリソース制御に関しても、ゾーンの再起動なしに動的に設定することが可能ですが、しきい値に達した時のsyslogアクションを設定することはできません。

2.     このコマンドは指定したプロセスおよびLWPのスケジューリング・パラメータの表示や設定に使用します。

3.     正解です。rctladm -e syslog zone.max-lwpsのように設定します。詳しくはrctladm(1M)を参照してください。

4.     このコマンドは各種ゾーンの構成やゾーンに対するリソース制御の永続設定で使用します。prctlと同様に、しきい値に達した時のsyslogアクションを設定することはできません。

5.     このコマンドはSMFサービスの構成にするもので、この要件にはマッチしません。

 

問題21:

ある端末で以下のようにコマンドを実行しました。

 

# id -p

uid=0(root) gid=0(root) projid=1(user.root)

# newtask -v -p default

844

# id -p

uid=0(root) gid=0(root) projid=3(default)

 

この出力からわかることの説明として正しいものはどれですか?2つ選択してください。

 

1.     現在のシェルのプロセスID844である。

2.     現在のシェルのタスクID844である。

3.     defaultプロジェクトのID844である。

4.     この端末で続けて実行するコマンド(プロセス)defaultプロジェクトに属する。

5.     この端末で続けてexitと実行すると端末が終了する。

 

正解:2,4

解説

1.     newtaskコマンドの-vオプションで出力される数字はタスクIDです。

2.     正解です。-pオプションで指定したdefaultプロジェクトに属する新しいタスクでシェル(プロセス)を生成しています。

3.     defaultプロジェクトのID3です。projid=3(default)という出力から読み取れます。

4.     正解です。

5.     exitと実行すると、新しいプロジェクトに属するシェルが終了し、元のuser.rootプロジェクトのシェルに戻るだけで、端末は終了しません。

 

ソフトウェア障害の監視とトラブルシューティング

問題22:

クラッシュダンプの構成が以下のようになっています。

# dumpadm

Dump content: kernel pages

Dump device: /dev/zvol/dsk/rpool/dump (dedicated)

Savecore directory: /var/crash

Savecore enabled: yes

Save compressed: on

 

検証目的ですべてのメモリページを含むクラッシュダンプファイルをシステムを動作させたまま取得し、mdbコマンドで解析できるようにvmcore.0unix.0を取り出したいと考えています。どのようなコマンドを実行する必要がありますか。3つ選択してください。

 

1.     dumpadm -c all

2.     dumpadm -d swap

3.     reboot -d

4.     savecore -L

5.     savecore -f /var/crash/vmdump.0

 

正解:1,4,5

解説:

1.     正解です。dumpadm-cオプションでダンプの内容を指定できます。kernelallcurprocの指定が可能です。

2.     dumpadm-dオプションでダンプデバイスを指定可能です。ライブダンプを行う場合はダンプデバイスを専用(dedicated)にする必要があります。swapZFSボリュームの場合は-d swapはエラーになります。

3.     reboot -dでも強制的にクラッシュダンプは取得できますが、「システムを動作させたまま」ではないので不正解です。

4.     正解です。このコマンドでシステムを動作させたままクラッシュダンプが取得できます。

5.     正解です。このコマンドで圧縮されたvmdump.0からunix.0vmcore.0が取り出されます。

問題23:

coreadmコマンドの実行結果が以下のようになっています。

 

# coreadm

global core file pattern:

global core file content: default

init core file pattern: core

init core file content: default

global core dumps: disabled

per-process core dumps: enabled

global setid core dumps: disabled

per-process setid core dumps: disabled

global core dump logging: disabled

 

コアファイルの管理についての説明として正しいものを3つ選択してください。

 

1.     coreadm -e globalによりグローバルコアダンプが有効になる。

2.     coreadm -d processによりプロセス単位コアダンプが無効になる。

3.     プロセス単位コアダンプを無効にすると自動的にグローバルコアダンプも無効になる。

4.     プロセス単位コアダンプの保存先は変更できない。

5.     coreadmによるコアファイルの管理は非大域ゾーン内でも設定可能である。

6.     coreadmコマンドで出力される情報は/etc/coreadm.confファイルに格納されている。

7.     coreadm -g /var/cores/core.%f.%p.%z はグローバルコアファイルのコンテンツを指定している。

 

 

正解:1,2,5

解説:

1.     正解です。ちなみに、グローバルコアダンプファイルの所有者はrootでその他のユーザーには一切のアクセス権がありません。

2.     正解です。プロセス単位コアダンプファイルの所有者はプロセスの所有者になるので、コアファイルをrootのみに限定してアクセスさせるべき環境ではプロセス単位コアダンプを無効化します。

3.     プロセス単位コアダンプとグローバルコアダンプはそれぞれ独立して有効化/無効化できます。

4.     プロセス単位コアダンプの保存先はcoreadm -i initコアのパターンを変更してシステム全体に反映させるか、coreadm -p で各ユーザーレベルで変更することができます。

5.     正解です。非大域ゾーン内の指定のディレクトリにコアファイルは保存されます。

6.     Solaris11では/etc/coreadm.confファイルは存在しません。coreadmコマンドによる構成変更はすべてcoreadmサービスのプロパティとして管理されます。

7.     グローバルコアファイルのコンテンツの指定には-Gオプションを使用します。-gはグローバルコアファイルのパターンの指定になり、%fは実行ファイル名、%pはプロセスID%zはゾーン名を意味します。