웹사이트 검색

CentOS 7에서 Ceph를 블록 장치로 사용


이 페이지에서

  1. 1단계 - Ceph 클라이언트 노드 구성
  2. 2단계 - Ceph 관리 노드 구성
  3. 3단계 - 클라이언트 노드에 Ceph 설치
  4. 4단계 - Ceph를 블록 장치로 구성 및 마운트
  5. 5단계 - 부팅 시 RBD 설정
  6. 참조

Ceph는 오픈 소스 스토리지 플랫폼으로 고성능, 안정성 및 확장성을 제공합니다. 단일 장애 지점 없이 설정할 수 있는 무료 분산 스토리지 시스템입니다. Ceph는 개체, 블록 및 파일 수준 스토리지를 위한 인터페이스를 제공합니다.

Ceph 튜토리얼 시리즈의 두 번째 파트입니다. Ceph I 튜토리얼을 보려면 여기를 클릭하세요(CentOS에서 Ceph 클러스터 설정). 두 번째 부분에서는 CentOS 7에서 Ceph를 파일 시스템으로 사용하기 위해 Ceph Block Device 클라이언트를 설치하고 구성하는 방법을 단계별로 안내합니다.

전제 조건

  • Ceph 클러스터 - Ceph I 튜토리얼
  • 클라이언트 서버 - CentOS 7 - 호스트 이름 및 IP\n
    • 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

    호스트 파일을 저장하고 편집기를 종료합니다.

    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를 통해 ceph-admin 노드에 루트로 로그인하고 su를 사용하여 "cephuser"가 됩니다.

    ssh 
    su - cephuser

    Ceph 클러스터 디렉터리로 이동합니다. 첫 번째 Ceph 자습서에서는 클러스터 디렉터리를 사용했습니다.

    cd cluster/

    ceph-deploy를 사용하여 클라이언트 노드에 Ceph를 설치한 다음 구성 및 관리 키를 클라이언트 노드에 푸시합니다.

    ceph-deploy install client
    ceph-deploy admin client

    Ceph 설치에는 다소 시간이 걸립니다(서버 및 네트워크 속도에 따라 다름). 작업이 완료되면 클라이언트 노드에 연결하고 admin 키의 권한을 변경합니다.

    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 이미지를 만든 다음 rbd 목록에서 disk01을 사용할 수 있는지 확인합니다.

    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 장치로 매핑된 것을 볼 수 있습니다. 데이터를 저장하는 데 사용하기 전에 mkfs 명령어로 해당 disk01 이미지를 포맷해야 합니다. 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 자동 마운트를 위한 서비스 파일을 생성해야 합니다.

    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/