Как использовать “устройство хранения данных” Объемов Хранилища Экземпляра в Amazon EC2?

Не необходимо использовать массивы в awk поскольку, что Вы делаете. Вы, кажется, не используете запятую как разделителя полей, так как Вы печатаете $0.

AWK может сделать то, что Вы имеете sed и tr выполнение.

Было бы полезно видеть то, на что похожи Ваши данные.

Один подход мог бы быть чем-то вроде этого (хотя это довольно ужасно для взгляда на):

for f in *.html
do
    read -r array1[i] array2[i] array3[i] array4[i] . . . <<< $(
        awk '
            /selector1/ {var1 = $2}
            /selector2/ {split($0,temparray,"<[^>]*>"); split(temparray[2],temparray); var2 = gensub("[[:punct:]]","","g",a[3])}
            /selector3/ {split($0,temparray,"<[^>]*>"); split(temparray[2],temparray); var3 = gensub("[[:punct:]]","","g",a[3])}
            . . .
            END { print var1, var2, var3, var4 . . . }' "$f"
((i++))
done

С выбором массива преобразовывает в нижний индекс в awk сценарии, продиктованном фактическим расположением Ваших данных. Могут быть лучшие подходы, но этот устраняет приблизительно 1 600 000 процессов (20 000 файлов * 20 Вара * 4 процесса/var) от того, чтобы быть порожденным так, чтобы только приблизительно 20 000 (один на файл) были.

Вы не сказали, какие виды времени выполнения Вы получали, но с этой оптимизацией это может быть достаточно быстро, что можно занять время, исследуя проблему в более новой системе.

18
задан 1 October 2012 в 19:31
4 ответа

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

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

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

10
ответ дан 2 December 2019 в 20:21

Если он еще не смонтирован, например, / 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 все в порядке, установив все

    mount -a

27
ответ дан 2 December 2019 в 20:21

Я создал сценарий для 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
1
ответ дан 2 December 2019 в 20:21

Установка хранилища экземпляров также зависит от образа:

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

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

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

0
ответ дан 2 December 2019 в 20:21

Теги

Похожие вопросы