Red Hat Training
A Red Hat training course is available for Red Hat Ceph Storage
付録D Ceph ブロックデバイスの手動インストール
以下の手順では、シンプロビジョニングされ、サイズが変更可能な Ceph ブロックデバイスをインストールおよびマウントする方法を説明します。
Ceph ブロックデバイスは、Ceph Monitor ノードと OSD ノードとは別のノードにデプロイする必要があります。同じノードでカーネルクライアントとカーネルサーバーデーモンを実行すると、カーネルのデッドロックが発生する可能性があります。
前提条件
- 付録C Ceph コマンドラインインターフェースのインストール セクションに記載されているタスクを実施するしておく。
- QEMU を使用する仮想マシンのバックエンドとして Ceph ブロックデバイスを使用する場合は、デフォルトのファイル記述子を増やします。詳細は、ナレッジベースの記事「Ceph - VM hangs when transferring large amounts of data to RBD disk」を参照してください。
手順
OSD ノード (
osd 'allow rwx') 上のファイルへの完全なパーミッションを持つclient.rbdという名前の Ceph Block Device ユーザーを作成し、結果をキーリングファイルに出力します。ceph auth get-or-create client.rbd mon 'profile rbd' osd 'profile rbd pool=<pool_name>' \ -o /etc/ceph/rbd.keyring
<pool_name>を、client.rbdによるアクセスを許可するプールの名前 (例:rbd) に置き換えます。# ceph auth get-or-create \ client.rbd mon 'allow r' osd 'allow rwx pool=rbd' \ -o /etc/ceph/rbd.keyring
ユーザーの作成に関する詳細は、Red Hat Ceph Storage 3 『管理ガイド』の「ユーザー管理」セクションを参照してください。
ブロックデバイスイメージを作成します。
rbd create <image_name> --size <image_size> --pool <pool_name> \ --name client.rbd --keyring /etc/ceph/rbd.keyring
<image_name>、<image_size>、および<pool_name>を指定します。以下に例を示します。$ rbd create image1 --size 4096 --pool rbd \ --name client.rbd --keyring /etc/ceph/rbd.keyring
警告デフォルトの Ceph 設定には、以下の Ceph ブロックデバイス機能が含まれます。
-
layering -
exclusive-lock -
object-map -
deep-flatten -
fast-diff
カーネル RBD (
krbd) クライアントを使用する場合、Red Hat Enterprise Linux 7.3 に含まれている現在のカーネルバージョンはobject-map、deep-flatten、およびfast-diffをサポートしていないため、ブロックデバイスイメージをマップすることはできません。この問題を回避するには、サポートされていない機能を無効にします。これを行うには、以下のいずれかのオプションを使用します。
サポートされていない機能を動的に無効にします。
rbd feature disable <image_name> <feature_name>
以下に例を示します。
# rbd feature disable image1 object-map deep-flatten fast-diff
-
rbd createコマンドで--image-feature layeringオプションを使用して、新たに作成されたブロックデバイスイメージで階層化のみを有効にします。 Ceph 設定ファイルで機能のデフォルトを無効にします。
rbd_default_features = 1
これは既知の問題です。詳細は、Red Hat Ceph Storage 3 の『リリースノート』の「既知の問題」の章を参照してください。
これらの機能はすべて、ユーザー空間の RBD クライアントを使用してブロックデバイスイメージにアクセスするユーザーに機能します。
-
新規に作成されたイメージをブロックデバイスにマッピングします。
rbd map <image_name> --pool <pool_name>\ --name client.rbd --keyring /etc/ceph/rbd.keyring
以下に例を示します。
# rbd map image1 --pool rbd --name client.rbd \ --keyring /etc/ceph/rbd.keyring
重要カーネルブロックデバイスは現在、CRUSH マップのレガシーストローバケットアルゴリズムのみをサポートしています。CRUSH チューナブルを最適に設定した場合は、それらをレガシーまたは以前のメジャーリリースに設定する必要があります。そうしなければ、イメージをマップできません。
または、CRUSH マップで
straw2をstrawに置き換えます。詳細は、Red Hat Ceph Storage 3 のストレージ戦略 ガイドの クラッシュマップの編集 の章を参照してください。ファイルシステムを作成してブロックデバイスを使用します。
mkfs.ext4 -m5 /dev/rbd/<pool_name>/<image_name>
以下のように、プール名とイメージ名を指定します。
# mkfs.ext4 -m5 /dev/rbd/rbd/image1
この作業には少し時間がかかります。
新しく作成されたファイルシステムをマウントします。
mkdir <mount_directory> mount /dev/rbd/<pool_name>/<image_name> <mount_directory>
以下に例を示します。
# mkdir /mnt/ceph-block-device # mount /dev/rbd/rbd/image1 /mnt/ceph-block-device
詳細は、Red Hat Ceph Storage 3 のブロックデバイスガイドを参照してください。