Vai al contenutoNaviga tra le pagine: pagina precedente [tasto di scelta p]/pagina successiva [tasto di scelta n]
documentation.suse.com / Documentazione di SUSE Enterprise Storage 7.1 / Guida all'amministrazione e alle operazioni / Accesso ai dati del cluster  / File system in cluster
Si applica a SUSE Enterprise Storage 7.1

23 File system in cluster

In questo capitolo sono descritti i task amministrativi che di norma vengono eseguiti dopo la configurazione del cluster e l'esportazione di CephFS. Per ulteriori informazioni sulla configurazione di CephFS, fare riferimento a Sezione 8.3.3, «Distribuzione dei Metadata Server».

23.1 Montaggio di CephFS

Una volta creato il file system ed MDS è attivo, si è pronti per montare il file da un host client.

23.1.1 Preparazione del client

Se sull'host client è in esecuzione SUSE Linux Enterprise 12 SP2 o versioni successive, il sistema è pronto per il montaggio di CephFS senza alcuna configurazione aggiuntiva.

Se sull'host client è in esecuzione SUSE Linux Enterprise 12 SP1, è necessario applicare le patch più recenti prima di montare CephFS.

In ogni caso, tutto il necessario per montare CephFS è incluso in SUSE Linux Enterprise. Il prodotto SUSE Enterprise Storage 7.1 non è necessario.

Per supportare in modo completo la sintassi di mount, prima di tentare di montare CephFS deve essere installato il pacchetto ceph-common (fornito con SUSE Linux Enterprise).

Importante
Importante

Senza il pacchetto ceph-common (e pertanto senza l'helper mount.ceph), occorrerà utilizzare gli IP dei monitor al posto del loro nome, poiché il client kernel non sarà in grado di eseguire la risoluzione del nome.

La sintassi mount di base è:

# mount -t ceph MON1_IP[:PORT],MON2_IP[:PORT],...:CEPHFS_MOUNT_TARGET \
MOUNT_POINT -o name=CEPHX_USER_NAME,secret=SECRET_STRING

23.1.2 Creazione di un file segreto

Per default, quando il cluster Ceph è in esecuzione l'autenticazione è attivata. È necessario creare un file in cui archiviare la chiave segreta (non il portachiavi stesso). Per ottenere la chiave segreta per un determinato utente e creare il file, procedere come indicato di seguito:

Procedura 23.1: Creazione di una chiave segreta
  1. Visualizzare la chiave per l'utente specificato in un file portachiavi:

    cephuser@adm > cat /etc/ceph/ceph.client.admin.keyring
  2. Copiare la chiave dell'utente che utilizzerà il file system Ceph FS montato. Di norma, la chiave è simile a quanto riportato di seguito:

    AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==
  3. Creare un file in cui il nome utente costituisce parte del nome file, ad esempio /etc/ceph/admin.secret per l'utente admin.

  4. Incollare il valore della chiave nel file creato al passaggio precedente.

  5. Impostare i diritti di accesso al file appropriati. L'utente deve essere il solo in grado di leggere il file, gli altri non possono avere alcun diritto di accesso.

23.1.3 Montaggio di CephFS

È possibile montare CephFS utilizzando il comando mount. È necessario specificare il nome host di monitoraggio o l'indirizzo IP. Poiché in SUSE Enterprise Storage l'autenticazione cephx è abilitata per default, è necessario specificare un nome utente e il rispettivo segreto:

# mount -t ceph ceph_mon1:6789:/ /mnt/cephfs \
 -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==

Dato che il comando precedente rimane nella cronologia shell, la lettura del segreto da un file rappresenta un approccio più sicuro:

# mount -t ceph ceph_mon1:6789:/ /mnt/cephfs \
 -o name=admin,secretfile=/etc/ceph/admin.secret

Il file segreto deve contenere solo il segreto del portachiavi effettivo. Nell'esempio, il file conterrà quindi solo la riga seguente:

AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
Suggerimento
Suggerimento: specifica di più monitor

Qualora uno dei monitoraggi dovesse essere inattivo al momento del montaggio, è buona prassi specificare più monitoraggi separati da virgole nella riga di comando mount. Ciascun indirizzo di monitoraggio si presenta nella forma host[:port]. Se non si specifica la porta, per default viene utilizzata la 6789.

Creare il punto di montaggio nell'host locale:

# mkdir /mnt/cephfs

Montaggio di CephFS:

# mount -t ceph ceph_mon1:6789:/ /mnt/cephfs \
 -o name=admin,secretfile=/etc/ceph/admin.secret

Se è necessario montare un sottoinsieme del file system, è possibile specificare una sottodirectory subdir:

# mount -t ceph ceph_mon1:6789:/subdir /mnt/cephfs \
 -o name=admin,secretfile=/etc/ceph/admin.secret

È possibile specificare più host di monitoraggio nel comando mount:

# mount -t ceph ceph_mon1,ceph_mon2,ceph_mon3:6789:/ /mnt/cephfs \
 -o name=admin,secretfile=/etc/ceph/admin.secret
Importante
Importante: accesso in lettura alla directory radice

Se si utilizzano client con restrizioni di percorso, tra le funzionalità MDS deve essere incluso l'accesso in lettura alla directory radice. Ad esempio, un portachiavi potrebbe presentare l'aspetto seguente:

client.bar
 key: supersecretkey
 caps: [mds] allow rw path=/barjail, allow r path=/
 caps: [mon] allow r
 caps: [osd] allow rwx

la parte allow r path=/ significa che i client con restrizioni di percorso sono in grado di leggere il volume radice, ma non di scriverlo. Nei casi di utilizzo in cui l'isolamento completo è un requisito, ciò può rappresentare un problema.

23.2 Smontaggio di CephFS

Per smontare CephFS, utilizzare il comando umount:

# umount /mnt/cephfs

23.3 Montaggio di CephFS in /etc/fstab

Per montare CephFS automaticamente all'avvio del client, inserire la riga corrispondente nella rispettiva tabella dei file system /etc/fstab:

mon1:6790,mon2:/subdir /mnt/cephfs ceph name=admin,secretfile=/etc/ceph/secret.key,noatime,_netdev 0 2

23.4 Più daemon MDS attivi (MDS attivo-attivo)

Per default CephFS è configurato per un unico daemon MDS attivo. Per adattare le prestazioni dei metadati a sistemi su larga scala, è possibile abilitare più daemon MDS attivi in modo che il workload dei metadati venga condiviso con un altro.

23.4.1 Utilizzo dell'MDS attivo-attivo

Quando le prestazioni dei metadati sull'MDS singolo di default si bloccano, prendere in considerazione l'eventualità di utilizzare più daemon MDS attivi.

L'aggiunta di ulteriori daemon non migliora le prestazioni su tutti i tipi di workload. Ad esempio, una singola applicazione in esecuzione su un unico client non sarà avvantaggiata da un maggior numero di daemon MDS, a meno che l'applicazione non esegua parallelamente molte operazioni di metadati.

I workload che di norma traggono vantaggi da un maggior numero di daemon MDS attivi sono quelli provvisti di numerosi client, che magari funzionano su molte directory separate.

23.4.2 Aumento delle dimensioni del cluster attivo MDS

Ciascun file system CephFS presenta un'impostazione max_mds che controlla il numero di livelli che saranno creati. Il numero di livelli effettivo nel file system aumenterà solo se è disponibile un daemon di riserva da inserire nel nuovo livello. Se ad esempio è in esecuzione un solo daemon MDS e max_mds è impostato su due, non verrà creato un secondo livello.

Nell'esempio seguente, l'opzione max_mds viene impostata a 2 per creare un nuovo livello oltre a quello di default. Per visualizzare le modifiche, eseguire ceph status prima di impostare max_mds, quindi osservare la riga contenente fsmap:

cephuser@adm > ceph status
  [...]
  services:
    [...]
    mds: cephfs-1/1/1 up  {0=node2=up:active}, 1 up:standby
    [...]
cephuser@adm > ceph fs set cephfs max_mds 2
cephuser@adm > ceph status
  [...]
  services:
    [...]
    mds: cephfs-2/2/2 up  {0=node2=up:active,1=node1=up:active}
    [...]

Il livello appena creato (1) passa dallo stato "creating" al rispettivo stato "active".

Importante
Importante: daemon in standby

Anche con più daemon MDS attivi, in un sistema altamente disponibile è comunque richiesto che vengano impiegati daemon in standby se i server in esecuzione su un daemon attivo vengono meno.

Di conseguenza, il numero massimo effettivo di max_mds per i sistemi altamente disponibili è uno in meno rispetto al numero totale di server MDS presenti nel sistema. Per garantire la disponibilità qualora si verificassero più errori di server, aumentare il numero di daemon in standby nel sistema in modo che corrisponda al numero di errori di server necessario per poter rimanere attivi.

23.4.3 Riduzione del numero di livelli

Tutti i livelli, inclusi quelli da rimuovere, devono prima essere attivi. Vale a dire che è necessario disporre di almeno max_mds daemon MDS disponibili.

In primo luogo, impostare max_mds a un numero inferiore. Ad esempio, tornare a un singolo MDS attivo:

cephuser@adm > ceph status
  [...]
  services:
    [...]
    mds: cephfs-2/2/2 up  {0=node2=up:active,1=node1=up:active}
    [...]
cephuser@adm > ceph fs set cephfs max_mds 1
cephuser@adm > ceph status
  [...]
  services:
    [...]
    mds: cephfs-1/1/1 up  {0=node2=up:active}, 1 up:standby
    [...]

23.4.4 Aggiunta manuale di un albero della directory a un livello

Per distribuire uniformemente il carico dei metadati nel cluster in configurazioni con vari server di metadati attivi, viene eseguito un bilanciamento. Di norma, questo metodo risulta sufficientemente efficace per la maggior parte degli utenti, ma talvolta è auspicabile sostituire il bilanciamento dinamico con mappature esplicite dei metadati in determinati livelli. In tal modo l'amministratore o gli utenti possono distribuire uniformemente il carico di applicazioni o limitare l'impatto delle richieste di metadati degli utenti sull'intero cluster.

Il meccanismo fornito a tale scopo è denominato "pin di esportazione". Si tratta di un attributo esteso delle directory il cui nome è ceph.dir.pin. Gli utenti possono impostare questo attributo mediante l'uso di comandi standard:

# setfattr -n ceph.dir.pin -v 2 /path/to/dir

Il valore (-v) dell'attributo esteso corrisponde al livello cui assegnare il sottoalbero della directory. Un valore di default pari a -1 indica che la directory non è stata aggiunta.

La directory superiore più vicina con pin di esportazione impostato, eredita il pin. Pertanto, l'impostazione del pin di esportazione in una directory influisce su tutte le rispettive directory secondarie. Il pin della directory superiore può essere sostituito impostando il pin di esportazione della directory secondaria. Esempio:

# mkdir -p a/b                      # "a" and "a/b" start with no export pin set.
setfattr -n ceph.dir.pin -v 1 a/  # "a" and "b" are now pinned to rank 1.
setfattr -n ceph.dir.pin -v 0 a/b # "a/b" is now pinned to rank 0
                                  # and "a/" and the rest of its children
                                  # are still pinned to rank 1.

23.5 Gestione del failover

Se un daemon MDS smette di comunicare con il monitoraggio, questo attenderà mds_beacon_grace secondi (valore di default 15 secondi) prima di contrassegnare il daemon come lento. È possibile configurare uno o più daemon "in standby" che verranno impiegati durante il failover del daemon MDS.

23.5.1 Configurazione della riproduzione in standby

È possibile configurare ciascun file system CephFS per aggiungere daemon standby-replay. Questi daemon standby-replay seguono il journal dei metadati dell'MDS attivo per ridurre il tempo di failover nel caso in cui quest'ultimo dovesse diventare non disponibile. Ogni MDS attivo può essere seguito da un solo daemon standby-replay.

Configurare la riproduzione in standby su un file system con il comando seguente:

cephuser@adm > ceph fs set FS-NAME allow_standby_replay BOOL

Se impostati, i monitor assegneranno i daemon standby-replay disponibili per fare in modo che seguano gli MDS attivi su tale file system.

Quando un MDS entra in stato di riproduzione in standby, verrà utilizzato solo come standby per il livello seguito. Se un altro livello genera un errore, il daemon standby-replay non verrà utilizzato come sostituto, anche se non ve ne sono altri in standby disponibili. Per questo motivo, se si utilizza la riproduzione in standby, è consigliabile che per ogni MDS attivo sia presente un daemon standby-replay.

23.6 Impostazione delle quote CephFS

È possibile impostare le quote in qualsiasi sottodirectory del file system Ceph. La quota consente di limitare il numero di byte o file memorizzati al di sotto del punto specificato nella gerarchia della directory.

23.6.1 Limitazioni delle quote CephFS

L'uso delle quote con CephFS pone le limitazioni seguenti:

Le quote sono cooperative e non concorrenziali.

Le quote Ceph contano sul fatto che il client, al raggiungimento di uno specifico limite, interrompa la scrittura sul file system di cui esegue il montaggio. La parte server non può impedire a un client dannoso di scrivere quanti più dati possibile. Le quote non devono essere utilizzate per evitare il riempimento del file system negli ambienti con client completamente inattendibili.

Le quote non sono precise.

I processi che scrivono sul file system verranno interrotti poco dopo il raggiungimento del limite di quota. Verrà loro inevitabilmente concesso di scrivere alcuni dati oltre il limite configurato. I client scrittori verranno interrotti entro alcuni decimi di secondo dopo il superamento di tale limite.

Le quote sono implementate nel client kernel a partire dalla versione 4.17.

Le quote sono supportate dal client dello spazio utente (libcephfs, ceph-fuse). I client kernel Linux 4.17 e versioni successive supportano le quote CephFS sui cluster di SUSE Enterprise Storage 7.1. I client kernel (anche le versioni recenti) non sono in grado di gestire le quote sui cluster meno recenti, anche se possono impostarne gli attributi estesi. I kernel SLE12-SP3 (e versioni successive) includono già i backport necessari per la gestione delle quote.

In presenza di restrizioni di montaggio basate sul percorso, prestare attenzione quando si configurano le quote.

Per applicare le quote, il client deve disporre dell'accesso all'inode della directory sulla quale sono configurate. Il client non applicherà la quota se dispone dell'accesso limitato a un percorso specifico (ad esempio home/user) in base alla funzionalità MDS e se la quota è configurata su una directory antenato a cui il client non ha accesso (/home). Se si applicano restrizioni di accesso basate sul percorso, assicurarsi di configurare la quota sulla directory a cui il client può accedere (ad esempio /home/user o /home/user/quota_dir).

23.6.2 Configurazione delle quote CephFS

È possibile configurare le quote CephFS tramite gli attributi estesi virtuali:

ceph.quota.max_files

Configura un limite di file.

ceph.quota.max_bytes

Configura un limite di byte.

Se gli attributi vengono visualizzati su un inode della directory, la quota viene configurata in questa posizione. Se gli attributi non sono presenti, in questa directory non viene impostata nessuna quota (anche se potrebbe comunque esserne configurata una nella directory superiore).

Per impostare una quota di 100 MB, eseguire:

cephuser@mds > setfattr -n ceph.quota.max_bytes -v 100000000 /SOME/DIRECTORY

Per impostare una quota di 10.000 file, eseguire:

cephuser@mds > setfattr -n ceph.quota.max_files -v 10000 /SOME/DIRECTORY

Per visualizzare l'impostazione della quota, eseguire:

cephuser@mds > getfattr -n ceph.quota.max_bytes /SOME/DIRECTORY
cephuser@mds > getfattr -n ceph.quota.max_files /SOME/DIRECTORY
Nota
Nota: quota non impostata

Se il valore dell'attributo esteso è "0", la quota non è impostata.

Per rimuovere una quota, eseguire:

cephuser@mds > setfattr -n ceph.quota.max_bytes -v 0 /SOME/DIRECTORY
cephuser@mds > setfattr -n ceph.quota.max_files -v 0 /SOME/DIRECTORY

23.7 Gestione degli snapshot CephFS

Le snapshot CephFS creano una vista di sola lettura del file system relativa al momento in cui vengono acquisite. È possibile creare una snapshot in qualsiasi directory. La snapshot includerà tutti i dati del file system nella directory specificata. In seguito alla creazione della snapshot, i dati memorizzati nel buffer vengono trasferiti in modo asincrono da diversi client. Di conseguenza, la creazione delle snapshot è un processo molto rapido.

Importante
Importante: file system multipli

Se sono presenti più file system CephFS che condividono un singolo pool (tramite spazi dei nomi), le relative snapshot entreranno in conflitto e l'eliminazione di una snapshot comporterà l'assenza di dati file su altre snapshot che condividono lo stesso pool.

23.7.1 Creazione di snapshot

La funzione delle snapshot CephFS è abilitata per default sui nuovi file system. Per abilitarla sui file system esistenti, eseguire:

cephuser@adm > ceph fs set CEPHFS_NAME allow_new_snaps true

In seguito all'abilitazione delle snapshot, tutte le directory in CephFS avranno una sottodirectory.snap speciale.

Nota
Nota

Si tratta di una sottodirectory virtuale. Non è riportata nell'elenco di directory della directory superiore, ma il nome .snap non può essere utilizzato come nome di file o directory. Per accedere alla directory .snap, è necessario farlo esplicitamente, ad esempio:

> ls -la /CEPHFS_MOUNT/.snap/
Importante
Importante: limitazioni dei client kernel

I client kernel CephFS hanno una limitazione: non sono in grado di gestire più di 400 snapshot in un file system. Il numero di snapshot deve essere sempre tenuto al di sotto di questo limite, a prescindere dal client utilizzato. Se si utilizzano client CephFS meno recenti, come SLE12-SP3, tenere presente che superare le 400 snapshot è dannoso per le operazioni perché si verificherà un arresto anomalo del client.

Suggerimento
Suggerimento: nome personalizzato della sottodirectory degli snapshot

Configurare l'impostazione client snapdir per assegnare un nome diverso alla sottodirectory delle snapshot.

Per creare una snapshot, creare una sottodirectory nella directory .snap con un nome personalizzato. Ad esempio, per creare una snapshot della directory /CEPHFS_MOUNT/2/3/, eseguire:

> mkdir /CEPHFS_MOUNT/2/3/.snap/CUSTOM_SNAPSHOT_NAME

23.7.2 Eliminazione degli snapshot

Per eliminare una snapshot, rimuovere la relativa sottodirectory all'interno della directory .snap:

> rmdir /CEPHFS_MOUNT/2/3/.snap/CUSTOM_SNAPSHOT_NAME