Synopsis
When upgrading NSX manager you might encounter an error for ‘large database table’ or ‘insufficient disk space’ or ‘database disk usage’. These errors can either be because the log directory in /common/logs is full or you actually have a valid database full problem.
Warning
If you do not understand these commands nor have experience with database work then I highly suggest creating an SR with VMware and letting them work with you.
Error outputs
Even though we receive two different errors the resolution for the errors is actually the same procedure.
Error 1: Cannot continue upgrade due to errors : Insufficient disk space. Database disk usage is at 99%, but it should be less than 70%. We recommend running a database full vacuum before proceeding with upgrade. Upgrade aborted.. Please correct before proceeding.
Error 2: Cannot continue upgrade due to errors : Large database table. There are some tables with 5138984 entries, but the recommended table size is 5000000. We recommend running a database full vacuum before proceeding with upgrade. Upgrade aborted.. Please correct b

Create restore points
Whenever we work with the database and/or file system it is always recommended that we backup the NSX manager. There is two approved methods to do this:
1. Create a VAMI backup of the NSX manager.
1. Create a clone of the NSX Manager.
NOTE: Having a snapshot is not supported by VMware as a restore point.
Gaining root access
Getting into full root access on the NSX manager appliance is not an obvious process. We will want to SSH into the appliance which gets us initial access, from there we will need to switch to enable mode and finally get to engineering mode.
1. Log into the NSX manager appliance via SSH.
1. Switch to enable mode by typing:
 “`
 enable
 “`
1. Enter the password, which by default is ‘default’
 “`
 default
 “`
1. Enter into engineering mode
 “`
 st eng
 “`
1. You will be asked if you are willing to accept responsibility, enter ‘Y’ and then enter the password.
 “`
 IAmOnThePhoneWithTechSupport
 “`
Confirming Disk Space
1. Examine the space left on the file system by executing ‘df -h’
 “`
 [root@nsx-01 /]# df -h
 Filesystem   Size   Used   Avail   Use%   Mounted on
 /dev/root    5.6G   2.1G   3.2G     40%   /
 devtmpfs     7.9G      0   7.9G      0%   /dev
 tmpfs        7.9G   460K   7.9G      1%   /run
 /dev/sda6     44G    42G   371M    100%   /common
 “`
1. Confirm where the disk space is being consumed in /common by running ‘du -h’
 “`
 [root@nsx-01 /]# du -h /common/
 16K     /common/lost+found
 16K     /common/lost+found
 4.0K     /common/dumps
 4.0K     /common/em/components/sem
 1.9G     /common/em/components/vdn
 4.0K     /common/em/components/xml
 4.0K     /common/em/components/vdb
 19M     /common/em/components/offline-bundles
 368M     /common/em/components/usvm
 153M     /common/em/components/edge
 76M     /common/em/components/epsec
 509M     /common/em/components/image
 8.0K     /common/em/components/metadata
 3.0G     /common/em/components
 163M     /common/em/downloads/edge/trinity
 163M     /common/em/downloads/edge
 567M     /common/em/downloads/image
 76M     /common/em/downloads/epsec
 9.4M     /common/em/downloads/offline-bundles
 1.1G     /common/em/downloads/vdn
 389M     /common/em/downloads/usvm
 12K     /common/em/downloads/snmp
 8.0K     /common/em/downloads/metadata
 2.3G     /common/em/downloads
 28K     /common/em/upgrade/logs
 36K     /common/em/upgrade
 18M     /common/em/backup
 5.3G     /common/em
 128K     /common/tmp
 16K     /common/auto
 116K     /common/work
 4.0K     /common/logs
 4.0K     /common/etc
 8.0K     /common/kernel_core
 80K     /common/configs
 8.0K     /common/secureall
 36K     /common/images
 4.0K     /common/db/vshield/pg_xlog/archive_status
 81M     /common/db/vshield/pg_xlog
 508K     /common/db/vshield/global
 33M     /common/db/vshield/pg_clog
 4.0K     /common/db/vshield/pg_commit_ts
 4.0K     /common/db/vshield/pg_dynshmem
 12K     /common/db/vshield/pg_notify
 4.0K     /common/db/vshield/pg_serial
 4.0K     /common/db/vshield/pg_snapshots
 112K     /common/db/vshield/pg_subtrans
 4.0K     /common/db/vshield/pg_twophase
 1.9M     /common/db/vshield/pg_multixact/members
 744K     /common/db/vshield/pg_multixact/offsets
 2.6M     /common/db/vshield/pg_multixact
 7.0M     /common/db/vshield/base/1
 7.0M     /common/db/vshield/base/12451
 7.0M     /common/db/vshield/base/12452
 36G     /common/db/vshield/base/16384
 4.0K     /common/db/vshield/base/pgsql_tmp
 36G     /common/db/vshield/base
 4.0K     /common/db/vshield/pg_replslot
 4.0K     /common/db/vshield/pg_tblspc
 4.0K     /common/db/vshield/pg_stat
 440K     /common/db/vshield/pg_stat_tmp
 4.0K     /common/db/vshield/pg_logical/snapshots
 4.0K     /common/db/vshield/pg_logical/mappings
 12K     /common/db/vshield/pg_logical
 36G     /common/db/vshield
 452K     /common/db/monitor/PG_9.6_201608131/16384
 456K     /common/db/monitor/PG_9.6_201608131
 460K     /common/db/monitor
 12K     /common/db/snmp
 36G     /common/db
 12K     /common/vsmvam/configs
 24K     /common/vsmvam
 12K     /common/replicator/configs
 24K     /common/replicator
 3.2M     /common/rabbitmq
 42G     /common/
 “`
1. Alternatively the disk space could be showing fine but you still could be getting the second error from above and there is plenty of disk space.
 “`
 [root@nsx-01 /]# df -h
 Filesystem   Size   Used   Avail   Use%   Mounted on
 /dev/root    5.6G   2.4G   3.0G     45%   /
 devtmpfs     7.9G      0   7.9G      0%   /dev
 tmpfs        7.9G   456K   7.9G      1%   /run
 /dev/sda6     44G    21G   21G      50%   /common
 “`
1. An alternative command you can run that will find files larger than 1MB would be:
 “`
 find / -xedv -type f -size +1M -exec ls -lh {} ; 2> /dev/null | awk ‘{ print $NF “:  ” $5 }’ | sort -n -k2 -r
 “`
Fixing the underlying issues
1. Confirm the status of the NSX manager services.
 “`
 /etc/rc.d/init.d/bluelane-manager status
 Output:
 STARTED
 “`
1. Now we will want to stop the NSX Manager service. This process will take a few seconds.
 “`
 /etc/rc.d/init.d/bluelane-manager stop
 Output:
 Stopping VMware NSX Enterprise Manager…
 VMware NSX Enterprise Manager stopped.
 “`
1. Access postgres to manipulate the database, this should get you into the ’secureall’ prompt.
 “`
  psql -U secureall
 “`
 
1. Let’s enable expanded display.
 “`
 x
 “`
1. Now we will execute a command that will display our page sizes in our database, ordered by the total relation size. Because of how FlatPress works, I am having to break up this line.
 “`
 select relname as “Table”, pg_size_pretty(pg_total_relation_size(relid)) As “Size”, pg_size_pretty(pg_total_relation_size(relid) - pg_relation_size(relid)) as “External Size” from pg_catalo
 g.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC;
 “`
 
1. For Error 2 above we need to get a count from task_instance.
 “`
 select count(*) from task_instance ;
 Output:
 -[ RECORD 1 ]–
 count | 5181456
 “`
 
1. We will now want to vacuum the tables that we know from VMware are safe to do so on.  NOTE: Do NOT vacuum anything unless you are for certain if it can safely be cleaned up.
  “`
 TRUNCATE TABLE job_instance_task_instances, ta sk_instance_task_data,task_instance_task_output,task_instance,task_task_init_data,task ,task_policy ,task_target, job_instance_job_output, job_instance, job_data_task_dependency_map, task_dependency_tasks,dependent_task,job_data,job_schedule,task_dependency,housekeeping_module;
 Output:
 TRUNCATE TABLE
 “`
 
1. For Error 2 above we need confirm the count for task_instance has decreased.
select count(*) from task_instance ; Output: count —– 0

1. Now we need to quit out of the secureall prompt
 “`
 q
 “`
1. Now lets look at the disk space and see if we have recovered enough.
 “`
 [root@nsx-01 /]# df -h
 Filesystem   Size   Used   Avail   Use%   Mounted on
 /dev/root    5.6G   2.0G   3.4G     38%   /
 devtmpfs     7.9G      0   7.9G      0%   /dev
 tmpfs        7.9G   448K   7.9G      1%   /run
 /dev/sda6     44G   5.7G    36G     14%   /common
 “`
1. Finally we restart the NSX manager service
 “`
 /etc/rc.d/init.d/bluelane-manager start
 Output:
 Starting VMware NSX Enterprise Manager…
 RabbitMQ Server is running.
 pg_ctl: server is running (PID: 3599)
 /top/vmware/vpostgres/9.6/bin/postgres “-D” “/common/db/vshield”
 Setting the NSX Manager IP 10.10.10.10
 “`
 
Massive thanks to Wilmer at VMware NSX technical support for how to perform this work!
Reference on how to gain root access: http://www.vsam.pro/how-to-get-fully-root-access-to-nsx-v-appliances-manager-edge-nsx-intelligence/