Corso Cloud Storage Es3
Esercitazione 3
Fileset
Comandi: mmcrfileset, mmlinkfileset, mmlsfileset, mmedquota, df, dd, mmunlinkfileset, mmrmfileset
Creazione di un dependent fileset e di un independent fileset
- Create un dependent fileset di nome fileset1_fs e mount point /gpfs/fileset1
- Create un independent fileset di nome fileset2_fs, inode limit 2048 e mount point /gpfs/fileset2
- Esiste un fileset di default (root) che occupa tutti gli inode disponibile. Prima il fileset e' necessario ridimensionarlo
- Visualizzate i due fileset, ed usate df per visualizzare l'occupazione
[root@gpfs-srv-0 ~]# mmcrfileset gpfs_dev fileset1_fs Fileset fileset1_fs created with id 3 root inode 24848. [root@gpfs-srv-0 ~]# mmlinkfileset gpfs_dev fileset1_fs -J /gpfs/fileset1 Fileset fileset1_fs linked at /gpfs/fileset1
[root@gpfs-srv-0 ~]# mmchfileset gpfs_dev root --inode-limit 1019520 [root@gpfs-srv-0 ~]# mmcrfileset gpfs_dev fileset2_fs --inode-space new --inode-limit 65536 Fileset fileset2_fs created with id 4 root inode 393219. [root@gpfs-srv-0 ~]# mmlinkfileset gpfs_dev fileset2_fs -J /gpfs/fileset2 Fileset fileset2_fs linked at /gpfs/fileset2
[root@gpfs-srv-0 ~]# ls /gpfs fileset1 fileset2 [root@gpfs-srv-0 ~]# mmlsfileset gpfs_dev Filesets in file system 'gpfs_dev': Name Status Path root Linked /gpfs fileset1_fs Linked /gpfs/fileset1 fileset2_fs Linked /gpfs/fileset2 [root@gpfs-srv-0 ~]# mmlsfileset gpfs_dev -L Filesets in file system 'gpfs_dev': Name Id RootInode ParentId Created InodeSpace MaxInodes AllocInodes Comment root 0 3 -- Sun Oct 2 12:39:29 2016 0 72192 72192 root fileset fileset1_fs 3 24848 0 Mon Oct 3 22:31:36 2016 0 0 0 fileset2_fs 4 393219 0 Mon Oct 3 22:32:16 2016 3 2048 2048
Quota sul fileset e df
Verificare la funzionalita' del parametro --filesetdf del file system: per un fileset con quota, questo comando mostra l'occupazione disponibile in base alla quota.
[root@gpfs-srv-0 ~]# df -h /gpfs Filesystem Size Used Avail Use% Mounted on /dev/gpfs_dev 50G 8.4G 42G 17% /gpfs [root@gpfs-srv-0 ~]# df -h /gpfs/fileset1 /gpfs/fileset2 Filesystem Size Used Avail Use% Mounted on /dev/gpfs_dev 50G 8.4G 42G 17% /gpfs /dev/gpfs_dev 50G 8.4G 42G 17% /gpfs [root@gpfs-srv-0 ~]# mmedquota -j gpfs_dev:fileset1_fs Attention: In file system gpfs_dev, block soft limit (10485760) for fileset fileset1_fs is too small. Suggest setting it higher than 104857600. Attention: In file system gpfs_dev, block hard limit (10485760) for fileset fileset1_fs is too small. Suggest setting it higher than 104857600. [root@gpfs-srv-0 ~]# df -h /gpfs/fileset1 /gpfs/fileset2 Filesystem Size Used Avail Use% Mounted on /dev/gpfs_dev 10M 0 10M 0% /gpfs /dev/gpfs_dev 50G 8.4G 42G 17% /gpfs
Snapshot
- Popolate i due fileset fileset1_fs e fileset2_fs con il contenuto di /etc
- Create un file da 1 GB in /gpfs/fileset1/testfile
- Create una snapshot del file system, di nome global_snap, e navigate la snapshot
- Visualizzate la snapshot, rimuovete il file /gpfs/fileset1/testfile e visualizzate nuovamente la snapshot
- Create una snapshot del fileset fileset2_fs e visualizzatela
Comandi: mmcrsnapshot, mmlssnapshot, mmdelsnapshot, mmunlinkfileset, mmdelfileset
[root@gpfs-srv-0 ~]# cp -a /etc /gpfs/fileset1/ [root@gpfs-srv-0 ~]# cp -a /etc /gpfs/fileset2/ [root@gpfs-srv-0 ~]# mmcrsnapshot gpfs_dev global_snap Flushing dirty data for snapshot global_snap... Quiescing all file system operations. Snapshot global_snap created with id 6.
[root@gpfs-srv-0 ~]# ls /gpfs/.snapshots/ global_snap [root@gpfs-srv-0 ~]# ls /gpfs/.snapshots/global_snap/fileset1/ etc
Verificate con il comando mmlssnapshot l'occupazione effettuva su disco della snapshot (inizialmente 0) Rimuovete quindi il sottoalbero etc in /gpfs/fileset1/ e verificate:
- l'accessibilita' dei file rimossi attraverso la snapshot
- l'occupazione della snapshot su disco, che ora non e' piu' zero
[root@gpfs-srv-0 ~]# mmlssnapshot gpfs_dev -d -s all Snapshots in file system gpfs_dev: [data and metadata in KB] Directory SnapId Status Created Fileset Data Metadata global_snap 6 Valid Tue Oct 4 06:02:59 2016 0 8192 [root@gpfs-srv-0 ~]# rm -rf /gpfs/fileset1/etc [root@gpfs-srv-0 ~]# cat /gpfs/fileset1/etc/redhat_release cat: /gpfs/fileset1/etc/redhat_release: No such file or directory [root@gpfs-srv-0 ~]# cat /gpfs/.snapshots/global_snap/fileset1/etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@gpfs-srv-0 ~]# mmlssnapshot gpfs_dev -d -s all Snapshots in file system gpfs_dev: [data and metadata in KB] Directory SnapId Status Created Fileset Data Metadata global_snap 6 Valid Tue Oct 4 06:02:59 2016 32512 24704 [root@gpfs-srv-0 ~]# ls /gpfs/.snapshots/global_snap/fileset2/ etc
Create una snapshot del solo fileset2_fs e verificate che tale snapshot esiste solo entro il fileset
[root@gpfs-srv-0 ~]# mmcrsnapshot gpfs_dev fileset_snap -j fileset2_fs Flushing dirty data for snapshot fileset2_fs::fileset_snap... Quiescing all file system operations. Snapshot fileset2_fs::fileset_snap created with id 2. [root@gpfs-srv-0 ~]# ls /gpfs/fileset2/.snapshots/ fileset_snap [root@gpfs-srv-0 ~]# ls /gpfs/.snapshots/ global_snap
Rimuovete ora le snapshot create
[root@gpfs-srv-0 ~]# mmdelsnapshot gpfs_dev global_snap Invalidating snapshot files in global_snap... Deleting files in snapshot global_snap... 100.00 % complete on Mon Oct 3 23:00:04 2016 ( 219648 inodes with total 6 MB data processed) Invalidating snapshot files in global_snap/F/... Delete snapshot global_snap complete, err = 0 [root@gpfs-srv-0 ~]# mmdelsnapshot gpfs_dev fileset_snap -j fileset2_fs Invalidating snapshot files in fileset2_fs::fileset_snap... Deleting files in snapshot fileset2_fs::fileset_snap... 100.00 % complete on Mon Oct 3 23:00:25 2016 ( 2048 inodes with total 1 MB data processed) Invalidating snapshot files in fileset2_fs::fileset_snap/F/... Delete snapshot fileset2_fs::fileset_snap complete, err = 0
Cloning
Eseguite le seguenti operazioni per verificare la funzionalita' del cloning.
Create una directory nel fileset fileset2_fs (independent), cioe' in /gpfs/fileset2/, e lavorate in questa directory.
[root@gpfs-srv-0 gpfs]# mkdir /gpfs/fileset2/test_clone [root@gpfs-srv-0 gpfs]# cd /gpfs/fileset2/test_clone/
Create un file di nome orig, e visualizzate i-node e occupazione sul disco (ls -is)
[root@gpfs-srv-0 test_clone]# dd if=/dev/zero of=orig bs=1M count=4 4+0 records in 4+0 records out 4194304 bytes (4.2 MB) copied, 0.0102339 s, 410 MB/s [root@gpfs-srv-0 test_clone]# ls -lsi orig 394753 4096 -rw-r--r--. 1 root root 4194304 Oct 4 06:36 orig
Create un clone orig.copy di questo file, generando un parent di nome orig.snap (mmclone snap, mmclone copy) Visualizzate inode, occupazione su disco, e caratteristiche di cloning di questi file (mmclone show)
[root@gpfs-srv-0 test_clone]# mmclone snap orig orig.snap [root@gpfs-srv-0 test_clone]# ls -lis orig orig.snap 394753 0 -rw-r--r--. 1 root root 4194304 Oct 4 06:36 orig 394754 4096 -rw-r--r--. 2 root root 4194304 Oct 4 06:37 orig.snap [root@gpfs-srv-0 test_clone]# mmclone show orig orig.snap Parent Depth Parent inode File name ------ ----- -------------- --------- no 1 394754 orig yes 0 orig.snap [root@gpfs-srv-0 test_clone]# mmclone copy orig.snap orig.copy [root@gpfs-srv-0 test_clone]# ls -lis * 394753 0 -rw-r--r--. 1 root root 4194304 Oct 4 06:36 orig 394755 0 -rw-r--r--. 1 root root 4194304 Oct 4 06:38 orig.copy 394754 4096 -rw-r--r--. 3 root root 4194304 Oct 4 06:37 orig.snap [root@gpfs-srv-0 test_clone]# mmclone show * Parent Depth Parent inode File name ------ ----- -------------- --------- no 1 394754 orig no 1 394754 orig.copy yes 0 orig.snap
Modificate orig.copy e verificate il funzionamento del copy-on-write tramitr l'occupazione su disco.
[root@gpfs-srv-0 test_clone]# dd if=/dev/zero bs=1M count=1 >> orig.copy 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.00402996 s, 260 MB/s [root@gpfs-srv-0 test_clone]# ls -lis * 394753 0 -rw-r--r--. 1 root root 4194304 Oct 4 06:36 orig 394755 0 -rw-r--r--. 1 root root 5242880 Oct 4 06:39 orig.copy 394754 4096 -rw-r--r--. 3 root root 4194304 Oct 4 06:37 orig.snap
NOTA: in questo momento la modifica e' ancora in cache: occupazione di orig.copy e' ancora 0!
[root@gpfs-srv-0 test_clone]# ls -lis * 394753 0 -rw-r--r--. 1 root root 4194304 Oct 4 06:36 orig 394755 1024 -rw-r--r--. 1 root root 5242880 Oct 4 06:39 orig.copy 394754 4096 -rw-r--r--. 3 root root 4194304 Oct 4 06:37 orig.snap
Verificate che lo snapshot file orig.snap e' read-only
[root@gpfs-srv-0 test_clone]# echo OK >> orig.snap -bash: orig.snap: Read-only file system
Ora trasformate orig.copy in snapshot file, e createne un clone di nome orig.newcopy.
[root@gpfs-srv-0 test_clone]# mmclone snap orig.copy [root@gpfs-srv-0 test_clone]# mmclone show * Parent Depth Parent inode File name ------ ----- -------------- --------- no 1 394754 orig yes 1 394754 orig.copy yes 0 orig.snap [root@gpfs-srv-0 test_clone]# mmclone copy orig.copy orig.newcopy [root@gpfs-srv-0 test_clone]# ls -lis * 394753 0 -rw-r--r--. 1 root root 4194304 Oct 4 06:36 orig 394755 1024 -rw-r--r--. 2 root root 5242880 Oct 4 06:39 orig.copy 394756 0 -rw-r--r--. 1 root root 5242880 Oct 4 06:41 orig.newcopy 394754 4096 -rw-r--r--. 3 root root 4194304 Oct 4 06:37 orig.snap [root@gpfs-srv-0 test_clone]# mmclone show * Parent Depth Parent inode File name ------ ----- -------------- --------- no 1 394754 orig yes 1 394754 orig.copy no 2 394755 orig.newcopy yes 0 orig.snap
Modificate orig.newcopy e verificate ancora la funzionalita' del copy-on-write.
[root@gpfs-srv-0 test_clone]# dd if=/dev/zero bs=1M count=2 >> orig.newcopy 2+0 records in 2+0 records out 2097152 bytes (2.1 MB) copied, 0.00638342 s, 329 MB/s [root@gpfs-srv-0 test_clone]# ls -lis * 394753 0 -rw-r--r--. 1 root root 4194304 Oct 4 06:36 orig 394755 1024 -rw-r--r--. 2 root root 5242880 Oct 4 06:39 orig.copy 394756 2048 -rw-r--r--. 1 root root 7340032 Oct 4 06:41 orig.newcopy 394754 4096 -rw-r--r--. 3 root root 4194304 Oct 4 06:37 orig.snap
Il file orig e' child di orig.snap. Usando mmclone split liberatelo da questa dipendenza. Verificate dopo la sua occupazione su disco.
[root@gpfs-srv-0 test_clone]# mmclone split orig [root@gpfs-srv-0 test_clone]# mmclone show orig Parent Depth Parent inode File name ------ ----- -------------- --------- orig [root@gpfs-srv-0 test_clone]# ls -lis orig 394753 4096 -rw-r--r--. 1 root root 4194304 Oct 4 06:36 orig [root@gpfs-srv-0 test_clone]# mmclone show * Parent Depth Parent inode File name ------ ----- -------------- --------- orig yes 1 394754 orig.copy no 2 394755 orig.newcopy yes 0 orig.snap
Verificate la funzionalita' del redirect: liberate la dipendenza diretta di orig.newclone da orig.clone, e verificate:
- la dipendenza attuale di orig.newclone
- il fatto che orig.clone, non avendo piu' child, puo' essere rimosso dal filesystem
[root@gpfs-srv-0 test_clone]# ls -lis * 394753 4096 -rw-r--r--. 1 root root 4194304 Oct 4 06:36 orig 394755 1024 -rw-r--r--. 2 root root 5242880 Oct 4 06:39 orig.copy 394756 2048 -rw-r--r--. 1 root root 7340032 Oct 4 06:41 orig.newcopy 394754 4096 -rw-r--r--. 2 root root 4194304 Oct 4 06:37 orig.snap [root@gpfs-srv-0 test_clone]# mmclone redirect orig.newcopy [root@gpfs-srv-0 test_clone]# mmclone show * Parent Depth Parent inode File name ------ ----- -------------- --------- orig yes 1 394754 orig.copy no 1 394754 orig.newcopy yes 0 orig.snap [root@gpfs-srv-0 test_clone]# ls -lis * 394753 4096 -rw-r--r--. 1 root root 4194304 Oct 4 06:36 orig 394755 1024 -rw-r--r--. 1 root root 5242880 Oct 4 06:39 orig.copy 394756 3072 -rw-r--r--. 1 root root 7340032 Oct 4 06:41 orig.newcopy 394754 4096 -rw-r--r--. 3 root root 4194304 Oct 4 06:37 orig.snap [root@gpfs-srv-0 test_clone]# rm -f orig.copy [root@gpfs-srv-0 test_clone]# [root@gpfs-srv-0 test_clone]# rm -f orig.snap rm: cannot remove ‘orig.snap’: Read-only file system
Verificate che la funzionalita' di cloning e' confinata all'interno dell'independent fileset di appartenenza:
- spostate orig.newcopy fuori dal fileset e verificatene l'occupazione
- verificate che il move ha rotto la relazione parent-child, e che orig puo' ora essere rimosso
[root@gpfs-srv-0 test_clone]# [root@gpfs-srv-0 test_clone]# mv orig.newcopy /gpfs/ [root@gpfs-srv-0 test_clone]# ls -lis /gpfs/orig.newcopy 60331 0 -rw-r--r--. 1 root root 7340032 Oct 4 06:41 /gpfs/orig.newcopy [root@gpfs-srv-0 test_clone]# ls -lis /gpfs/orig.newcopy 60331 0 -rw-r--r--. 1 root root 7340032 Oct 4 06:41 /gpfs/orig.newcopy [root@gpfs-srv-0 test_clone]# rm orig.snap rm: remove regular file ‘orig.snap’? y [root@gpfs-srv-0 test_clone]# ls orig [root@gpfs-srv-0 test_clone]# rm -f orig /gpfs/orig.newcopy
Creazione e configurazione del fileset per i servizi Glance, Cinder e Nova di OpenStack
Fare pulizia
Rimuovete i fileset creati in precedenza (devono essere vuoti, unlinked e senza snapshot)
[root@gpfs-srv-0 ~]# rm -rf /gpfs/fileset1/etc [root@gpfs-srv-0 ~]# rm -rf /gpfs/fileset2/etc /gpfs/fileset2/test_clone [root@gpfs-srv-0 ~]# mmunlinkfileset gpfs_dev fileset1_fs Fileset fileset1_fs unlinked. [root@gpfs-srv-0 ~]# mmunlinkfileset gpfs_dev fileset2_fs Fileset fileset2_fs unlinked. [root@gpfs-srv-0 ~]# mmdelfileset gpfs_dev fileset1_fs Checking fileset ... Checking fileset complete. Deleting fileset ... Fileset fileset1_fs deleted. [root@gpfs-srv-0 ~]# mmdelfileset gpfs_dev fileset2_fs Checking fileset ... Checking fileset complete. Deleting fileset ... Fileset fileset2_fs deleted.
Creazione di un independent fileset
Create e montate un fileset in gpfs_dev con le seguenti caratteristiche:
- fileset name: openstack_fs
- fileset inode space: new (independent fileset)
- junction point: /gpfs/openstack
Comandi: mmcrfileset, mmlsfileset, mmlinkfileset
[root@gpfs-srv-0 ~]# mmcrfileset gpfs_dev openstack_fs --inode-space new Fileset openstack_fs created with id 1 root inode 131075. [root@gpfs-srv-0 ~]# ls /gpfs/ [root@gpfs-srv-0 ~]# mmlinkfileset gpfs_dev openstack_fs -J /gpfs/openstack Fileset openstack_fs linked at /gpfs/openstack [root@gpfs-srv-0 ~]# ls /gpfs/ openstack [root@gpfs-srv-0 ~]# mmlsfileset gpfs_dev Filesets in file system 'gpfs_dev': Name Status Path root Linked /gpfs openstack_fs Linked /gpfs/openstack [root@gpfs-srv-0 ~]# mmlsfileset gpfs_dev -L Filesets in file system 'gpfs_dev': Name Id RootInode ParentId Created InodeSpace MaxInodes AllocInodes Comment root 0 3 -- Sun Oct 2 12:39:29 2016 0 72192 72192 root fileset openstack_fs 1 131075 0 Sun Oct 2 12:46:20 2016 1 100096 72704