ウェブサイト検索

CentOS 7 で Ceph をブロック デバイスとして使用する


このページでは

  1. ステップ 1 - Ceph クライアント ノードを構成する
  2. ステップ 2 - Ceph 管理ノードを構成する
  3. ステップ 3 - クライアント ノードに Ceph をインストールする
  4. ステップ 4 - Ceph をブロック デバイスとして構成およびマウントする
  5. ステップ 5 - 起動時に RBD をセットアップする
  6. 参照

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 cephuser

    sudoers.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/cephuser

    cephuser に対して 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        client

    hosts ファイルを保存し、エディターを終了します。

    ステップ 2 - Ceph 管理ノードを構成する

    最初のステップでは、ceph インストール用の Ceph クライアント ノードを準備しました。ただし、クライアント ノードで Ceph インストールを管理できるように ceph-admin ノードを設定する必要があります。ここで、ceph-admin ノードからクライアント ノードに Ceph をインストールします。

    ceph-admin ノードにログインします。

    ssh 
    su - cephuser

    vim で 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 - cephuser

    Ceph クラスター ディレクトリに移動します。最初の Ceph チュートリアルでは、クラスター ディレクトリを使用しました。

    cd cluster/

    ceph-deploy を使用してクライアント ノードに Ceph をインストールし、構成と管理キーをクライアント ノードにプッシュします。

    ceph-deploy install client
    ceph-deploy admin client

    Ceph のインストールには時間がかかります (サーバーとネットワークの速度によって異なります)。タスクが完了したら、クライアント ノードに接続し、管理者キーの権限を変更します。

    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 showmapped

    disk01 イメージが /dev/rbd0 デバイスとしてマップされていることがわかります。これを使用してデータを保存する前に、その disk01 イメージを mkfs コマンドでフォーマットする必要があります。 XFS ファイル システムを使用します。

    sudo mkfs.xfs /dev/rbd0

    /dev/rbd0 を mnt ディレクトリにマウントします。この目的のために mydisk サブディレクトリを使用します。

    sudo mkdir -p /mnt/mydisk
    sudo mount /dev/rbd0 /mnt/mydisk

    Ceph 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/

関連記事: