4k fizikai szektorméretes merevlemezek partíciójának beállítása

Üdv!

/// a hozzászólás végén javításra került, amit benne leírok, de már nem akartam az eredetit kitörölni. ///

Ma került hozzám egy 1 terás WD green merevlemez 64 mega cache-sel. Mint kiderült, a 64 mega cache-sel rendelkező WD merevlemezeknek 4k a fizikai szektormérete az 512 bájttal szemben.

Elég sokat gugliztam a témában, de csak összezavart, amit találtam, úgyhogy magam próbáltam utána járni a dolognak.

A probléma itt az, hogy ha a 4k-s logikai szektor nem a 4k-s fizikai szektorra esik, akkor 2 fizikai szektort kell beolvasni 1 logikai bekéréséhez a lemeznek, vagy kiírni, stb. Az volt az első probléma, hogy az fdiskben nem tudtam beállítani, pontosabban menteni 4k-s szektormérettel a partíciókat. Megcsináltam, w, partprobe, de 512 byte-tal jelentek meg a listázásnál, és a méretük is nyolcada volt. Ezt a problémát nem tudtam áthidalni, így maradt az, hogy a partíció eleje és vége is fizikai szektorhatárra essen. A másik gond az volt, hogy a wd oldaláról leszedett specifikációnak nem felelt meg az fdisk által kiírt szektorszám (mellesleg magán a termék adatlapon hibás adat volt, mert eggyel több "User Sectors Per Drive"-ot tűntettek fel (1,953,525,169), ami így nem volt osztható nyolccal (úgy tűnik, ők az 512-es blokkok számát hívják így, amik valójában 4k-sak, tehát az 512-esek száma 8-cal osztható). Egy pdf-et letöltve aztán kiderült, hogy ez valójában 1,953,525,168. Átállítottam ezért a fejek és cilinderek számát szerkesztésnél:

sudo fdisk -H 2 -S 63 /dev/sda

Így már helyesen jelent meg a szektorszám.

Több megoldást is olvastam, jumperrel is lehet variálni a lemezen, de én azt választottam, hogy úgy állítom be a partíciókat, hogy 8-cal osztható számú 512-es blokkon kezdődjenek és végződjenek. Több helyen írták a 64-et, de ez nem vezetett eredményre, hiszen ha 1-gyel kezdünk, akkor a 64 az még a 8. 4k-s blokk utolsó 512 bájtja. Próbáltam 63-mal, mert ezt is írták (indoklás nélkül), ugyanaz volt az eredmény, mint 64-gyel. És akkor a sok rizsa után a számok:

Partíciók:

A eset;

/dev/sda1 64 40000 2516031 83 Linux
/dev/sda2 40001 400000 22680000 83 Linux
/dev/sda3 400001 8000000 478800000 83 Linux
/dev/sda4 8000001 15504168 472762584 83 Linux

illetve

B eset;

/dev/sda1 65 40000 2515968 83 Linux
/dev/sda2 40001 400000 22680000 83 Linux
/dev/sda3 400001 8000000 478800000 83 Linux
/dev/sda4 8000001 15504168 472762584 83 Linux

Az sda1-et és sda2-t teszteltem, több alkalommal, oly módon, hogy az egyik partícióra 4k-s blokkokban a /dev/zero-ból 500 000 blokkot írtam fájlba, majd ugyanezt a másik partícióval is megtettem, illetve visszaolvastam azonos sorrendben. Semmi más nem változott, live cd-ről voltam bootolva, a gépben 1 giga ram van, a felírt fájl mérete 2 giga, tehát nem játszott a cache jelentős szerepet (ezért is választottam ezt a sorrendet az írás/olvasásra).

A eset:

(sda1 write)
500000+0 records in
500000+0 records out
2048000000 bytes (2.0 GB) copied, 50.5476 s, 40.5 MB/s
(sda2 write)
500000+0 records in
500000+0 records out
2048000000 bytes (2.0 GB) copied, 38.2926 s, 53.5 MB/s
(sda1 read)
500000+0 records in
500000+0 records out
2048000000 bytes (2.0 GB) copied, 29.6059 s, 69.2 MB/s
(sda2 read)
500000+0 records in
500000+0 records out
2048000000 bytes (2.0 GB) copied, 24.8064 s, 82.6 MB/s

B eset:

(sda1 write)
500000+0 records in
500000+0 records out
2048000000 bytes (2.0 GB) copied, 35.2296 s, 58.1 MB/s
(sda2 write)
500000+0 records in
500000+0 records out
2048000000 bytes (2.0 GB) copied, 35.7909 s, 57.2 MB/s
(sda1 read)
500000+0 records in
500000+0 records out
2048000000 bytes (2.0 GB) copied, 28.5575 s, 71.7 MB/s
(sda2 read)
500000+0 records in
500000+0 records out
2048000000 bytes (2.0 GB) copied, 25.5112 s, 80.3 MB/s

Természetesen többször megismételtem a kísérletet, az írásnál mindig hasonló eredménnyel, az olvasásnál valami miatt nem mindig volt jelentősen gyorsabb a 65-ön kezdődő partíció, néha felvette az sda2 sebességét, néha nem (de valamennyivel mindig gyorsabb volt).

Amit nem próbáltam, az a kiterjesztett partíció. Mivel ennek információi is tárolódnak valahol, még itt is lehet egy csavar.

Remélem, valakinek segít ez az információ. Ha van tapasztalatotok ezzel kapcsoltban, osszátok meg, ha lehet!

Üdv

///////////////////////////////////////////////////////////////////

!!! Javítva :

Ma reggel frissen elgondolkozva Bambano hozzászólásán megvilágosodtam.

Mivel az fdisk nem enged 64 sector/track-et állítani, így 56-ra állítottam (7 * 8).

sudo fdisk -H 2 -S 56 /dev/sda

Ezzel ugyanúgy kijön a gyártó által megadott 512 bájtos szektorszám, és mivel a sávokon található sectorok száma ostható 8-cal, így elvileg mindegy, hogy hol kezdődik a partíció (jól beállított geometria).

Gyakorlatban is úgy tűnik, ez a probléma megoldása.

Összegezve tehát, a lényeg, hogy az fdisk nem jól ismeri fel (nekem) a sector/track értéket, emiatt a sector szám nem egyezik a gyári specifikációval, és emiatt elcsúszhatnak a logikai/fizikai 4k-s szektorok egymáson.
Ha ezt az értéket beállítom 8-cal oszthatóra (4k / 512 bájt), akkor mindegy, hogy adom meg a partíciókat, elvileg okés lesz az elhelyezkedése a logikai blokkoknak, és jó lesz a sebesség. Nálam gyakorlatban is.

Elnézést a bénázásért, de ez új volt nekem, és túl gyorsan akartam segíteni azoknak, akiknek szintén az. De remélhetőleg minden jó, ha jó a vége. :)

Üdv

Hozzászólások

nekem 4-nél nagyobb szorzóval gyorsult ilyen diszk elérése, amikor sikerült eltalálni a jó particionálást. Nekem az segített, hogy más vinyógeometriát hazudtam az fdisknek, mikor particionáltam.

Amit este kijelejtettem: file rendszer ext3 volt.

subscribe.
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 13.1 | 2.6.34.1-janos