베어메탈 솔루션 환경에 NFS 파일 스토리지 추가

이 가이드에서는 베어메탈 솔루션 환경에서 파일 스토리지용 네트워크 파일 시스템(NFS)을 설정하고 사용하는 방법을 설명합니다. 이 문서에서는 NFS 파일 시스템 사용에 대한 기본적인 지식과 Linux 시스템 관리에 대한 기본 지식이 있다고 가정합니다.

베어메탈 솔루션의 NFS 파일 스토리지 이해

NFS를 일반 스크립트, 설치 파일, 백업 파일의 로컬, 공유, 파일 스토리지로 사용할 수 있습니다. NFS 볼륨은 NFS 마운트 디렉터리를 통해 하나 이상의 베어메탈 솔루션 서버에 스토리지를 제공합니다. 베어메탈 솔루션 서버에 NFS 볼륨을 마운트한 후에는 다른 파일 시스템과 마찬가지로 스토리지에 액세스할 수 있습니다.

베어메탈 솔루션에서 NFS 파일 스토리지를 사용하려면 다음 두 단계를 수행해야 합니다.

  1. NFS 볼륨에 대한 설정을 결정하고 Google Cloud와 공유합니다.
  2. 베어메탈 솔루션 서버에 NFS 볼륨 마운트

다음은 베어메탈 솔루션에서 NFS 파일 스토리지를 사용할 때 도움이 되는 몇 가지 유용한 팁과 사실입니다.

  • 베어메탈 솔루션 서버는 베어메탈 솔루션 환경에 할당된 클라이언트 또는 비공개 네트워크에서 예약된 서비스 서브넷을 통해 NFS 볼륨과 통신합니다. 일반적인 /24 네트워크의 경우 NFS와 같은 서비스에 /28 서브넷을 사용하는 것이 좋습니다.
  • 서브넷당 하나의 NFS 볼륨을 할당할 수 있습니다. 따라서 NFS 볼륨은 여러 VLAN 간에 공유할 수 없습니다.
  • Google Cloud는 베어메탈 솔루션 환경에서 NFS v3를 사용합니다.
  • Oracle 데이터 파일 또는 로그 파일을 저장하는 데 NFS를 사용하지 않는 것이 좋습니다.
  • Google Cloud는 베어메탈 솔루션을 호스팅하는 동일한 리전별 확장 프로그램 내에서 NFS를 제공합니다. NFS 파일 스토리지는 Google Cloud 리전 간에 분산되지 않습니다. 멀티 리전 공유 스토리지가 필요한 경우에는 Filestore 사용을 고려합니다. NFS 볼륨 또는 리전 간에 스토리지 기반 복제는 제공되지 않습니다.
  • Google Cloud는 저장 데이터를 암호화합니다. 베어메탈 솔루션 서버와 스토리지 기기 간의 전송 중인 데이터는 암호화되지 않습니다. 전송 트래픽 데이터의 암호화가 필요한 경우 애플리케이션 수준에서 암호화를 구성하는 것이 좋습니다. 자세한 내용은 Cloud Interconnect에서 트래픽을 암호화하려면 어떻게 해야 하나요?를 참조하세요.
  • 베어메탈 솔루션용 NFS 파일 스토리지는 네트워크 대역폭에 제한을 제공하지 않습니다. 대용량의 동시 실행 일괄 워크로드(예: 백업)는 다른 워크로드의 성능에 영향을 줄 수 있으므로 이러한 일괄 워크로드의 대역폭 사용량과 동시 처리를 제한하는 것이 좋습니다.
  • Google Cloud에서 제공하는 다른 공유 스토리지 옵션으로는 베어메탈 솔루션 서버의 FilestoreFUSE와 함께 마운트된 Google Cloud Storage 버킷이 있습니다. Google Cloud 콘솔을 사용하여 Google Cloud에서 이 스토리지를 동적으로 할당할 수 있으며 리전별 확장 프로그램을 Google Cloud 리전에 조인하는 Cloud Interconnect를 사용합니다.

NFS에 대한 자세한 내용은 네트워크 파일 시스템을 참조하세요.

Oracle 데이터베이스가 있는 NFS 파일 스토리지를 사용하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요(Oracle 계정 필요).

베어메탈 솔루션의 NFS 파일 스토리지 요청

베어메탈 솔루션 환경에 NFS 파일 스토리지를 추가하려면 Google Cloud Sales를 통해 NFS 볼륨을 주문해야 합니다. NFS 볼륨 주문과 할당이 완료되면 NFS 볼륨 만들기의 단계에 따라 이를 설정할 수 있습니다.

다음 예시에 표시된 것처럼 Google Cloud 콘솔 접수 양식볼륨 섹션에서 사용 가능한 볼륨 할당량을 볼 수 있습니다.

Google Cloud 콘솔 접수 양식에서 사용 가능한 할당량 메시지가 강조 표시됩니다.

프로비저닝에 사용할 수 있는 볼륨 할당량이 충분하지 않으면 Google Cloud Sales에 연락하여 더 주문하세요.

볼륨 할당량을 사용할 수 있으면 베어메탈 솔루션 환경에 대해 NFS 파일 스토리지를 프로비저닝하기 위해 다음 정보를 수집하고 제공해야 합니다.

필드 설명 예시
Google Cloud 프로젝트 ID Google Cloud 프로젝트의 시작 페이지에서 프로젝트 ID를 찾습니다. 내 프로젝트
리전 베어메탈 솔루션 환경을 호스팅하는 리전별 확장 프로그램 근처에 있는 Google Cloud 리전입니다. us-central1
클라이언트 및 비공개 네트워크 베어메탈 솔루션 환경을 설정할 때 선택한 두 서브넷 문서 예시에서 192.168.1.0/24는 Google Cloud에 연결되는 클라이언트 네트워크이고 192.168.2.0/24는 리전별 확장 프로그램 내에서 서비스에 사용되는 비공개 네트워크입니다.
이름 NFS 볼륨의 이름입니다. 볼륨의 이름을 선택합니다. 이름을 선택하지 않으면 Google Cloud에서 NFS 볼륨 이름을 자동으로 생성합니다. 예시 이름은 at-1234567-nfs001입니다.
유형 데이터 저장을 요청하는 스토리지 유형 옵션에는 솔리드 스테이트 드라이브(SSD)를 선택하는 모든 플래시, 하드 디스크 드라이브(HDD)를 선택하는 모든 디스크가 포함됩니다. 올플래시
크기 필요한 드라이브 크기를 선택합니다. 최소 100GiB부터 최대 16TiB의 스토리지 용량을 선택할 수 있습니다. 1TiB(1024GiB)
스냅샷 사용 설정 일일 스냅샷을 사용 설정하려면 를 선택하고 사용 중지하려면 아니요를 선택합니다.
  • 이 기능을 사용 설정하면 Google Cloud가 7일 동안 NFS 볼륨의 스냅샷 만들기를 매일 수행합니다. 7일이 지나면 최신 스냅샷이 이전 스냅샷을 덮어씁니다. 또한 스냅샷용으로 요청된 NFS 스토리지의 20%를 예약합니다.
  • 이 기능을 사용 설정하지 않으면 NFS 볼륨의 자체 백업을 수행해야 합니다.
프로토콜 사용할 스토리지 프로토콜을 지정합니다. 이 필드를 사용하여 NFS가 필요하다고 알려야 합니다. NFS(네트워크 파일 시스템)
네트워크 NFS 볼륨에 액세스할 수 있는 서브넷입니다. 일반적으로 이는 베어메탈 솔루션 환경의 클라이언트 네트워크입니다. 클라이언트 및 비공개 네트워크에서 위에서 선택한 값을 재사용합니다.
대상 개별 베어메탈 솔루션 서버(단일 서버) 또는 서브넷의 모든 서버(CIDR)에서 NFS 볼륨에 액세스할 수 있습니다. CIDR
서버 NFS 볼륨에 액세스할 수 있는 베어메탈 솔루션 서버의 이름입니다. 예: at-7654321-svr001
서비스 IP 주소 범위 클라이언트 또는 비공개 네트워크에서 스토리지 및 서버에 사용할 네트워크 IP 주소 범위의 하위 집합을 선택합니다. Google Cloud는 NFS와 같은 서비스를 위해 이 범위를 예약합니다. 서비스 IP 주소 범위에는 일반적으로 /26, /27, /28 서브넷이 사용됩니다.

Oracle 설치의 경우 NFS 파일 스토리지용 베어메탈 솔루션 클라이언트 네트워크를 사용하고 Oracle 네트워크용 비공개 애플리케이션을 예약합니다.
이 예시에서 192.168.1.240/28은 클라이언트 네트워크의 서브넷입니다.
마운트 권한 읽기-쓰기 또는 읽기 전용 권한을 선택합니다. 읽기-쓰기
루트 스쿼시 없음 새 NFS 볼륨의 경우 이 옵션을 True로 설정하는 것이 좋습니다. 기본적으로 NFS 볼륨에는 755 권한 및 root(0) 소유자 역할이 있습니다. 모든 새 NFS 볼륨은 사용자 '루트'가 소유하므로 루트 스쿼시가 사용 설정되면 새 NFS 볼륨에 파일을 쓸 수 없습니다. 따라서 먼저 no_root_squash=True로 NFS 볼륨을 만들고 디렉터리 구조를 빌드하고 NFS 볼륨의 권한 또는 소유권을 변경한 다음 허용되는 클라이언트를 제거한 후 다시 추가하여 NFS 볼륨을 no_root_squash=False로 수정합니다. NFS 볼륨 업데이트를 참조하세요. True
SUID 허용 이 옵션을 선택하면 파일, 프로그램 또는 명령어를 실행할 때 사용자가 파일 소유자 권한을 일시적으로 받을 수 있습니다. 이 옵션을 선택하지 않으면 NFS가 임시 파일 소유자 권한을 제공하지 않습니다. False
dev 허용 이 옵션을 선택하면 파일 시스템이 문자를 해석하거나 특수 기기를 차단할 수 있습니다. 이 옵션을 선택하지 않아도 시스템이 NFS 볼륨에 쓸 수 있지만 문자를 만들거나 특수 기기를 차단할 수 없습니다. True

Google Cloud에서 주문을 처리하면 NFS 볼륨 경로가 전송됩니다. 다음과 같은 형식으로 표시됩니다.

NFS_SERVER_IP_ADDRESS:/NFS_SHARE_NAME

예를 들어 NFS 서버 IP 주소가 192.168.1.240이고 NFS 공유 이름이 at-1234567-nfs001이면 결과 NFS 볼륨 경로는 다음과 같습니다.

192.168.1.240:/at-1234567-nfs001

베어메탈 솔루션의 NFS 파일 스토리지 구성

다음 예시에서는 베어메탈 솔루션 서버의 NFS 파일 스토리지를 구성하고 Red Hat Enterprise Linux 명령어를 사용합니다. 다른 운영체제를 사용하는 경우 사용해야 하는 명령어가 다를 수 있습니다.

  1. NFS 볼륨을 마운트하기 전에 다음을 수행합니다.

    1. 베어메탈 솔루션 서버에 액세스할 점프 호스트 VM 인스턴스를 만들었는지 확인합니다. 자세한 내용은 Google Cloud에서 점프 호스트 VM 인스턴스 만들기를 참조하세요.
    2. 필요한 설치 패키지를 다운로드할 수 있도록 베어메탈 솔루션 서버에 대한 인터넷 액세스를 제공합니다. 인터넷 액세스에 대한 자세한 내용은 인터넷 액세스를 참조하세요.

    3. 베어메탈 솔루션 서버 콘솔로 이동합니다.

      1. Google Cloud 프로젝트에서 Compute Engine > VM 인스턴스로 이동합니다.

      2. 점프 호스트 VM 인스턴스의 SSH 버튼을 클릭합니다.

      3. SSH를 사용하여 베어메탈 솔루션 서버에 연결하고 사용자 이름과 비밀번호로 로그인합니다.

        [USERNAME@INSTANCE_JUMP_HOST ~]$ ssh ADMIN_USER@BMS_SERVER_IP_ADDRESS
        ADMIN_USER@BMS_SERVER_IP_ADDRESS's password:
        Last login: Wed May 26 22:25:47 2021 from JUMP_HOST_IP_ADDRESS
        [ADMIN_USER@BMS_SERVER_NAME ~]$
        
    4. 베어메탈 솔루션 서버에 DNS 서버 항목을 추가하여 DNS에 액세스합니다.

      sudo bash -c "echo \"nameserver DNS_SERVER_IP_ADDRESS\" >> /etc/resolv.conf"
      

      Cloud DNS를 사용하고 DNS 서버 IP 주소 대신 인바운드 전달자 진입점을 지정할 수도 있습니다. Cloud DNS에 대한 자세한 내용은 Cloud DNS 개요를 참조하세요.

    5. 패키지 업데이트를 허용하도록 운영체제를 구성합니다.

    6. 베어메탈 솔루션 서버에 NFS 패키지를 설치합니다.

      sudo yum install -y nfs-utils
      
  2. NFS 볼륨을 마운트합니다.

    1. 베어메탈 솔루션 서버에 마운트 디렉터리를 만듭니다.

      sudo mkdir -p /mnt/DIRECTORY_NAME
      
    2. Google Cloud에서 보낸 NFS 볼륨 경로를 찾습니다.

    3. NFS 볼륨을 마운트합니다. NFS를 일반적으로 사용하려면 다음 명령어를 사용합니다.

       sudo mount -t nfs NFS_SERVER_IP_ADDRESS:/NFS_SHARE_NAME /mnt/DIRECTORY_NAME
      
      워크로드에 따라 최상의 성능을 얻을 수 있도록 nconnect 옵션을 추가할 수 있습니다. 다음 명령어를 사용하여 nconnect 옵션으로 NFS 볼륨을 마운트합니다. RHEL 7의 경우 여러 NFS 클라이언트를 사용하여 비슷한 성능을 얻습니다.
       sudo mount -t nfs -o \
         rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,nconnect=8 \
         NFS_SERVER_IP_ADDRESS:/NFS_SHARE_NAME /mnt/DIRECTORY_NAME
      
      베어메탈 솔루션 환경에서 대부분의 Oracle 구현의 경우 다음 명령어를 사용하여 볼륨을 마운트합니다.
       sudo mount -t nfs -o \
         rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600 \
         NFS_SERVER_IP_ADDRESS:/NFS_SHARE_NAME /mnt/DIRECTORY_NAME
      
      Oracle 구현에서 NFS 볼륨에 실시간 Oracle RAC 바이너리 또는 데이터 파일을 저장해야 하는 경우 actimeo 옵션을 사용하는 다음 명령어를 입력합니다. 이렇게 하면 여러 클라이언트에서 동시에 작성할 때 클라이언트 측 속성 캐싱이 사용 중지되지만 I/O 성능에 영향을 미칠 수 있습니다.
       sudo mount -t nfs -o \
        -rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,vers=3,timeo=600,actimeo=0 \
        NFS_SERVER_IP_ADDRESS:/NFS_SHARE_NAME /mnt/DIRECTORY_NAME
      
    4. 서버가 재부팅될 때 NFS 볼륨을 자동으로 마운트하려면 fstab 파일 끝에 다음 항목을 추가합니다. 이 파일은 베어메탈 솔루션 서버의 /etc 디렉터리에 있습니다. sudo 관리자 권한 및 텍스트 편집기를 사용하여 파일을 수정하고 각 항목 사이에 3개의 공백이 있는지 확인합니다.

      NFS_SERVER_IP_ADDRESS:/NFS_SHARE_NAME   /mnt/DIRECTORY_NAME   nfs    defaults,nofail   0 0
      
      [ADMIN_USER@BMS_SERVER_NAME ~]$ sudo -i
      [root@BMS_SERVER_NAME ~]# cd /etc
      [root@BMS_SERVER_NAME etc]# vi fstab
      [root@BMS_SERVER_NAME etc]# cat fstab
      #
      # /etc/fstab
      # Created by anaconda on Sun Feb 16 10:06:11 2020
      #
      # Accessible filesystems, by reference, are maintained under '/dev/disk'
      # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
      #
      /dev/mapper/rootvg-rootlv /                       xfs     defaults        0 0
      UUID=bc39a085-d080-488e-9402-d22558bc88ae /boot                   xfs     defaults        0 0
      UUID=4127-64CB          /boot/efi               vfat    defaults,uid=0,gid=0,umask=0077,shortname=winnt 0 0
      /dev/mapper/rootvg-homelv /home                   xfs     defaults        0 0
      /dev/mapper/rootvg-optlv /opt                    xfs     defaults        0 0
      /dev/mapper/rootvg-tmplv /tmp                    xfs     defaults        0 0
      /dev/mapper/rootvg-varlv /var                    xfs     defaults        0 0
      /dev/mapper/rootvg-swaplv swap                    swap    defaults        0 0
      **NFS_SERVER_IP_ADDRESS:/NFS_SHARE_NAME   /mnt/DIRECTORY_NAME   nfs    defaults,nofail   0 0**
      
    5. 볼륨에 액세스할 수 있는지 확인합니다.

      mount -l | grep nfs
      
      NFS_SERVER_IP_ADDRESS:/NFS_SHARE_NAME on /mnt/DIRECTORY_NAME type nfs
      (rw,relatime,vers=3,rsize=65536,wsize=65536,namlen=255,
      hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=NFS_SERVER_IP_ADDRESS,
      mountvers=3,mountport=635,mountproto=udp,local_lock
      =none,addr=NFS_SERVER_IP_ADDRESS)
      
    6. NFS 디렉터리에 테스트 파일을 추가합니다.

      cd /mnt/DIRECTORY_NAME
      echo 'testing' | sudo tee -a testfile
      sudo cat testfile
      sudo rm testfile
      

베어메탈 솔루션의 NFS 파일 스토리지 보기

  • 볼륨을 보려면 다음 명령어를 사용합니다.

    mount | grep NFS_SHARE_NAME
    
    NFS_SERVER_IP_ADDRESS:/NFS_SHARE_NAME on /mnt/DIRECTORY_NAME type nfs
    (rw,relatime,vers=3,rsize=65536,wsize=65536,namlen=255,
    hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=NFS_SERVER_IP_ADDRESS,
    mountvers=3,mountport=635,mountproto=udp,local_lock
    =none,addr=NFS_SERVER_IP_ADDRESS)
    

베어메탈 솔루션의 NFS 파일 스토리지 마운트 해제

  • 다음 명령어를 사용하여 NFS 볼륨을 마운트 해제하고 삭제를 확인합니다.

    sudo umount /mnt/DIRECTORY_NAME
    mount | grep NFS_SHARE_NAME