Oracle® Solaris 11.2 デバイスドライバの記述

印刷ビューの終了

更新: 2014 年 9 月
 
 

特定の種類のドライバのテスト

このセクションでは、特定の種類の標準デバイスをテストする方法について、いくつかの提案を示します。

テープドライバのテスト

テープドライバは、保管と復元のいくつかの操作を実行してテストする必要があります。この目的のために、 cpio(1) コマンドとtar (1) コマンドを使用できます。ディスクパーティション全体をテープに書き込むには、 dd(1M) コマンドを使用します。次に、データを読み戻して、同じサイズの別のパーティションにデータを書き込みます。その後、2 つのコピーを比較します。mt (1) コマンドは、テープドライバ固有の入出力制御の大半を実行できます。mtio (7I) のマニュアルページを参照してください。すべてのオプションを使用してみます。次の 3 つの手法で、テープドライバのエラー処理機能をテストできます。

  • テープを取り出し、さまざまな操作を試みる

  • テープを書き込み保護にして書き込みを試みる

  • さまざまな操作の途中で電源をオフにする

テープドライバは、通常、排他的アクセスのopen (9E) 呼び出しを実装しています。これらの open() 呼び出しは、デバイスを開き、2 番目のプロセスで同じデバイスを開こうとすることでテストできます。

ディスクドライバのテスト

ディスクドライバは raw モードとブロック型デバイスモードの両方でテストする必要があります。ブロックデバイステストの場合、デバイス上に新しいファイルシステムを作成します。次に、新しいファイルシステムのマウントを試みます。次に、複数ファイルの操作を実行してみます。


注 - ファイルシステムはページキャッシュを使用するので、同じファイルを繰り返し読み取ってもドライバを働かせることになりません。ページキャッシュは、mmap (2) を使用してファイルをメモリーマッピングすることで、デバイスからデータを取得するように設定できます。次にmsync (3C) を使用して、メモリー内のコピーを無効にします。

同じサイズの別の (マウントされていない) パーティションを raw デバイスにコピーします。次に、 fsck(1M) などのコマンドを使用して、コピーが正しいことを検証します。新しいパーティションもマウントし、あとで古いパーティションとファイル単位で比較できます。

非同期通信ドライバ

非同期ドライバは、シリアルポートへの login 用の回線を設けることで、基本レベルでテストできます。ユーザーがこの回線でログインできるかどうかを確認するのが適切なテストです。ただし非同期ドライバを十分にテストするには、割り込みを多数発生させて、すべての入出力制御関数を高速でテストする必要があります。ループバックシリアルケーブルを使用し、高速なデータ転送速度でテストを行うと、ドライバの信頼性を判断する助けになります。回線上で uucp(1C) を実行すると、一部のテストを行えます。ただし、uucp は独自のエラー処理を実行するため、ドライバが uucp プロセスに報告するエラーの数が多すぎないか検証してください。

これらの種類のデバイスは、通常、STREAMS ベースのデバイスです。詳細については、STREAMS Programming Guide を参照してください。

ネットワークドライバのテスト

ネットワークドライバは標準のネットワークユーティリティーを使用するとテストできます。ネットワークのそれぞれの側でファイルを比較できるため、ftp(1) コマンドとrcp (1) コマンドが役立ちます。ドライバは高いネットワーク負荷をかけてテストする必要があるため、複数のプロセスで多様なコマンドを実行できます。

    高いネットワーク負荷に該当するのは、次のような条件です。

  • テストマシンへのトラフィックが非常に多い。

  • ネットワーク上のすべてのマシン間のトラフィックが非常に多い。

テストの実行中にネットワークケーブルを抜き、発生したエラー状態から正常に回復することを確認する必要があります。別の重要なテストは、複数のパケットをドライバにたて続けに受信させることです。つまり、連続パケットを使用します。この場合、比較的高速なホストを負荷の少ないネットワーク上に置き、複数のパケットを間断なくテストマシンに送信します。受信側のドライバで、2 つ目以降のパケットが欠落していないことを確認します。

これらの種類のデバイスは、通常、STREAMS ベースのデバイスです。詳細については、STREAMS Programming Guide を参照してください。

SR-IOV ドライバのテスト

SR-IOV をサポートするドライバでは追加のテストを行う必要があります。標準の基本的なテストも必要となりますが、ネットワークデバイス用の ftp や rcp など、基本的なテストで使用されるユーティリティーを使用できます。

SR-IOV ドライバについては、Chapter 21, SR-IOV Driversを参照してください。

仮想機能 (VF) のステータスをテストするには、次のコマンドを使用します。

  • 有効化された VF – hotplug install

  • 無効化された VF – hotplug uninstall

  • 割り当て済みの VF – hotplug list

SPARC システム上で VF のステータスをテストする場合、hotplug コマンドのほかに ldm (1M) コマンドも使用します。

また、さまざまな仮想化構成で SR-IOV デバイスをテストすることも重要です。SPARC と x86 の両プラットフォームで SR-IOV ドライバのテストを行う際は、次のオプションを試してください。

  • 仮想機能 (VF) を一切構成しません

  • VF を 1 つだけ構成します

  • VF の最大数に達するまで、構成された VF を 2 の累乗ずつ増やします

SPARC プラットフォームでは、さまざまな数の IO ドメインを使用し、それらのドメイン内で VF をさまざまに分散させて、機能をテストします。次の構成を試してください。

  • 単一の IO ドメインに単一の VF を割り当てます

  • 単一の IO ドメインに 2 の累乗個の VF (最大数まで) を割り当てます

  • 2、4、または 8 個の IO ドメインを作成し、それぞれのドメインにさまざまな数の VF を割り当てます

  • ルートドメインにいくつかの VF を割り当て、IO ドメインにもいくつかの VF を割り当てます

デバイスまたはプラットフォームが次の機能をサポートしている場合は、それらのテストを行います。

  • VF から IO ドメインをブートします

  • SR-IOV カードを物理的にホットプラグしたり取り外したりします

  • SR-IOV カードで動的再構成処理を実行します

デバイスが Oracle Solaris の複数のバージョンでサポートされている場合、最終的なテストを実行するには、いくつかのテストでルートおよび IO ドメイン全体で OS バージョンを混在させます。