NAS: DNS-313 — раздел для хранения данных в формате Ext2

Основная информация была взята отсюда.

Как известно, на DNS-313 раздел, используемый под хранение пользовательских данных, имеет тип NTFS. А так как на самом устройстве используется операционная система Linux, то это, по меньшей мере, нелогично, ибо NTFS не является для Линукса «родной» файловой системой. Проявляемые недостатки — неевозможность манипулировать правами доступа (сервер Samba, встроенный в устройство, может лишь регулировать доступ к папке как к сетевому ресурсу), невозможность создания символических ссылок и т.д.

Предлагаемый способ в общих чертах заключается в следующем:
1) Взаимное изменение размеров NTFS-раздела и одного из Ext2-разделов (увеличение Ext2-раздела за счет уменьшения NTFS-раздела).
2) Подмена точек монтирования — устройство выставляет в качестве разделяемого ресурса Ext2-раздел, который ранее имел чисто служебное предназначение

Недостатки способа:
1) При копировании на устройство больших файлов (размером более 500 Мбайт) могут иметь место сбои, влекущие за собой неправильное копирование файлов (потери содержимого), останов штатного Web-сервера, прекращение функционирования служб SSH, Transmission и др., а также утрату функционала аппаратной кнопки. Источники советуют заменить сервер Samba на версию 3.0.28a, но нигде не дают информацию о том, как именно это сделать. Со своей стороны предлагаю вместо копирования больших файлов через Samba копировать их через FTP-сервер.
2) Состояние диска (в том числе отображаемое через штатный Web-сервер и рассылаемое по SMTP) указывается применительно к NTFS-разделу.

Итак, приступим:
Для начала необходимо сделать резервную копию всех данных с NTFS-раздела /mnt/HD_a2 — потому что все будет уничтожено.
Если использовались утилиты FFP, то надо сохранить копию папки /mnt/HD_a4/ffp (а лучше — всего раздела).

Нам еще понадобится вариант утилиты FDISK, отличный от штатного (который глючит) — качаем его отсюда.

Заходим на устройство Telnet’ом (а еще лучше — SSH) от имени root’а.
Помещаем fdisk куда-нибудь (например, в /tmp):

cp /mnt/HD_a2/fdisk /tmp

Выполняем команду:

/tmp/fdisk /dev/sda

Появится приглашение fdisk’а.
Даем команду (каждый раз после ввода команды нужно нажимать клавишу Enter)

p(Enter)

Видим разметку диска:

95118

Удаляем разделы 2 и 4:

d(Enter)
2
(Enter)
d
(Enter)
4
(Enter)

Добавляем новый первичный раздел:

n(Enter)
p
(Enter)
2
(Enter)

Оставляем предложенный начальный цилиндр

(Enter)

а затем задаем размер создаваемого раздела. Это будет раздел NTFS, и он нам по идее вообще не нужен. Тем не менее, он должен существовать. Кроме того, его можно использовать для передачи данных на устройство при USB-подключении к Windows-компьютеру, который может не уметь работать с Ext2-разделом.
В-общем, я задал размер 500 Мбайт. Думаю, что для практических целей хватит:

500M(Enter)

Затем создаем на оставшемся месте еще один первичный раздел — на нем будут храниться наши данные:

n(Enter)
p
(Enter)

Номер раздела уже не спрашивают — ибо это последний (4-й) из максимально возможного числа первичных разделов.
Соглашаемся и с начальным цилиндром, и с предлагаемым размером, нажимая:

(Enter) и еще раз (Enter)

Меняем тип 2-го раздела на NTFS:

t(Enter)
2
(Enter)
7
(Enter)

сохраняем изменения и выходим из fdisk’а:

w(Enter)
q
(Enter)


Теперь выключаем устройство и подсоединяем его через USB к компьютеру с операционной системой Linux (я использовал Ubuntu 8.10). В принципе можно использовать и Windows, но для этого необходимо установить драйвер поддержки файловой системы Ext2, а также программу, способную выполнить форматирование раздела в Ext2.

Под Ubuntu нам понадобится установить недостающие утилиты-модули gparted (редактор-разбивальщик дисков) и набор утилит для работы с NTFS:

sudo apt-get install gparted
sudo apt-get-install ntfsprogs

Запускаем gparted и форматируем на нашем диске (он подключен как USB-устройство) разделы:
2-й — в Ext2
4-й — в NTFS

Здесь надо заметить, что форматирование в Ext2 — процесс чрезвычайно долгий. Мой почти терабайтный раздел (за вычетом трех небольших по объему служебных разделов) форматировался почти полчаса.

Еще будет не вредным задать вновь отформатированным разделам метки:

2-му (который большой и который Ext2) — DATA_BASE
4-му (который маленький и который NTFS) — USER_DATA

Я не знаю, обязательно ли это или необязательно, но хуже не будет — это точно.

Следующая операция (пока еще не отключаем USB-подключение) — создание на новых разделах нескольких файлов:

На NTFS-разделе (в корне) создаем файл fun_plug со следующим содержимым:

#!/bin/sh
#
cp /mnt/HD_a2/remount_disks.sh /
/remount_disks.sh &

Там же создаем еще один файл — remount_disks.sh

#!/bin/sh
while ( [ ! -f /tmp/boot_finished ] )
do
sleep 5
done

sleep 5

kill `pidof smbd`
kill `pidof nmbd`

umount /dev/sda2
umount /dev/sda4

mount -t ext2 /dev/sda4 /mnt/HD_a2
mount -t ufsd /dev/sda2 /mnt/HD_a4
# make sure we can telnet into the device
xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid&
#this is the real fun plug now
/mnt/HD_a2/initialize_environment.sh
smbd -D
nmbd -D

Если мы до начала нашей операции использовали набор утилит FunPlug, то:

1) восстанавливаем из резервной копии папку (вместе с содержимым, естественно) ffp, поместив ее в корень свежеотформатированного раздела Ext2
2) редактируем файл fun_plug, заменив в нем строчку:

FFP_PATH=/mnt/HD_a4/ffp

на строчку:

FFP_PATH=/mnt/HD_a2/ffp

3) переименовываем файл fun_plug в initialize_environment.sh и под этим именем сохраняем его в корне свежеотформатированного раздела Ext2

Теперь можно отключать USB (только сначала отмонтируйте все разделы средствами Ubuntu), выключать устройство, подключать его к сети и запускать.

В принципе, все сразу должно заработать. Возможно также придется отредактировать файл запуска Transmission (/ffp/start/transmission.sh), чтобы он указывал на другой раздел (вместо /mnt/HD_a4 -> /mnt/HD_a2_.

Как было сказано в самом начале, возможны глюки с остановкой части служб.
Лечение такое:
Заходим на устройство через Telnet (теперь он работает всегда благодаря команде в одном из вышеупомянутых файлов) и даем следующие команды:

/web/webs &
fancontrol &
ubutton&
/usr/sbin/HDFullCheck&
/usr/sbin/mailalert&
/usr/sbin/SyncMms&

Но лучше всего, конечно — это перезагрузка устройства:

reboot

Вот, собственно говоря, и все дела.
Удачи всем!

А вот и новость: появилась новая версия Samba, лишенная недостатков, упомянутых в этой статье.

Как и что — читаем здесь.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.