Я настроил контейнер PostgreSQL Docker. Есть около 360 ГБ CSV-файлов, которые я хочу импортировать в базу данных PostgreSQL. Моя ОС (Ubuntu 18.04.3 LTS) и движок Docker (19.03.1 Community Edition) работают на SSD объемом 250 ГБ. Я хочу хранить файлы данных базы данных PostgreSQL на внешнем жестком диске емкостью 1 ТБ, который подключается к системе как USB-накопитель. Я установил две директории на внешнем жестком диске и другую директорию на SSD как тома контейнера. Это часть моего docker-compose.yml
:
volumes:
# /media/abdollah/pg/ is the external HDD path
- /media/abdollah/pg/data:/var/lib/postgresql/data
- /media/abdollah/pg/csv:/root/csv
# /home/abdollah/pg_index is a path on SSD to store indexes
- /home/abdollah/pg_index:/home/pg_index
При первом запуске все в порядке. Я могу получить доступ ко всем файлам /media/abdollah/pg/data
и /media/abdollah/pg/csv
по соответствующим путям изнутри контейнера. Но после перезапуска ОС связанный путь внешнего жесткого диска изменится на /media/abdollah/pg1
. В результате /media/abdollah/pg/csv
больше не доступен изнутри контейнера;то есть выполнение ls /root/csv
как root
пользователя приводит к No such file or directory
. Тем не менее, /media/abdollah/pg/data
остается доступным;то есть я могу получить доступ ко всем его файлам из контейнера по пути: /var/lib/postgresql/data
. Я выяснил, что есть две директории pg
и pg1
в /media/abdollah
, которые являются стандартным путем подключения USB-накопителей. Если я отключу USB-накопитель, каталог pg
останется в /media/abdollah
, поэтому /media/abdollah/pg/data
по-прежнему будет действительным путем в ОС. Следовательно, /var/lib/postgresql/data
остается действительным на контейнере после перезагрузки ОС. Размер /media/abdollah/pg/data
составляет 56 МБ. Как отмечалось выше, размер /media/abdollah/pg/csv
составляет 360 ГБ, а емкость SSD - 250 ГБ, поэтому первый каталог можно скопировать на SSD, который является моим основным жестким диском, а второй - нет. В настоящее время я могу либо изменить docker-compose.yml
после каждой перезагрузки системы в соответствии с новым путем, например /media/abdollah/pg1
, либо перед подключением внешнего жесткого диска, запустить rm -rf /media/abdollah/pg
, а затем подключить внешний жесткий диск к системе, чтобы внешний жесткий диск был подключен к *Снова 1026 *. Есть ли лучшее решение?