Logikai blokk címzés - Logical block addressing
A logikai blokkcímzés ( LBA ) egy általános séma, amelyet a számítógépes tárolóeszközökön , általában másodlagos tárolórendszerekben , például merevlemez-meghajtókban tárolt adatblokkok helyének meghatározására használnak . Az LBA egy különösen egyszerű lineáris címzési séma; a blokkokat egy egész index tartalmazza, az első blokk LBA 0, a második LBA 1 és így tovább.
Az IDE szabvány 22 bites LBA-t tartalmazott opcióként, amelyet tovább bővítettek 28 bitesre az ATA-1 (1994) kiadásával és 48 bitesre az ATA-6 (2003) kiadásával, míg az A címet tartó lemezen és memóriában lévő adatstruktúrák bejegyzése általában 32 vagy 64 bit. Az 1996 után kiadott merevlemez-meghajtók többsége logikai blokkcímzést valósít meg.
Áttekintés
A logikai blokkcímzésnél csak egy számot használnak az adatok címzésére, és minden lineáris alapcím egyetlen blokkot ír le.
Az LBA séma felváltja azokat a korábbi sémákat, amelyek a tárolóeszköz fizikai adatait teszik ki az operációs rendszer szoftverének. Ezek közül a fő a hengerfej-szektor (CHS) séma volt, ahol a blokkokat egy olyan duplával kezelték, amely meghatározta azt a hengeret, fejet és szektort, amelynél megjelentek a merevlemezen . A CHS a merevlemezeken kívüli eszközökhöz (például szalagokhoz és hálózati tárhelyhez) nem tudott jól hozzárendelni, és általában nem használták őket. A CHS-t a korai MFM- és RLL- meghajtókban használták, és mind az utódját, a kiterjesztett hengerfej-szektort (ECHS) az első ATA- meghajtókban használták. A jelenlegi lemezmeghajtók azonban zónabites rögzítést használnak , ahol a sávonkénti szektorok száma a sávszámtól függ. Annak ellenére, hogy a lemezmeghajtó egyes CHS-értékeket sávonként (SPT) és fejenként hengerenként (HPC) jelent, ezeknek kevés közük van a lemezmeghajtó valódi geometriájához.
Az LBA-t először absztrakcióként vezették be az SCSI- ben. Míg a meghajtóvezérlő továbbra is CHS-címük alapján címzi az adatblokkokat, ezeket az információkat általában nem használja az SCSI eszközillesztő, az operációs rendszer, a fájlrendszer-kód vagy bármely olyan alkalmazás (például adatbázis), amely hozzáfér a "nyers" lemezhez. A blokk szintű I / O-t igénylő rendszerhívások átadják az LBA-definíciókat a tárolóeszköz-illesztőprogramnak; egyszerű esetekben (amikor egy kötet egy fizikai meghajtóra térképez), akkor ezt az LBA-t közvetlenül a meghajtó vezérlőjéhez továbbítják.
A redundáns tömb független lemezek (RAID) eszközök és tároló hálózatok (SAN), és ha a logikai meghajtók ( logikai egység szám , LUN) állnak keresztül LUN virtualizációs és összesítés, LBA címzést az egyes lemez kell fordítani egy szoftver réteg, hogy egységes LBA címzés a teljes tárolóeszközön.
Továbbfejlesztett BIOS
A Western Digital korábbi IDE szabványa bevezette a 22 bites LBA-t; 1994-ben az ATA-1 szabvány 28 bites címet engedélyezett mind LBA, mind CHS módban. A CHS-séma 16 bitet használt a hengerhez, 4 bitet a fejhez és 8 bitet az ágazathoz, az ágazatokat 1-től 255-ig számolva. Ez azt jelenti, hogy a jelentett fejek száma soha nem haladja meg a 16-ot (0-15), az ágazatok száma 255 lehet ( 1–255; bár gyakran a 63-at használják a legtöbbet), és a hengerek száma akár 65 536 (0–65535) is lehet, korlátozva a lemez méretét 128 GiB-re (≈137,4 GB), feltételezve 512 bájtos szektorokat. Ezek az értékek úgy érhetők el, hogy kiadják az ATA "Eszköz azonosítása" ( ECh) parancsot a meghajtónak.
Az INT 13h lemezelérési rutinokban meghatározott IBM BIOS megvalósítás azonban egészen más, 24 bites sémát használt a CHS címzéshez, 10 bit hengerhez, 8 bit fejhez és 6 bit sektorhoz, vagy 1024 henger, 256 fej, és 63 szektor. Ez az INT 13h megvalósítás már az ATA szabványt megelőzte, mivel akkor vezették be, amikor az IBM PC- nek csak hajlékonylemez- tárolója volt, és amikor merevlemez-meghajtókat vezettek be az IBM PC / XT-re , az INT 13h felületet a gyakorlatban nem lehetett újratervezni. visszafelé kompatibilitási problémák. Átfedésben lévő ATA CHS leképezés és BIOS CHS leképezés eredményezte a legkisebb közös nevezőt: 10: 4: 6 bit, vagy 1024 henger, 16 fej és 63 szektor, ami 1024 × 16 × 63 szektor és 528 MB (504 MiB) gyakorlati határt adott. ), 512 bájtos szektorokat feltételezve.
Annak érdekében, hogy a BIOS túllépje ezt a határt és sikeresen működjön nagyobb merevlemezekkel, CHS fordítási sémát kellett megvalósítani a BIOS lemez I / O rutinjaiban, amely az INT 13h által használt 24 bites CHS és a 28 bites CHS között konvertál. az ATA által használt számozás. A fordítási sémát nagy vagy biteltolásos fordításnak hívták . Ez a módszer 16: 4: 8 bites ATA hengereket és fejeket újratervezne az INT 13h által használt 10: 8: 6 bites sémára, ami sokkal több "virtuális" meghajtófejet generálna, mint amennyit a fizikai lemez jelentett. Ez a gyakorlati határt 1024 × 256 × 63 szektorra, azaz 8,4 GB-ra (7,8 GiB ) növelte .
Ennek a korlátnak a további leküzdése érdekében az INT 13h kiterjesztéseket vezették be a BIOS Enhanced Disk Drive Services szolgáltatással , amelyek megszüntették a lemez méretének gyakorlati korlátjait az operációs rendszerek számára, amelyek ismerik ezt az új felületet, például a Windows 95 DOS 7.0 összetevőjét . Ez a továbbfejlesztett BIOS alrendszer támogatja az LBA címzést LBA vagy LBA által támogatott módszerrel, amely natív 28 bites LBA-t használ az ATA lemezek címzéséhez, és szükség szerint CHS konverziót hajt végre.
A normál vagy egyik módszer sem tér vissza a korábbi 10: 4: 6 bites CHS módra, amely nem támogatja az 528 MB- nál nagyobb címzést .
Az ATA-2 szabvány 1996-os megjelenéséig maroknyi nagy merevlemez volt, amelyek nem támogatták az LBA címzést, így csak nagy vagy normál módszereket lehetett használni. A nagy módszer használata azonban hordozhatósági problémákat is felvetett, mivel a különböző BIOS-ok gyakran eltérő és inkompatibilis fordítási módszereket használtak, és a számítógépen particionált merevlemezek egy adott gyártótól származó BIOS-szal gyakran nem voltak olvashatók más gyártmányú BIOS-szal rendelkező számítógépeken. . A megoldás olyan konverziós szoftverek használata volt, mint az OnTrack Disk Manager , a Micro House EZ-Drive / EZ-BIOS stb., Amelyek a lemez OS betöltőjére települtek, és az INT 13h rutinokat indításkor egyedi kóddal helyettesítették. Ez a szoftver lehetővé teheti az LBA és az INT 13h kiterjesztések támogatását régebbi számítógépek számára is, amelyek nem LBA-kompatibilis BIOS-okkal rendelkeznek.
LBA által támogatott fordítás
Ha a BIOS úgy van konfigurálva, hogy egy lemezt használjon LBA-segített fordítási módban, akkor a BIOS az LBA mód használatával éri el a hardvert, de az INT 13h interfészen keresztül lefordított CHS geometriát is bemutat. A hengerek, fejek és szektorok száma a lefordított geometriában a lemez teljes méretétől függ, amint azt a következő táblázat mutatja.
| Lemez mérete | Szektorok / pálya | Fejek | Hengerek |
|---|---|---|---|
| 1 <X ≤ 504 MiB | 63 | 16. | X ÷ (63 × 16 × 512) |
| 504 MiB <X ≤ 1008 MiB | 63 | 32 | X ÷ (63 × 32 × 512) |
| 1008 MiB <X ≤ 2016 MiB | 63 | 64. | X ÷ (63 × 64 × 512) |
| 2016 MiB <X ≤ 4032 MiB | 63 | 128 | X ÷ (63 × 128 × 512) |
| 4032 MiB <X ≤ 8032,5 MiB | 63 | 255 | X ÷ (63 × 255 × 512) |
LBA48
A jelenlegi 48 bites LBA sémát 2003-ban vezették be az ATA-6 szabvánnyal, a címzési határértéket 2 48 × 512 bájtra emelve , ami pontosan 128 PiB vagy kb. 144 PB . A jelenlegi PC-kompatibilis számítógépek támogatják az INT 13h kiterjesztéseket, amelyek 64 bites struktúrákat használnak az LBA címzéshez, és fel kell tüntetniük az LBA címzés esetleges későbbi kiterjesztéseit, bár a modern operációs rendszerek közvetlen lemezelérést valósítanak meg, és a rendszerbetöltési idő kivételével nem használják a BIOS alrendszereket. . A közös DOS stílusú Master Boot Record (MBR) partíciós tábla azonban csak 2 TiB méretű lemezpartíciókat támogat . Nagyobb partíciók esetén ezt le kell cserélni egy másik sémára, például a GUID partíciós táblára (GPT), amelynek ugyanaz a 64 bites korlátja van, mint a jelenlegi INT 13h kiterjesztéseknek.
CHS konverzió
| LBA érték | CHS tuple |
|---|---|
| 0 | 0, 0, 1 |
| 1 | 0, 0, 2 |
| 2 | 0, 0, 3 |
| 62 | 0, 0, 63 |
| 63 | 0, 1, 1 |
| 945 | 0, 15, 1 |
| 1007 | 0, 15, 63 |
| 1008 | 1, 0, 1 |
| 1070 | 1, 0, 63 |
| 1071 | 1, 1, 1 |
| 1133 | 1, 1, 63 |
| 1134 | 1, 2, 1 |
| 2015 | 1, 15, 63 |
| 2016 | 2, 0, 1 |
| 16,127 | 15, 15, 63 |
| 16,128 | 16, 0, 1 |
| 32,255 | 31, 15, 63 |
| 32,256 | 32, 0, 1 |
| 16,450,559 | 16319, 15, 63 |
| 16,514,063 | 16382, 15, 63 |
Az LBA címzési sémában az ágazatokat egész indexekként számozzuk; CHS ( hengerfej-szektor ) sorrendekhez való hozzárendeléskor az LBA számozása az első hengerrel, az első fejjel és a vágány első szektorával kezdődik. Miután a pálya kimerült, a számozás folytatódik a második fejig, miközben az első henger belsejében marad. Miután az első henger belsejében minden fej kimerült, a számozás folytatódik a második hengertől stb. Így minél alacsonyabb az LBA értéke, annál közelebb van a fizikai szektor a merevlemez első (vagyis legkülső) hengeréhez.
A CHS-sorrendeket a következő képlettel lehet leképezni az LBA-címre:
- LBA = ( C × HPC + H ) × SPT + (S - 1)
hol
- C , H és S a henger, a fej és a szektor száma
- Az LBA a logikai blokkcím
- A HPC a hengerenkénti maximális fejszám (lemezmeghajtó által jelentett, 28 bites LBA esetén általában 16)
- Az SPT a sávonkénti szektorok maximális száma (amelyet lemezmeghajtó jelent, általában 28 bites LBA esetén 63)
Az LBA-címek a következő képlettel hozzárendelhetők a CHS-sorrendekhez (a "mod" a modulo művelet , azaz a fennmaradó rész , a "÷" pedig egész osztás , vagyis annak a osztásnak a hányadosa , ahol bármelyik tört részt elvetik):
- C = LBA ÷ ( HPC × SPT )
- H = ( LBA ÷ SPT ) mod HPC
- S = ( LBA mod SPT ) + 1
Az ATA előírások szerint "Ha a szavak tartalma (61:60) nagyobb vagy egyenlő, mint 16 514 064, akkor az 1. szó tartalma [a logikai hengerek száma] 16 383." Ezért az LBA 16450559 esetében egy ATA meghajtó valóban reagálhat a CHS duplával (16319, 15, 63), és ebben a sémában a hengerek számának jóval nagyobbnak kell lennie, mint az INT 13h által engedélyezett 1024.
Az operációs rendszer függőségei
A BIOS által jelentett meghajtó geometriájára érzékeny operációs rendszerek közé tartozik a Solaris , a DOS és a Windows NT család, ahol az NTLDR ( NT , 2000 , XP , Server 2003 ) vagy a WINLOAD ( Vista , Server 2008 , Windows 7 és Server 2008 R2 ) a Master bootolást használja. rögzítse a lemez címzését CHS segítségével; A Windows x86-64 és Itanium verziói particionálhatják a meghajtót a GUID partíciós táblával, amely LBA címzést használ.
Egyes operációs rendszerek nem igényelnek fordítást, mert nem használják a BIOS által jelentett geometriát a rendszerindítójukban . Ezen operációs rendszerek között van a BSD , a Linux , a macOS , az OS / 2 és a ReactOS .
Lásd még
Megjegyzések
Hivatkozások
Külső linkek
- Az LBA-k elmagyarázták
- LBA és CHS formátum, LBA leképezés
- CHS-LBA fordítási útmutató
- A Microsoft cikke az NT 4.0 7,8 GB-os korlátozásáról
- A merevlemez méretének korlátai és korlátai
- Számítógépek frissítése és javítása , írta: Scott Mueller. 524–531.
- AT 8. melléklet - ATA / ATAPI parancskészlet (ATA8-ACS)