Consigli su utilizzo file system

File system (Acronimo FS) indica il meccanismo con il quale i file sono posizionati e organizzati su dispositivi utilizzati per l’archiviazione dei dati. I nostri sistemi SlimLine basati su processori ARM/Cortex dispongono di default di un dispositivo di archiviazione su memoria FLASH organizzata come disco “C:” accessibile in lettura/scrittura. In base al modello di modulo è possibile aggiungere ulteriori dispositivi di archiviazione su scheda SDCard da inserire direttamente nel sistema come su questo modulo CPU identificata come disco “D:” o su adattore USB per altri moduli CPU identificata come disco “F:”.

Struttura file system

Il dispositivo di archiviazione è gestito a settori, ogni settore dei dispositivi da noi utilizzati ha dimensione 512 bytes, il file system gestisce il disco con una struttura FAT 32, ecco come sono organizzati i dati sul disco.

Rappresentazione FAT
  • Boot sector: Primo settore del dispositivo contiene le informazioni sull’unità e sul file system implementato.
  • File Allocation Table (FAT): Array di settori in cui sono registrati tutti i concatenamenti di cluster necessari a ricostruire i files.
  • Data region: Array di settori suddivisi in clusters che contengono i dati delle directories o dei files.
Utilizzo dischi removibili per trasferire dati da/verso PC

Ecco le regole da seguire per usare un disco rimovibile (SDCard o PenDrive) sia su un sistema SlimLine che su di un PC. Questo può essere utile per trasferire i dati tra i due sistemi.

  • Si può operare sui dischi removibili (SDCard o PenDrive) solo a sistema spento.
  • Prima di spegnere il sistema occorre essere certi che tutti i files siano chiusi, quindi non bisogna avere operazioni FTP attive e le operazioni di scrittura da programma LogicLab devono essersi concluse con l’esecuzione della funzione Sysfclose. Il file system dei sistemi SlimLine per salvaguardare la perdita dati prevede una transazione in memoria FRAM, in caso di spegnimento durante l’accesso la transazione verrà automaticamente rispristinata alla successiva accensione, ma se il disco viene sostituito il sistema aggiornerà quello nuovo sporcandolo
  • Il disco va formattato FAT_32 utilizzando per files e directories solo nomi in formato 8+3 maiuscolo ed i nomi possono aver un solo “.” al loro interno. Se si formatta FAT_32_ELS e da SlimLine si creano file in maiuscolo o minuscolo nello stile 8+3, il PC NON riesce ad accedere. Se da PC si crea un file, indipendentemente che sia con nome tutto maiscolo e nello stile 8+3, SlimLine NON riesce ad accedere.

Utilizzo nomi lunghi

Come mai pur formattando come FAT_32 che permette nomi lunghi in maiuscolo o minuscolo, lo SlimLine non lo consente ?

  • I nomi lunghi in maiuscolo e minuscolo vengono memorizzati su più entries della FAT e questo potrebbe portare ad un problema nella gestione di un eventuale mancanza alimentazione mentre si opera su tali file.
  • I nomi dei file sono in UNICODE, il firmare dello SlimLine non lo supporta.

Vita del disco

Il disco C: interno utilizza una memoria NOR Flash con una ritenzione dati minima di 20 anni, ogni settore (512 Bytes) ha un numero minimo di 100.000 cicli di scrittura. Nell’utilizzo come disco occorre tenere presente il numero di scritture su ogni settore per evitare di distruggere la memoria.

Dalle versioni PCK051C000 e PCK054B000 è stato implementato il Wear leveling, livellamento dell’usura, che distribuisce i dati in modo uniforme su tutti i settori del disco.

  • L’upgrade del sistema operativo non attiva il wear leveling mantenendo l’accessibilità del disco. Per abilitarlo salvare i file presenti sul disco e formattare il disco con il comando Format C: poi ricopiare i file salvati in precedenza.
  • Nel downgrade, se il disco è formattato con il wear leveling, salvare i file presenti sul disco e formattare il disco con il comando Format C: FAT_32_ELS. Poi eseguire il downgrade e ricopiare i file salvati in precedenza.
Calcolo vita del disco

Per il calcolo vita di un settore del disco eseguire la formula: Life Time (h)=Write time (s)*27.78

Ipotizzando di scrivere sempre lo stesso settore ogni minuto avremo: 60*27.78=1666 (H) (69 giorni). In realtà sul disco si opera con files che occupano più settori, quindi se scrivessimo ogni minuto in un file da 50KBytes il tempo di vita in giorni sarà: 69*(50000/512)=6738 giorni (18 anni).

I tempi sopra riportati si riferiscono alla scrittura della Data region del disco, ma sulla creazione del file e su ogni variazione della sua dimensione si và a scrivere anche nella FAT. Ecco quindi che per minimizzare le scritture conviene creare il file della dimensione necessaria a contenere i dati e poi operare con comandi di Sysfseek per spostarsi al suo interno senza modificarne la dimensione.

Formattazione  del disco

Il disco interno “C:” viene fornito già formattato e solitamente non deve essere formattato dall’utente, al suo interno si trovano i files di configurazione del prodotto che in caso di formattazione andrebbero persi. L’operazione di formattazione è invece necessaria sui dispositivi di archiviazione aggiuntivi “D:” e “F:”, ricordo che pur essendo dispositivi estraibili quando inseriti nel sistema e formattati non possono più essere rimossi. Per la formattazione usare il comando Format dall’interprete comandi, al comando è possibile fornire ulteriori parametri:

  • Drive: Identificazione unità da formattare, C: Disco FLASH interno, D: SDCard su scheda, F: SDCard su adapter USB
  • FAT Type: Specifica il formato della File Allocation Table.
    FAT_32: Formato standard, permette la lettura delle SDCard formattate su PC, nomi Directories/Files solo maiuscolo lunghezza 8+3.
    FAT_32_ELS: Formato custom, permette di definire nomi Directories/Files sia in maiuscolo che minuscolo lunghezza 14 caratteri totali.
    FAT_32_ELS_WL: Formato custom, come il precedente con abilitazione del wear leveling solo su disco interno C:.
  • Cluster Size: Permette di definire la dimensione del cluster in bytes, la dimensione deve essere un multiplo della dimensione settore (512 bytes).
Esempi di formattazione

Format C: Formatta il disco interno in FAT_32_ELS scegliendo automaticamente la dimensione del cluster. Se il sistema operativo gestisce il wear leveling viene utilizzato il formato FAT_32_ELS_WL.

Format D: Formatta SDCard su scheda in FAT_32_ELS scegliendo automaticamente la dimensione del cluster

Format D: FAT_32 Formatta SDCard su scheda in FAT_32 fissando la dimensione del cluster a 512 bytes (1 settore, valore minimo)

Format D: FAT_32_ELS 512 Formatta SDCard su scheda in FAT_32_ELS fissando la dimensione del cluster a 512 bytes (1 settore, valore minimo)

Format F: FAT_32_ELS 2048 Formatta SDCard su adapter USB in FAT_32_ELS fissando la dimensione del cluster a 2048 bytes (4 settori)

Formato cluster

Se nel comando di formattazione non viene indicata la dimensione del cluster, il sistema imposta automaticamente il valore approppriato in base alla dimensione della SDCard. In generale occorre scegliere il formato in base alle seguenti valutazioni.

Cluster piccolo

  • Pro: Ottimizza l’occupazione del disco.
  • Contro: Aumenta il numero di scritture nei settori di FAT riducendo la vita del disco.
    Determina una minore velocità di accesso al disco.

Cluster grande

  • Pro: Riduce le scritture nei settori di FAT allungando la vita del disco.
    Maggiore velocità di accesso al disco.
  • Contro: Spreco di memoria per ogni file (Mediamente 1/2 dimensione cluster).
    Aumenta il tempo di creazione delle directories sul disco.

Consigli

  1. E’ preferibile usare dischi esterni in alternativa alla FLASH interna disco “C”.
  2. Utilizzare preferibilmente files di dimensioni fino a 640 KBytes.
  3. Per velocizzare accesso al disco senza penalizzare il tempo di esecuzione della task di back, limitare il numero di files e directories.
  4. Per aumentare la “vita” del disco se possibile utilizzare file di dimensione fissa aggiornando i dati al suo interno (Come gestito dal FB FIFOFile).
  5. Se si usa il disco per salvare files di log trasferiti via FTP su altri sistemi, cancellare il file dopo il trasferimento e ricrearlo, piuttosto che riscriverlo.
Errori accesso al disco

Visualizzando il log del sistema, comando SysLog oppure analizzando il file Logs.txt nella cartella System, è possibile visualizzare eventuali errori di accesso al disco, ecco i più comuni.

  • 3380, Not enough cluster vs required: Si è cercato di accedere ad una posizione più grande della dimensione del disco. Tipicamente si verifica quando il disco è pieno, oppure di esegue un Sysfseek ad una posizione maggiore della dimensione disco.
Was this article helpful?