In queste istruzioni si crea un file system (in questo esempio con 2 "top level directory" : /terabit-home e /slurm-controller) che si appoggia su 3 MDS: 2 attivi e uno in stand-by
Quindi il prerequisto e' avere prima creato 3 MDS. Vedi: How to install a MDS node (Alma9, Quincy)
Creo i pool per dati e metadati.
Opportuno crearli in replica 3 e opportuno che quello di metadati sia su ssd
ceph osd pool create cephfs_data 32 32 ceph osd pool set cephfs_data crush_rule replicated_hdd ceph osd pool create cephfs_metadata 32 32 ceph osd pool set cephfs_metadata crush_rule replicated_ssd
Creo il filesystem:
ceph fs new cephfs cephfs_metadata cephfs_data
Dovrei ora vedere un MDS active e 2 in standby:
root@c-mds-03 ceph]# ceph mds stat cephfs:1 {0=c-mds-01=up:active} 2 up:standby
Configuro questo file system in modo che usi 2 MDS attivi:
[root@c-mds-03 ceph]# ceph fs set cephfs max_mds 2
Verifico:
[root@c-mds-03 ceph]# ceph mds stat cephfs:2 {0=c-mds-01=up:active,1=c-mds-03=up:active} 1 up:standby
Creo un client che abbia accesso a tutto il file system (sostanzialmente mi servira' solo per creare le top level directory)
Creo un client per ogni "top level directory" per questo filesystem:
[root@c-mon-1 almalinux]# ceph fs authorize cephfs client.allfs / rwp | tee /etc/ceph/ceph.client.allfs.keyring [client.allfs] key = AQCnHolnBCOgNBAA9Vn36INaHCF5u599JMjtuQ==
[root@c-mon-1 almalinux]# ceph fs authorize cephfs client.terabithome /terabithome rwp | tee /etc/ceph/ceph.client.terabithome.keyring [client.terabithome] key = AQA9FIlnaJ5SFBAAdT8gzFgfOp9jq3meON0o+g== [root@c-mon-1 almalinux]# ceph fs authorize cephfs client.slurmctrl /slurmctrl rwp | tee /etc/ceph/ceph.client.slurmctrl.keyring [client.slurmctrl] key = AQB4FIlng39/JhAAloEnVIZDpfMz/Zijwjou5Q==
Il 'p' serve per poter settare le quote
A questo punto devo creare le top level directory. Configuro una macchina di servizio come client (vedi How to mount a ceph file system) e li' monto l'intero filesystem usando il client allfs. Quindi il comando di mount sara' qualcosa tipo:
mkdir /cephfs mount -t ceph allfs@.cephfs=/ /cephfs -o mon_addr=10.70.42.10:6789/10.70.42.9:6789/10.70.42.8:6789,secretfile=/etc/ceph/cephfs.allfs.secret
A questi punto creo le top level directory e poi posso fare l'umount:
mkdir /cephfs/terabithome mkdir /cephfs/slurmct umount /cephfs
Il file /etc/ceph/ceph.client.xyz.keyring serviranno poi nei nodi dove si monta la top level directory xyz
Volendo si puo' fare in modo che tree diversi del file system usino pool diversi
Abilitazione di un path in ceph-fs che usa un pool SSD
Vogliamo fare in modo che quello che per tutto quello che viene scritto sotto /ssd venga usato un pool SSD
E' tutto spiegato nel ticket:
PDCL-2399 - Getting issue details... STATUS
In sostanza:
- si crea un pool dati SSD
- si aggancia questo nuovo pool al filesystem (ceph fs add_data_pool cephfs cephfs_data_ssd)
- si specifica che per tutto quello che si scrive sotto /ssd si deve usare questo pool ([root@cld-ter-01# setfattr -n ceph.dir.layout.pool -v cephfs_data_ssd /cephfs/ssd)