Найкращий спосіб запобігти заповненню кореневої системи, коли збіг не працює?


16

У нас є внутрішній веб-сервер (віртуалізований, хостинг ReviewBoard, але не дуже актуальний), і ми маємо відносно послідовний режим відмов, коли невдалі кріплення NFS викликають / заповнюють. Distro - це Ubuntu (не питайте), якщо рішення залежить від іншого розподілу, реалізація буде повільніше.

Резервні копії виконуються в / mnt / backup /, який повинен бути встановлений NFS до іншої системи. На жаль, коли монтаж не вдається або відпадає, резервні копії виконуються в кореневій файловій системі, яка, як ви уявляєте, не займе багато часу, перш ніж / заповниться, і тоді сервіси починають виходити з ладу.

Обговорено ряд можливих рішень.

  1. Контролюйте / mnt / резервні копії та переконайтеся, що це не root. Можливо, робота з крон.

  2. Використовуйте / mnt / protected / резервні копії та спочатку монтуйте / захищайте до невеликої файлової системи, можливо, кріплення циклу до локального файлу, тому набагато менше шансів вийти з ладу.

  3. Chmod a-rwx / mnt / резервне копіювання (точка монтажу кореневої файлової системи). Я не впевнений, чи вдасться встановити над захищеним директором, я думаю, що так і буде.

  4. На встановленому дереві створіть каталог під назвою "Резервні копії", а потім м'яке посилання "ln - s / mnt / backup / Резервні копії / Резервні копії". Використання / резервного копіювання для резервного копіювання не вдасться, якщо не встановлено / mnt / резервного копіювання, оскільки місцеве дерево не містить підкаталога.

  5. Здійснюючи перевірку правильності встановлення каталогу в сценарії резервного копіювання.

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

Відповіді:


13

Номер 5 - Поставте тест у своєму резервному сценарії, щоб переконатися, що каталог встановлено перед продовженням. Сценарій повинен вийти з ладу, якщо кріплення недоступне або присутнє. Або ви можете просто переконатися, що все встановлено до запуску резервної копії.

Спробуйте mountpointкоманду, яка перевіряє, чи вказаний каталог є точкою кріплення:

mountpoint -q /mnt/backups || mount /mnt/backups


Гм, напевно, я додам || echo "Mount / mnt / backup не вдалося" 2> & 1 Або, можливо, просто існують там. У будь-якому випадку, дякую !!!
Петро

22

Найбільш безпечне рішення - зробити точку кріплення непридатною. Це було б ваше рішення №3. Однак є один додатковий крок, який слід виконати. chattr +i /mnt/backups. Це тому, що навіть не маючи дозволів, root все одно зможе записати в каталог. З chattr +i(встановлює непорушний прапор) навіть кореневий файл не може записати на нього. Після того, як кріплення встановлено, дозволи не мають значення, оскільки дозволи матимуть віддалений каталог, а не локальний.


1
Це досить акуратний трюк - ніколи не думав використовувати 'chattr'
warren

1
Я використовую цю техніку у всіх своїх точках кріплення.
3вплив

1
Я спробував це з encfsфайловою системою запобіжників. Це дає помилку:fusermount: user has no write access to mountpoint
ctrl-alt-delor

Це рішення, яке я зазвичай використовую, і я вважаю, що це має бути прийнятою відповіддю.
shodanshok

3

Що сказав ewwhite. Крім того, деякий додатковий моніторинг стану здоров'я базової системи не буде поганою ідеєю.

Щось схоже на Моніт може перевірити, скільки місця залишилось . Якщо ви хочете пройти повний набір на моніторинг системи, ви можете подивитися на Nagios, але Моніт - це невелика вага і буде робити основи.

Оскільки ви використовуєте Ubuntu, Monit вже знаходиться в репо, тому ви можете зробити "sudo apt-get install monit", а потім почніть переглядати файли конфігурації, щоб сказати, щоб він надсилав сповіщення в потрібне місце, відстежував потрібні послуги тощо. Ось короткий посібник .


1

Ось один вкладиш, який можна запустити як cron завдання, він передбачає, що відповідне кріплення знаходиться у fstab:

if mountpoint -q /mnt ; then : ; else mount /mnt ; fi

0

Для більш довгострокового рішення: Не знаю, як це зробити на Ubuntu (я зосереджений на RH) або якщо це варто до цього часу (якщо у вас є лише одна машина), але методологія, яка працює на нас багато років, - це створити окремі логічні томи, файлові системи, навіть групи томів на серверних машинах. Отже, як стандартна практика, ми створюємо логічні томи LVM для /, / tmp. / usr, / usr / local, / opt, / home, / var, swap space та окремий розділ для / boot. Такий підхід ускладнює файлові системи для заповнення та відключення системи. Насправді такий підхід зробить майже неможливим заповнення файлової системи. Ще потрібно дивитися / tmp, / var звичайно. Якщо нам потрібно розмістити дані, то ми створимо для них абсолютно іншу групу томів. Цей підхід має і інші переваги: ​​розширюйте файлові системи за бажанням, переміщуйте їх, створюйте нові тощо.


Тож ваше рішення щодо запобігання заповненню файлової системи, якщо монтажу не вдалося, - це додати більше монтов? Що?
Патрік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.