วิธีการใช้ที่เก็บข้อมูล“ Instance Store Volumes” ใน Amazon EC2


18

จาก AWS ฉันได้รับพื้นที่จัดเก็บ 850 GB ด้วยเซิร์ฟเวอร์ Medium EC2 แต่เมื่อฉันสร้าง Amazon Linux AMI ฉันไม่สามารถใช้ 850 GB ที่ให้ไว้ได้

ขณะที่สร้างมันจะแสดงในการกำหนดค่าอุปกรณ์เก็บข้อมูลในอินสแตนซ์สโตร์ที่อุปกรณ์นั้นจะอยู่ที่ / dev / sdb แต่เมื่อฉันเริ่มต้น VM ฉันเพิ่งค้นหา / dev / sda1

คุณช่วยฉันติดตั้งที่เก็บข้อมูลนี้ได้ไหม ขอขอบคุณ

นอกจากนี้เมื่อ Amazon อ้างว่าการจัดเก็บอินสแตนซ์นั้นไม่ปลอดภัยสำหรับการใช้งานในระยะยาวและควรเลือกใช้ EBS แล้วประเด็นของ 850 GB นั้นคืออะไร

ขอบคุณ


คุณพยายามเรียกใช้อินสแตนซ์ชนิดใด c1.medium? m1.medium? อื่น ๆ อีก?
Eric Hammond

1
นี่คือสองแหล่งข้อมูลที่ยอดเยี่ยมสำหรับการเรียนรู้เกี่ยวกับการจัดเก็บอินสแตนซ์บน EC2: docs.amazonwebservices.com/AWSEC2/latest/UserGuide/และdocs.amazonwebservices.com/AWSEC2/latest/UserGuide/…
Eric Hammond

คำตอบ:


10

การใช้ที่เก็บข้อมูลอินสแตนซ์โลคัลที่ไม่คงอยู่เมื่ออินสแตนซ์หยุดทำงานนั้นค่อนข้างเรียบง่าย: เป็นพื้นที่ขนาดใหญ่มากที่มีประโยชน์สำหรับสิ่งต่าง ๆ ชั่วคราว นี่เป็นเป้าหมายที่สมบูรณ์แบบสำหรับการติดตั้ง/tmpและมีประโยชน์อย่างมากหากเซิร์ฟเวอร์ของคุณจัดการไฟล์ขนาดใหญ่มาก ๆ

ตัวอย่างเช่นหากคุณกำลังสร้างกลุ่มของอินสแตนซ์เพื่อทำการแปลด้วยเสียงเป็นข้อความของไฟล์วิดีโอที่อัปโหลดที่เก็บอินสแตนซ์ในเครื่องจะเป็นเพียงสิ่งที่คุณต้องการวางไฟล์ที่อยู่ระหว่างดำเนินการ อาจอยู่ที่นั่นสองสามชั่วโมงในขณะที่ไฟล์ถูกประมวลผล แต่เมื่อเสร็จแล้วไฟล์นั้นจะถูกลบและอีกไฟล์หนึ่งจะถูกลบทิ้ง คุณไม่ต้องการ EBS สำหรับสิ่งนั้นและมีราคาถูกกว่ามากในการเรียกใช้พื้นที่เก็บข้อมูลแบบนั้นจากนอกพื้นที่ภายในแทนที่จะเป็น EBS

ที่เก็บข้อมูลภายในอินสแตนซ์นั้นใช้เพื่อเป็นพื้นที่สำหรับการดำเนินการประมวลผลไม่ใช่ที่เก็บข้อมูลระยะยาว หากปริมาณงานของคุณไม่ได้ใช้พื้นที่รอยขีดข่วนสำหรับสิ่งใดหรือสิ่งที่ต้องการมีขนาดเล็กจนไม่สำคัญก็ไม่เหมาะสำหรับคุณ


16
ที่เก็บชั่วคราวหรือเก็บอินสแตนซ์ยังคงมีอยู่ในการรีบูตอินสแตนซ์! มันไม่ได้มีอยู่ในการหยุด / เริ่มหรือการเลิกจ้างหรือความล้มเหลวของฮาร์ดแวร์เช่น นี่คือบทความที่ฉันเขียนถึงความแตกต่างระหว่างการเริ่มระบบใหม่และหยุด / เริ่มต้น: alestic.com/2011/09/ec2-reboot-stop-start
Eric Hammond

27

หากยังไม่ได้ติดตั้งภายใต้เช่น / mnt และหากยังไม่ได้สร้างระบบไฟล์ให้ทำดังนี้:

  1. ตรวจสอบชื่ออุปกรณ์

    sudo fdisk -l

  2. ทำไดเรกทอรีไปยังตำแหน่งที่คุณต้องการเมานต์โวลุ่ม

    sudo mkdir / mnt

  3. สร้างระบบไฟล์ในโวลุ่มของคุณ (ตรวจสอบให้แน่ใจว่าคุณได้เลือกวอลลุ่มที่ถูกต้องเพราะจะสร้างระบบไฟล์ใหม่บนโวลุ่ม)

    sudo mkfs.ext4 / dev / xvdj

  4. เมานต์ระดับเสียง

    sudo mount -t ext4 / dev / xvdj / mnt

  5. หากคุณต้องการคงการเมานต์หลังจากเช่นรีสตาร์ทให้เปิด / etc / fstab และเพิ่มการเมานต์

    echo "/ dev / xvdj / mnt auto noatime 0 0" | sudo tee -a / etc / fstab

  6. ตรวจสอบให้แน่ใจว่าไม่มีสิ่งผิดปกติกับ fstab โดยติดตั้งทั้งหมด

    เมานต์


5
ขึ้นอยู่กับชนิดของอินสแตนซ์ก่อนอื่นคุณต้องแนบไดรฟ์ข้อมูลที่เก็บอินสแตนซ์กับอินสแตนซ์โดยใช้ตัวเลือกการแมปอุปกรณ์บล็อก หากคุณไม่ทำเช่นนี้คุณอาจไม่เห็นอุปกรณ์ภายใต้ / dev
Eric Hammond

ความคิดเห็นของ @ EricHammond เป็นคำตอบสำหรับการค้นหาของฉัน - ฉันไม่เห็นพวกเขาทุกที่แม้แต่ในfdisk -l
Peter V. Mørch

lsblkหากคุณไม่เห็นลองใช้อุปกรณ์
volker238

คำแนะนำเหล่านี้ติดตั้งไดรฟ์ข้อมูลสำหรับฉัน แต่การพยายามเขียนไฟล์ใหม่ลงในโวลุ่มนั้นจะทำให้ "การเข้าถึงถูกปฏิเสธ" ฉันไม่สามารถจัดเรียงสิ่งที่ผิดปกติกับสิทธิ์ ความคิดใด ๆ
MikeB

lsblk -fเป็นวิธีที่ดีที่สุดในการค้นหาดิสก์ไดรฟ์ - โวลุ่มใด ๆ ที่เมาท์จะถูกแสดงพร้อมกับพา ธ พา ธ และแสดงเลเบลสำหรับโวลุ่ม (แนะนำให้ใช้ UUID หรือเลเบลเมื่อติดตั้งระบบไฟล์บน Linux)
RichVel

1

ฉันสร้างสคริปต์สำหรับ Ubuntu ที่สามารถเรียกใช้ตอนเริ่มระบบและหลังจากรอบการเริ่ม / หยุดเนื่องจากในโลกของ AWS สิ่งเหล่านี้เป็นสองสิ่งที่แตกต่างกันมาก เมื่อคุณรีบูตคุณยังคงมีดิสก์ชั่วคราวและสิ่งที่คุณต้องทำคือเมานต์ (/ etc / fstab ควรจัดการสิ่งนี้โดยอัตโนมัติ) แต่เมื่ออินสแตนซ์หยุดทำงานแล้วเริ่มใหม่คุณจะได้รับดิสก์ชั่วคราวที่ไม่ได้ฟอร์แมตใหม่ พร้อมใช้งาน ตราบใดที่คุณมีรายการ / etc / fstab ที่ถูกต้องคุณสามารถเรียกใช้งานได้ตลอดเวลาและจะทำการเมานต์ / จัดรูปแบบอุปกรณ์ตามต้องการ จะใช้พารามิเตอร์ของจุดเชื่อมต่อ แต่หากไม่ได้ระบุไว้จะถือว่า / mnt คุณสามารถเรียกใช้สคริปต์ mount_ephemeral.sh และเรียกใช้เป็นรูทในบริการเริ่มต้น

#!/bin/sh
set -e
mountPoint=${1:-'/mnt'}
rawDevice=$(grep "\s$mountPoint\s" /etc/fstab |cut -f1)
#echo checking $mountPoint on $rawDevice
[ "$rawDevice" = "" ] && { echo -e "$mountPoint not in /etc/fstab"; exit 1; }
mountpoint -q $mountPoint
[  "$?" = "0" ] && { echo -e "$mountPoint mounted"; exit; }
hasFS=$(blkid |grep $rawDevice)
[ ! "$hasFS" = "" ] && { echo -e "$mountPoint has FS:$hasFS"; mount $mountPoint; exit; }
echo initializing $mountPoint on $rawDevice
mkdir -p $mountPoint
mkfs.ext4 $rawDevice
mount $mountPoint
chmod 777 $mountPoint
exit 0

ฉันไม่ต้องการใช้/mntเป็นจุดเมานต์สำหรับไดรฟ์ข้อมูลเนื่องจากการประชุมที่/mnt/fooใช้สำหรับแต่ละไดรฟ์ หากคุณต้องติดตั้งวอลลุ่มอื่นในบางจุด/mnt/barนั่นหมายความว่า/mntจะไม่สามารถถอดวอลลุ่มออกในขณะที่/mnt/barเมานต์ สิ่งgrepนี้เป็นอันตรายหากคุณใช้งาน/mntและมีจุดเชื่อมต่อเช่น/mnt/fooเนื่องจาก/mntสามารถจับคู่หลายบรรทัดได้ดังนั้นสคริปต์ในบางกรณีอาจเมานต์หรือ mkfs ดิสก์ผิด
RichVel

ไม่พบการเมานต์ที่คล้ายกันอื่น ๆ เนื่องจากต้องจับคู่ให้ตรงกันทุกประการ ปัญหาคือช่องว่างที่ใช้ใน fstab ของคุณต้องตรงกับค่าที่ยกมาใน grep ฉันได้รับการปรับปรุงให้ใช้\bแต่ YMMV นี่/mntเป็นเพียงค่าเริ่มต้นที่คุณสามารถเปลี่ยนตัวเองและเป็นเพียงตัวอย่างเท่านั้น นอกจากนี้คุณสามารถส่งผ่านพารามิเตอร์ไปยังสคริปต์และมันจะใช้จุดเชื่อมต่อนั้นแทน ฉันจะเพิ่มในset -eเพื่อให้ความล้มเหลวใด ๆ ยุติสคริปต์ทั้งหมด
DanJGer

การแก้ไข: เปลี่ยนจาก\bเป็น\s
DanJGer

0

การติดตั้งที่เก็บอินสแตนซ์ยังขึ้นอยู่กับภาพด้วย:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/add-instance-store-volumes.html

เมื่อคุณเรียกใช้งานอินสแตนซ์การจับคู่อุปกรณ์บล็อกเริ่มต้นนั้นจัดทำโดย AMI ที่ระบุ หากคุณต้องการปริมาณที่จัดเก็บอินสแตนซ์เพิ่มเติมคุณต้องเพิ่มพวกเขาไปยังอินสแตนซ์ในขณะที่คุณเปิดมัน โปรดทราบว่าคุณยังสามารถละเว้นอุปกรณ์ที่ระบุในการจับคู่อุปกรณ์ AMI บล็อก

รูปภาพบางรูปจะใช้ทรัพยากรที่มีอยู่ทั้งหมด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.