0

사용자 데이터를 cloud-init 프로그램에 제공하여 AWS EC2 인스턴스에서 일부 EBS 볼륨을 포맷하려고합니다. YAML 기반 클라우드 설정 형식이 아닌 쉘 스크립트 형식을 사용하는 것을 선호합니다. 다음은 현재 사용자 데이터 스크립트입니다.AWS Cloud Init로 디스크 포맷

#!/bin/bash 

# Format EBS volumes 
yum install -y xfsprogs 
parted /dev/sdb mktable gpt 
parted -a optimal /dev/sdb mkpart primary xfs 0% 100% 
parted /dev/sdb name 1 p4db 
mkfs -t xfs /dev/sdb1 
xfs_admin -L p4db /dev/sdb1 

여기서/dev/sdb는 시작 마법사를 사용하여 첨부 된 EBS 볼륨을 나타냅니다. 여기 /var/log/cloud-init-output.log에서 로그 출력 :

Information: You may need to update /etc/fstab. 

Information: You may need to update /etc/fstab. 

/dev/sdb1: No such file or directory 
Usage: mkfs.xfs 
/* blocksize */   [-b log=n|size=num] 
/* metadata */   [-m crc=0|1,finobt=0|1] 
/* data subvol */  [-d agcount=n,agsize=n,file,name=xxx,size=num, 
          (sunit=value,swidth=value|su=num,sw=num|noalign), 
          sectlog=n|sectsize=num 
/* force overwrite */ [-f] 
/* inode size */  [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2, 
          projid32bit=0|1] 
/* no discard */  [-K] 
/* log subvol */  [-l agnum=n,internal,size=num,logdev=xxx,version=n 
          sunit=value|su=num,sectlog=n|sectsize=num, 
          lazy-count=0|1] 
/* label */    [-L label (maximum 12 characters)] 
/* naming */   [-n log=n|size=num,version=2|ci,ftype=0|1] 
/* no-op info only */ [-N] 
/* prototype file */ [-p fname] 
/* quiet */    [-q] 
/* realtime subvol */ [-r extsize=num,size=num,rtdev=xxx] 
/* sectorsize */  [-s log=n|size=num] 
/* version */   [-V] 
         devicename 
<devicename> is required unless -d name=xxx is given. 
<num> is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB), 
     xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB). 
<value> is xxx (512 byte blocks). 

/dev/sdb1: No such file or directory 

fatal error -- couldn't initialize XFS library 
Sep 09 18:40:58 cloud-init[2518]: util.py[WARNING]: Failed running /var/lib/cloud/instance/scripts/part-001 [1] 
Sep 09 18:40:58 cloud-init[2518]: cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts) 
Sep 09 18:40:58 cloud-init[2518]: util.py[WARNING]: Running module scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python2.7/dist-packages/cloudinit/config/cc_scripts_user.pyc'>) failed 
Cloud-init v. 0.7.6 finished at Fri, 09 Sep 2016 18:40:58 +0000. Datasource DataSourceEc2. Up 145.89 seconds 

그래서 분명히, parted에 대한 호출이 모두 잘 작동,하지만 mkfs (mkfs.xfs) 및 xfs_admin에 대한 호출 그렇지 않습니다. parted은 문제없이 내/dev/sdb 드라이브를 포맷 할 수 있습니까?하지만 XFS 프로그램은 존재하지 않는다고 생각합니까? 클라우드 초기화 셸 형식을 사용하여 드라이브를 올바르게 파티션 분할하고 포맷하는 방법은 무엇입니까? 어떤 통찰력이라도 대단히 감사합니다!

+0

동일한 설정으로 클라우드 초기화에서 실행되지 않은 새로 부팅 된 인스턴스에서 스크립트가 작동합니까? – Vorsprung

+0

@Vorsprung 비 클라우드 초기화 스크립트로 실행하면 좋은 생각입니다 ... – Rabadash8820

+0

cloud-init 중 LVM 파티션 분할에 관한 몇 가지 문제가 있습니다. 디스크가 때로는 늦게 첨부되기 때문에 수정 단계에서 몇 가지 확인 단계가 추가됩니다. '동안! bash -c 'udevadm 정보/dev/sdb && udevadm 정보/dev/sdb'; 잠을 자다 1; 완료 ' –

답변

0

@ Vorsprung의 의견에 감사 드리며, 문제가 parted으로 전화를 걸고 있음을 깨달았습니다. 이 명령은 사용자 의견을 기다리고있었습니다. 물론 cloud-init 중에는 허용되지 않습니다. parted 호출에 옵션을 추가하면 모든 것이 정상적으로 작동합니다.