Как использовать хранилище «Instance Store Volumes» в Amazon EC2?


18

Согласно AWS я получил 850 ГБ хранилища с сервером Medium EC2. Но когда я создаю Amazon Linux AMI, я не могу использовать предоставленные 850 ГБ.

При его создании в разделе «Конфигурация устройства хранения в томах хранилища экземпляров» отображается, что его устройство будет находиться в / dev / sdb, но когда я запускаю виртуальную машину, я просто нахожу / dev / sda1.

Можете ли вы помочь мне в установке этого хранилища? Спасибо

Кроме того, когда Amazon утверждает, что хранилище экземпляров небезопасно для длительного использования и предпочитает использовать EBS, тогда какой смысл в этих 850 ГБ?

Благодарность


Какой конкретный тип экземпляра вы пытаетесь запустить? c1.medium? m1.medium? что-то другое?
Эрик Хаммонд

1
Вот два полезных ресурса для изучения хранилища экземпляров в EC2: docs.amazonwebservices.com/AWSEC2/latest/UserGuide/… и docs.amazonwebservices.com/AWSEC2/latest/UserGuide/…
Эрик Хаммонд,

Ответы:


10

Использование локального хранилища экземпляров, которое не является постоянным при остановке экземпляра, довольно просто: это очень большой кусок пространства, полезный для переходных процессов. Они являются идеальной целью для монтирования /tmpи чрезвычайно полезны, если ваш сервер временно обрабатывает очень большие файлы.

Например, если вы собирали группу экземпляров для преобразования голоса в текст выгруженных видеофайлов, локальное хранилище экземпляров было бы именно тем, на что вы хотите поместить файлы в процессе. Он может находиться там в течение нескольких часов, пока файл обрабатывается, но как только он будет готов, его можно удалить, а другой заняться. Для этого вам не нужен EBS, и гораздо дешевле запускать такого рода хранилища вне локального экземпляра, чем в EBS.

Локальное хранилище экземпляров предназначено для использования в качестве промежуточного пространства для выполнения обработки, а не для длительного хранения. Если ваша рабочая нагрузка не использует пустое место для чего-либо, или то, что ей нужно, настолько мало, что не имеет существенного значения, тогда это не подходит для вас.


16
Эфемерное хранилище или хранилище экземпляров сохраняется при перезагрузке экземпляра! Он не сохраняется ни при останове / запуске, ни при завершении, ни при каких-либо аппаратных сбоях. Вот статья, которую я написал о разнице между перезагрузкой и остановкой / запуском: alestic.com/2011/09/ec2-reboot-stop-start
Эрик Хаммонд,

27

Если он еще не смонтирован, например, в / mnt, и если у него нет уже созданной файловой системы, выполните:

  1. Проверьте имя устройства

    sudo fdisk -l

  2. Сделайте каталог, куда вы хотите смонтировать том

    судо мкдир / минт

  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
Эрик Хаммонд,

@ Комментарий Эрика Хаммонда был действительно ответом на мои поиски - я их нигде не видел - даже в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 и запустить его как root в службе запуска.

#!/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может соответствовать несколько строк - так Мощь скрипта в некоторых случаях установить или МКФС неправильного диска.
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.

Некоторые изображения будут использовать все доступные ресурсы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.