1. ホーム
  2. オペレーティングシステム
  3. ユニックス/BSD

ベアデバイスとは何ですか?オラクル学習Q&A20例

2022-01-16 11:39:01

ベアデバイスは、ベアパーティション(ローパーティション)とも呼ばれ、フォーマットされていない特殊文字デバイスで、ファイルシステムを通じてUnixから読み込まれることはありません。ベアデバイスはパーティションに束縛されることも、ディスクに束縛されることもあります。この記事では、ベアデバイスの20の例とOracleのQ&Aを集めています。

1. ベアデバイスとはどういう意味ですか?

ベアデバイスは、ベアパーティション(ローパーティション)とも呼ばれ、フォーマットされていない特殊文字デバイスで、ファイルシステムを通してUnixに読み込まれることはない。アプリケーションによって読み書きが行われます。ファイルシステムによってバッファリングされることはありません。

2. ベアデバイスを識別するには?

Unixの/devディレクトリには、たくさんのファイルがありますが、その中でもキャラクタデバイスファイルとブロックデバイスファイルの2つに大別されます。キャラクタデバイス専用ファイルはOSのバッファを介さずにI/O操作を行い、ブロックデバイス専用ファイルは周辺機器との固定長のパケット転送に使用されます。キャラクタ・スペシャル・ファイルは、周辺装置とのI/O操作を行う際に、1文字ずつしか転送しない。ブロックデバイス特殊ファイルの場合は、キャッシュ機構を利用して周辺機器とメモリとの間で1ブロック分のデータを一度に転送する。ベアデバイスでは、文字型特殊ファイルを使用します。これらのファイルは、/devディレクトリにたくさんあります。

3. ベアデバイスを使うメリットは何ですか?

ベアデバイスを使うとUnixのOSレイヤーを経由しないため、DiskからOracleに直接データが転送されるので、頻繁に読み書きを行うデータベース・アプリケーションでは、ベアデバイスを使うことでデータベースシステムの性能を大きく向上させることができます。もちろん、これはディスクI/Oが非常に大きく、ディスクI/Oがシステムのボトルネックと呼ばれてきた場合のみです。ディスクの読み書きがシステムのボトルネックになるくらい、ディスクの読み書きが本当に非常に頻繁であれば、ベアデバイスを使うことで確かに性能が大きく向上し、最大で40%程度まで、非常に大きく改善することができる。また、ローパーティションを使用し、ファイルシステム管理を行わないため、I-nodeやフリーブロックなどを維持する必要がないなど、Unixがファイルシステムを維持するためのすべてのオーバーヘッドもなくなり、これも性能向上につながります。

4. ベアデバイスを使うべきかどうか、どのように判断するのですか?

ベアデバイスを使用するかどうかは、次のような点を考慮して決定します。まず、データベース・システム自体が十分に最適化されている必要があります。最適化というのは非常に技術的な話であり、簡単には語れない。第二に、Unixコマンドを使用して、ディスクの読み取り/書き込みのボトルネックがあるかどうかを特定します。例えば、vmstatやsarなどのUnixコマンドは、この目的に適しています。ベアデバイスを使用することにした場合、ディスクに空きパーティションがあることが必要である。さもなければ、新しいディスクを追加したり、元のシステムを再プログラムしたりしなければならなくなります。

5. ベアデバイスを使用しなければならないシステムは何ですか?

Oracleパラレルサーバーオプションを使用する場合、すべてのデータファイル、コントロールファイル、およびREDOログファイルを格納するために、ベアデバイスを使用する必要があります。すべてのOracleインスタンスがこのデータベースファイルを読めるようにする唯一の方法は、ベアデバイスに置くことです。これは、Unix オペレーティングシステムの性質によって決まります。また、非同期I/Oを使用したい場合、一部のUnixではベアデバイスを使用しなければならないケースもあります。これは、特定のUnixの関連ドキュメントを参照する必要があります。

6. ディスクの第1パーティションをベアデバイスとして使用できますか?

はい、しかし、それは推奨されません。バンクである古いバージョンのUnixでは、ディスクの最初のパーティションには、ディスクに関するいくつかの情報と、論理ボリュームに関するいくつかの制御情報が含まれていることが多いのです。これらの部分がベアデバイスで上書きされると、ディスクが認識できなくなり、システムのクラッシュの原因となります。新しいUnixのバージョンでは、ディスク、論理ボリュームに関するいくつかの情報を管理するために、より洗練された技術を使用しているため、このような現象は発生しない。しかし、よほどのことがない限り、ディスクの最初のパーティションをベアデバイスとして使用しないようにしてください。

7. ベアデバイス全体をOracleデータファイルとして使用することはできますか?

いいえ、できません。データファイルのサイズは、ベアデバイスの実際のサイズよりもわずかに小さくする必要があります。少なくとも2つのオラクルブロックは空のままにしておく必要があります。

8. ベアデバイスはどのユーザーに属するべきでしょうか?

ベアデバイスはrootで作成し、Oracleユーザーに割り当てて使用する必要があります。また、Oracleユーザー(通常はDBA)と同じグループに配置する必要があります。

9. データファイルの作成時にベアデバイスを指定するには?

普通のファイルと大差なく、デ 10. オラクルブロックの大きさはベアデバイスと関係ありますか?

Oracleは、ベアデバイスの物理ブロックサイズの倍数でなければならないでしょう。

11. ベアデバイスでバックアップを行うには?

ベアデバイスでは、バックアップを取るためにUnixユーティリティを使用することはできません。バックアップを行う唯一の方法は、最も基本的なUnixコマンドを使用することです。DDです。例えば、dd if=/dev/raw1 of=/dev/rmt0 bs=16k. ddの正確なシンタックスは、unixのマニュアルやオンラインヘルプに記載されています。また、dd を使ってベアデバイス上のデータファイルをまずディスクにバックアップし、その後 Unix ユーティリティを使ってさらに処理することもできます。

12. Oracle Parallel Serverオプションを使用していない場合、データベース上のデータファイルの一部をファイルシステムで、他の一部をベアデバイスで構成することはできますか?

はい、できます。しかし、その場合、バックアップのプロセスが複雑になります。

13. オンラインREDOログファイルはベアデバイスに置くべきですか?

これは素晴らしい選択です。オンラインREDOログファイルは非常に書き込みの多いファイルであり、ベアデバイスに置くことは非常に適切です。パラレルサーバーオプションを使用する場合、オンラインREDOログファイルはベアデバイスの上に置く必要があります。

14. アーカイブされたログファイルをベアデバイスに置くことはできますか?

いいえ。アーカイブされたログファイルは、通常のUnixファイルシステムまたはテープに直接配置する必要があります。アーカイブされたログファイルは、通常のUnixファイルシステム上か、テープの上に直接置かなければなりません。

15. ベアデバイスの上に複数のデータファイルを置くことはできますか?

いいえ、できません。ですから、ベアデバイスを設定する際には、十分に注意する必要があります。小さすぎるとすぐに容量が足りなくなるし、大きすぎるとスペースが無駄になってしまうからです。

16. なぜなら、同じ物理ディスクに複数のベアデバイスを置くべきなのでしょうか?

これは良いアイデアではありません。ベアデバイスを使用する理由は、ディスクの読み取りと書き込みの速度を向上させるためです。そして、同じ物理ディスクに複数のベアデバイスを置くと、読み取り/書き込みの競合が発生し、I/O速度の向上には不利になります。ベアデバイスを異なる物理ディスク、できれば異なるディスクコントローラに分散させるようにする必要があります。これが最良の選択肢です。

17. すべてのベアデバイスを同じサイズに定義する必要がありますか?

必須ではありませんが、同じサイズに分けた方がデータベース管理上有利です。

18. Unixでベアデバイスを使用するために、Unixのコアパラメータを変更する必要がありますか?

いいえ、そんなことはありません。しかし、同じUnixマシン上で他のアプリケーションも動作していない場合、バッファサイズを小さくするオプションがあります。これは、ベアデバイスが適用された後、Unixシステムのバッファが使用されなくなるためです。

19. 読み書きの速度を向上させるために、OSレベルで他にできることはありますか?

RAID(安価なディスクの冗長配列)の使用も、特に頻繁に読み書きを行うシステムには非常に効果的です。

20. 以上のことを考慮した上で、パフォーマンスを向上させるために他に何かできることはありますか?

そのためには、Oracleを最適化し、ディスクとディスクコントローラーを買い足して、I/Oを異なるディスクに分散させることが必要でしょう。