Newsgroup: it.comp.os.linux.sys
Titolo: XFS e ACL > 25...

 
Ho testè scoperto che in XFS c'è un vincolo sul numero delle ACL
impostabili, in totale, e che questo è 25.
 
A quanto ho visto, il problema è stato risolto dalla versione 3.2.0 in poi:
 
 
http://www.phoronix.com/scan.php?page=news_item&px=MTY5MTY
 
 
 
Il problema è che non riesco a capire:
 
a) come comprendere l'attuale formato del filesystem XFS, e quindi capire se
la limitazione è in atto. Ad esempio:
 
 root@brucaliffo:~# xfs_info /dev/vdb2 
 meta-data=/dev/vdb2              isize=256    agcount=4, agsize=32767935 blks
          =                       sectsz=512   attr=2, projid32bit=1
          =                       crc=0        finobt=0
 data     =                       bsize=4096   blocks=131071739, imaxpct=25
          =                       sunit=0      swidth=0 blks
 naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
 log      =internal               bsize=4096   blocks=63999, version=2
          =                       sectsz=512   sunit=0 blks, lazy-count=1
 realtime =none                   extsz=4096   blocks=0, rtextents=0
 root@brucaliffo:~# xfs_info /dev/sda1 
 meta-data=/dev/sda1              isize=256    agcount=32, agsize=81919936 blks
          =                       sectsz=512   attr=2, projid32bit=0
          =                       crc=0        finobt=0
 data     =                       bsize=4096   blocks=2621437952, imaxpct=5
          =                       sunit=0      swidth=0 blks
 naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
 log      =internal               bsize=4096   blocks=521728, version=2
          =                       sectsz=512   sunit=0 blks, lazy-count=1
 realtime =none                   extsz=4096   blocks=0, rtextents=0
 
sono due filesystem entrambi creati con debian jessie (che ha xfs 3.2.1).
 
 
b) c'è un modo (con xfs_admin) di fare una modifica online del filesystem e
 rimovere la limitazione?
 
 
Non trovo documentazione al riguardo... oppure non riesco a cercarla...
 
 
Grazie.
 
-- 
  Il Premier si è tirato su il mento,
  ma le balle gli cascano da tutte le parti		(?)

  rimovere la limitazione?
 
Se non ho capito male, xfs_db dovrebbe fare quello che dici. Ma, da quello che
ricordo, un file system XFS viene aggiornato automaticamente in base alla
versione del kernel usata
 
Enrico

 versione del kernel usata
 
Grazie. Si, vero:
 
	root@brucaliffo:~# xfs_db -r /dev/vdb2
	xfs_db> version
	versionnum [0xb4f4+0x8a] = V4,ATTR,NLINK,QUOTA,ALIGN,DIRV2,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT,PROJID32BIT
 
	root@brucaliffo:~# xfs_db -r /dev/sda1
	xfs_db> version
	versionnum [0xb4b4+0xa] = V4,ATTR,NLINK,ALIGN,DIRV2,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT
 
Quindi confermato che i filesystem in questione sono versione 4.
 
Ora, il kernel di jessie è il 3.16.0-4-amd64, e xfs5 dovrebbe essere stata
inserita nel 3.15.0, quindi esserci in jessie...
 
 
Che dire, si fa una prova...
 
 root@brucaliffo:~# dd if=/dev/zero of=/srv/test count=10M
 10485760+0 record dentro
 10485760+0 record fuori
 5368709120 byte (5,4 GB) copiati, 12,874 s, 417 MB/s
 root@brucaliffo:~# mkfs.xfs /srv/test
 meta-data=/srv/test              isize=256    agcount=4, agsize=327680 blks
          =                       sectsz=512   attr=2, projid32bit=1
          =                       crc=0        finobt=0
 data     =                       bsize=4096   blocks=1310720, imaxpct=25
          =                       sunit=0      swidth=0 blks
 naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
 log      =internal log           bsize=4096   blocks=2560, version=2
          =                       sectsz=512   sunit=0 blks, lazy-count=1
 realtime =none                   extsz=4096   blocks=0, rtextents=0
 root@brucaliffo:~# xfs_db /srv/test
 xfs_db> version
 versionnum [0xb4a4+0x8a] = V4,NLINK,ALIGN,DIRV2,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT,PROJID32BIT
 
quindi di default xfs crea comunque versione 4, e non sembra avere opzioni
per crearne in versione 5.
 
E inoltre:
 
 root@brucaliffo:~# xfs_db -x /srv/test
 xfs_db> version
 versionnum [0xb4a4+0x8a] = V4,NLINK,ALIGN,DIRV2,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT,PROJID32BIT
 xfs_db> version v5
 xfs_db: invalid version change command "v5"
 xfs_db> version 5
 xfs_db: invalid version change command "5"
 
No, qualcosa non mi torna... spetta...
 
 root@brucaliffo:~# mkfs.xfs -f -m crc=1 /srv/test
 meta-data=/srv/test              isize=512    agcount=4, agsize=327680 blks
          =                       sectsz=512   attr=2, projid32bit=1
          =                       crc=1        finobt=0
 data     =                       bsize=4096   blocks=1310720, imaxpct=25
          =                       sunit=0      swidth=0 blks
 naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
 log      =internal log           bsize=4096   blocks=2560, version=2
          =                       sectsz=512   sunit=0 blks, lazy-count=1
 realtime =none                   extsz=4096   blocks=0, rtextents=0
 root@brucaliffo:~# xfs_db -x /srv/test
 xfs_db> version
 versionnum [0xb4a5+0x18a] = V5,NLINK,ALIGN,DIRV2,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT,PROJID32BIT,CRC,FTYPE
 
OK, quindi se in jessie forzo la formattazione con i CRC abilitati, scatta
nel nuovo formato V5.
 
Ora provo:
 
 root@brucaliffo:~# xfs_db -x /srv/test
 xfs_db> version
 versionnum [0xb4a4+0x8a] = V4,NLINK,ALIGN,DIRV2,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT,PROJID32BIT
 xfs_db> version V5,NLINK,ALIGN,DIRV2,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT,PROJID32BIT,CRC,FTYPE
 xfs_db: invalid version change command "V5,NLINK,ALIGN,DIRV2,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT,PROJID32BIT,CRC,FTYPE"
 xfs_db> version CRC,FTYPE
 xfs_db: invalid version change command "CRC,FTYPE"
 
No, non sembra possibile passare al nuovo formato senza formattare. ;(
 
 
Per la cronaca:
 
 root@brucaliffo:~# mkfs.xfs -f -m crc=1 /srv/test
 meta-data=/srv/test              isize=512    agcount=4, agsize=327680 blks
          =                       sectsz=512   attr=2, projid32bit=1
          =                       crc=1        finobt=0
 data     =                       bsize=4096   blocks=1310720, imaxpct=25
          =                       sunit=0      swidth=0 blks
 naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
 log      =internal log           bsize=4096   blocks=2560, version=2
          =                       sectsz=512   sunit=0 blks, lazy-count=1
 realtime =none                   extsz=4096   blocks=0, rtextents=0
 root@brucaliffo:~# mount -o loop /srv/test /mnt/cdrom
 root@brucaliffo:~# dmesg | tail -n 2
 [1756508.104546] XFS (loop0): Mounting V5 Filesystem
 [1756508.148367] XFS (loop0): Ending clean mount
 
il kernel supporta la V5, e il problema delle ACL è effettivamente risolto.
 
 root@brucaliffo:/mnt/cdrom# touch test
 root@brucaliffo:/mnt/cdrom# c=1; for n in `getent group | cut -d : -f 3 | egrep "^[0-9]{4}$"`; do g=`getent group | grep ":$n:" | cut -d : -f 1`; echo "Setto ACL al gruppo $c:$g"; setfacl -m group:$g:rwx test; let c=c+1; done
 Setto ACL al gruppo 1:accettaz
 [...]
 root@brucaliffo:/mnt/cdrom# getfacl test | wc -l
 50
 
 
Uffa, mi tocca riformattare tutti i filesystem...
 
-- 
  But i still haven't found
  what i'm looking for					(U2)