Підключення Hetzner StorageBox до непривілейованого LXC контенеру Proxmox через Samba (smb, cifs)

Я гадаю, треба пояснити навіщо це.

Odoo зберігає бінарні файли (attachments) в окремій директорії, а не в базі даних. Це дуже добре, оскільки
1. не збільшує базу до розмірів галактики,
2. можна керувати окремо від самої бази.

Швидкість доступу до бінарних файлів не має суттєвого впливу на роботу системи і може бути суттєво нижчою за швидкість роботи з базою даних. А якщо у вас файлів багато (наприклад, пару сотень гігабайт, ну або хочаб 50 Гб, як в моєму випадку), є бажання перенести їх з дорогого, але малоємного SSD на інший носій. Напрошується варіант з HDD, але можна піти далі і підключити мережеве сховище.

Тут я розглядатиму Hetzner StorageBox і його проблеми. Почнемо зі створення субаккаунту. Пару причин, чому слід використовувати субаккаунти:
1. Якщо ви забудете глобальний пароль до сховища, вам не потрібно буде міняти налаштування підключення, бо там використовується пароль від субаккаунту.
2. Субаккаут має доступ лише до своєї директорії, таким чином можна в одне сховище складати файли з різних серверів.


Далі обераємо параметри субаккаутну: диркеторію та дозвіл на підключення через Samba




Логін, а особливо пароль записуєму, бо він нам знадобиться ще


 Тут слід поястини, як монтувати сховище через глобальний аккаут і через субаккаунт. 

Команда підключені до сховища через глобальний аккаунт

sudo mount -t cifs -v --verbose -o user=u123456,password=mypassword //u123456.your-storagebox.de/backup /mnt


Тут важливо зауважити, що назва сервера включає ім'я користувача, а також обов'язково має бути вказано ім'я ресурсу backup.

Команда підключені до сховища через глобальний субаккаунт

sudo mount -t cifs -v --verbose -o user=u123456-sub1,password=mypassword2 //u123456-sub1.your-storagebox.de/u123456-sub1 /mnt 

Зауважимо, що ім'я сервера включає ім'я субаккаунт, а назва ресурсу співпадає з іменем субаккауту.

На цьому проста частина завершується і починаються складності. Причиною їх є те, що Proxmox не дозволяє монтувати cifs в непривелійований контейнер LXC. 

Цю проблему вирішуємо в два кроки:
1. Монтуємо сховище в хост машину
2. Монтуємо директорію в контейнер

Всі інші варіанти не спрацювали, отдже переходимо до першого кроку

В контейнері створюємо диркеторію

sudo mkdir /mnt/sub1

Переходимо до хост машини

mkdir /media/sub1

sudo nano /etc/fstab

і прописуємо параметри підключення

//u123456-sub1.your-storagebox.de/u123456-sub1 /media/sub1 cifs auto,rw,vers=3.0,user=u123456-sub1,password=mypassword2,uid=100000,gid=100000 0 0

Зупиняємо контейнер ...

Переконуємось, що контейнер зупинено і додаємо точку монтажу в контейнер

pct set 101 -mp0 /media/sub1,mp=/mnt/sub1

Перевіряємо, що вийшло

cat /etc/pve/lxc/101.conf  | grep mp0

Монтування прописано, запускаємо машину і заходимо

ll /mnt/sub1


Перевіряємо можливість запису

sudo touch /mnt/sub1/testfile

Тут у нас все працює. Але нашою проблемою є те, що створювати треба від імені користувача odoo

sudo -u odoo touch /mnt/sub1/testfile2

Що ж, будемо вирішувати цю проблему. Для початку вимикаємо контейнер. Заходимо в хосту систему і монтуємо файлову систему контейнеру

pct mount 101

ll /var/lib/lxc/140/rootfs/opt/odoo


Це ID користувача та групи, які нам потрібно прописати, щоб в сховище можна було писати від імені користувача odoo, відмонтовуємо директорію правимо fstab і монтуємо заново

umount /media/sub1

sudo nano /etc/fstab

//u123456-sub1.your-storagebox.de/u123456-sub1 /media/sub1 cifs auto,rw,vers=3.0,user=u123456-sub1,password=mypassword2,uid=100109,gid=100115 0 0

mount -a

pct unmount 101

Запускаємо контейнер і перевіряємо

ll /mnt/sub1/



Тепер можемо перенести з директорії /opt/odoo/data/ на /mnt/sub1 та зробити символічне посилання, що не переналаштовувати odoo

Підключення Hetzner StorageBox до непривілейованого LXC контенеру Proxmox через Samba (smb, cifs)
Володимир Карабанов 10 вересня, 2023
Поділитися цією публікацією
Теги
Архів
Видалення дублікатів перекладів