Montowanie dysków zewnętrznych

Dysponując złączem USB można podłączyć szereg urządzeń wspierających standard usb storage - począwszy od pendrive, poprzez różne dyski przenośne czy czytniki kart pamięci, a na aparatach cyfrowych kończąc.

Przed instalacją należy zainstalować moduły do obsługi USB oraz systemów plików.

Wyjaśnienia wymaga sposób nazewnictwa dysków i partycji w zależności o jakie jądro (sprawdzimy to uname -r) oparty jest nasz obraz OpenWrt.

  • W przypadku jąder z serii 2.6 nazewnictwo jest następujące: /dev/sdXY, gdzie X to oznaczenie dysku(litera alfabetu), a Y numer partycji. Przeważnie pierwszy podłączony dysk jest /dev/sda1 (pierwszy dysk i pierwsza widoczna partycja tego dysku).
  • W jadrach z serii 2.4 jest nieco inaczej: /dev/scsi/hostX/bus0/target0/lun0/disc, gdzie X to numer dysku. Pierwsza partycja, pierwszego dysku ma lokalizację /dev/scsi/host0/bus0/target0/lun0/part1. Podłączenie kolejnego dysku powoduje zwiększenie host o jeden w górę.

Przygotowanie dysku

Partycjonowanie i formatowanie można bez problemu wykonać na zewnętrznym systemie (Linux lub Windows). Jeżeli zostało to wykonane przy pomocy innego programu (np. Partition Magic), można ten rozdział pominąć. Jeżeli nie mamy takiej możliwości można to wykonać z poziomu OpenWrt.

Na początek instalujemy potrzebne składniki:

opkg install cfdisk e2fsprogs dosfsck mkdosfs swap-utils

Mając na uwadze powyższe wyjaśnienie na temat nazewnictwa dysków i partycji przystępujemy do partycjonowania. Przyjmujemy, że posiadamy jądro z serii 2.6, więc partycjonujemy pierwszy dysk /dev/sda (brak cyfry oznacza cały dysk). cfdisk to łatwiejszy w obsłudze odpowiednik fdisk. Obsługa przypomina Partition Magic lub GParted z Ubuntu.
cfdisk

cfdisk /dev/sda

Dysk dzielimy wg. własnych upodobań. Przeważnie dzieli się na dwie partycje - cześć użytkowa(sda1) i swap (sda2). Do podstawowych zastosowań nie jest wymagany, ale jeżeli już potrzebujemy to 128MB będzie dobrym wyjściem. W takim razie tworzymy dwie partycje podstawowe. Ostatecznie wybieramy WRITE i QUIT.

Dysk podzielony, przechodzimy do sformatowania. Poniżej tabelka przedstawiająca system plików, odpowiedzialny moduł oraz jak sformatować taka partycję:

System plikówModułFormatowanie
ext2kmod-fs-ext2mkfs.ext2 /dev/sda1
ext3kmod-fs-ext3mkfs.ext3 /dev/sda1
ext4kmod-fs-ext4mkfs.ext4 /dev/sda1
FAT16kmod-fs-vfatmkfs.vfat -F16 /dev/sda1
FAT32mkfs.vfat /dev/sda1

Pozostało stworzenie systemu plików swapa:

mkswap /dev/sda2

Mechanizm montowania dysków

Od r26314 pakiety block-mount, block-hotplug oraz block-extroot zostały połaczone w jeden block-mount Dotyczy to tylko obecnego trunka!

Od pewnego czasu OpenWrt posiada ciekawy i przemyślany mechanizm montowania dysków. Cały mechanizm wymaga dogłębnego wyjaśnienia, więc zaczynajmy. Żeby w ogóle móc zamontować dysk twardy, kartę SD, czy inne urządzenia z pamięcią należy zainstalować dwa pakiety: block-mount

opkg update
opkg install block-mount block-hotplug

Pakiety te to nic innego jak skrypty shella umieszczone w konkretnych miejscach w systemie. Pakiet block-hotplug jest niezwykle ciekawy, gdyż dzięki niemu wykonywane sa pewne akcje/czynności pod wpływem jakiś bodźców np. wsadzenie dysku do portu USB lub jego wyjecie.
Przyjrzyjmy się domyślnej konfiguracji fstab tuż po zainstalowaniu tych pakietów:

uci show fstab
fstab.automount=global
fstab.automount.from_fstab=1
fstab.automount.anon_mount=1
fstab.autoswap=global
fstab.autoswap.from_fstab=1
fstab.autoswap.anon_swap=0
fstab.@mount[0]=mount
fstab.@mount[0].options=rw,sync
fstab.@mount[0].enabled_fsck=0
fstab.@mount[0].enabled=0
fstab.@mount[0].fstype=ext3
fstab.@mount[0].device=/dev/sda1
fstab.@mount[0].target=/mnt/sda1
fstab.@swap[0]=swap
fstab.@swap[0].device=/dev/sda2
fstab.@swap[0].enabled=0

Struktura pliku /etc/config/fstab jest podzielona na trzy części: global, mount oraz swap.

Działanie w skrócie:

Parametr fstab.automount.from_fstab ustalony na 1 oznacza, że urządzenie ma być zamontowane wg, ustawień ustalonych w sekcji mount(gdy jest enabled=1). W połączeniu z pakietem block-hotplug umożliwia montowanie do jednej ustalonej lokalizacji.

W przypadku, gdy fstab.automount.anon_mount jest ustalony na 1 i nie ma włączonej sekcji mount(enabled=0) dysk montowany jest automatycznie do domyślnej lokalizacji /mnt/<udządzenie> (np. /mnt/sda1). Włączając sekcje mount montuje wg. ustaleń.

Podobna sytuacja wygląda w sekcji swap. Do używania swapa potrzeby jest pakiet swap-utils, oraz jego wcześniejsze stworzenie (patrz wyżej przy partycjonowaniu dysku)

Sekcja global

Dostępne parametry i ich znaczenie:

NazwaDomyślnieOpis
from_fstab1Gdy jest 1 używa sekcji mount do zamontowania dysku
anon_mount1Gdy jest 1 automatycznie montuje dysk do domyślnej lokalizacji /dev/<urzadzenie> (chyba że, włączony jest from_fstab oraz enabled w sekcji mount)

Sekcja mount

NazwaDomyślnieOpisUwagi
optionsrw,syncOpcje montowania zależne od systemu plików. Domyślnie rw,sync vfat: „umask=0,dmask=0” 1); extX: „noatime”
enabled_fsck0Gdy system plików jest uszkodzony, sprawdza jego spójność przez zamontowaniem
enabled0Gdy jest 1 to nośnik montowany jest wg ustawień w tej sekcji mount
device/dev/sda1Wskazuje na urządzenie /dev/XXX
fstypeautoTyp montowanego systemu plików : ext2, ext3, ext4, vfat. Przy ntfs-3g, należy ustawić auto
labelbrakWskazuje na urządzenie jako etykietę, utworzoną programem tune2fs
uuidbrakWskazuje na urządzenie jako uuid. Brany w pierwszej kolejności pod uwagę jeżeli również występuje label lub device
target/mnt/sda1Cel montowania nośnika
is_rootfs0 Wskazuje partycje na której przechowywany jest system plików systemu, więcej na extroot

W celu wygenerowania uuid należy posłużyc sie dodatkową aplikacją - blkid

opkg upddate
opkg install blkid

Przykład:

blkid /dev/sda1
/dev/sda1: UUID="e699b4e6-3717-4f58-b104-77ee772b1448"

Ostatecznie dodajemy do fstaba:

uci set fstab.@mount[0].uuid=e699b4e6-3717-4f58-b104-77ee772b1448
uci commit fstab

Żeby opcja enabled_fsck poprawnie działała potrzebujemy pakietu: e2fsprogs dla systemów plików linuksowych lub dosfsck dla FAT16/32

Sekcja swap

NazwaDomyślnieOpis
enabled0Gdy jest 1 to nośnik montowany jest wg ustawień w tej sekcji mount
device/dev/sda2Wskazuje na urządzenie /dev/XXX
labelbrakWskazuje na urządzenie jako etykietę, utworzoną programem tune2fs
uuidbrakWskazuje na urządzenie jako uuid. Brany w pierwszej kolejności pod uwagę jeżeli również występuje label lub device 2)

Ręczne naprawianie systemu plików

Jeżeli na dysku pojawią się błędy można sprawdzić system plików. PRZED sprawdzeniem należy koniecznie odmontować nośnik. Jeżeli dysk jest dużej pojemności może zabraknąć pamięci podczas sprawdzania systemu plików, dlatego też warto wcześniej zamontować swap. Całe polecenie może wyglądać następująco

/etc/init.d/fstab stop
swapon /dev/sda2
e2fsck -y /dev/sda1                # linuksowe systemy plików

lub

dosfsck -y /dev/sda1               # windowsowy system plików

Sprawdzanie dla dysku 500GB z błędami może trwać ok 30 minut, więc należy uzbroić się w cierpliwość nie przerywać polecenia, nie restartować routera i nie odłączać dysku.

Mountowanie dysków po włożeniu nośnika

Opis zamieściłem na portalu openrouter.info. Funkcja jest w moich obrazach.

Praktyczne przykłady - na szybko

Założenie: jedna partycja ext2 zamontowana na stałe pod /mnt/hdd. Montowanie po urządzeniu(device)

cfdisk /dev/sda
(tworzymy jedna partycje na cały dysk)
mkfs.ext2 /dev/sda1
uci set fstab.@mount[0].enabled=1
uci set fstab.@mount[0].options=rw,noatime
uci set fstab.@mount[0].fstype=ext2
uci set fstab.@mount[0].target=/mnt/hdd
uci set fstab.@mount[0].device=/dev/sda1
uci commit fstab
mkdir -p /mnt/hdd
/etc/init.d/fstab enable
reboot
1) Opcje potrzebne do zapisu na dysk
2) uuid generowany jest podobnie jak dla sekcji mount, ale dla innej partycji
uzytkowanie/usbhdd.txt · ostatnio zmienione: 2011/09/06 12:51 przez arteq
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0
Profesjonalny Hosting