Rancher Desktop虚拟机存储

我在检查 Rancher Desktop虚拟机 发现一个有趣的现象:

sudo df -h 输出
Filesystem                Size      Used Available Use% Mounted on
devtmpfs                 10.0M         0     10.0M   0% /dev
shm                       1.9G         0      1.9G   0% /dev/shm
/dev/sr0                269.0M    269.0M         0 100% /media/sr0
tmpfs                     1.9G    420.4M      1.5G  21% /
tmpfs                   784.4M      1.1M    783.3M   0% /run
/dev/loop0               19.5M     19.5M         0 100% /.modloop
efivarfs                255.9K     22.8K    228.1K   9% /sys/firmware/efi/efivars
/dev/disk/by-label/cidata
                         45.9M     45.9M         0 100% /mnt/lima-cidata
/dev/disk/by-label/data-volume
                         97.9G      1.2G     91.6G   1% /mnt/data
/dev/disk/by-label/data-volume
                         97.9G      1.2G     91.6G   1% /etc
/dev/disk/by-label/data-volume
                         97.9G      1.2G     91.6G   1% /home
/dev/disk/by-label/data-volume
                         97.9G      1.2G     91.6G   1% /root
/dev/disk/by-label/data-volume
                         97.9G      1.2G     91.6G   1% /tmp
/dev/disk/by-label/data-volume
                         97.9G      1.2G     91.6G   1% /usr/local
/dev/disk/by-label/data-volume
                         97.9G      1.2G     91.6G   1% /var/lib
/dev/disk/by-label/data-volume
                         97.9G      1.2G     91.6G   1% /root
:/Users/admin           953.7G    543.1G    393.3G  58% /Users/admin
:/tmp/rancher-desktop
                        953.7G    543.1G    393.3G  58% /tmp/rancher-desktop
:/Volumes               953.7G    543.1G    393.3G  58% /Volumes
:/var/folders           953.7G    543.1G    393.3G  58% /var/folders
:/private/tmp           953.7G    543.1G    393.3G  58% /private/tmp
:/private/var/folders
                        953.7G    543.1G    393.3G  58% /private/var/folders
:/Applications/Rancher Desktop.app/Contents/Resources/resources
                        953.7G    543.1G    393.3G  58% /Applications/Rancher Desktop.app/Contents/Resources/resources
tmpfs                     3.8G     12.0K      3.8G   0% /var/lib/kubelet/pods/61eb4e59-ecc9-4408-8b8f-89b6855ad3cb/volumes/kubernetes.io~projected/kube-api-access-zzqn2
tmpfs                     3.8G     12.0K      3.8G   0% /var/lib/kubelet/pods/59fe63fc-c3f8-4792-8b25-18a68528b7e7/volumes/kubernetes.io~projected/kube-api-access-g9gb2
tmpfs                   170.0M     12.0K    170.0M   0% /var/lib/kubelet/pods/ee84fa10-b916-4dbc-b635-2c96f28d1409/volumes/kubernetes.io~projected/kube-api-access-j2gvp
overlay                  97.9G      1.2G     91.6G   1% /var/lib/docker/overlay2/48fb64f01ada55a47b936f48fb8f3952a753cba8a29a888b01c17f0200e4bd6d/merged
overlay                  97.9G      1.2G     91.6G   1% /var/lib/docker/overlay2/c5bcbffbadc26906d1abda05c68f20e6f09c738a42c516351e6972f9f52f9839/merged
overlay                  97.9G      1.2G     91.6G   1% /var/lib/docker/overlay2/add1064b9928db372cd5d5e555bf03965baed3e03140859d4a82e8df6209aa36/merged
shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/78ac34ee2254be0165d59583de42cbef1a10f2063c22a8822656da776e405d77/mounts/shm
shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/487feab7ab33edfd3b0e402806c4c4da851b3b36264c099086ddb19ef5a82321/mounts/shm
shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/a5d2a7091b1c07520ff25621e9360e4c335d393de2a3b9ad28cbcfb5785972fc/mounts/shm
overlay                  97.9G      1.2G     91.6G   1% /var/lib/docker/overlay2/e9b9a4033ba37a1d779678ae5c22da88670bed07a21c1c69e35bc4c2d76940ec/merged
overlay                  97.9G      1.2G     91.6G   1% /var/lib/docker/overlay2/537a3309d87ac3045e05b29e02a9b863bdc5fd6d30be4636db7136ed4ae618a6/merged
overlay                  97.9G      1.2G     91.6G   1% /var/lib/docker/overlay2/655f2a74f43e50d012d6872d8b6b2760f4fa254415cbceb6e90f1efef4ca0ada/merged
tmpfs                     3.8G     12.0K      3.8G   0% /var/lib/kubelet/pods/86670587-6719-4fe5-ab4e-81e5f27aedcf/volumes/kubernetes.io~projected/kube-api-access-c5w69
overlay                  97.9G      1.2G     91.6G   1% /var/lib/docker/overlay2/25156db0fb96edac43438b60dce241725df3b3468493ac4279954b65cd2eb531/merged
overlay                  97.9G      1.2G     91.6G   1% /var/lib/docker/overlay2/2f0e4b8aa5f849be23a2e199cb009beafe101c242c5484fb4d8d8fb9468637d2/merged
shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/767da741e7843938551fd2c5c6953f3597f323a116dde9d2e5ac7e45837f813d/mounts/shm
shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/1ebe2a10abc8769084ca3d69ae9ca64379b491630a84fa62937eb2261762e34c/mounts/shm
overlay                  97.9G      1.2G     91.6G   1% /var/lib/docker/overlay2/1ea1fbc2929b2f98dee78bd2930c9b41bf0ee707a251b5a3a26300c1605f7e2c/merged
overlay                  97.9G      1.2G     91.6G   1% /var/lib/docker/overlay2/a4df0740a838ce9453810fb9a94f58eddabcbcc109b626080f02826a34b54b12/merged
overlay                  97.9G      1.2G     91.6G   1% /var/lib/docker/overlay2/f73f89d929b4b33733b8532f3de1099b51f966f1fcfa6cb0236ed18dd5198be6/merged
  • 根目录 / 是一个 tmpfs

  • /dev/disk/by-label/data-volume 磁盘分区被挂载成多个目录,并且分配了大约 98G 空间

  • macOS的 /Users/admin (我的物理主机用户是 admin )目录被映射到虚拟机内部相同目录 /Users/admin

上述存储分布是怎么实现的呢?明明虚拟机只有一个分区(100G), fdisk -l 显示:

fdisk -l 显示只有一个分区
Disk /dev/vda: 100 GB, 107374182400 bytes, 209715200 sectors
208050 cylinders, 16 heads, 63 sectors/track
Units: sectors of 1 * 512 = 512 bytes

Device  Boot StartCHS    EndCHS        StartLBA     EndLBA    Sectors  Size Id Type
/dev/vda1    2,0,33      1023,15,63        2048  209715199  209713152 99.9G 83 Linux

为什么要将一个分区反复挂载到不同的目录?

检查 mount 输出可以看到,同一个分区挂载到不同目录:

检查 mount 输出
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,noexec,relatime,size=10240k,nr_inodes=500316,mode=755,inode64)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,inode64)
/dev/sr0 on /media/sr0 type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048,iocharset=utf8)
tmpfs on / type tmpfs (rw,relatime,mode=755,inode64)
tmpfs on /run type tmpfs (rw,nosuid,nodev,size=803200k,nr_inodes=819200,mode=755,inode64)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
/dev/loop0 on /.modloop type squashfs (ro,relatime,errors=continue)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
/dev/disk/by-label/cidata on /mnt/lima-cidata type iso9660 (ro,relatime,nojoliet,overriderockperm,check=s,map=n,blocksize=2048,uid=0,dmode=700,fmode=700,iocharset=utf8)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)
/dev/disk/by-label/data-volume on /mnt/data type ext4 (rw,relatime)
/dev/disk/by-label/data-volume on /etc type ext4 (rw,relatime)
/dev/disk/by-label/data-volume on /home type ext4 (rw,relatime)
/dev/disk/by-label/data-volume on /root type ext4 (rw,relatime)
/dev/disk/by-label/data-volume on /tmp type ext4 (rw,relatime)
/dev/disk/by-label/data-volume on /usr/local type ext4 (rw,relatime)
/dev/disk/by-label/data-volume on /var/lib type ext4 (rw,relatime)
none on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
/dev/disk/by-label/data-volume on /root type ext4 (rw,relatime)
bpffs on /sys/fs/bpf type bpf (rw,relatime)
:/Users/admin on /Users/admin type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=501,group_id=1000,allow_other)
:/tmp/rancher-desktop on /tmp/rancher-desktop type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=501,group_id=1000,allow_other)
:/Volumes on /Volumes type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=501,group_id=1000,allow_other)
:/var/folders on /var/folders type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=501,group_id=1000,allow_other)
:/private/tmp on /private/tmp type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=501,group_id=1000,allow_other)
:/private/var/folders on /private/var/folders type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=501,group_id=1000,allow_other)
:/Applications/Rancher Desktop.app/Contents/Resources/resources on /Applications/Rancher Desktop.app/Contents/Resources/resources type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=501,group_id=1000,allow_other)
...