У меня есть виртуальная машина Azure, на которой работает Postgres в Unix, предоставленная Bitnami: PostgreSQL 9.6.2- 0 (Ubuntu 14.04)
БД работает нормально, и я заполняю ее, но через некоторое время размер БД достигает примерно 25 ГБ, а затем мой код (заполняющий БД) вылетает ...
psycopg2.OperationalError: could not extend file "base/16450/79079": No space left on device
HINT: Check free disk space.
Я думал, что это произойдет. быть простым изменением размера моей виртуальной машины. Нет. Теперь виртуальная машина имеет размер жесткого диска 400 ГБ. Много места.
Затем я попробовал свой код и снова, на 25 ГБ, бум. Нет места.
Следующее, что я сделал, это вошел в виртуальную машину через SSH и проверил диски с помощью df -h
:
Как видно выше, / dev / sda1
- это Размером 30 ГБ, из которых используется 29 ГБ. Я подозреваю, что мой Postgres использует этот жесткий диск ... установлен автоматически, когда я использовал шаблон Bitnami Azure.
Вы можете увидеть жесткий диск емкостью 400 ГБ, который я установил через портал Azure: / dev / sdb1
.
Что я могу сделать? Мне нужно гораздо больше данных, чтобы войти в мою базу данных Postgres ... и нет видимого способа изменить размер / dev / sda1
через портал.
Обновление
По запросу, вот содержимое fstab до модификации (по умолчанию): устанавливается автоматически при использовании шаблона Bitnami Azure.
Вы можете увидеть жесткий диск емкостью 400 ГБ, который я установил через портал Azure: / dev / sdb1
.
Что я могу сделать? Мне нужно гораздо больше данных, чтобы войти в мою базу данных Postgres ... и нет видимого способа изменить размер / dev / sda1
через портал.
Обновление
По запросу, вот содержимое fstab до модификации (по умолчанию): устанавливается автоматически при использовании шаблона Bitnami Azure.
Вы можете увидеть жесткий диск емкостью 400 ГБ, который я установил через портал Azure: / dev / sdb1
.
Что я могу сделать? Мне нужно намного больше данных для входа в мою базу данных Postgres ... и нет видимого способа изменить размер / dev / sda1
через портал.
Обновление
По запросу, вот содержимое fstab до модификации (по умолчанию):
Я изменил / mnt
на / opt / bitnami / postgresql / data
(согласно пути: https://stackoverflow.com/a/8237512/596841 ). Когда я обновил, сохранил, вышел и перезагрузил сервер, он вернулся к значениям по умолчанию (как показано выше).
Проще всего смонтировать / dev / sdb1 туда, где находятся ваши данные. Как узнать, где находятся данные: ( https://stackoverflow.com/questions/1137060/where-does-postgresql-store-the-database )
Итак, как только вы узнаете, что остановите свою базу данных и переместите данные в ваш каталог / mnt.
Затем вы поместите больший диск туда, где он должен быть, чтобы postgres его увидел.
umount /dev/sdb1
mount /dev/sdb1 /original/path/to/data
Теперь вам, вероятно, потребуется обновить / etc / fstab с / mnt до / original / path / to / data, чтобы он будет сохраняться после перезагрузки.
Вы также можете использовать LVM и сделать это: https://kb.vmware.com/selfservice/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=1006371
I лично считаю, что метод крепления самый простой.
Теперь виртуальная машина имеет размер жесткого диска 400 ГБ
/ dev / sdb1
- это временное хранилище , это временное хранилище должно не ] использоваться для хранения данных, которые вы не хотите терять. (при перезагрузке временные данные будут утеряны)
Мне нужно гораздо больше данных для входа в мою базу данных Postgres
Мы можем использовать портал Azure, чтобы добавить новый диск к этой виртуальной машине, а затем подключить этот диск к этой виртуальной машине.
Добавьте новый диск через портал Azure:
Подключите / dev / sdc
к виртуальной машине Azure:
root@jasonvm:/home/jason# fdisk -l #list all disks
Disk /dev/sdc: 429.5 GB, 429496729600 bytes #we can find this new disk
255 heads, 63 sectors/track, 52216 cylinders, total 838860800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Затем используйте эту команду для подключения этого диска к виртуальной машине Azure:
root@jasonvm:/home/jason# mkfs.ext4 /dev/sdc
root@jasonvm:/home/jason# mkdir -p /mnt/point1
root@jasonvm:/home/jason# mount /dev/sdc /mnt/point1
root@jasonvm:/home/jason# df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 1.7G 12K 1.7G 1% /dev
tmpfs tmpfs 344M 348K 344M 1% /run
/dev/sda1 ext4 30G 873M 28G 4% /
none tmpfs 4.0K 0 4.0K 0% /sys/fs/cgroup
none tmpfs 5.0M 0 5.0M 0% /run/lock
none tmpfs 1.7G 0 1.7G 0% /run/shm
none tmpfs 100M 0 100M 0% /run/user
/dev/sdb1 ext4 50G 52M 47G 1% /mnt
/dev/sdc ext4 394G 71M 374G 1% /mnt/point1
root@jasonvm:/home/jason# blkid # list UUID
/dev/sr0: LABEL="rd_rdfe_stable.161107-1031" TYPE="udf"
/dev/sda1: LABEL="cloudimg-rootfs" UUID="ce8fdc9c-fa56-49db-b69d-8c11634cbb7a" TYPE="ext4"
/dev/sdb1: UUID="b0531bb0-dadf-4e20-a968-bd177989f7b8" TYPE="ext4"
/dev/sdc: UUID="46c75dcc-51c8-4d53-8535-d4fc7bf3a5cb" TYPE="ext4"
root@jasonvm:/home/jason# vi /etc/fstab # add UUID to fstab,
# CLOUD_IMG: This file was created/modified by the Cloud Image build process
UUID=ce8fdc9c-fa56-49db-b69d-8c11634cbb7a / ext4 defaults,discard 0 0
/dev/disk/cloud/azure_resource-part1 /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
UUID=46c75dcc-51c8-4d53-8535-d4fc7bf3a5cb /mnt/point1 ext4 defaults,nofail 0 0
Примечание :
мы должны добавить этот диск в / etc / fstab
, таким образом, после перезагрузки этой виртуальной машины мы не потеряем соединение с этим диском.
После подключения нового диска к виртуальной машине Azure измените data_directory
, мы можем выполнить следующие шаги:
Отредактировать data_directory в postgresql.conf
, чтобы он указывал на новое местоположение (например, /mnt/point1/postgresql/9.3/main
])
Перенос содержимого каталога данных PG в / mnt / point1
через sudo rsync -av / opt / bitnami / postgresql / data / mnt / point1
Перезапуск posgtesql.