Disappearing files in FreeBSD 13.0-R2
David Christensen
dpchrist at holgerdanske.com
Mon Mar 15 06:44:13 UTC 2021
On 3/14/21 6:22 PM, Waitman Gobble wrote:
> On Sun, Mar 14, 2021 at 9:20 PM Waitman Gobble <gobble.wa at gmail.com> wrote:
>>
>> On Sun, Mar 14, 2021 at 8:00 PM David Christensen
>> <dpchrist at holgerdanske.com> wrote:
>>>
>>> On 3/14/21 4:03 PM, Waitman Gobble wrote:
>>>> I did a fresh install using ZFS with encryption. I copied the files on a
>>>> second drive (UFS) to /usr/home/backup (ZFS). I reformatted the second
>>>> drive ZFS and created a new pool "home" for that drive. It decided to mount
>>>> the drive as /home. AFAIK i never told the system to do that. But /home and
>>>> /usr/home are different, there is no link.
>>>>
>>>> I can only see /usr/home/backup if i boot into single user mode. If i mount
>>>> read write or boot normally then /usr/home is empty.
>>>>
>>>> I copied the files to a usb drive.
>>>>
>>>> How do i delete the backup? Its taking up 100 gb. I can see them read only
>>>> and copy to usb drive, but as soon as i mount read write they disappear. I
>>>> did not import the home pool, it does not show up in the status command.
>>>
>>>
>>> Please run the following commands and post your console session:
>>>
>>> # gpart show
>>>
>>> # zpool list
>>>
>>> # zfs list -d 1
>>>
>>> # zfs list -r -t all home
>>>
>>>
>>> David
>>
>> Thanks for the reply.
>>
>> Ok, Here's the info from multi-user mode.
>>
>> In single user mode the 'home' pool (second drive) doesn't show up in
>> status or list or anything, which is fine.
>> When I boot into single user mode / read only then /usr/home has 100gb
>> of backup. If I reboot to multi-user or mount read-write in single
>> user then the files in /usr/home disappear. (even if the second drive
>> isn't mounted). The 80 GB avail should be like 180GB I think, it's a
>> 250GB drive. The usage stats don't change if the files in /usr/home
>> appear or not.
>>
>> The home directory for the second drive is /home which isn't a link to
>> /usr/home or vice-versa AFAIK. in multi-user mode /home has my files,
>> /usr/home is empty. in single-user read only , /home is empty and
>> /usr/home has the backup files.
>>
>> root at ayo:/home # gpart show
>> => 40 488397088 ada0 GPT (233G)
>> 40 532480 1 efi (260M)
>> 532520 1024 2 freebsd-boot (512K)
>> 533544 984 - free - (492K)
>> 534528 4194304 3 freebsd-swap (2.0G)
>> 4728832 483667968 4 freebsd-zfs (231G)
>> 488396800 328 - free - (164K)
>>
>> => 40 976773088 ada1 GPT (466G)
>> 40 976773088 1 freebsd-zfs (466G)
>>
>> => 40 976773088 da0 GPT (466G)
>> 40 2008 - free - (1.0M)
>> 2048 976771072 1 freebsd-ufs (466G)
>> 976773120 8 - free - (4.0K)
>>
>> => 40 976773088 da1 GPT (466G)
>> 40 2008 - free - (1.0M)
>> 2048 976771072 1 freebsd-ufs (466G)
>> 976773120 8 - free - (4.0K)
>>
>> root at ayo:/home # zpool list
>> NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP
>> HEALTH ALTROOT
>> home 464G 294G 170G - - 0% 63% 1.00x ONLINE -
>> zroot 230G 142G 87.6G - - 0% 61% 1.00x ONLINE -
>> root at ayo:/home # zfs list -d 1
>> NAME USED AVAIL REFER MOUNTPOINT
>> home 294G 156G 294G /home
>> zroot 142G 80.4G 96K /zroot
>> zroot/ROOT 140G 80.4G 96K none
>> zroot/tmp 184K 80.4G 184K /tmp
>> zroot/usr 1.38G 80.4G 96K /usr
>> zroot/var 877M 80.4G 96K /var
>> root at ayo:/home # zfs list -r -t all home
>> NAME USED AVAIL REFER MOUNTPOINT
>> home 294G 156G 294G /home
>> root at ayo:/home # ls /usr/home/
>> [nada]
>> root at ayo:/home #
>>
>>
>
> oops, missed a couple. sorry.
>
> root at ayo:/home # zfs list -r -t all home
> NAME USED AVAIL REFER MOUNTPOINT
> home 294G 156G 294G /home
>
> root at ayo:/home # zfs list -d 1
> NAME USED AVAIL REFER MOUNTPOINT
> home 294G 156G 294G /home
> zroot 142G 80.4G 96K /zroot
> zroot/ROOT 140G 80.4G 96K none
> zroot/tmp 184K 80.4G 184K /tmp
> zroot/usr 1.38G 80.4G 96K /usr
> zroot/var 877M 80.4G 96K /var
It looks like 'ada0' is a 250 GB drive with GPT and your system
partitions. ada0p4 should be your root partition with the ZFS pool
'zroot', containing the root filesystem. 'zroot/usr/home' should be a
ZFS filesystem mounted at /usr/home. These commands will confirm:
# zfs list -d 1 zroot/usr
# zfs list -r -t all zroot/usr/home
'/home' should be a symbolic link to '/usr/home'. These commands will
confirm:
# ls -l /home
# ls -l /usr
It looks like 'ada1' is a 500 GB drive with the ZFS pool 'home'. ZFS
mounts this at '/home' by default. This mount overlays the root
filesystem symbolic link '/home', but I do not understand why
'/usr/home/backup' disappears.
I would do the following as root in single-user mode:
1. Record your console session with script(1). Exact details will be
useful later; sooner if something goes wrong.
2. Take a recursive snapshot of the 'zroot' and 'home' ZFS filesystems.
Pick a meaningful SNAPNAME (I do date/ time strings):
# zfs snapshot -r zroot at SNAPNAME home at SNAPNAME
3. Unmount the ZFS filesystem 'zroot/usr/home', make it read-only,
change its mountpoint, and mount it::
# zfs unmount zroot/usr/home
# zfs set readonly=on zroot/usr/home
# zfs set mountpoint=/usr/oldhome zroot/usr/home
# zfs mount zroot/usr/home
/usr/oldhome and /usr/oldhome/backup should now be visible.
(If you previously created a ZFS filesystem
'zroot/usr/home/backup', repeat the first, second, and fourth steps
above; adjusting the filesystem name. The 'mountpoint' property should
be inherited.)
4. Set the mountpoint of the ZFS pool 'home' and mount it:
# zfs set mountpoint=/usr/home home
# zfs mount home
/usr/home should now be visible.
5. It is recommended practice not to put files and directories into the
base filesystem of a ZFS pool (e.g. '/usr/home') -- it is better to
create ZFS filesystems at the base level of a pool and put files,
directories, and/or additional ZFS filesystems into those. Assuming
'/usr/oldhome/backup' represents your old home directory, create a ZFS
filesystem for your new home directory:
# zfs create home/username
Do the same when adding more accounts in the future.
6. Assuming '/usr/oldhome/backup' represents one user account, copy its
contents to '/usr/home/username'.
7. Reboot and check everything.
8. Wait a while (hours, days, weeks). When you are certain everything
is okay, destroy the old home filesystem:
# zfs destroy -r zroot/usr/home
This should reclaim space in the 'zroot' pool and filesystem.
David
More information about the freebsd-questions
mailing list