CentOS 7 で Ceph をブロック デバイスとして使用する
このページでは
- ステップ 1 - Ceph クライアント ノードを構成する
- ステップ 2 - Ceph 管理ノードを構成する
- ステップ 3 - クライアント ノードに Ceph をインストールする
- ステップ 4 - Ceph をブロック デバイスとして構成およびマウントする
- ステップ 5 - 起動時に RBD をセットアップする
- 参照
Ceph はオープン ソースのストレージ プラットフォームであり、高いパフォーマンス、信頼性、およびスケーラビリティを提供します。単一障害点なしでセットアップできる無料の分散ストレージ システムです。 Ceph は、オブジェクト、ブロック、およびファイル レベルのストレージ用のインターフェイスを提供します。
これは、Ceph チュートリアル シリーズの第 2 部です。Ceph I チュートリアル (CentOS で Ceph クラスターをセットアップする) については、ここをクリックしてください。第 2 部では、CentOS 7 で Ceph をファイルシステムとして使用するように Ceph Block Device クライアントをインストールして構成する手順を順を追って説明します。
前提条件
- Ceph クラスタ - Ceph I チュートリアル
- クライアント サーバー - CentOS 7 - ホスト名と IP
- 10.0.15.15 クライアント
ステップ 1 - Ceph クライアント ノードの構成
このセクションでは、CentOS 7 サーバーを Ceph クライアントとして構成します。 Ceph クライアントを他の Ceph ノード (mon-osd) として構成します。
eCph クライアント ノードにログインします。
ssh 10.0.15.15
新しい cephuser を追加し、ユーザーの新しいパスワードを設定します。
useradd -d /home/cephuser -m cephuser
passwd cephusersudoers.d ディレクトリに新しい構成を追加して、cephuser のパスワードなしの sudo を有効にします。
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
chmod 0440 /etc/sudoers.d/cephusercephuser に対して sudo パスワードなしを有効にした後、クライアント ノードで SELinux を無効にする必要があります。
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
次に、NTP をインストールし、ntpdate コマンドでシステム時刻を同期します。次に、NTP サービスを開始します。
yum install -y open-vm-tools
yum install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntpd.service
systemctl start ntpd.serviceすべての ceph-cluster ノードのホスト構成を /etc/hosts ファイルに追加します。
vim /etc/hosts
これは、Ceph I チュートリアルの構成です。
10.0.15.10 ceph-admin
10.0.15.11 mon1
10.0.15.21 osd1
10.0.15.22 osd2
10.0.15.23 osd3
10.0.15.15 clienthosts ファイルを保存し、エディターを終了します。
ステップ 2 - Ceph 管理ノードを構成する
最初のステップでは、ceph インストール用の Ceph クライアント ノードを準備しました。ただし、クライアント ノードで Ceph インストールを管理できるように ceph-admin ノードを設定する必要があります。ここで、ceph-admin ノードからクライアント ノードに Ceph をインストールします。
ceph-admin ノードにログインします。
ssh
su - cephuservim で ssh 構成ファイルを編集します。
vim ~/.ssh/config
ファイルの最後に新しいクライアント ノード構成を追加します。
Host client
Hostname client
User cephuser設定ファイルを保存して vim を終了します。
次に、ceph-admin ノードの /etc/hosts ファイルを編集します。
sudo vim /etc/hosts
クライアントのホスト名と IP アドレスを追加します。
10.0.15.15 client
/etc/hosts を保存してエディターを終了します。
これで、ceph-admin SSH キーをクライアント ノードに追加できます。
ssh-keyscan client >> ~/.ssh/known_hosts
ssh-copy-id client要求されたら、\cephuser\ パスワードを入力します。
以下のコマンドを使用してクライアント ノード サーバーへの接続を試行し、接続をテストします。
ssh client
ステップ 3 - クライアント ノードに Ceph をインストールする
このステップでは、ceph-admin ノードからクライアント ノード (クライアント ノードとして機能するノード) に Ceph をインストールします。
ssh で root として ceph-admin ノードにログインし、su で「cephuser」になります。
ssh
su - cephuserCeph クラスター ディレクトリに移動します。最初の Ceph チュートリアルでは、クラスター ディレクトリを使用しました。
cd cluster/
ceph-deploy を使用してクライアント ノードに Ceph をインストールし、構成と管理キーをクライアント ノードにプッシュします。
ceph-deploy install client
ceph-deploy admin clientCeph のインストールには時間がかかります (サーバーとネットワークの速度によって異なります)。タスクが完了したら、クライアント ノードに接続し、管理者キーの権限を変更します。
ssh client
sudo chmod 644 /etc/ceph/ceph.client.admin.keyringクライアントノードにCephがインストールされています。
ステップ 4 - Ceph をブロック デバイスとして構成およびマウントする
Ceph を使用すると、ユーザーは Ceph クラスターをシン プロビジョニングされたブロック デバイスとして使用できます。システムに通常のハードドライブのように Ceph ストレージをマウントできます。 Ceph Block Storage または Ceph RADOS Block Storage (RBD) は、ブロック デバイス イメージをオブジェクトとして保存し、Ceph クラスター全体でデータを自動的にストライピングおよびレプリケートします。 Ceph RBD は KVM と統合されているため、OpenStack、Apache CLoudstack、Proxmox VE などのさまざまな仮想化プラットフォームでブロック ストレージとして使用することもできます。
クライアント ノードで新しいブロック デバイスを作成する前に、クラスタのステータスを確認する必要があります。 Ceph モニターノードにログインし、クラスターの状態を確認します。
ssh mon1
sudo ceph -sクラスターの状態が HEALTH_OK で、pgmap がアクティブでクリーンであることを確認します。
このステップでは、クライアント ノード オペレーティング システムとして CentOS 7 を使用するクライアント サーバー上のブロック デバイスまたはブロック ストレージとして Ceph を使用します。 ceph-admin ノードから、クライアント ノードに ssh で接続します。最初の章でそのノードにパスワードなしのログインを構成したため、パスワードは必要ありません。
ssh client
Ceph は、rados ブロック デバイス イメージを管理するための rbd コマンドを提供します。 rbd コマンドを使用して、新しいイメージの作成、サイズ変更、スナップショットの作成、ブロック デバイスのエクスポートを行うことができます。
サイズが 40GB の新しい rbd イメージを作成し、disk01 が rbd リストで使用可能であることを確認します。
rbd create disk01 --size 40960
rbd ls -l次に、rbd カーネルモジュールを有効にします。
sudo modprobe rbd
sudo rbd feature disable disk01 exclusive-lock object-map fast-diff deep-flatten次に、rbd カーネル モジュールを介して disk01 イメージをブロック デバイスにマップし、マップされたデバイスのリストに disk01 があることを確認します。
sudo rbd map disk01
rbd showmappeddisk01 イメージが /dev/rbd0 デバイスとしてマップされていることがわかります。これを使用してデータを保存する前に、その disk01 イメージを mkfs コマンドでフォーマットする必要があります。 XFS ファイル システムを使用します。
sudo mkfs.xfs /dev/rbd0
/dev/rbd0 を mnt ディレクトリにマウントします。この目的のために mydisk サブディレクトリを使用します。
sudo mkdir -p /mnt/mydisk
sudo mount /dev/rbd0 /mnt/mydiskCeph RBD または RADOS ブロック デバイスが構成され、システムにマウントされました。 dfコマンドでデバイスが正しくマウントされていることを確認してください。
df -hT
CentOS 7 で Ceph をブロック デバイスとして使用することに成功しました。
ステップ 5 - 起動時に RBD をセットアップする
CentOS 7 クライアント ノードで Ceph をブロック デバイスとして使用することに成功しました。次に、Ceph Block Device をシステムに自動マウントするように構成します。起動時に RBD Auto Mount 用のサービス ファイルを作成する必要があります。
RBD disk01 のマウントおよびアンマウント用に、/usr/local/bin ディレクトリに新しいファイルを作成します。
cd /usr/local/bin/
vim rbd-mount以下のスクリプトを貼り付けます。
#!/bin/bash
# Script Author: http://bryanapperson.com/
# Change with your pools name
export poolname=rbd
# CHange with your disk image name
export rbdimage=disk01
# Mount Directory
export mountpoint=/mnt/mydisk
# Image mount/unmount and pool are passed from the systems service as arguments
# Determine if we are mounting or unmounting
if [ "$1" == "m" ]; then
modprobe rbd
rbd feature disable $rbdimage exclusive-lock object-map fast-diff deep-flatten
rbd map $rbdimage --id admin --keyring /etc/ceph/ceph.client.admin.keyring
mkdir -p $mountpoint
mount /dev/rbd/$poolname/$rbdimage $mountpoint
fi
if [ "$1" == "u" ]; then
umount $mountpoint
rbd unmap /dev/rbd/$poolname/$rbdimage
fiファイルを保存して vim を終了し、chmod で実行可能にします。
chmod +x rbd-mount
次に、systemd ディレクトリに移動し、サービス ファイルを作成します。
cd /etc/systemd/system/
vim rbd-mount.service以下にサービス構成を貼り付けます。
[Unit]
Description=RADOS block device mapping for $rbdimage in pool $poolname"
Conflicts=shutdown.target
Wants=network-online.target
After=NetworkManager-wait-online.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/bin/rbd-mount m
ExecStop=/usr/local/bin/rbd-mount u
[Install]
WantedBy=multi-user.targetファイルを保存して vim を終了します。
systemd ファイルをリロードし、起動時に rbd-mount サービスを開始できるようにします。
systemctl daemon-reload
systemctl enable rbd-mount.serviceここでクライアント ノードを再起動すると、rbd disk01 が /mnt/mydisk ディレクトリに自動的にマウントされます。
参照
- http://bryanapperson.com/blog/mounting-rbd-at-boot-under-centos-7/