AWS Systems Manager의 기능인 Session Manager를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 연결을 시도했습니다. 하지만 “Plugin with name Standard_Stream not found”라는 오류 메시지가 표시되었습니다.
간략한 설명
AWS Systems Manager Agent(SSM Agent)가 세션을 설정하는 데 필요한 파일을 만들 수 없는 경우 다음과 같은 오류 메시지가 표시됩니다.
"Your session has been terminated for the following reasons: Plugin with name Standard_Stream not found. Step name: Standard_Stream"
이 문제는 일반적으로 인스턴스의 스토리지 공간이 부족하거나 동시에 열려 있는 파일이 너무 많을 때 발생합니다.
문제의 원인을 파악하려면 시스템 로그에서 특정 오류 메시지를 확인하십시오. 그런 다음 확인된 오류에 따라 다음 문제 해결 작업을 수행하십시오.
해결 방법
"No space left on device" 오류 해결
SSM Agent가 세션을 시작하는 데 필요한 임시 데이터를 만들려면 루트 파티션에 충분한 공간이 있어야 합니다. "No space left on device" 오류 메시지가 표시된다면 루트 파일 시스템에서 사용 가능한 공간을 늘려야 합니다. 먼저 루트 파티션에서 사용하지 않는 파일을 제거합니다. 그래도 공간이 충분하지 않으면 엘라스틱 볼륨을 사용하여 Amazon Elastic Block Store(Amazon EBS) 볼륨을 늘리십시오. 또는 다음 방법 중 하나를 사용하여 운영 체제(OS) 수준에서 루트 파일 시스템을 확장합니다.
SSH 또는 EC2 직렬 콘솔을 사용하여 루트 파일 시스템 확장
다음 단계를 완료하십시오.
-
SSH 또는 EC2 직렬 콘솔을 사용하여 인스턴스에 연결합니다.
참고: EC2 직렬 콘솔을 사용하려면 EC2 직렬 콘솔에 대한 액세스를 구성해야 합니다. 요구 사항에 대한 자세한 내용은 EC2 직렬 콘솔의 사전 요구 사항을 참조하십시오.
-
루트 파티션에서 사용 가능한 공간을 확인하려면 다음 명령을 실행합니다.
df -Th
출력 예시:
$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 1.6G 440K 1.6G 1% /run
/dev/nvme0n1p1 xfs 8.0G 2.0G 6.0G 25% /
tmpfs tmpfs 3.9G 0 3.9G 0% /tmp
/dev/nvme0n1p128 vfat 10M 1.3M 8.7M 13% /boot/efi
tmpfs tmpfs 782M 0 782M 0% /run/user/1000
-
블록 디바이스 및 루트 파티션의 이름 및 파일 시스템 유형과 같은 세부 정보를 보려면 다음 lsblk 명령을 실행합니다.
lsblk -f
출력 예시:
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
nvme0n1
├─nvme0n1p1 xfs / abcd123-abcd-1234-abcd-abcdef1234 /
└─nvme0n1p128
-
파티션을 확장하려면 다음 명령을 실행합니다.
sudo growpart /dev/nvme0n1 1
참고: nvme0n1을 파티션 이름으로 바꾸십시오.
-
파티션이 확장되었는지 확인하려면 lsblk 명령을 재실행합니다. 출력에서 파티션 크기가 볼륨 크기와 동일한지 확인합니다.
-
파일 시스템을 확장하려면 파일 시스템 유형에 따라 다음 명령 중 하나를 실행합니다.
ext4 볼륨:
sudo resize2fs /dev/nvme0n1p1
참고: nvme0n1p1을 파티션 이름으로 바꾸십시오.
XFS 볼륨:
sudo xfs_growfs -d /
복구 인스턴스를 사용하여 루트 파일 시스템 확장
SSH를 사용하여 연결 불가 인스턴스에 연결할 수 없는 경우 연결 불가 인스턴스와 동일한 가용 영역에 복구 인스턴스를 만드십시오. 지침은 "No space left on device" 오류 해결(리소스 과다 사용으로 인해 상태 확인에 실패하는 EC2 Linux 인스턴스 문제를 해결하려면 어떻게 해야 합니까?)를 참조하십시오. 복구 인스턴스에 루트 볼륨을 탑재한 후 파일 시스템을 확장합니다.
"Too many open files" 오류 해결
최대 inotify 리소스를 초과하면 SSM Agent가 세션을 설정하는 데 필요한 새 파일 설명자를 만들 수 없습니다. 이 문제는 너무 많은 파일이나 파일 설명자가 동시에 열려 있거나 커널의 inotify 하위 시스템이 최대 인스턴스 또는 감시 할당량을 초과한 경우에 발생합니다. 자세한 내용은 man7 웹 사이트에서 inotify를 참조하십시오.
이 문제를 해결하려면 다음 작업을 수행하십시오.
인스턴스 재부팅 또는 재시작
모든 프로세스를 재시작하고 사용 중인 inotify 리소스를 해제하려면 인스턴스를 재부팅하거나 중지하고 시작합니다.
참고: 인스턴스를 중지했다가 시작하면 인스턴스의 퍼블릭 IP 주소가 변경됩니다. 퍼블릭 IP 주소 대신 탄력적 IP 주소를 사용하여 외부 트래픽을 인스턴스로 라우팅하는 것이 가장 좋습니다. Amazon Route 53을 사용하는 경우 퍼블릭 IP 주소가 변경될 때 Route 53 DNS 레코드를 업데이트해야 할 수 있습니다.
인스턴스를 중지하고 시작하기 전에 다음 작업을 수행하십시오.
inotify 할당량 늘리기
재부팅하거나 재시작한 후에도 여전히 문제가 발생하는 경우 다음 단계를 완료하여 인스턴스의 inotify 할당량을 늘리십시오.
- inotify 할당량을 확인하려면 다음 명령을 실행합니다.
cat /proc/sys/fs/inotify/max_user_watches
cat /proc/sys/fs/inotify/max_user_instances
참고: 기본적으로 max_user_watches는 8192이고 max_user_instances는 128입니다.
- 최대 할당량 값을 일시적으로 늘리려면 다음 명령을 실행합니다.
sudo sysctl fs.inotify.max_user_watches=newwatchesquota
sudo sysctl fs.inotify.max_user_instances=newinstancesquota
참고: newwatchesquota를 max_user_watches의 새 할당량으로 바꾸고 newinstancesquota를 max_user_instances의 새 할당량으로 바꾸십시오. 위 명령은 다음에 인스턴스를 재부팅할 때까지 할당량을 업데이트합니다. 먼저 임시 변경을 통해 업데이트된 값을 테스트하는 것이 가장 좋습니다.
- 할당량 업데이트를 영구적으로 적용하려면 /etc/sysctl.conf 파일에 다음 파라미터를 추가합니다.
echo "fs.inotify.max_user_watches = newwatchesquota" >> /etc/sysctl.d/20-fs-inotify.conf
echo "fs.inotify.max_user_instances = newinstancesquota" >> /etc/sysctl.d/20-fs-inotify.conf
참고: newwatchesquota를 max_user_watches의 새 할당량으로 바꾸고 newinstancesquota를 max_user_instances의 새 할당량으로 바꾸십시오.
- 변경 사항을 적용하려면 인스턴스를 재부팅하십시오.
참고: 인스턴스를 수정한 후 시스템 성능을 모니터링하여 업데이트된 할당량이 시스템 요구 사항에 맞는지 확인하는 것이 가장 좋습니다.
관련 정보
Session Manager를 사용하여 Amazon EC2 인스턴스에 연결할 수 없는 이유는 무엇입니까?
Amazon EC2 인스턴스에서 Amazon EBS 볼륨을 늘린 후 Linux 파일 시스템을 확장하려면 어떻게 해야 합니까?