Внешняя метка жесткого диска автоматически изменяется из-за монтирования некоторых его каталогов в качестве тома Docker - PullRequest
0 голосов
/ 23 октября 2019

Я настроил контейнер 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 *. Есть ли лучшее решение?

...