System Logs Are Stored on Non-Persistent Storage
VMware vSphere is VMware’s virtualization platform that transforms data centers into an aggregated computing infrastructure that includes CPU, storage, and network resources.
VSphere manages these infrastructures as a unified operating environment and provides you with tools to manage the data centers that are added to this environment.
By directly accessing and controlling underlying resources, VMware ESXi can effectively partition hardware to consolidate applications and reduce costs. It is an industry-leading efficient architecture that sets the industry benchmark for reliability, performance, and support.
The two core components of vSphere are ESXi and vCenter Server. ESXi is a virtualization platform used to create and run VMS and virtual devices. VCenter Server is a service used to manage multiple hosts connected to a network and pool host resources.
ESXi is installed on a physical machine and uses the Linux kernel as a dedicated virtualization operating system.
An ESXi host is a physical host (or a virtual machine) that exists on a physical machine. It is actually a computer with a system installed on it. ESXi is a system, just like Windows and Linux.
However, some users have got the warning “system logs are stored on non-persistent storage”.
The reason of this warning is that the host retains its logs as temporary files, which will be destroyed after a reboot. These logs may be required for environment audits, issue identification, and other troubleshooting activities.
These are the examples below:
- When you use the advanced system parameter global.logDir to configure the system log location, if you configure the system log location as temporary, for example [] /tmp, you get the esx.problem.syslog.nonpersistent message.
- When the location for system logs is not configured, your system uses the scratch partition by default. If the scratch location is set to nonpersistent storage, such as /tmp, you get the problem.syslog.nonpersistent message.
So, how can you solve this “system logs are stored on non-persistent storage” error? Here’re the solutions below. You can choose the one you like to solve this error.
Solution 1. Verify the Location of System Logs in vSphere Client (HTML5)
- In the vSphere Client navigator, select the Hosts and Clusters view.
- Select the host object in the vSphere Client navigator.
- Click the Configure tab, then the System expander
- Under System, click Advanced System Settings.
- Ensure that global.logDir points to a persistent location.
- If the field global.logDir is empty or points to a scratch partition, make sure that the field ScratchConfig.CurrentScratchLocation shows a location on persistent storage.
- If the folder being used as a scratch location is to be shared by multiple ESXi hosts, you should also set the field global.logDirUnique to avoid contention over log files.
Solution 2. Verify the Location of System Logs in vSphere Web Client
- Browse to the host in the vSphere Web Client navigator.
- Click the Manage tab, and then click Settings.
- Under System, click Advanced System Settings.
- Ensure that global.logDir points to a persistent location.
- If the field global.logDir is empty or points to a scratch partition, make sure that the field ScratchConfig.CurrentScratchLocation shows a location on persistent storage.
- If the folder being used as a scratch location is to be shared by multiple ESXi hosts, you should also set the field global.logDirUnique to avoid contention over log files.
Solution 3. Verify the Location of System Logs in vSphere Client (vSphere 6.0 and earlier)
- In vSphere Client, select the host in the inventory panel.
- Click the Configuration tab, and then click Advanced Settings under Software.
- Ensure that global.logDir points to a persistent location.
- The directory should be specified as [datastorename] path_to_file where the path is relative to the datastore. For example, [datastore1] /systemlogs.
- If the global.logDir field is empty or explicitly points to a scratch partition, make sure that the field ScratchConfig.CurrentScratchLocation shows a location on persistent storage.