Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Mar 2021 23:44:08 -0700
From:      David Christensen <dpchrist@holgerdanske.com>
To:        freebsd-questions@freebsd.org
Subject:   Re: Disappearing files in FreeBSD 13.0-R2
Message-ID:  <dd9b9d46-7334-b4a6-9db4-2f4504c89436@holgerdanske.com>
In-Reply-To: <CAFuo_fzRtrpkXkrBfPCj5byWNKCtjLKw6sE43puOm2vE%2Bryn_Q@mail.gmail.com>
References:  <CAFuo_fzQFbap5T9S3OBV-f18FM=UxFXX3YWF5rOq-zP%2B-cuAYQ@mail.gmail.com> <e22f9728-de71-5990-795a-81fd9d91f832@holgerdanske.com> <CAFuo_fz1Mgb7nJ_BewG_2PPuPUQqnWJ7YhebZmLcuLch-00YaA@mail.gmail.com> <CAFuo_fzRtrpkXkrBfPCj5byWNKCtjLKw6sE43puOm2vE%2Bryn_Q@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 3/14/21 6:22 PM, Waitman Gobble wrote:
> On Sun, Mar 14, 2021 at 9:20 PM Waitman Gobble <gobble.wa@gmail.com> wrote:
>>
>> On Sun, Mar 14, 2021 at 8:00 PM David Christensen
>> <dpchrist@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@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@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@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@ayo:/home # zfs list -r -t all home
>> NAME   USED  AVAIL     REFER  MOUNTPOINT
>> home   294G   156G      294G  /home
>> root@ayo:/home # ls /usr/home/
>> [nada]
>> root@ayo:/home #
>>
>>
> 
> oops, missed a couple. sorry.
> 
> root@ayo:/home # zfs list -r -t all home
> NAME   USED  AVAIL     REFER  MOUNTPOINT
> home   294G   156G      294G  /home
> 
> root@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@SNAPNAME home@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?dd9b9d46-7334-b4a6-9db4-2f4504c89436>