[OT, długie] Jak zwiększyć rozmiar dysku JBOD?

Łukasz Maśko masko w ipipan.waw.pl
Pią, 17 Paź 2014, 21:58:56 CEST


Ponieważ nigdy nie miałem właściwie do czynienia z czymś innym niż czyste 
partycje dyskowe (zwykły ext? na dysku itp.), nie mam żadnego doświadczenia z 
macierzami. A mam teraz następujący problem: w moim NAS-ie (Zyxel NSA310, 
firmware to Linux) miałem do tej pory dysk 1.5TB, prawie cały zapchany (200GB 
wolnego). Chcę go zamienić na 2TB. Na razie skopiowałem dysk źródłowy na 
docelowy bit po bicie. Poszło bez problemu, chociaż strasznie długo. NAS 
wstał, pokazał dane jak należy, chociaż partycję 1.4TB, jak na dysku 
wejściowym, ale na razie OK.

Na dysku są dwie partycje: systemowa z oprogramowaniem NAS-a, 0.5GB (nie ma 
co ruszać) oraz druga, z danymi. Fdisk wyświetla taki rozkład partycji:

Polecenie (m wyświetla pomoc): p
Dysk /dev/sdb: 1,8 TiB, bajtów: 2000398934016, sektorów: 3907029168
Jednostki: sektorów, czyli 1 * 512 = 512 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Typ etykiety dysku: dos
Identyfikator dysku: 0x00000000

Device     Boot   Start        End    Sectors  Size Id Type
/dev/sdb1            63    1028159    1028097  502M  8 AIX
/dev/sdb2       1028160 2930272064 2929243905  1,4T 20 nieznany

Polecenie (m wyświetla pomoc): v
Pozostało 976757103 nieprzydzielonych sektorów 512-bajtowych.

Ta druga partycja to wolumin JBOD, na którym jest partycja ext4. Mogę się do 
niej dość prosto dostać tak:

$ sudo mdadm -A --verbose --run /dev/md0 /dev/sdb2
mdadm: looking for devices for /dev/md0
mdadm: /dev/sdb2 is identified as a member of /dev/md0, slot 0.
mdadm: added /dev/sdb2 to /dev/md0 as 0
mdadm: /dev/md0 has been started with 1 drive.
$ sudo mount -o rw -t ext4 /dev/md0 /mnt/nas/

I mam dane. Czyli nie jest źle.

Teraz clue programu - chciałbym rozszerzyć wolumin tak, żeby wykorzystać 
pozostałe miejsce na dysku. Plan był taki:
1. Zwiększ rozmiar partycji tak, żeby zajmowała cały wolny rozmiar.
2. Utwórz md0 jak powyżej.
3. Odpal resize2fs i rozciągnij partycję na cały obszar.

Ale tu następuje ZONK, bo jeśli zorbię krok 1, to dostaję:

$ sudo mdadm -A --verbose --run /dev/md0 /dev/sdb2 
mdadm: looking for devices for /dev/md0
mdadm: no recogniseable superblock on /dev/sdb2
mdadm: /dev/sdb2 has no superblock - assembly aborted

Ponieważ po rozszerzeniu partycji jest problem oraz - co nieopatrznie 
sprawdziłem - zapuszczone luzem fsck.ext4+resize2fs działa ale potem NAS się 
nie podnosi, wywnioskowałem, że w przypadku JBOD, dane o wolumenie są 
zapisane na końcu partycji (mam rację?). Więc nie ma co się dziwić, że mój 
plan zawiódł.

I teraz pytanie - czy da się jakoś przeskalować wolumin i partycję na nim 
tak, żeby nie utracić danych, czy też jestem skazany na ręczne przegranie 
danych? Bardzo bym chciał tego uniknąć, bo z racji rozmiaru danych, proces 
ten, w zależności od użytego sprzętu, trwa od kilku (oba dyski podpięte do 
kontrolera SATA "na krótko", ale następną okazję na to będę miał dopiero we 
wtorek) do kilkudziesięciu (podłączenie dysków przez mostki SATA->USB) 
godzin, co jest cokolwiek upierdliwe.

Jeśli chodzi o narzędzia, to do wtorku dysponuję laptopem z PLD (dyski 
podpinam przez USB 2.0 i mostki SATA->USB, transfer rzędu 18MB/s). Dopiero we 
wtorek będę mógł dyski włożyć do stacji roboczej na PLD, z wewnętrznym 
kontrolerem SATA (transfer 90-40MB/s, zależnie od tego, czy początek czy 
koniec dysku).
-- 
Łukasz Maśko                                                            _o)
Lukasz.Masko(at)ipipan.waw.pl                                           /\\
Registered Linux User #61028                                           _\_V
Ubuntu: staroafrykańskie słowo oznaczające "Nie umiem zainstalować Debiana"



Więcej informacji o liście pld-users-pl