MJay

i3.instance 의 /dev/nvme0n1에 mount하기 본문

Cloud Computing/Spark

i3.instance 의 /dev/nvme0n1에 mount하기

MJSon 2017. 11. 30. 19:05
Edit

i3.instance 의 /dev/nvme0n1에 mount하기

일단 개념부터 -> 마운트

현재 접근가능한 파일시스템에 추가적인 파일시스템을 붙이는 일
스토리지를 사용하기 위해 장치와 디렉토리[1]를 연결하는 작업
저장장치[2]에 접근할 수 있는 경로를 디렉토리 구조에 편입시키는 작업

마운트 포인트[편집]

장치가 연결되는 디렉토리


[root@zetawiki ~]# mount | grep ^/dev
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
/dev/vda1 on /boot type ext3 (rw)
→ /dev/mapper/VolGroup00-LogVol00 의 마운트 포인트: /
→ /dev/vda1 의 마운트 포인트: /boot

i3 instance의 특징

with super-efficient NVMe SSD storage, these instances can deliver up to 3.3 million IOPS at a 4 KB block and up to 16 GB/second of sequential disk throughput.

NVMe

Non-Volatile Memory Express
비휘발성 기억장치 익스프레스

600MB/s의 최고 전송 속도를 가지는 SATA 3과 비교하면 PCIe위에서 동작하므로 기가 이상의 대역폭은 쉽게 구현한다. 일반 사용자 용으로 발매된 인텔의 750은 2400MB/s, 삼성의 950 Pro는 2500MB/s의 최고 전송속도를 자랑한다. 또한, 1개의 큐에 32개의 명령 만을 저장할 수 있는 AHCI와는 다르게 64K개의 큐에 각 큐당 64K개의 명령어를 저장할 수 있어 랜덤 읽기/쓰기 속도 또한 SATA에 비교하여 월등히 빠르다. 더불어 PCIe를 통하여 CPU에 직결되는 구조인 만큼 지연시간이 SATA의 절반 이하로 줄어든다. 이외에는 병렬화(멀티코어) 적극지원 등이 있지만 개인 사용자에겐 미래에나 와닿는 내용이 될 것이다. 기업용 시장에는 4TB 용량에 읽기 5GB/s, 쓰기 3GB/s를 달하는 괴물같은 물건도 있다.

mnt 폴더란

/mnt , /media 디렉토리와 비슷한 용도로 탈부착이 가능한 장치들에 대하여 일시적인 마운트포인트로 사용하는 디렉토리.

i3.instance에서 기본적으로 고속 스토리지 기기를 spark-local-dirs(/mnt/spark)로 안쓰고 있음

df - h 를 통해 확인 가능

mount 정보를 통해서도 확인 가능

NVMe가 존재는 하는지 확인하고 싶을 때

fdisk -l

하드 디스크는 2개가 있다는 걸 알수가 있다.

비교할겸 r4.instance에서 확인 할 경우

disk 1개만 있다.emphasized text

시도해본 케이스

1.local_dir_spark를 바꿔봤지만

1../spark-ec2 –instance-type=i3.large –region=us-west-2 –spark-version=2.2.0 -k kmu-bigdata-abc2 –spark-local-dirs=”/dev/nvme0n1/mnt/spark” –no-ganglia -i ~/.ssh/kmu-bigdata-abc2.pem -s 1 launch i3-l-spark

Absolute Path를 넣으면 된다고 했는데 되지 않았다.

  1. 아니면 평소처럼 spark-ec2를 실행해서
    ln -s /dev/nvme01/spark /mnt/spark 도 해봤지만 되지 않는다.

문제 ->NVMe는 자동으로 마운트 되지가 않는다, NVMe 는 Instance Storage Volume이다.

amazon web services - Mounting a NVME disk on AWS EC2 - Stack Overflow

The NVMe SSD on the i3 instance class is an example of an Instance Store Volume, also known as an Ephemeral [ Disk | Volume | Drive ]. They are physically inside the instance and extremely fast, but not redundant and not intended for persistent data… hence, “ephemeral.
따로 mount 해줘야한다.

i3.8xlarge 돌릴 경우

얘는 여러개의 NVMe0을 가지고있어서 합쳐주는게 좋다
출처 - Configuring Software Raid on Amazon Linux – DevOps Complete

1. #!/usr/bin/env bash
2.mkdir -p /data
3.mdadm --create --verbose --level=0 /dev/md0 --name=DATA --raid-devices=4 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
4.mdadm --wait /dev/md0
5.mkfs.ext4 /dev/md0
6.mdadm --detail --scan >> /etc/mdadm.conf
7.dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
8.echo /dev/md0 /data ext4 defaults,nofail,noatime,discard 0 2 >> /etc/fstab
9.mount -a

spark-ec2 돌릴 때 command

1.
2./spark-ec2 --instance-type=i3.large --region=us-west-2 --spark-version=2.2.0 -k kmu-bigdata-abc2 --no-ganglia --user-data='/Users/mj/Documents/user-data' -i ~/.ssh/kmu-bigdata-abc2.pem -s 1 launch i3-l-spark
3.
4.
5.//user-data 형태 는
6.#!/usr/bin/env bash
7.
8.mkfs.ext4 /dev/nvme0n1
9.bash -c 'echo /dev/nvme0n1 /mnt ext4 defaults,nofail,noatime,discard 0 2 >> /etc/fstab'
10.mount -a
11.

Sanity Checking

Test 할겸 nvme vs without-nvme 경우를 돌려봄

  • node 1
1.run_matmul 10 1000 1000 1000 1 1 1 1
2.run_matmul 10 2000 2000 2000 1 1 1 1
3.run_matmul 10 3000 3000 3000 1 1 1 1

nvme를 쓸 경우가 더 빠름 - 왼쪽이 NVMe를 사용

결과값
experiment/NVMe-compare/

%23%23%23%23%20i3.instance%20%uC758%20/dev/nvme0n1%uC5D0%20mount%uD558%uAE30%0A%0A**%uC77C%uB2E8%20%uAC1C%uB150%uBD80%uD130%20-%3E%20%uB9C8%uC6B4%uD2B8**%0A%3E%uD604%uC7AC%20%uC811%uADFC%uAC00%uB2A5%uD55C%20%uD30C%uC77C%uC2DC%uC2A4%uD15C%uC5D0%20%uCD94%uAC00%uC801%uC778%20%uD30C%uC77C%uC2DC%uC2A4%uD15C%uC744%20%uBD99%uC774%uB294%20%uC77C%0A%uC2A4%uD1A0%uB9AC%uC9C0%uB97C%20%uC0AC%uC6A9%uD558%uAE30%20%uC704%uD574%20%uC7A5%uCE58%uC640%20%uB514%uB809%uD1A0%uB9AC%5B1%5D%uB97C%20%uC5F0%uACB0%uD558%uB294%20%uC791%uC5C5%0A%uC800%uC7A5%uC7A5%uCE58%5B2%5D%uC5D0%20%uC811%uADFC%uD560%20%uC218%20%uC788%uB294%20%uACBD%uB85C%uB97C%20%uB514%uB809%uD1A0%uB9AC%20%uAD6C%uC870%uC5D0%20%uD3B8%uC785%uC2DC%uD0A4%uB294%20%uC791%uC5C5%0A%0A**%uB9C8%uC6B4%uD2B8%20%uD3EC%uC778%uD2B8%5B%uD3B8%uC9D1%5D**%0A%3E%uC7A5%uCE58%uAC00%20%uC5F0%uACB0%uB418%uB294%20%uB514%uB809%uD1A0%uB9AC%0A%3E%21%5BAlt%20text%5D%28./1511694083219.png%29%0A%5Broot@zetawiki%20%7E%5D%23%20mount%20%7C%20grep%20%5E/dev%0A/dev/mapper/VolGroup00-LogVol00%20on%20/%20type%20ext3%20%28rw%29%0A/dev/vda1%20on%20/boot%20type%20ext3%20%28rw%29%0A%u2192%20/dev/mapper/VolGroup00-LogVol00%20%uC758%20%uB9C8%uC6B4%uD2B8%20%uD3EC%uC778%uD2B8%3A%20/%0A%u2192%20/dev/vda1%20%uC758%20%uB9C8%uC6B4%uD2B8%20%uD3EC%uC778%uD2B8%3A%20/boot%0A%0A**i3%20instance%uC758%20%uD2B9%uC9D5**%0A%3Ewith%20super-efficient%20NVMe%20SSD%20storage%2C%20these%20instances%20can%20deliver%20up%20to%203.3%20million%20IOPS%20at%20a%204%20KB%20block%20and%20up%20to%2016%20GB/second%20of%20sequential%20disk%20throughput.%20%0A%0A**NVMe**%0A%0A%3ENon-Volatile%20Memory%20Express%0A%3E%uBE44%uD718%uBC1C%uC131%20%uAE30%uC5B5%uC7A5%uCE58%20%uC775%uC2A4%uD504%uB808%uC2A4%0A%0A%3E600MB/s%uC758%20%uCD5C%uACE0%20%uC804%uC1A1%20%uC18D%uB3C4%uB97C%20%uAC00%uC9C0%uB294%20SATA%203%uACFC%20%uBE44%uAD50%uD558%uBA74%20PCIe%uC704%uC5D0%uC11C%20%uB3D9%uC791%uD558%uBBC0%uB85C%20%uAE30%uAC00%20%uC774%uC0C1%uC758%20%uB300%uC5ED%uD3ED%uC740%20%uC27D%uAC8C%20%uAD6C%uD604%uD55C%uB2E4.%20%uC77C%uBC18%20%uC0AC%uC6A9%uC790%20%uC6A9%uC73C%uB85C%20%uBC1C%uB9E4%uB41C%20%uC778%uD154%uC758%20750%uC740%202400MB/s%2C%20%uC0BC%uC131%uC758%20950%20Pro%uB294%202500MB/s%uC758%20%uCD5C%uACE0%20%uC804%uC1A1%uC18D%uB3C4%uB97C%20%uC790%uB791%uD55C%uB2E4.%20%uB610%uD55C%2C%201%uAC1C%uC758%20%uD050%uC5D0%2032%uAC1C%uC758%20%uBA85%uB839%20%uB9CC%uC744%20%uC800%uC7A5%uD560%20%uC218%20%uC788%uB294%20AHCI%uC640%uB294%20%uB2E4%uB974%uAC8C%2064K%uAC1C%uC758%20%uD050%uC5D0%20%uAC01%20%uD050%uB2F9%2064K%uAC1C%uC758%20%uBA85%uB839%uC5B4%uB97C%20%uC800%uC7A5%uD560%20%uC218%20%uC788%uC5B4%20%uB79C%uB364%20%uC77D%uAE30/%uC4F0%uAE30%20%uC18D%uB3C4%20%uB610%uD55C%20SATA%uC5D0%20%uBE44%uAD50%uD558%uC5EC%20%uC6D4%uB4F1%uD788%20%uBE60%uB974%uB2E4.%20%uB354%uBD88%uC5B4%20PCIe%uB97C%20%uD1B5%uD558%uC5EC%20CPU%uC5D0%20%uC9C1%uACB0%uB418%uB294%20%uAD6C%uC870%uC778%20%uB9CC%uD07C%20%uC9C0%uC5F0%uC2DC%uAC04%uC774%20SATA%uC758%20%uC808%uBC18%20%uC774%uD558%uB85C%20%uC904%uC5B4%uB4E0%uB2E4.%20%uC774%uC678%uC5D0%uB294%20%uBCD1%uB82C%uD654%28%uBA40%uD2F0%uCF54%uC5B4%29%20%uC801%uADF9%uC9C0%uC6D0%20%uB4F1%uC774%20%uC788%uC9C0%uB9CC%20%uAC1C%uC778%20%uC0AC%uC6A9%uC790%uC5D0%uAC90%20%uBBF8%uB798%uC5D0%uB098%20%uC640%uB2FF%uB294%20%uB0B4%uC6A9%uC774%20%uB420%20%uAC83%uC774%uB2E4.%20%uAE30%uC5C5%uC6A9%20%uC2DC%uC7A5%uC5D0%uB294%204TB%20%uC6A9%uB7C9%uC5D0%20%uC77D%uAE30%205GB/s%2C%20%uC4F0%uAE30%203GB/s%uB97C%20%uB2EC%uD558%uB294%20%uAD34%uBB3C%uAC19%uC740%20%uBB3C%uAC74%uB3C4%20%uC788%uB2E4.%20%0A%0A**mnt%20%uD3F4%uB354%uB780**%0A%3E/mnt%20%20%2C%20/media%20%uB514%uB809%uD1A0%uB9AC%uC640%20%uBE44%uC2B7%uD55C%20%uC6A9%uB3C4%uB85C%20%uD0C8%uBD80%uCC29%uC774%20%uAC00%uB2A5%uD55C%20%uC7A5%uCE58%uB4E4%uC5D0%20%uB300%uD558%uC5EC%20%uC77C%uC2DC%uC801%uC778%20%uB9C8%uC6B4%uD2B8%uD3EC%uC778%uD2B8%uB85C%20%uC0AC%uC6A9%uD558%uB294%20%uB514%uB809%uD1A0%uB9AC.%20%0A%0A**i3.instance%uC5D0%uC11C%20%uAE30%uBCF8%uC801%uC73C%uB85C%20%uACE0%uC18D%20%uC2A4%uD1A0%uB9AC%uC9C0%20%uAE30%uAE30%uB97C%20spark-local-dirs%28/mnt/spark%29%uB85C%20%uC548%uC4F0%uACE0%20%uC788%uC74C**%0A%0A%3E%20df%20-%20h%20%uB97C%20%uD1B5%uD574%20%uD655%uC778%20%uAC00%uB2A5%0A%21%5BAlt%20text%5D%28./1511693666908.png%29%0A%0A%3E%20mount%20%uC815%uBCF4%uB97C%20%uD1B5%uD574%uC11C%uB3C4%20%uD655%uC778%20%uAC00%uB2A5%0A%0A%21%5BAlt%20text%5D%28./1511693701216.png%29%0A%0A**NVMe%uAC00%20%uC874%uC7AC%uB294%20%uD558%uB294%uC9C0%20%uD655%uC778%uD558%uACE0%20%uC2F6%uC744%20%uB54C**%0A%0A%3Efdisk%20-l%0A%21%5BAlt%20text%5D%28./1511693738119.png%29%0A%3E%uD558%uB4DC%20%uB514%uC2A4%uD06C%uB294%202%uAC1C%uAC00%20%uC788%uB2E4%uB294%20%uAC78%20%uC54C%uC218%uAC00%20%uC788%uB2E4.%0A%0A**%uBE44%uAD50%uD560%uACB8%20r4.instance%uC5D0%uC11C%20%uD655%uC778%20%uD560%20%uACBD%uC6B0**%0A%21%5BAlt%20text%5D%28./1511693768177.png%29%0A%3Edisk%201%uAC1C%uB9CC%20%uC788%uB2E4.*emphasized%20text*%0A%0A%0A%0A%0A%0A%0A**%uC2DC%uB3C4%uD574%uBCF8%20%uCF00%uC774%uC2A4**%0A%3E%201.local_dir_spark%uB97C%20%uBC14%uAFD4%uBD24%uC9C0%uB9CC%20%0A%0A%60%60%60%0A./spark-ec2%20%u2013instance-type%3Di3.large%20%u2013region%3Dus-west-2%20%u2013spark-version%3D2.2.0%20-k%20kmu-bigdata-abc2%20%u2013spark-local-dirs%3D%u201D/dev/nvme0n1/mnt/spark%u201D%20%u2013no-ganglia%20-i%20%7E/.ssh/kmu-bigdata-abc2.pem%20-s%201%20launch%20i3-l-spark%20%0A%60%60%60%0A%3E%20Absolute%20Path%uB97C%20%uB123%uC73C%uBA74%20%uB41C%uB2E4%uACE0%20%uD588%uB294%uB370%20%uB418%uC9C0%20%uC54A%uC558%uB2E4.%0A%21%5BAlt%20text%5D%28./1511694183914.png%29%0A%0A%3E2.%20%20%uC544%uB2C8%uBA74%20%uD3C9%uC18C%uCC98%uB7FC%20spark-ec2%uB97C%20%uC2E4%uD589%uD574%uC11C%20%0A%3Eln%20-s%20/dev/nvme01/spark%20/mnt/spark%20%uB3C4%20%uD574%uBD24%uC9C0%uB9CC%20%uB418%uC9C0%20%uC54A%uB294%uB2E4.%20%0A%0A%0A%0A**%uBB38%uC81C%20-%3ENVMe%uB294%20%uC790%uB3D9%uC73C%uB85C%20%uB9C8%uC6B4%uD2B8%20%uB418%uC9C0%uAC00%20%uC54A%uB294%uB2E4%2C%20NVMe%20%uB294%20Instance%20Storage%20Volume%uC774%uB2E4.**%0A%0A%5Bamazon%20web%20services%20-%20Mounting%20a%20NVME%20disk%20on%20AWS%20EC2%20-%20Stack%20Overflow%5D%28https%3A//stackoverflow.com/questions/45167717/mounting-a-nvme-disk-on-aws-ec2%29%0A%3EThe%20NVMe%20SSD%20on%20the%20i3%20instance%20class%20is%20an%20example%20of%20an%20Instance%20Store%20Volume%2C%20also%20known%20as%20an%20Ephemeral%20%5B%20Disk%20%7C%20Volume%20%7C%20Drive%20%5D.%20They%20are%20physically%20inside%20the%20instance%20and%20extremely%20fast%2C%20but%20not%20redundant%20and%20not%20intended%20for%20persistent%20data...%20hence%2C%20%22ephemeral.%0A%3E%uB530%uB85C%20mount%20%uD574%uC918%uC57C%uD55C%uB2E4.%20%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A**i3.8xlarge%20%uB3CC%uB9B4%20%uACBD%uC6B0**%0A%3E%uC598%uB294%20%uC5EC%uB7EC%uAC1C%uC758%20NVMe0%uC744%20%uAC00%uC9C0%uACE0%uC788%uC5B4%uC11C%20%uD569%uCCD0%uC8FC%uB294%uAC8C%20%uC88B%uB2E4%0A%3E%uCD9C%uCC98%20-%20%5BConfiguring%20Software%20Raid%20on%20Amazon%20Linux%20%u2013%20DevOps%20Complete%5D%28https%3A//blog.devopscomplete.com/configuring-software-raid-on-amazon-linux-422055072814%29%0A%20%0A%60%60%60%0A%20%23%21/usr/bin/env%20bash%0Amkdir%20-p%20/data%0Amdadm%20--create%20--verbose%20--level%3D0%20/dev/md0%20--name%3DDATA%20--raid-devices%3D4%20/dev/nvme0n1%20/dev/nvme1n1%20/dev/nvme2n1%20/dev/nvme3n1%0Amdadm%20--wait%20/dev/md0%0Amkfs.ext4%20/dev/md0%0Amdadm%20--detail%20--scan%20%3E%3E%20/etc/mdadm.conf%0Adracut%20-H%20-f%20/boot/initramfs-%24%28uname%20-r%29.img%20%24%28uname%20-r%29%0Aecho%20/dev/md0%20/data%20ext4%20defaults%2Cnofail%2Cnoatime%2Cdiscard%200%202%20%3E%3E%20/etc/fstab%0Amount%20-a%0A%60%60%60%0A%0A**spark-ec2%20%uB3CC%uB9B4%20%uB54C%20command%20**%0A%0A%60%60%60%0A%0A/spark-ec2%20--instance-type%3Di3.large%20--region%3Dus-west-2%20--spark-version%3D2.2.0%20-k%20kmu-bigdata-abc2%20--no-ganglia%20--user-data%3D%27/Users/mj/Documents/user-data%27%20-i%20%7E/.ssh/kmu-bigdata-abc2.pem%20-s%201%20launch%20i3-l-spark%0A%0A%0A//user-data%20%uD615%uD0DC%20%uB294%0A%23%21/usr/bin/env%20bash%0A%0Amkfs.ext4%20/dev/nvme0n1%0Abash%20-c%20%27echo%20/dev/nvme0n1%20/mnt%20ext4%20defaults%2Cnofail%2Cnoatime%2Cdiscard%200%202%20%3E%3E%20/etc/fstab%27%0Amount%20-a%0A%0A%60%60%60%0A%0A**Sanity%20Checking**%0A%0A%3E%20Test%20%uD560%uACB8%20nvme%20vs%20without-nvme%20%uACBD%uC6B0%uB97C%20%uB3CC%uB824%uBD04%20%0A%3E%20*%20node%201%0A%60%60%60%0Arun_matmul%2010%201000%201000%201000%201%201%201%201%0Arun_matmul%2010%202000%202000%202000%201%201%201%201%0Arun_matmul%2010%203000%203000%203000%201%201%201%201%0A%60%60%60%0A%3E%20nvme%uB97C%20%uC4F8%20%uACBD%uC6B0%uAC00%20%uB354%20%uBE60%uB984%20-%20%uC67C%uCABD%uC774%20NVMe%uB97C%20%uC0AC%uC6A9%0A%21%5BAlt%20text%5D%28./1511697515171.png%29%0A%0A%uACB0%uACFC%uAC12%0A%5Bexperiment/NVMe-compare/%5D%28http%3A//203.246.113.170%3A8891/tree/experiment/NVMe-compare%29%0A%0A