IBM MQ stores two layers of configuration: installation and process settings in INI files, and messaging objects in the queue manager repository. Beginners who edit only MQSC may still be blindsided when LogPath fills a disk or a multi-instance stanza points at the wrong mount. This tutorial explains mqs.ini and qm.ini, key stanzas and path attributes, how crtmqm records initial values, environment variables that override client connectivity, and safe change practices—without treating the files as mysterious binary artifacts.
Located under the MQ installation data directory (for example /var/mqm on Linux), mqs.ini registers queue managers known to this installation. When you run dspmq, the list comes from here plus runtime state. Adding a queue manager with crtmqm updates mqs.ini with a stanza naming the manager and pointing to its directory. Installation-wide parameters—default installation, some TCP tuning at install level—also live here. Multiple MQ versions on one host use separate installation paths, each with its own mqs.ini.
Each queue manager has a directory containing qm.ini, configuration files subdirectory, log pointers, and queue file metadata. The Stanza: QueueManager section names the manager and records DataPath, LogPath, and prefix settings. Service stanzas configure components such as listeners or the command server when defined in ini (exact layout varies by version; many objects are still created via MQSC). At strmqm, the process reads qm.ini to find logs and data before loading the object repository.
| Setting | Meaning | Typically set when |
|---|---|---|
| DataPath | Directory for queue files and qm.ini | crtmqm -md |
| LogPath | Directory for linear logs | crtmqm -ld |
| Prefix | Optional naming prefix for files | crtmqm -lp |
| QueueManager name | Identity used in MQCONN | crtmqm name |
If MAXDEPTH on ORDERS.IN is wrong, ALTER QLOCAL in MQSC fixes it while the queue manager runs (attribute dependent). If LogPath points at a full filesystem, you change infrastructure or qm.ini and may need planned downtime. Confusing the two layers causes teams to ALTER CHANNEL when the real problem is an ini path after storage migration. Document which team owns ini files (platform) versus objects (middleware).
Multi-instance queue managers add stanzas for instance names, network heartbeat intervals, and shared path verification. Both nodes must mount identical DataPath and LogPath values in qm.ini. Instance-specific files may exist for local scratch, but the authoritative queue data is shared. Never copy qm.ini between unrelated queue managers without changing every path and name—clone mistakes duplicate QMNAME and corrupt mounts.
While not INI files, MQSERVER, MQCHLLIB, MQCHLTAB, and SSL-related variables configure client attachment without editing server qm.ini. Server-side listeners are still defined with DEFINE LISTENER or ini service stanzas. Matching client and server port, TLS cipher, and AUTHREC is end-to-end configuration spanning CCDT, environment, and queue manager repository.
12345678910111213141516# List queue managers on host dspmq # Display paths (Linux example) # Data: /var/mqm/qmgrs/QM1/qm.ini cat /var/mqm/qmgrs/QM1/qm.ini | head -40 # Installation file cat /var/mqm/mqs.ini | head -30 # Export object definitions separately dmpmqcfg -m QM1 -a > QM1-objects.mqsc # Create with explicit paths crtmqm -ld /mqlog/QM1 -md /mqdata/QM1 QM1 strmqm QM1
z/OS queue managers use CSQ6PROG and system customization rather than Linux-style qm.ini paths, but the same conceptual split applies: subsystem parameters versus MQ object repository. Distributed administrators joining a mainframe project should read the z/OS MQ planning manual rather than assuming /var/mqm layout.
The post office building has a blueprint (qm.ini) showing where the basement storage and security notebooks live. The city planning office has a list of all post offices (mqs.ini). Inside the building, a separate catalog lists every mailbox name (repository). You need all three to run the town's mail.
Given dspmq output, find qm.ini and LogPath on your lab system.
LogPath disk is 99% full. List actions that do not require deleting messages.
Restore old qm.ini from backup but keep current object repository. What could mismatch?
1. mqs.ini is scoped to:
2. LogPath in qm.ini points to:
3. DEFINE QLOCAL changes:
4. crtmqm -md sets: