Corso Cloud Storage Es3

From Centro Calcolo
Revision as of 14:50, 12 October 2017 by Mirko (talk | contribs) (→‎Snapshot)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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