发现问题
在某宝买了一块32G的ssd电子盘,但是在FreeBSD里面使用df看到的空间较少,只有15G,一度怀疑是发错货了。不过自己清楚的记得swap分区还分了4G,这样铁定是大于16G的,应该是32G没错。但是少掉的那部分空间跑哪里去了呢?
df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 15G 10G 4.4G 70% /
devfs 1.0K 0B 1.0K 0% /dev
/dev/gpt/efiboot0 260M 1.3M 259M 1% /boot/efi
zroot 4.4G 96K 4.4G 0% /zroot
使用df只能看到15G,使用gpart show ,能看到是26G
gpart show
=> 40 62533216 ada0 GPT (30G)40 532480 1 efi (260M)532520 1024 2 freebsd-boot (512K)533544 984 - free - (492K)534528 8388608 3 freebsd-swap (4.0G)8923136 53608448 4 freebsd-zfs (26G)62531584 1672 - free - (836K)
但就是在df里面显示不出来,就像空间凭空消失了一样。
解决问题:
使用diskinfo查看ada盘的情况
diskinfo -ls /dev/ada*
/dev/ada0 5E5AD79805161455281
/dev/ada0p1 5E5AD79805161455281
/dev/ada0p2 5E5AD79805161455281
/dev/ada0p3 5E5AD79805161455281
/dev/ada0p4 5E5AD79805161455281
看看ada0的情况,30G,证明盘确实是32G的
diskinfo -v /dev/ada0
/dev/ada0512 # sectorsize32017047552 # mediasize in bytes (30G)62533296 # mediasize in sectors0 # stripesize0 # stripeoffset62037 # Cylinders according to firmware.16 # Heads according to firmware.63 # Sectors according to firmware.SK 32GB # Disk descr.5E5AD79805161455281 # Disk ident.ahcich1 # AttachmentYes # TRIM/UNMAP support0 # Rotation rate in RPMNot_Zoned # Zone Mode
看看ada0p4的情况
diskinfo -v /dev/ada0p4
/dev/ada0p4512 # sectorsize27447525376 # mediasize in bytes (26G)53608448 # mediasize in sectors0 # stripesize4568645632 # stripeoffset53182 # Cylinders according to firmware.16 # Heads according to firmware.63 # Sectors according to firmware.SK 32GB # Disk descr.5E5AD79805161455281 # Disk ident.ahcich1 # AttachmentYes # TRIM/UNMAP support0 # Rotation rate in RPM
ada0p4有26G空间,那怎么df看到的空间只有15G那么少呢?
使用zfs list发现了端倪
zfs list
NAME USED AVAIL REFER MOUNTPOINT
zroot 20.3G 4.42G 96K /zroot
zroot/ROOT 20.2G 4.42G 96K none
zroot/ROOT/default 20.2G 4.42G 10.1G /
zroot/ROOT/default/bvm_Node-1_disk 10.2G 13.3G 1.23G -
zroot/ROOT/default/bvm_Node-2_disk 0B 4.42G 56K -
zroot/home 30.5M 4.42G 96K /home
zroot/home/skywalk 30.4M 4.42G 30.4M /home/skywalk
zroot/tmp 152K 4.42G 152K /tmp
zroot/usr 288K 4.42G 96K /usr
zroot/usr/ports 96K 4.42G 96K /usr/ports
zroot/usr/src 96K 4.42G 96K /usr/src
zroot/var 836K 4.42G 96K /var
zroot/var/audit 96K 4.42G 96K /var/audit
zroot/var/crash 96K 4.42G 96K /var/crash
zroot/var/log 324K 4.42G 324K /var/log
zroot/var/mail 128K 4.42G 128K /var/mail
zroot/var/tmp 96K 4.42G 96K /var/tmp
原来是zroot/ROOT/default这里占用了10G空间,
具体来说就是zroot/ROOT/default/bvm_Node-1_disk 这里占用了10G大小,这样zfs里面本来26G结果显示16G就说得过去了。看名字就知道这是bvm虚拟机占用的空间。
问题是这个怎么删除呢?
zroot/ROOT/default/bvm_Node-1_disk 10.2G 13.3G 1.23G -
zroot/ROOT/default/bvm_Node-2_disk 0B 4.42G 56K -
找到方法了,使用zfs destroy删除:
zfs destroy -R zroot/ROOT/default/bvm_Node-1_disk
如果有snapshot,就会提示用-R参数来删除。删除之后,空间就释放出来了:
zfs destroy -R zroot/ROOT/default/bvm_Node-1_disk
root@fbhost:/ # zfs list
NAME USED AVAIL REFER MOUNTPOINT
zroot 10.1G 14.6G 96K /zroot
zroot/ROOT 10.1G 14.6G 96K none
zroot/ROOT/default 10.1G 14.6G 10.1G /
zroot/home 30.5M 14.6G 96K /home
zroot/home/skywalk 30.4M 14.6G 30.4M /home/skywalk
df也看到释放出来了
df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 25G 10G 15G 41% /
总结
这个zroot/ROOT/default空间里本来是bvm虚拟机管理系统设定的虚拟机存储位置,但是使用bvm 命令并没有能删除该虚拟机(bvm --remove Note-1),于是选择了在zfs里面手动删除。删除后达到了预计的效果,空间被释放出来了。
使用命令
# 查看空间占用情况
zfs list
# 产出zfs占用
zfs destroy -R zroot/ROOT/default/bvm_Node-1_disk
ps,bvm里面删除虚拟机和硬盘的命令是
# 删除虚拟机
bvm --remove Note-1
# 删除硬盘
bvm --deldisk Note-1
zfs删除快照释放磁盘空间
不久又碰到一回,先用rm等命令删除了一些文件,但是空间没有释放出来。
于是进行了如下操作:
zfs list -t all
NAME USED AVAIL REFER MOUNTPOINT
zroot 22.4G 2.34G 96K /zroot
zroot/ROOT 21.4G 2.34G 96K none
zroot/ROOT/default 21.4G 2.34G 10.8G /
zroot/ROOT/default@2024-06-05-18:44:13-0 5.10M - 18.8G -
zroot/ROOT/default@2024-06-05-19:12:45-0 2.52M - 18.9G -
zroot/home 30.5M 2.34G 96K /home
zroot/home/skywalk 30.4M 2.34G 30.4M /home/skywalk
zroot/jails 910M 2.34G 910M /usr/jails
zroot/jails/ub22 96K 2.34G 96K /usr/jails/vm/ub22
zroot/tmp 188K 2.34G 188K /tmp
zroot/usr 296K 2.34G 96K /usr
zroot/usr/ports 104K 2.34G 104K /usr/ports
zroot/usr/src 96K 2.34G 96K /usr/src
zroot/var 1.28M 2.34G 96K /var
zroot/var/audit 96K 2.34G 96K /var/audit
zroot/var/crash 96K 2.34G 96K /var/crash
zroot/var/log 604K 2.34G 604K /var/log
zroot/var/mail 320K 2.34G 320K /var/mail
zroot/var/tmp 96K 2.34G 96K /var/tmp
zroot/vm 192K 2.34G 192K /zroot/vm
root@fbhost:~ # zfs destroy zroot/ROOT/default@2024-06-05-18:44:13-0
root@fbhost:~ # zfs destroy zroot/ROOT/default@2024-06-05-19:12:45-0
root@fbhost:~ # zfs list -t all
NAME USED AVAIL REFER MOUNTPOINT
zroot 11.7G 13.0G 96K /zroot
zroot/ROOT 10.8G 13.0G 96K none
zroot/ROOT/default 10.8G 13.0G 10.8G /
zroot/home 30.5M 13.0G 96K /home
zroot/home/skywalk 30.4M 13.0G 30.4M /home/skywalk
zroot/jails 910M 13.0G 910M /usr/jails
zroot/jails/ub22 96K 13.0G 96K /usr/jails/vm/ub22
zroot/tmp 188K 13.0G 188K /tmp
zroot/usr 296K 13.0G 96K /usr
zroot/usr/ports 104K 13.0G 104K /usr/ports
zroot/usr/src 96K 13.0G 96K /usr/src
zroot/var 1.28M 13.0G 96K /var
zroot/var/audit 96K 13.0G 96K /var/audit
zroot/var/crash 96K 13.0G 96K /var/crash
zroot/var/log 604K 13.0G 604K /var/log
zroot/var/mail 320K 13.0G 320K /var/mail
zroot/var/tmp 96K 13.0G 96K /var/tmp
zroot/vm 192K 13.0G 192K /zroot/vm
root@fbhost:~ # df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 24G 11G 13G 45% /
devfs 1.0K 0B 1.0K 0% /dev
/dev/gpt/efiboot0 260M 1.3M 259M 1% /boot/efi
zroot/tmp 13G 188K 13G 0% /tmp
zroot/home 13G 96K 13G 0% /home
zroot 13G 96K 13G 0% /zroot
zroot/var/mail 13G 320K 13G 0% /var/mail
zroot/usr/src 13G 96K 13G 0% /usr/src
zroot/var/log 13G 604K 13G 0% /var/log
zroot/usr/ports 13G 104K 13G 0% /usr/ports
zroot/jails 14G 910M 13G 6% /usr/jails
zroot/var/tmp 13G 96K 13G 0% /var/tmp
zroot/var/crash 13G 96K 13G 0% /var/crash
zroot/var/audit 13G 96K 13G 0% /var/audit
zroot/home/skywalk 13G 30M 13G 0% /home/skywalk
zroot/vm 13G 192K 13G 0% /zroot/vm
zroot/jails/ub22 13G 96K 13G 0% /usr/jails/vm/ub22
总结就是:使用zfs list -t all 查看所有zfs信息,把快照snap删除,空间就释放出来了
root@fbhost:~ # zfs destroy zroot/ROOT/default@2024-06-05-18:44:13-0
root@fbhost:~ # zfs destroy zroot/ROOT/default@2024-06-05-19:12:45-0