On Sun, Jun 17, 2018 at 02:31:29PM -0400, Theodore Y. Ts'o wrote:
> On Fri, Jun 15, 2018 at 07:37:19PM -0700, Elliott Mitchell wrote:
> > 
> > During the process I ended up running `e2fsck -f` multiple times.  I
> > ended up running `e2fsck -f` after enabling each feature (`tune2fs`
> > really didn't like enabling multiple features at once).

> I will note that if you are starting with an ext2/ext3 file system (one
> without extents and the uninit_bg or metadata_csum features), you will
> get much better performance in the long run if you create a new ext4
> file system and then copy all of the data from the ext2 file system to
> ext4.
> 
> My experience from when we did an ext2 upgrade to ext4 (in no-journal
> mode) some six or seven years ago, for our workload, which was for a
> cluster file system, was comparing the performance of an existing file
> system upgrading to ext4 in place, versus the performance of a freshly
> created ext4 file system, was that the upgrade-in-place experience
> resulted in roughly half the performance improvement compared to a
> fresh ext4 file system.
> 
> So if you are going to need to run tune2fs and e2fsck -f multiple
> times ---- what are you trying to do?  What's the goal here?

Performance isn't a critical issue for this system.  As long as
performance is reasonable and ideally not too much system admin time is
spent, that is good enough.  I'm more concerned with keeping the system
up to date.  Everything is moving off ext3 onto ext4 and since one
crucial utility finally got updated for ext4, I'm doing upgrades.

One thing which had been an issue was getting journalled quotas.  Doing
full quota checks by having `repquota` do what amounts to an `fsck` is
kind of a bit slow.  I thought I'd managed to accomplish that while still
on ext3, but I wasn't absolutely certain...

> Don't get me wrong; if you can get me a reproducible test case, I'm
> happy to look at it.  But Red Hat doesn't support upgrading file
> systems via tune2fs.  And that's because there are all sorts of corner
> cases and it's very hard to do regression testing or bug
> reproductions.  We have used tune2fs to upgrade file systems at
> Google, but it's something we testetd extensively, and we only did it
> where it makes sense.

RedHat support isn't an issue for me if you notice where this report
appeared.  :-)  It was my understanding upgrade via `tune2fs` is supposed
to work, so I used the handy tool.


> > > And do you really need to enable user, group, and project quota
> > > tracking?  Please keep in mind there is a performance cost for
> > > enabling quota tracking; it is definitely not free....
> > 
> > I definitely want user quota with journal.  I'm unsure of group and
> > project.
> 
> For each quota type that you enable, you basically end up paying for
> an extra random write, and potentially a random read, associated with
> block or inode allocation for a given user or group id, every five
> seconds.  So if you don't need group or project tracking, don't turn
> it on.  We only track usage based on a group basis, so we only enable
> group quotas.
> 
> As far as the turning on the quota feature and that terrible error
> message --- did the file system have any quota files before, and did
> you check to see if the file system was full (e.g., not enough blocks
> to allocate the quota file)?

Yes.  I could well believe `tune2fs` is unable to upgrade quota type, and
that is where the problem came from.  Disabling one quota type may be
worthwhile.

`dumpe2fs -h` with magic numbers stripped, filesystem 0:

Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype 
needs_recovery extent 64bit mmp sparse_super large_file metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              262144
Block count:              1047552
Reserved block count:     52377
Free blocks:              828522
Free inodes:              253868
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      255
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Filesystem created:       Fri May 12 18:59:53 2017
Last mount time:          Tue Jun 12 23:30:50 2018
Last write time:          Tue Jun 12 23:30:50 2018
Mount count:              2
Maximum mount count:      22
Last checked:             Tue Jun 12 22:52:53 2018
Check interval:           0 (<none>)
Lifetime writes:          350 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Default directory hash:   half_md4
MMP block number:         773
MMP update interval:      5
Checksum type:            crc32c


`dumpe2fs -h` with magic numbers stripped, filesystem 1:

Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype 
needs_recovery extent 64bit mmp sparse_super large_file metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              1509600
Block count:              6037360
Reserved block count:     301868
Free blocks:              5262543
Free inodes:              1336969
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      1021
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8160
Inode blocks per group:   510
Filesystem created:       Fri May 12 19:01:07 2017
Last mount time:          Tue Jun 12 23:30:50 2018
Last write time:          Tue Jun 12 23:30:50 2018
Mount count:              1
Maximum mount count:      29
Last checked:             Tue Jun 12 22:58:11 2018
Check interval:           0 (<none>)
Lifetime writes:          6674 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Journal backup:           inode blocks
MMP block number:         1539
MMP update interval:      5
Checksum type:            crc32c
Journal features:         journal_incompat_revoke journal_64bit 
journal_checksum_v3
Journal start:            1
Journal checksum type:    crc32c



-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |         ehem+sig...@m5p.com  PGP 87145445         |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445

Reply via email to