воскресенье, 26 мая 2013 г.

Подготовка диска к использованию

Добрый день.

Ранее я написал заметку: Форматируем диски так, что бы никто не мог восстановить данные , сегодня я хочу рассказать, как такой диск можно подключить к серверу описанному в заметке Установка Proxmox на Debian Squeeze и подготовка к работе с Proxmox API.

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

Подключаем физически диск к серверу, надеюсь тут не возникнет проблем.
Воспользуемся утилитой fdisk, что бы посмотреть все доступные диски, у меня она имеет такой вывод:
# sudo fdisk -l
флаг -l - означает (list) вывести список всех доступных дисков.

Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sda doesn't contain a valid partition table

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7d826b35

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          13      102400    7  HPFS/NTFS
Partition 1 does not end on cylinder boundary.
/dev/sdb2              13       14036   112640000    7  HPFS/NTFS
/dev/sdb3           14036      108853   761618298+   7  HPFS/NTFS
/dev/sdb4   *      108854      121602   102398976   83  Linux

На /dev/sdb у меня 3 раздела под Windows и один раздел под Linux. Мы же будем готовить диск /dev/sda.

2. Создадим раздел.

Что бы создать таблицу разделов на диске /dev/sda воспользуемся утилитой cfdisk:
# sudo cfdisk /dev/sda
Теперь выберем пункт [ New ] для создания новой таблицы разделов и собственно раздел.
Так как мы будем использовать этот диск как дополнительный, то выберем пункт [Logical].
Теперь необходимо задать размер раздела, используем весь диск (250GB).
Видим, что создался логический раздел sda5 с типом Logic и файловой системой Linux и размером 250GB. Что бы выбрать другой тип файловой системы можно воспользоваться пунктом меню [ Type ], мне же подойдет и такой. Теперь надо записать внесенные изменения на диск, выбрав пункт меню [ Write ].
Нас предупреждают о том, что данными действиями мы сотрем всю информацию на диске, но так как у меня там и так ничего нет, то смело соглашаемся введя: yes.
Теперь можем смело выйти из программы выбрав пункт меню [ Quit ].

Необходимо проверить правда ли создался раздел на диске? Опять воспользуемся утилитой fdisk -l:
# sudo fdisk -l

Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       30401   244196001    5  Extended
/dev/sda5               1       30401   244195969+  83  Linux

Видим, что у нас появился раздел /dev/sda5.

3. Форматирование диска

Теперь нам необходимо отформатировать диск под нужную нам файловую систему воспользовавшись утилитой mkfs:
# sudo mkfs -t ext3 /dev/sda5
Видим, что все успешно создалось, теперь мы можем использовать данный диск, но сначала необходимо его примонтировать:

# sudo mkdir /mnt/disk2
Создадим папку для точки монтирования.

# sudo chmod 770 /mnt/disk2
Даем директории все права.

# sudo mount -t ext3 /dev/sda5 /mnt/disk2

Убедимся, что все работает корректно:
# df -h
Видим, что раздел /dev/sda5 успешно примонтировался в каталог /mnt/disk2.

4. Автоматическое монтирование 

Так же сразу необходимо отредактировать файл /etc/fstab, что бы каждый раз вручную не монтировать:
# sudo nano /etc/fstab
Добавляем строку:
/dev/sda5       /mnt/disk2      ext3    default 0       0

И радуемся жизни


Полезная ссылка, всегда раньше ей пользовался - тыц


понедельник, 20 мая 2013 г.

Форматируем диски так, что бы никто не мог восстановить данные

Добрый день.

Сегодня понадобилось форматнуть неиспользуемые диски так, что бы никто не смог восстановить с них данные. Будем это делать с помощью прекрасной и в то же время опасной утилитой dd.

Сначала определим нужный нам диск:
# sudo fdisk -l

Интересующий меня диск называется /dev/sda:
# sudo dd if=/dev/zero of=/dev/sda bs=4k 

if - источник, берем псевдоустройство, которое вырабатывает нули
of - приемник, наш диск
bs - размер блока
Данная операция требует довольно много времени, но оно того стоит.

Вывод будет примерно таким:
dd: writing `/dev/sda': No space left on device
122096647+0 records in
122096646+0 records out
500107862016 bytes (500 GB) copied, 15756,7 s, 31,7 MB/s

Для уверенности необходимо произвести данную операцию несколько раз.
Что бы проверить, что на диске у нас теперь только нули можно воспользоваться утилитой hexdump:
# sudo dd if=/dev/sda | hexdump -C

Если вывод будет примерно:
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 |............................|
*
То радуемся, весь диск забит нулями, если же выводится много различных hex-кодов, то не все заполнилось нулями.

четверг, 16 мая 2013 г.

Система видеонаблюдения (ZoneMinder 1.24.2)

Добрый день.

Понадобилось мне сделать систему видеонаблюдения на базе Open Source системы - ZoneMinder. Вот и краткая заметка об этом.
IP-адрес сервера: 192.168.1.180

1. Установка ZoneMinder


 Установим ZoneMinder из репозитория:
# sudo apt-get install zoneminder 

Создадим символьную ссылку на конфиг Apache2 для ZoneMinder'a:
# sudo ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf

Перезагрузим Apache2:
# sudo /etc/init.d/apache2 force-reload

Отредактируем переменные ядра:
# sudo nano /etc/sysctl.conf
Для увеличения кол-ва и объема Shared Memory добавляем:
kernel.shmall = 167772160
kernel.shmmax =167772160

И перезагружаемся, если же хотим увидеть эффкт сразу то:
# sudo echo 167772160 > /proc/sys/kernel/shmall
# sudo echo 167772160 > /proc/sys/kernel/shmmax
# sudo sysctl -p

Логи находятся тут: /tmp и тут /var/log/syslog.


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

2.1 Подключение камер к сети

У меня есть всего 4 камеры: 2 D-Link DCS-930 (беспроводные) и 2 Axis 206 (проводные).

Беспроводные необходимо подключить к wi-fi сети предприятия, пусть будет kazmawifi.
Подключив камеры по кабелю к сети, я увидел, что D-Link камеры получили адреса: 192.168.1.110 и 192.168.1.111, Axis камеры получили адреса: 192.168.1.120 и 192.168.1.121.

Обнаружить камеры AXIS в сети позволяет их утилита: AXIS IP Utility v2
Так как у меня не было доступа к роутеру, то D-link камеры я искал с помощью утилиты nmap:
 # sudo nmap 192.168.1.*

D-Link камеры можно вычислить по такому выводу:
Nmap scan report for 192.168.1.110
Host is up (0.0052s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE
21/tcp  open  ftp
80/tcp  open  http
443/tcp open  https
MAC Address: F0:7D:68:02:29:08 (D-Link)


2.2 Настройка D-Link DCS-930



Подключим D-Link'и к kazmawifi.

Переходим по адресу: http://192.168.1.110/
Выбираем вкладку SETUP -> Wireless Setup:
Тут активируем wi-fi установив значение WIRELESS SETTINGS в Enable.
Находим нужный нам вайфай нажав на кнопку Site survey.
Не забываем ввести пароль, в поле Pre-Shared Key, и жмем Save Settings.

Теперь нам необходимо создать пользователя из под которого будем забирать изображения с камер. Переходим во вкладку MAINTENANCE:
И добавляем нового пользователя введя его логин, пароль и нажав кнопку Add в разделе ADD USER ACCOUNT.
Я добавил пользователя user, на камерах D-Link DCS-930.

2.3 Настройка Axis 206.

Переходим по адресу: http://192.168.1.120/
Переходим на вкладку Setup -> Users и жмем кнопку Add:
И добовляем пользоваетял user.

3. Добавление камер в Zoneminder.

Переходим по адресу:  http://192.168.1.180/zm и нажимаем кнопку Add New Monitor.

В открывшемся окне добавления камеры нас интересуют первые две вкладки: General и Source.
Заполняем вкладку General для D-Link DCS-930:
Name: DCS-930-1 - Имя камеры
Source Type - Remote - удаленная камера .
Function - Modect - записываем только, когда срабатывает Alert/Alarm.
Enabled - On -  включаем камеру.
Maximum FPS - 10 - частота изменения картинки.
Alarm Maximum FPS - 10 - частота изменения картинки при Alert/Alarm.
Остальное оставляем как есть, нас это устраивает.

Теперь перейдем к заполнению вкладки Source:
 Для D-Link DCS-930:

Remote Protocol - HTTP - протокол общения между сервером и камерой.
Remote Method - Simple
Remote Host Name - user:password@192.168.1.110 - Логин:Пароль@IP-адрес.
Remote Host Port - 80 - порт.
Remote Host Path - /image/jpeg.cgi - путь откуда будем забирать изображение.
Remote Images Colours - 24 bit colour - цвет.
Capture Width (pixels) - 320 - высота.
Capture Height (pixels) - 240 - ширина.
Orientation - Normal - ориентация.

Жмем Save.

Для Axis 206 вкладка General заполняется аналогичным образом, только имя измините.

А вот заполнение вкладки Source для Axis 206:
Remote Protocol - HTTP
Remote Method - Simple
Remote Host Name - user:password@192.168.1.120
Remote Host Part - 80
Remote Host Path - /axis-cgi/mjpg/video.cgi?resolution=640x480 - путь откуда забираем картинку
Remote Images Colours - 24 bit colour
Capture Width (pixels) - 640
Capture Height (pixels) - 480
Orientation - Normal

Камеры могут использоваться в одном из режимов (функций):
  • Monitor – только просмотр изображений с камеры, без какого-либо анализа.
  • Modect (от Motion Detection) — данный режим производит анализ кадров и при возникновении движения ведет запись.
  • Record – постоянная запись с камер.
  • Mocord (гибрид Modect и Record) — ведется постоянная запись с камер, в случае возникновения движения — с подсветкой областей детекции.
  • Nodect – специализированный режим, использующийся вместе с внешними триггерами.


Вот что у нас в итоге получается:

4. Проблемы и их решения с которыми я столкнулся

4.1. Если при просмотре изображения с камеры нет изображения, а в логе апача: /var/log/apache2/error.log видим:

[Wed May 15 09:43:56 2013] [error] [client 192.168.1.161] array (\n 0 => \n array (\n 'file' => '/usr/share/zoneminder/ajax/stream.php',\n 'line' => 55,\n 'function' => 'ajaxError',\n 'args' => \n array (\n 0 => 'socket_sendto( /tmp/zms-741127s.sock ) failed: No such file or directory',\n ),\n), \n 1 => \n array (\n 'file' => '/usr/share/zoneminder/index.php',\n 'line' => 124,\n 'args' => \n array (\n 0 => '/usr/share/zoneminder/ajax/stream.php',\n ), \n 'function' => 'require_once',\n),\n), referer: http://192.168.1.180/zm/index.php?view=watch&mid=2

Поискав по этой ошибки точного его решения найти не смог. Но смог завести картинку с камер.

Редактируем:
# sudo nano /etc/apache2/conf.d/zoneminder.conf

и добавляем в конец такие строки:
ScriptAlias /cgi-bin/zms "/usr/share/zoneminder/cgi-bin/zms"
ScriptAlias /cgi-bin/nph-zms "/usr/share/zoneminder/cgi-bin/nph-zms"

Перезапустим апач:
sudo /etc/init.d/apache2 restart
или
sudo service apache2 restart

Можно и не так брутально, а просто заставить апач перечитать конфиги:
sudo /etc/init.d/apache2 reload
или
sudo service apache2 reload

Спасибо gentoo.ru за это решение.


4.2. Нужно изменить расположение изображений с камер.

Изменим место расположения фотографий с камер, которые снимаются по event'ам:
# sudo mkdir /home/zm - Создадим каталог /home/zm
# cd /usr/share/zoneminder - Перейдем в каталог с ZoneMinder
# sudo ln -s /home/zm /usr/share/zoneminder/eventsnew - Создадим символьную ссылку eventsnew на каталог /home/zm

Заходим в панель управления ( http://192.168.1.180/zm ) и переходим на страницу Options и открываем вкладку Paths, необходимо изменить значение DIR_EVENTS на eventsnew.


4.3. Необходимо хранить изображения не старше 2 недель.

Настроим ротацию изображения (что бы видео старше 2 недель удалялись):
Заходим http://192.168.1.180/zm
Нажимаем на общее количество Events'ов:
 Далее жмем Show Filter Window:

В Use Filter выбираем PurgeWhenFull (меньше надо исправлять, чем стандартный фильтр) и заполняем как на скриншоте:

И жмем копку Save, вводим название фильтра и ставим галочку Run filter in background:
Опять жмем кнопку Save.

4.4. Не отображаются Event'ы в Chrome (Windows) и Chromium (Linux).

В Windows при просмотре Event'ов появляется ошибка: ClassNotFoundException с текстом: com.charliemouse.cambozola.Viewer:
В Firefox на Windows и Linux все отображается корректно.

4.5 Короткие event'ы.

Если event'ы записываются часто, но слишком короткие - нам их неудобно просматривать. И вот решение этой проблемы. В окне редактирования камеры нас интересует вкладка Buffers.
Здесь нас интересует в первую очередь такие параметры как:
Image Buffer Size (frames) - количество изображений, которое может хранится в буфере.
Pre Event Image Count - количество изображений, которое необходимо запоминать ДО события (Alarm). Значение должно быть не более Image Buffer Size (frames) / 2.
Post Event Image Count - количество изображений, которое необходимо запоминать ПОСЛЕ события (Alarm). Значение может быть любое,но слишком большие значения нам не нужны, так как будет записываться слишком много изображений, а так же некоторые камеры отказывались работать при сильно большом значении.
Например камеры D-Link DCS-930 не хотят работать при значении больше 40, а камеры Axis 206 при значении больше 25. Но этих значений мне вполне хватает.

После выставления таких параметров мы можем радоваться действиям продолжительностью 30-60 секунд, хотя раньше они писались по 5-15 секунд максимум.

суббота, 4 мая 2013 г.

Установка Proxmox на Debian Squeeze и подготовка к работе с Proxmox API

Добрый день.

Понадобилось однажды мне поставить Proxmox, но так как если ставить чистый Proxmox, он требует весь физический жесткий диск (а на диске есть информация критичная для меня и расстаться я с ней не могу, да и dualboot не помешает) решил накатить Proxmox поверх Debian Squeeze.

1. Установка Proxmox на Debian

Отправной точкой был официальный мануал: тыц

1. Добавим зеркала в /etc/apt/sources.list

# sudo echo "http://download.proxmox.com/debian squeeze pve" >> /etc/apt/sources.list

Добавим ключ для репозитроия Proxmox VE:
# wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add -

2. Обновляем список доступных пакетов и обновляем установленное ПО:

# sudo aptitude update
# sudo aptitude upgrade

3. Установим Proxmox VE ядро:

# sudo aptitude install pve-kernel-2.6.32-19-pve
# sudo aptitude install pve-headers-2.6.32-19-pve

4. Проверим как установилось ядро:

Перезагружаемся и грузимся из ядра pve-kernel-2.6.32-19-pve.
# sudo shutdown -r now

5. Установим все необходимые пакеты:

# sudo aptitude install proxmox-ve-2.6.32 ntp ssh lvm2


Но на шаге aptitude install proxmox-ve-2.6.32 ntp ssh lvm2 видим, что половина пакетов не ставится, а все из-за такой ошибки:
pve-cluster main crit unable to get local ip address

Была найдена тема на форуме Proxmox'a: тыц
Суть ошибки в том, что pve-cluster'у не понравился файл /etc/hosts
Он был у меня такого вида:

127.0.0.1       localhost
127.0.1.1      picnic.picnic.local     picnic
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters


Где 127.0.1.1 picnic.picnic.local picnic - был создан во время установки системы.
Так как система получила адрес 192.168.1.149 по DHCP от моего роутера, я привел его к такому виду:
127.0.0.1       localhost
192.168.1.149   picnic.local picnic
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Повторяем попытку:
# aptitude install proxmox-ve-2.6.32 ntp ssh lvm2
И вуаля, все установилось.

2. Настройка Proxmox VE

Так же в официальном мануале написано, что нужно зайти по адресу:
https://ip_adress
Однако у меня это не прокатило и пришлось смотреть конфиг апача: /etc/apache2/sites-enabled/pve.conf оттуда увидел, что ServerName localhost и порт 8006.
Перейдя по адресу:
https://localhost:8006

Я попал в Proxmox ввел учетную запись root и выбрав метода авторизации PAM я успешно заологинился.

Далее необходимо настроить сетевой мост для того, что бы виртуальные машины получали IP-шники из сети в которой подключен хост.
Настройки интерфейса vmbr0 приведем к такому виду:
Перегружаем сервер и видим, что вновь созданные виртуальные машины отлично получают IP-адреса по DHCP от роутера.


3. Установка Python3 и Proxmox API

Далее я буду работать с Proxmox API, поэтому давайте установим, все что нужно для этого:
Установим Python3 именно с этим языком я буду работать в будущем:
# sudo apt-get install python3

Скачиваем модуль pyproxmox (Proxmox API):
# wget https://pypi.python.org/packages/source/p/pyproxmox/pyproxmox-1.1.3.tar.gz

Разархивируем архив:
# tar xvf pyproxmox-1.1.3.tar.gz

Перейдем в распакованный каталог:
# cd pyproxmox-1.1.3

Установим модуль pyproxmox-1.1.3:
# sudo python3 setup.py install

Вернемся в рабочий каталог:
# cd ..

Для работы pyproxmox требуется модуль requests, установим и его:
Скачиваем:
# wget https://pypi.python.org/packages/source/r/requests/requests-1.2.0.tar.gz

Разархивируем:
# tar xvf requests-1.2.0.tar.gz

Установим модуль requests-1.2.0:
# cd requests-1.2.0
# sudo python3 setup.py install


А вот и документация по Proxmox API: тыц

пятница, 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: тут и тут.