On 2023-08-20 18:14, Dave Chinner wrote:
On Sun, Aug 20, 2023 at 03:37:38PM -0400, fk1xdcio@xxxxxxxx wrote:
Does this look like a sane method for moving an existing internal log
to an
external device?
3 drives:
/dev/nvme0n1p1 2GB Journal mirror 0
/dev/nvme1n1p1 2GB Journal mirror 1
/dev/sda1 16TB XFS
# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/nvme0n1p1
/dev/nvme1n1p2
# mkfs.xfs /dev/sda1
# xfs_logprint -C journal.bin /dev/sda1
# cat journal.bin > /dev/md0
# xfs_db -x /dev/sda1
xfs_db> sb
xfs_db> write -d logstart 0
xfs_db> quit
# mount -o logdev=/dev/md0 /dev/sda1 /mnt
So you are physically moving the contents of the log whilst the
filesystem is unmounted and unchanging.
-------------------------
It seems to "work" and I tested with a whole bunch of data.
You'll get ENOSPC earlier than you think, because you just leaked
the old log space (needs to be marked free space). There might be
other issues, but you get to keep all the broken bits to yourself if
you find them.
It's 2GB out of terabytes so I don't really care about the space but the
"other issues" is a problem.
You can probably fix that by running xfs_repair, but then....
I was also able
to move the log back to internal without issue (set logstart back to
what it
was originally). I don't know enough about how the filesystem layout
works
to know if this will eventually break.
.... this won't work.
i.e. you can move the log back to the original position because you
didn't mark the space the old journal used as free, so the filesytem
still thinks it is in use by something....
The space being leaked is fine but xfs_repair is an issue. I did some
testing and yes, if I run xfs_repair on one of these filesystems with a
moved log it causes all sorts of problems. In fact it doesn't seem to
work at all. Big problem.
*IF* this works, why can't xfs_growfs do it?
"Doctor, I can perform an amputation with a tornique and a chainsaw,
why can't you do that?"
,,,
-Dave.
Yes, I understand. I was thinking more of an offline utility for doing
this but I see why that can't be done in growfs.
So I guess it doesn't really work. This is why I ask the experts. I'll
keep experimenting because due to the requirements of needing to
physically move disks around, being able to move the log back and forth
from internal to external would be extremely helpful.
Thanks!