пятница, 3 мая 2013 г.

Установка NFS сервера на Debian Squeeze

Добрый день.

Появилась необходимость настроить сервер для бекапов. Был взят такой сервер: , и в нем два винта по 1 TB. Из дисков был сделан raid1 и поверх lvm, как это сделать во время установки дистрибутива написано прекрасно тут: тыц.

1. Подготовка

В Debian из коробки не установлена утилита sudo, а так как мы хотим работать "по правилам" необходимо установить эту прекрасную утилиту.

Так как во время установки, у меня не захотела сеть подхватываться по DHCP пришлось вручную запросить данные:
# su
Вводим пароль и заходим под рута:
# dhclient eth1 (тут выбирайте свои сетевые адаптеры сами, у меня на сервере их всего 3)
По DHCP был получен адрес: 192.168.1.182 (адрес сервера).

Если мы устанавливали не с помощью netinstaller'a, а с диска или флешки, то в /etc/apt/sources.list у нас будет прописан дисковод, нужно это сразу исправить, в источниках будет прописан только дисковод.
# nano /etc/apt/sources.list
И приводим к такому виду:
deb http://security.debian.org/ squeeze/updates main contrib
deb-src http://security.debian.org/ squeeze/updates main contrib

deb http://ftp.ua.debian.org/debian/ squeeze main contrib
deb-src http://ftp.ua.debian.org/debian/ squeeze main contrib

Про main, contrib, non-free можно почитать тут: тыц .

Я выставил себе Украинское зеркало пакетов Debian, если нужны другие зеркала, вот список для всех стран: http://4debian.info/repository/official/ .

Теперь обновим список доступных пакетов:
# apt-get update
Обновим установленное ПО:
# apt-get upgrade
Установим утилиту sudo:
# apt-get install sudo

Теперь нужно разрешить нашему пользователю выполнять любые команды (как суперпользователь):
# sudo visudo
и после записи:
root ALL=(ALL) ALL
добавляем:
username ALL=(ALL) ALL
где username имя вашего пользователя

Cменим суперпользователя на нашего пользователя и в дальнейшем будем работать, через команду sudo.
# su username

Настроим сеть, что бы после каждого ребута не запрашивать IP у DHCP сервера:
# sudo nano /etc/network/interfaces

и добавляем:
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet dhcp

Перезагрузим сетевой демон:
# sudo /etc/init.d/networking restart

2. Установка сервера

Установим необходимые пакеты для NFS-сервера:
# sudo apt-get install nfs-kernel-server nfs-common portmap
nfs-kernel-server - Поддержка NFS-сервера на уровне ядра;
nfs-common - Общие файлы для клиента и сервера NFS;
portmap - Механизм отображения портов для удаленного вызова процедур (RPC).

Создадим каталог, куда будем складывать наши бекапы (так как под директорию /home я выделил окало 900 GB, то будем использовать его):
# sudo mkdir /home/backup

Откроем файл конфигурации экспортируемых файловых систем:
# sudo nano /etc/exports

И записываем примерно такую строку:
/home/backup 192.168.0.0/16(rw,sync,no_subtree_check)

/home/backup - директория, которую будем расшаривать (экспортировать);
192.168.0.0/16 - разрешаем доступ к серверу со всех узлов из сети 192.168.*.*;
rw - разрешаем чтение и запись;
sync - синхронный режим работы. ответы на запросы происходят только после того, как данные надежно будут записаны на диск;
no_subtree_check - Если экспортируется подкаталог файловой системы, но не вся файловая система, сервер проверяет, находится ли запрошенный файл в экспортированном подкаталоге.
Будьте очень осторожны с пробелами!!!

Полезные ссылки по файлу /etc/exportsтут и особенно тут.

Что бы применить данные настройки на "лету":
# sudo exportfs -a

Посмотреть, что мы экспортируем можно командой:
# sudo exportfs
и увидим:
/home/backup 192.168.0.0/16

3. Установка клиента

Установим необходимые пакеты на клиенте:
# sudo apt-get install nfs-common portmap
Создадим директорию, куда будем подключать диск с сервера:
# mkdir ~/nfs
Примонтируем каталог:
# sudo mount 192.168.1.182:/home/backup ~/nfs

Необходимо проверить, как работает наш NFS, создадим на клиенте несколько файлов и папку:
# cd ~/nfs
# touch file1 file2 ololo
# mkdir testdir

А на сервере посмотрим, появились ли данные файлы:
# cd /home/backup
# ls
И увидим примрено такой вывод:
file file2 ololo testdir

УРА! Теперь у нас есть NFS-сервер и все корректно работает.

Но mount действует ровно до ребута клиента, как же нам решить данную проблему? Есть такой чудесный файл /etc/fstab, где указывается, какие разделы куда монтируются при старте системы. Открываем данный файл и добавляем примерно такую запись:
# sudo nano /etc/fstab
192.168.1.182:/home/backup /home/username/nfs nfs rw,noexec,user,sync,intr 0 0

192.168.1.182:/home/backup - IP-адрес NFS-сервера и путь к директории на сервере;
/home/username/nfs - путь к локальной директории (на клиенте);
nfs - тип файловой системы;
rw - чтение и запись;
noexec - нельзя выполнять программы с данного диска (полезно в качестве безопасности);
user - разрешаем монтировать раздел не только суперпользователю, но и обычному тоже;
sync - синхронный режим работы;
intr - если NFS-сервер упадет, соединение разорвется и придется вручную монтировать, эта опция спасает от ручного монтирования, она сама за этим следит;
0 - указывает программе dump, на то, что не надо бекапить эту директорию (обычно не идет в дистрибутивах);
0 - раздел не будет проверяться командой fcsk (утилита, для проверки на ошибки).

Проверим:
# sudo mount ~/nfs

Теперь проверим наличие созданных ранее файлов:
# cd ~/nfs
# ls
И увидим, что все в порядке.

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

Полезности по /etc/fstab: тут и тут.

Комментариев нет:

Отправить комментарий