OpenSSH로 인스턴스에 접속 혹은 유닉스 기반 클라이언트(MacOS 등)에서 접속하는 경우에는 인스턴스 생성 시에 자동으로 생성된 SSH 키 쌍을 다운로드 받을 수 있기 때문에 이 단계를 건너뜁니다. 또한 이미 SSH-2 RSA 키 쌍을 가지고 있는 경우에도 인스턴스 생성할 때 공개 키를 업로드 하거나 붙여넣기하여 추가할 수 있으므로, 마찬가지로 이 단계를 건너뜁니다.
만일 클라이언트가 OpenSSH가 없는 윈도우 환경이라면, Putty를 활용하여 접속하는 경우가 많은데 이 경우에는 Putty Key Generator를 다운로드 받아서 Putty에서 사용하는 SSH키로 생성하여야 합니다. Putty Key Generator를 활용하면 기존에 사용중이던 SSH-2 RSA 키 쌍를 Putty 전용 SSH 키로 변환도 가능합니다.
먼저 https://www.puttygen.com/에서 PuTTYgen을 다운로드 받고 설치합니다. puttygen.exe을 클릭하여 프로그램을 오픈합니다.
다음과 같이 SSH-2 RSA를 선택하고 키 사이즈를 2048로 입력한 후 Generate 버튼을 클릭합니다.
생성되는 과정에서 빈 공간을 마우스를 움직이면 키가 랜덤하게 생성됩니다.
Save private key를 클릭하여 전용 키를 다운로드 받습니다. 공개키의 경우 Public key for pasting into OpenSSH authorized_keys file의 내용을 다운로드 받은 Private Key 이름에 .pub라는 파일 확장자를 추가해서 복사 & 붙여넣기 하여 생성합니다.
예시) Private Key: mykey, Public Key: mykey.pub
키 코멘트, passphrase (키를 암호화)는 이 단계에서 건너뜁니다.
모든 리소스들을 특정 구획에 생성할 것입니다. 우선 Sandbox라는 이름의 구획을 생성해 보도록 하겠습니다. 메뉴에서 ID & 보안 (Identity & Security) > 구획(Compartment)를 선택합니다.
구획 생성 버튼을 클릭하고, 입력창에 다음과 같이 입력합니다.
인스턴스에서 사용할 VCN을 생성합니다. VCN 생성은 아래 링크를 참고하여 생성합니다.
VCN을 생성할 때 앞서 생성한 구획인 SandBox를 선택하여야 합니다.
이제 리눅스 인스턴스를 하나 생성해보겠습니다. 메뉴에서 컴퓨트(Compute) > 인스턴스(Instances)를 차례로 클릭합니다.
구획으로 Sandbox를 선택한 후 인스턴스 생성(Create Instance)를 클릭합니다.
인스턴스 생성 화면에서 다음과 같이 입력합니다.
네트워킹에서는 앞서 생성한 VCN과 공용 서브넷(Public Subnet)을 선택하고 (공용 IP 주소) Public IP address를 공용 IPv4 주소 지정 (Assign a public IPv4 address)으로 선택합니다.
SSH 키 추가에서는 자동으로 키 쌍 생성(Generate a key pair for me)을 선택하고 전용 키 저장 (Save Private Key)를 클릭하여 생성된 키를 다운로드 받을 수 있습니다.
다운로드 받은 키는 OpenSSH가 구성된 클라이언트에서만 사용 가능합니다. UNIX 기반 환경 (Linux 또는 MacOS), Windows 10, Windows Server 2019의 경우는 OpenSSH를 설치하여 다운로드 받은 키로 인스턴스에 접속이 가능합니다.
기존에 가지고 있는 키가 있는 경우 공용 키를 공용 키 파일(.pub) 업로드(Upload public key files (.pub)) 혹은 공용 키 붙여넣기(Paste public keys) 기능을 활용하여 인스턴스에 업로드 할 수 있습니다. 앞서 생성한 Putty 키를 사용하는 경우에는 Putty 공용 키를 업로드 합니다.
부트 볼륨 (Boot volume)의 경우는 기본 옵션 상태로 둡니다.
마지막으로 생성 (Create) 버튼을 클릭합니다.
이제 실행중인 인스턴스에 SSH로 접속할 수 있습니다. 대부분의 리눅스 혹은 유닉스 시스템은 기본 SSH 클라이언트를 통해서 접속이 가능하지만, Windows 10 혹은 Windows 2019의 경우는 Open SSH Client를 설치하여야 합니다. 그 외 윈도우 환경의 경우 무료 SSH 클라이언트 프로그램인 Putty를 사용하여 접속할 수 있습니다.
우선 인스턴스에 접속하기 위해서는 생성한 인스턴스의 공용 IP를 확인하여야 합니다. 생성한 인스턴스 목록에서 바로 공용 IP를 확인할 수 있습니다.
다운로드 받은 전용 키 혹은 업로드 한 공용 키에 대응하는 전용 키에 대해서 소유자만 파일을 읽을 수 있는 권한으로 변경합니다.
$ chmod 400 <private_key_file>
다음 SSH 명령어로 인스턴스에 접속합니다.
$ ssh -i <private_key_file> <username>@<public-ip-address>
Oracle Linux 및 CentOS 이미지의 경우 기본 사용자 이름은 opc입니다. Ubuntu 이미지의 경우 기본 사용자 이름은 ubuntu입니다.
상속 사용 안함을 클릭하고, 상속된 사용 권한을 이 개체에 대한 명시적 사용 권한으로 변환을 선택합니다.
이제 Windows PowerShell을 열고 다음 명령을 실행합니다.
ssh -i <private_key_file> <username>@<public-ip-address>
Oracle Linux 및 CentOS 이미지의 경우 기본 사용자 이름은 opc입니다. Ubuntu 이미지의 경우 기본 사용자 이름은 ubuntu입니다.
Category에서 Session을 선택한 후 Host Name (or IP address)에 생성한 인스턴스의 공용 IP를 입력합니다. Port는 22 이고, Connection type은 SSH로 선택합니다.
Category에서 Connection과 Data를 순서대로 클릭한 후 Auto-login username에 사용자를 입력합니다.
Oracle Linux 및 CentOS 이미지의 경우 기본 사용자 이름은 opc입니다. Ubuntu 이미지의 경우 기본 사용자 이름은 ubuntu입니다.
Category에서 Connection과 SSH, Auth를 순서대로 클릭한 후 Private key file for authentication에 앞서 PuttyGen으로 생성한 전용 키를 선택하고 Open을 클릭하여 세션을 시작합니다.
인스턴스에 처음 연결하는 경우 서버의 호스트 키가 레지스트리에 캐시되지 않는다는 메시지가 표시될 수 있습니다. 연결을 계속 하려면 예 를 클릭 합니다.
블록 볼륨 은 Oracle Cloud Infrastructure 컴퓨트 인스턴스에 사용할 수 스토리지입니다. 볼륨을 생성, 연결(Attach) 및 인스턴스에 탑재(Mount)한 후에는 인스턴스에서 물리적인 하드 드라이브처럼 사용할 수 있습니다. 볼륨은 한 번에 하나의 인스턴스에 연결할 수 있지만, 기존 인스턴스에서 볼륨을 분리하고 데이터를 유지한 상태에서 다른 인스턴스에 연결을 할 수 있습니다.
이 작업에서는 볼륨을 생성하고 인스턴스에 연결한 다음 해당 볼륨을 인스턴스에 연결하는 방법을 보여줍니다.
메뉴에서 스토리지(Stroage) > 블록 볼륨(Block Volumes)을 차례로 클릭합니다.
다음과 같이 입력 및 선택합니다.
미지막으로 블록 볼륨 생성 버튼 (Create Block Volume)을 클릭합니다.
iSCSI 방식으로 볼륨을 인스턴스에 연결해보도록 하겠습니다. 메뉴에서 컴퓨트 (Compute) > 인스턴스 (Instances)를 차례로 선택한 후에 앞서 생성한 인스턴스를 선택합니다. 인스턴스 상세 페이지에서 아래와 같이 좌측 리소스 (Resources) 메뉴에서 연결된 블록 볼륨 (Attached block volumes)을 선택합니다.
블록 볼륨 연결 (Attach block volume)버튼을 클릭하고 다음과 같이 입력/선택 합니다.
연결을 클릭합니다.
이제 iSCSI 연결을 구성할 수 있습니다. 우선 연결된 블록 볼륨 메뉴에서 연결된 블록 볼륨의 우측 아이콘을 선택한 후 iSCSI 명령 및 정보 (iSCSI commands and inforamtion)를 선택합니다.
다음과 같이 iSCSI 명령 및 정보 대화창에서 접속 (Connect)에 있는 명령어를 복사합니다.
인스턴스에 SSH로 접속합니다.
$ ssh -i <private_key_file> <username>@<public-ip-address>
인스턴스에 SSH로 접속하면, 위에서 복사한 iscsiadm
명령어를 실행합니다. 다음은 예시입니다.
$ sudo iscsiadm -m node -o new -T iqn.2015-12.com.oracleiaas:ac4b3e1c-1a24-4dc9-88dc-280797acfb14 -p 169.254.2.2:3260
$ sudo iscsiadm -m node -o update -T iqn.2015-12.com.oracleiaas:ac4b3e1c-1a24-4dc9-88dc-280797acfb14 -n node.startup -v automatic
$ sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:ac4b3e1c-1a24-4dc9-88dc-280797acfb14 -p 169.254.2.2:3260 -l
다음과 같이 fdisk 명령어를 실행해 보면, /dev/sdb 디스크가 연결되어 있는 것을 확인할 수 있습니다. 이제 포멧 및 마운트 작업 수행이 가능합니다.
$ sudo fdisk -l
Disk /dev/sdb: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 1048576 bytes
블록 볼륨 포멧을 할 때 원하는 파일 시스템 파일로 포멧할 수 있습니다. 다음은 ext3 파일 시스템으로 포멧하는 명령어 예시입니다.
$ sudo /sbin/mkfs.ext3 /dev/sdb
위에서 지정한 장치 경로 (Device path)를 통해서도 포멧이 가능합니다.
$ sudo /sbin/mkfs.ext3 /dev/oracleoci/oraclevdb
일관된 장치 경로(Consistent Device Path) 기능은 블록 볼륨이 둘 이상인 상태에서 장치의 이름으로 마운트할 경우 재부팅 시 장치 이름과 실제 장치의 대응 순서가 달라질 수 있는데, 이 순서를 보장하기 위한 기능입니다. 이 기능은 OCI에서 제공되는 특정 이미지에서만 제공되는데, 자세한 내용은 https://docs.oracle.com/en-us/iaas/Content/Block/References/consistentdevicepaths.htm 페이지에서 확인활 수 있습니다.
다음 명령어로 파일 시스템을 조회해 볼 수 있습니다.
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
|-sda1 vfat 2C33-7BA8 /boot/efi
|-sda2 xfs f5a988c4-7f58-4592-8edc-a60130c894b9 /boot
`-sda3 LVM2_member ppZKAk-x3TH-chAK-4850-Qx9L-1VEW-PC5eBq
|-ocivolume-root xfs cc7fcbb1-bc82-4e5a-9fdc-3767d5c32c48 /
`-ocivolume-oled xfs 3730314b-4ca7-4454-8aeb-82e97c986fb3 /var/oled
sdb ext3 d9388269-e087-4d50-a058-f6d08b9772c5
이제 마운트를 해보도록 하겠습니다. 여기서는 장치 경로를 통해 마운트를 합니다. 다음과 같이 마운트할 경로를 생성합니다.
$ sudo mkdir /mnt/vol1
/etc/fstab 파일을 오픈하여 다음과 같이 제일 아래에 다음 라인을 추가합니다.
fstab에 추가하면, 인스턴스를 리부팅 하더라도 자동으로 마운트가 됩니다.
$ sudo vi /etc/fstab
# 아래 라인 추가
/dev/oracleoci/oraclevdb /mnt/vol1 ext3 defaults,_netdev,nofail 0 2
디바이스은 연결된 블록 볼륨 화면에서도 확인 가능하지만, 다음 명령어로도 확인이 가능합니다. ls -la /dev/oracleoci/
이제 다음 명령어로 마운트합니다.
$ sudo mount -a
마운트 된 것을 확인할 수 있습니다.
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.7G 0 7.7G 0% /dev
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 7.7G 41M 7.7G 1% /run
tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup
/dev/mapper/ocivolume-root 36G 8.4G 28G 24% /
/dev/mapper/ocivolume-oled 10G 120M 9.9G 2% /var/oled
/dev/sda2 1014M 316M 699M 32% /boot
/dev/sda1 100M 5.0M 95M 5% /boot/efi
tmpfs 1.6G 0 1.6G 0% /run/user/0
tmpfs 1.6G 0 1.6G 0% /run/user/987
tmpfs 1.6G 0 1.6G 0% /run/user/1000
/dev/sdb 49G 53M 47G 1% /mnt/vol1
튜토리얼을 통해서 생성한 리소스에 대한 삭제는 다음 순서대로 진행합니다.
메뉴에서 컴퓨트 (Compute) > 인스턴스 (Instances)에서 실습에서 사용한 인스턴스를 선택합니다. 인스턴스 세부 정보 화면에서 좌측 리소스 (Resources) 세션의 연결된 블록 볼륨을 선택합니다. 목록에서 실습에서 사용한 볼륨 오른쪽 아이콘을 선택하고 분리 (Detach)를 선택하여 인스턴스를 분리합니다.
이제 볼륨을 삭제할 수 있습니다. 메뉴에서 스토리지 (Storage) > 블록 볼륨 (Block Volumes)를 차례로 선택한 후에 실습에서 사용한 블록 볼륨의 오른쪽 아이콘을 클릭하고 종료 (Terminate)를 선택하여 볼륨을 삭제합니다.
메뉴에서 컴퓨트 (Compute) > 인스턴스 (Instances)를 차례로 선택한 후 목록에서 실습에서 사용한 인스턴스의 오른쪽 아이콘을 클릭하고 종료 (Terminate)를 선택합니다.
삭제 대화창에서 부팅 볼륨을 영구적으로 삭제 (Permanently delete the attached boot volume)를 선택한 후 인스턴스 종료 버튼을 클릭하여 인스턴스와 부트볼륨을 모두 삭제합니다.
메뉴에서 네트워킹 (Networking) > 가상 클라우드 네트워크 (Virtual Cloud Network) 을 차례로 선택한 후 실습에서 사용한 VCN 오른쪽 메뉴를 클릭하고 종료 (Terminate)를 선택합니다.
VCN과 연관된 모든 리소스들이 나열됩니다. 모두 종료를 클릭하여 VCN과 관련된 모든 리소스를 삭제합니다.
VCN의 리소스들을 다른 자원에서 사용중인 경우라면 VCN 자원을 삭제할 수 없습니다. 이 경우에는 연관된 자원을 삭제 한 후에 다시 VCN 리소스를 정리하여야 합니다.
이 글은 개인적으로 얻은 지식과 경험을 작성한 글로 내용에 오류가 있을 수 있습니다. 또한 글 속의 의견은 개인적인 의견으로 특정 회사를 대변하지 않습니다.
Donghu Kim GETTING-STARTED
oci compute linux_instance