mirror of
https://gitverse.ru/kpa39l/infrastructure.git
synced 2026-09-29 18:15:02 +00:00
61 lines
4.8 KiB
Markdown
61 lines
4.8 KiB
Markdown
# WALKTHROUGH — Infrastructure (капитанский журнал)
|
|
|
|
Хронология работ, команд, решений и ошибок. Цель — воспроизводимость.
|
|
|
|
---
|
|
|
|
## 2026-09-12 — Инцидент: зависший davfs2 (Яндекс.Диск), «не работает systemd»
|
|
|
|
### Симптом
|
|
- Бэкапы на /mnt/yandex-disk не сделались (встали).
|
|
- Любое обращение к /mnt зависает: `ls /mnt`, `ls /mnt/yandex-disk` — висят без ошибки.
|
|
- «systemd не работает»: сервисы не управляются.
|
|
|
|
### Разбор (по шагам)
|
|
1. `grep yandex /proc/mounts` → точка жива: `https://webdav.yandex.ru /mnt/yandex-disk fuse rw,...`
|
|
- Это ручное/скриптовое монтирование, а НЕ systemd unit.
|
|
2. `systemctl status mnt-yandex-disk.mount` → «could not be found». **Причина «сломанного systemd»**: точка смонтирована мимо unit-а, systemd ею не управляет и «не находит» её. Не systemd виноват, а ресурс, которым он пытается управлять.
|
|
3. `ps aux | grep davfs` → демон живой: `/sbin/mount.davfs https://webdav.yandex.ru /mnt/yandex-disk -o rw uid=1000 file_mode=600 dir_mode=700` (процесс). FUSE-соединение есть (/sys/fs/fuse/connections), но запросы не обслуживаются.
|
|
4. `curl -I https://webdav.yandex.ru` → отвечает 302 мгновенно. **Сервер жив, сеть жива — завис только локальный FUSE-мост** (клиент davfs2), а не сервер.
|
|
|
|
### Почему «всё висит»
|
|
FUSE-драйвер, который не обслуживает запросы, не выдаёт ошибку — он молчит. Любой syscall (readdir/stat) к этой точке уходит в FUSE и ждёт ответа; процесс висит, пока ядро не таймаутнет. Отсюда ощущение «зависла вся система»: любой процесс, дотронувшийся до /mnt/yandex-disk, встаёт.
|
|
|
|
### Лечение (данные не теряются — они в облаке)
|
|
```bash
|
|
# 1. Найти PID демона
|
|
ps aux | grep mount.davfs
|
|
# 2. Убить жёстко (-15 демон в подвешенном состоянии не обработает)
|
|
sudo kill -9 <PID>
|
|
# 3. Размонтировать (davfs может ругнуться на пропавший pid — это нормально)
|
|
sudo umount /mnt/yandex-disk
|
|
# 4. Убрать осиротевший pid-файл, чтобы следующий старт был чистым
|
|
sudo rm -f /var/run/mount.davfs/mnt-yandex-disk.pid
|
|
# 5. Проверить, что размонтировано
|
|
grep yandex /proc/mounts # пусто
|
|
# 6. Смонтировать заново (креды из /etc/davfs2/secrets)
|
|
sudo mount.davfs https://webdav.yandex.ru /mnt/yandex-disk \
|
|
-o rw,uid=1000,file_mode=600,dir_mode=700
|
|
# 7. Проверить глубину
|
|
ls /mnt/yandex-disk/projects
|
|
ls /mnt/yandex-disk/obsidian/mozg
|
|
```
|
|
Результат: точка смонтирована, каталоги отвечают мгновенно, данные на месте.
|
|
|
|
### Конфиг монтирования (/etc/fstab)
|
|
```
|
|
https://webdav.yandex.ru /mnt/yandex-disk davfs _netdev,auto,rw,uid=1000,file_mode=600,dir_mode=700 0 0
|
|
```
|
|
Секреты: /etc/davfs2/secrets (root:root 600).
|
|
|
|
### Выводы / правила на будущее
|
|
1. Сетевые диски (WebDAV/SMB/NFS через FUSE) — самое хрупкое звено. Выглядят как папки, но это процессы, которые могут замереть тихо, без логов.
|
|
2. «Не отвечает systemd» = «не отвечает ресурс, которым systemd управляет». Проверять цепочку: сервис → точка монтирования → процесс → сеть.
|
|
3. `curl -I` на источник ДО убийства монтирования — 10 секунд уверенности, что лечим клиента, а не сервер.
|
|
4. Бэкап на сетевой диск — не бэкап. Нужна вторая дверь (или watchdog, который тихо перемонтирует).
|
|
5. Watchdog (открытая задача в TODO): детектор «/mnt/yandex-disk не отвечает > N сек» → тихое перемонтирование, без шума (cron no_agent).
|
|
|
|
### Артефакты
|
|
- Статус: STATUS.md
|
|
- Задачи: TODO.md
|
|
- Пост для блога: (опыт был подготовлен как техноблог-пост в сессии) |