Automount afuse

Я хотів розповісти про своє відкриття afuse — автомонтирование файлових систем на вимогу, автоматично.

Хіба не здорово просто зробити:
ls /mnt/remote/web.example.com/var/lib/www/

і відразу побачити файли web-сервера, ніяк не встановлюючи за ним з'єднання спеціально?

Я цим користуюся вже давно, а головне:
  • Це працює з будь-якого джерела: Не важливо, робите ви зазначений висновок в консолі, зберегли посилання в MC або переходите з favorites вашого улюбленого менеджера такого як nautilus або dolphin
  • Ви можете переходити на будь-який хост, куди у вас є доступ по ключам (налаштувати запит пароля теж можна, але це не цікаво)
  • Ви можете запросто вказати під яким користувачем входити на сервер, традиційно використовуючи @:
    cd /mnt/remote/apache@web.example.com/var/lib/www/
    





Що це і навіщо
Це може використовуватися з різними системам, але зручніше за все звичайно з sshfs. Думаю з нею багато мали справу, це дійсно зручно, але якщо треба походити по віддаленій файловій системі, кожен раз доводиться монтувати її:

sshfs hostname: mountpoint


Це стає вкрай виснажливо коли ви працюєте з сотнею віддалених серверів, особливо коли вам це потрібно (наприклад, щоб швиденько перекинути маленький конфіг-файл з одного віддаленого сервера на інший (а качати великі файли по sshfs і не дуже ефективно, краще використовувати rsync або bbcp).

Afuse проект з відкритим вихідним кодом і сам є fuse файловою системою. Він доступний для більшості сучасних дистрибутивів.

Дуже непогана стаття про його опис, а також налаштування вже була на хабре. Всіх хто перший раз пробує, відправляю туди.

Ми ж, щоб не повторюватися, підемо трохи далі.


Єдине хотілося зауважити, що для дистрибутивів, що базуються на RPM (Fedora, CentOS, RHEL, Scientific Linux...) вам потрібно використовувати yum/dnf:
dnf install afuse

Використовуйте yum замість dnf на більш старих системах, таких як CentOS.

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

Afuse automount
Думаю що ви вже погралися і вам сподобалося монтування sshfs нальоту. Ось тільки у вищезгаданій статті вказано ну дуже кривий спосіб монтування самого afuse. Вважаю що у вас теж залишився осад: «Як же так, файлову систему, монтирующую інші файлові системи, потрібно кожен раз монтувати вручну!?»

Ось саме це я і хотів поділитися.
Насправді, всі механізми вже є в системі. Так, раз afuse сама є файловою системою, то чому б не монтувати її стандартним чином з /etc/fstab!?
В принципі це дуже навіть можливо, однак немає прямого способу передати стільки бажаних аргументів.

Тому передбачається створити скрипт-обгортку /usr/sbin/mount.afuse (виклав також як gist кому так зручніше, там же є більш докладний опис його) приблизно такого змісту:
# Mount under user and group which are owners of mount point
su -l $( ls -dl "$2" | cut -d' ' -f3) -c "afuse -o mount_template='sshfs -o reconnect -o auto_cache -o kernel_cache %r:/ %m' -o unmount_template='fusermount -u -z %m' -o auto_unmount '$2'"


Не забуваємо зробити його испольняемым:
chmod +x /usr/sbin/mount.afuse


Все, тепер ми готові додати нову системну точку монтування у /etc/fstab:
afuse# /mnt/remote afuse auto 0 0

Все, тепер навіть після перезавантаження системи afuse примонтирована, а всі з'єднання з віддаленими хостами будуть автоматично відновлені, якщо якісь програми працювали з віддаленими файлами такими шляхами. Не буде помилок що щось не доступно.

Зрозуміло точку монтування ви можете змінити за своїм бажанням, може щось типу /remote. Не забудьте тільки створити директорію.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.