Ez a probléma különösen nyilvánvaló a mágneses adathordozókon, bár az SSD-k is szenvednek tőle. Próbáljuk töredezettségmentesíteni egy XFS fájlrendszert ebben a bejegyzésben.
Homokozó beállítása
Először, az XFS fájlrendszerrel való kísérletezés érdekében úgy döntöttem, hogy létrehozok egy tesztelőasztalot, ahelyett, hogy a lemezen lévő kritikus adatokkal dolgoznék. Ez a tesztasztal egy Ubuntu virtuális gépből áll, amelyhez egy virtuális lemez csatlakozik, nyers tárhelyet biztosítva. A VirtualBox segítségével létrehozhatja a virtuális gépet, majd létrehozhat egy további lemezt a virtuális géphez csatoláshoz
Csak nyissa meg a virtuális gép beállításait és az alatt Beállítások → Tárolás szakaszban új lemezt adhat a SATA vezérlőhöz, létrehozhat új lemezt. Az alábbiak szerint, de ellenőrizze, hogy a virtuális gép ki van-e kapcsolva, amikor ezt megteszi.
Az új lemez létrehozása után kapcsolja be a virtuális gépet, és nyissa meg a terminált. A parancs lsblk felsorolja az összes elérhető blokkoló eszközt.
$ lsblksda 8: 0 0 60G 0 lemez
├─sda1 8: 1 0 1M 0 rész
Da─sda2 8: 2 0 60G 0 rész /
sdb 8:16 0 100G 0 lemez
sr0 11: 0 1 1024M 0 rom
A fő blokkolóeszközön kívül sda, ahol az operációs rendszer telepítve van, ott van egy új SDB eszköz. Hozzunk létre gyorsan egy partíciót belőle, és formázzuk az XFS fájlrendszerrel.
Nyissa meg a megosztott segédprogramot root felhasználóként:
$ elvált - optimális / dev / sdbElőször hozzunk létre egy partíciós táblázatot az mklabel használatával, ezt követve egyetlen partíciót hozunk létre a teljes lemezről (amely 107 GB méretű). A nyomtatási paranccsal ellenőrizheti, hogy a partíció elkészült-e:
(elvált) mklabel gpt(elvált) mkpart elsődleges 0 107
(elvált) nyomtatás
(elvált) kilép
Oké, most az lsblk használatával láthatjuk, hogy az sdb eszköz alatt van egy új blokkoló eszköz, sdb1.
Formázzuk ezt a tárhelyet xfs fájlként, és illesszük be az / mnt könyvtárba. Ismét tegye a következő műveleteket gyökérként:
$ mkfs.xfs / dev / sdb1$ mount / dev / sdb1 / mnt
$ df -h
Az utolsó parancs kinyomtatja az összes csatlakoztatott fájlrendszert, és ellenőrizheti, hogy a / dev / sdb1 a / mnt könyvtárra van-e csatolva.
Ezután egy csomó fájlt fiktív adatként írunk itt töredezettségmentesítésre:
$ dd, ha = / mnt / saját fájl = / dev / urandom.txt szám = 1024 bs = 1024A fenti parancs a myfile fájlt írja.txt 1 MB méretű. Automatizálhatja ezt a parancsot egy egyszerű ciklusba a bash használatával, és további ilyen fájlokat generálhat. Ha tetszik, terjessze őket különféle könyvtárakba. Töröljön véletlenszerűen néhányat közülük. Végezze el mindezt az xfs fájlrendszeren belül (a / mnt fájlra telepítve), majd ellenőrizze a széttöredezettséget. Mindez természetesen nem kötelező.
Töredezettségmentesítse a fájlrendszert
Első dolog, amit meg kell tennünk, hogy kitaláljuk, hogyan ellenőrizhető a töredezettség mértéke. Például a korábban létrehozott xfs fájlrendszer a / dev / sdb eszközcsomóponton volt. Használhatjuk az xfs_db segédprogramot (ami az xfs hibakeresést jelenti) a töredezettség ellenőrzésére.
$ xfs_db -c frag -r / dev / sdb1A -c zászló különféle parancsokat vesz igénybe, amelyek közül a frag parancs a töredezettség szintjének ellenőrzésére szolgál. A -r jelzővel megbizonyosodhatunk arról, hogy a művelet teljes egészében csak olvasható.
Ha úgy találjuk, hogy ebben a fájlrendszerben van töredezettség, futtatjuk az xfs_fsr parancsot az eszköz csomópontján:
$ xfs_fsr / dev / sdb1Ez az utolsó parancs a fájlrendszer töredezettségmentesítésére szolgál, ezt hozzáadhatja cronjobként, amely rendszeresen figyeli a fájlrendszert. De ennek az xfs-nek való csinálásának kevés értelme van. Az XFS kiterjedésen alapuló elosztása biztosítja, hogy az olyan problémák, mint a széttagoltság, a lehető legkevesebb legyen.
Használjon tokokat
Azokban a felhasználási esetekben, amikor a fájlrendszer széttöredezettségével kell leginkább foglalkoznia, olyan alkalmazásokra van szükség, amelyekben sok apró adatrész van írva és újraírva. Az adatbázis ennek klasszikus példája, és az adatbázisok arról híresek, hogy sok-sok „lyukat” hagytak a tárolóban. A memóriablokkok nincsenek folyamatosan feltöltve, így a rendelkezésre álló hely mennyisége az idő múlásával egyre kisebb.
A probléma nemcsak a csökkent használható terület, hanem a csökkent IOPS tekintetében is felmerül, ami károsíthatja az alkalmazás teljesítményét. A fragmentáció szintjének folyamatos figyelemmel kísérése egy szkript segítségével konzervatív módon fenntartja a rendszert. Nem akarja, hogy egy automatikus szkript véletlenszerűen kezdje el a fájlrendszer töredezettségmentesítését, különösen akkor, ha csúcsterheléskor használják.