AWS EC2에 EBS COLD HDD(sc1) 볼륨 추가하기

2017. 12. 5. 11:53서버 프로그래밍

AWS에서 RDBMS는 RDS를 이용하여 쉽게 처리가 가능한데, MongoDB는 EC2에 세팅을 해서 사용하고 있다. 문제는 기본적으로 사용하는 SSD기반의 EBS가 비싸다는 것이다. 이를 해결하기 위해 마그네틱 HDD 중에 EBS COLD HDD (sc1)이 s3 수준으로 낮은 비용으로 사용할 수 있다는 것을 알게 되어, COLD HDD를 추가하여 장착하여 MongoDB의 데이터 폴더로 마운트해서 사용하기로 했다.


AWS EBS COLD HDD(sc1) 볼륨 추가 및 EC2에 연결하기

https://blog.itanoss.kr/ko/aws%EC%97%90%EC%84%9C-%ED%95%98%EB%93%9C%EB%94%94%EC%8A%A4%ED%81%AC-%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B0/


AWS 콘솔에서 볼륨 추가하고 EC2에 연결을 하고 나니 다음과 같이 연결된 HDD가 곧바로 확인된다.

$ lsblk

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

xvda    202:0    0   20G  0 disk 

└─xvda1 202:1    0   20G  0 part /

xvdf    202:80   0  500G  0 disk 


새로 추가된 HDD를 확인하고 바로 포맷을 한다.

$ sudo file -s /dev/xvdf

/dev/xvdf: data


$ sudo mkfs -t ext4 /dev/xvdf

mke2fs 1.42.12 (29-Aug-2014)

Creating filesystem with 131072000 4k blocks and 32768000 inodes

Filesystem UUID: def4ac88-aabe-4d65-bd8c-0c669c505c36

Superblock backups stored on blocks: 

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 

4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 

102400000


Allocating group tables: done                            

Writing inode tables: done                            

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done  


$ sudo file -s /dev/xvdf

/dev/xvdf: Linux rev 1.0 ext4 filesystem data, UUID=def4ac88-aabe-4d65-bd8c-0c669c505c36 (extents) (large files) (huge files)



몽고디비의 데이터 파일을 저장하기 위한 폴더를 생성하여 마운트한다.

$ sudo mkdir /data

$ sudo mount /dev/xvdf /data

$ lsblk

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

xvda    202:0    0   20G  0 disk 

└─xvda1 202:1    0   20G  0 part /

xvdf    202:80   0  500G  0 disk /data


부팅시마다 자동으로 마운트 되도록 설정 파일도 수정한다.

$ sudo vi /etc/fstab

:

:

LABEL=cloudimg-rootfs /       ext4     defaults,discard   0   0

/dev/xvdf             /data   ext4     defaults,nofail    0   0


새로 추가된 볼륨으로 몽고디비 데이터 폴더 변경하기


이미 실행중인 몽고디비를 종료하기 위해서 서비스를 중단시키는데, 중단되었다고 나와도 계속 살아 있는 것이 확인된다.

$ service mongod stop

Stopping mongod:                                           [  OK  ]


$ service --status-all

:

mongod (pid 2651) is running...


그래서 몽고디비 클라이언트로 접속을 해서 강제 종료를 하니 몽고디비 서비스가 죽었다고 나온다.

$ mongo

MongoDB shell version v3.4.7

connecting to: mongodb://127.0.0.1:27017

MongoDB server version: 3.4.7

Server has startup warnings: 

2017-10-11T04:19:51.773+0000 I STORAGE  [initandlisten] 

2017-10-11T04:19:51.773+0000 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine

2017-10-11T04:19:51.773+0000 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem

2017-10-11T04:19:52.423+0000 I CONTROL  [initandlisten] 

2017-10-11T04:19:52.423+0000 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.

2017-10-11T04:19:52.424+0000 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.

2017-10-11T04:19:52.424+0000 I CONTROL  [initandlisten] 

> use admin

switched to db admin

> db.shutdownServer();

server should be down...

2017-12-05T02:10:38.797+0000 I NETWORK  [thread1] trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed

2017-12-05T02:10:38.797+0000 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused

2017-12-05T02:10:38.797+0000 I NETWORK  [thread1] reconnect 127.0.0.1:27017 (127.0.0.1) failed failed 

> 

> 

> 

> exit

bye


$ service --status-all

:

mongod dead but subsys locked


그 다음에 몽고디비 서비스를 중단 시키니 제대로 중단이 된다. 

$ service mongod stop

Stopping mongod:                                           [  OK  ]


$ service --status-all

:

mongod is stopped


이제 데이터 폴더와 로그 폴더를 새로 마운트된 HDD로 이동시키고, 그에 맞게 몽고디비 설정 파일을 수정한다.

$ sudo mv /var/lib/mongo /data/db

$ sudo mv /var/log/mongodb /data/log



$ sudo vi /etc/mongod.conf


# mongod.conf


# for documentation of all options, see:

#   http://docs.mongodb.org/manual/reference/configuration-options/


# where to write logging data.

systemLog:

  destination: file

  logAppend: true

  path: /data/log/mongod.log

#  path: /var/log/mongodb/mongod.log


# Where and how to store data.

storage:

  dbPath: /data/db

#  dbPath: /var/lib/mongo

  journal:

    enabled: true

#  engine:

#  mmapv1:

#  wiredTiger:


설정 파일을 수정한 다음, 몽고디비 서비스를 시작한다.

$ sudo service mongod start

Starting mongod:                                           [  OK  ]



http://trend21c.tistory.com/1570

http://pyungyi.blogspot.kr/2013/03/blog-post.html