Changing a Proxmox NFS Server IP When pvesm set Says You Can’t

This one looked like it should take about thirty seconds.

My Synology NAS had moved to a new static IP address.

One of my Proxmox storage entries still pointed at the old address.

So I did the obvious thing:

pvesm set ds224-nfs --server 192.168.68.20

Proxmox disagreed.

Instead of updating the storage entry, it returned:

update storage failed: can't change value of fixed parameter 'server'

That was slightly annoying.

The new IP was correct.

The NFS share was still there.

The storage name was correct.

Proxmox simply would not let me change the server address.

The reason is that some Proxmox storage parameters are effectively fixed once the storage entry is created.

So the fix wasn’t to keep fighting pvesm set.

It was to remove and recreate the storage definition cleanly.

Why the NAS Address Changed

My Synology DS224+ had originally been using:

192.168.68.100

As the Realm Labs network matured, I reorganised some of the core infrastructure addresses.

The Synology moved to:

192.168.68.20

That NAS was doing quite a lot by this point:

  • SMB
  • NFS
  • DNS
  • Active Directory
  • Docker
  • Backup storage

So changing its IP exposed quite a few hidden references around the lab.

Proxmox was one of them.

The Existing Proxmox Storage

The Synology NFS share had already been added to Proxmox as storage.

Conceptually:

Proxmox
   |
   v
ds224-nfs
   |
   v
192.168.68.100
   |
   v
Synology NFS Export

After the NAS moved, that needed to become:

Proxmox
   |
   v
ds224-nfs
   |
   v
192.168.68.20
   |
   v
Synology NFS Export

The storage itself hadn’t fundamentally changed.

Only the server address had.

The Obvious Command

Proxmox includes the pvesm command for managing storage.

So I tried:

pvesm set ds224-nfs --server 192.168.68.20

That looked perfectly reasonable.

Instead:

update storage failed: can't change value of fixed parameter 'server'

At first I wondered whether I had used the wrong syntax.

I hadn’t.

Proxmox simply treats the NFS server parameter as fixed for an existing storage object.

Check the Existing Storage First

Before deleting anything, I wanted to see exactly how the storage was configured.

The first useful command is:

pvesm status

That shows the configured storage objects and their state.

Then:

cat /etc/pve/storage.cfg

This is the important file.

You may see something like:

nfs: ds224-nfs
        export /volume1/proxmox
        path /mnt/pve/ds224-nfs
        server 192.168.68.100
        content backup,iso,vztmpl
        options vers=3

Now I had everything needed to recreate the entry.

Why /etc/pve/storage.cfg Matters

Proxmox stores its cluster-wide storage configuration in:

/etc/pve/storage.cfg

That means the storage definition isn’t simply an ordinary Linux mount in /etc/fstab.

Proxmox manages it itself.

For each storage entry, the configuration can contain things such as:

Storage ID
Storage type
Server
Export
Path
Content types
NFS options

Before changing anything, I copied or noted those values.

Make Sure Nothing Is Using the Storage

This part matters.

If the NFS storage contains:

  • Running VM disks
  • Active container disks
  • Mounted ISO images
  • Current backups

don’t casually remove it from Proxmox without understanding the dependencies.

In my case, the storage was being used as network-backed storage rather than something I wanted to destroy.

Removing the Proxmox definition does not delete the data on the Synology.

But workloads depending on the storage obviously need it to be available.

So first:

pvesm status

Then check the guests if necessary.

For VMs:

qm list

For containers:

pct list

And inspect an important guest:

qm config <VMID>

or:

pct config <CTID>

Look for references to:

ds224-nfs

Removing the Storage Definition

Once I knew it was safe to recreate, I could remove the Proxmox storage entry.

Using:

pvesm remove ds224-nfs

This removes the storage configuration from Proxmox.

It does not go to the Synology and erase the NFS share.

That’s an important distinction.

The architecture temporarily becomes:

Proxmox
   |
   X
No storage definition

Synology
   |
   v
NFS data still exists

Confirm It Is Gone

Check:

pvesm status

The old ds224-nfs entry should no longer appear.

Also inspect:

cat /etc/pve/storage.cfg

The entry should be gone from there too.

Recreate It with the New Server Address

Now I could add the storage back using the correct server.

A typical command looks like:

pvesm add nfs ds224-nfs \
  --server 192.168.68.20 \
  --export /volume1/proxmox \
  --content backup,iso,vztmpl

If NFSv3 is required:

pvesm add nfs ds224-nfs \
  --server 192.168.68.20 \
  --export /volume1/proxmox \
  --content backup,iso,vztmpl \
  --options vers=3

The exact export and content types depend on the existing setup.

The important thing is to recreate the storage with the same settings, but with the correct server address.

Why I Kept the Same Storage ID

I reused:

ds224-nfs

rather than inventing a new name.

That matters because Proxmox guest configurations and backup jobs can reference the storage by its ID.

If a VM configuration contains something like:

ds224-nfs:...

and I recreate the storage using exactly the same ID, those references still make sense.

If instead I created:

ds224-nfs-new

I would also have to update everything that referenced the old ID.

So where possible:

Keep the storage ID
Change only what actually changed

Check the NFS Export Before Recreating

Before adding the storage back, it is worth confirming the NAS is actually exporting the expected share.

From Proxmox:

showmount -e 192.168.68.20

A healthy result might include:

/volume1/proxmox 192.168.68.0/22

That proves:

NAS reachable
NFS running
Export visible
Client subnet allowed

before Proxmox becomes involved.

Check Basic Connectivity

Also:

ping 192.168.68.20

Then, if DNS is used:

nslookup seido.order.realm

or whatever hostname is appropriate.

Again, the goal is to prove each layer separately.

The NFSv3 Detail

Realm Labs had already taught me that Synology NFS can sometimes behave much more predictably when the client explicitly uses NFSv3.

So if the existing storage configuration contained:

options vers=3

I wanted to preserve it.

This is exactly the sort of detail that’s easy to lose when recreating a storage entry from memory.

That’s why copying the old storage.cfg block first is so useful.

Verify the Recreated Storage

Once the storage was added back:

pvesm status

should show it as:

active

If it doesn’t, inspect the configuration:

cat /etc/pve/storage.cfg

and test the share manually.

You can also inspect the mounted path:

mount | grep ds224-nfs

or:

mount | grep nfs

Check the Storage Path

Proxmox normally mounts NFS storage under:

/mnt/pve/<storage-id>

So in this case:

/mnt/pve/ds224-nfs

Check it:

ls -la /mnt/pve/ds224-nfs

If the expected backup files, ISO images or other content are present, that is a very good sign.

The Data Never Moved

This is worth emphasising.

The actual NFS data on the Synology did not need moving.

The operation was:

Delete old Proxmox pointer
        |
        v
Create new Proxmox pointer
        |
        v
Same Synology data

Not:

Delete storage
        |
        v
Delete data

That’s why understanding the distinction between a storage definition and the underlying storage is so important.

Could I Just Edit storage.cfg?

Technically, the obvious question is:

Why not just edit /etc/pve/storage.cfg?

You can inspect and manage Proxmox configuration directly, but for a routine storage change I prefer using the supported management commands where practical.

The remove-and-recreate process is explicit.

It also forces me to verify that I actually know the configuration before changing it.

For a small lab, that’s preferable to casually editing cluster configuration and hoping I haven’t made a typo.

The GUI Works Too

The same idea can be done from the Proxmox web interface.

Go to:

Datacenter
   |
   v
Storage

Select the old NFS storage and record its settings.

Then remove the storage definition.

Create a new NFS storage using:

ID:
ds224-nfs

Server:
192.168.68.20

Export:
same export as before

Content:
same content types

Options:
same NFS options

Again, keeping the same storage ID is useful where other Proxmox configuration refers to it.

Why Proxmox Makes Some Parameters Fixed

At first the fixed parameter behaviour felt unnecessarily restrictive.

But there is some logic to it.

The storage entry isn’t just a label.

It represents a specific backend.

Changing fundamental properties such as the server underneath an existing storage object could potentially make a previously valid storage definition point somewhere completely different.

The remove-and-add process makes that kind of change explicit.

This Is a Good Example of Configuration vs Data

The incident also reinforced an important home-lab concept.

There are two different things here:

Configuration

and:

Data

Proxmox owns the configuration:

"ds224-nfs points here"

Synology owns the data:

"these files exist in this NFS export"

Changing one does not necessarily change the other.

That separation is useful when troubleshooting storage.

What If the Storage Contains VM Disks?

This deserves extra caution.

If a VM disk lives directly on the NFS storage, the guest depends on that storage being available.

Before removing the storage configuration, shut down or migrate affected workloads as appropriate.

For example:

qm shutdown 100

Then recreate the storage with the same ID and confirm it comes back before restarting the VM.

I wouldn’t perform this change casually on a running workload.

Check Guest References

For a VM:

qm config 100

You might see:

scsi0: ds224-nfs:100/vm-100-disk-0.qcow2

That tells you the VM depends directly on that storage ID.

Reusing:

ds224-nfs

becomes especially important.

Check Backup Jobs Too

Proxmox backup jobs can also target a specific storage ID.

So after recreating the storage, I check:

Datacenter
   |
   v
Backup

and make sure the job still points to:

ds224-nfs

If the storage ID stayed the same, there may be nothing to change.

Still worth checking.

Why I Didn’t Reboot First

When storage stops working, the classic instinct is:

Reboot Proxmox

But rebooting wouldn’t have fixed this.

The storage configuration still contained the old server address.

The machine would simply boot and try the same broken configuration again.

The problem was persistent configuration.

Not a transient state.

Useful Commands for Proxmox Storage

These are the commands I reach for most often.

List storage

pvesm status

Show storage configuration

cat /etc/pve/storage.cfg

Remove storage

pvesm remove ds224-nfs

Add NFS storage

pvesm add nfs ds224-nfs \
  --server 192.168.68.20 \
  --export /volume1/proxmox \
  --content backup

Check NFS exports

showmount -e 192.168.68.20

Check mounted NFS filesystems

mount | grep nfs

These cover most of the troubleshooting needed for a simple storage-server move.

A Better Design: DNS Instead of IPs

This problem also feeds into another recurring Realm Labs lesson.

Hard-coded IP addresses work well until something moves.

Instead of:

server 192.168.68.20

it would be nice to use a stable service name where supported and appropriate.

For example:

seido.order.realm

Then:

DNS

becomes the place where the address changes.

That can reduce the number of hidden dependencies when infrastructure is reorganised.

Whether I use names or IPs for storage depends on how much I want the storage layer to depend on DNS.

There are trade-offs either way.

Why I Still Like Static IPs for Core Storage

For something as fundamental as NFS storage, there is also a good argument for using the stable static address directly.

If internal DNS has a problem, I may still want Proxmox to reach its storage.

So:

192.168.68.20

for the NAS is not inherently a bad design.

The bigger lesson is:

If you hard-code infrastructure addresses,
document where they are used.

That is what makes future migrations manageable.

The Failure Chain

The original problem was:

Synology moved
192.168.68.100
        |
        v
192.168.68.20

but Proxmox still had:

server 192.168.68.100

Then:

pvesm set ds224-nfs --server 192.168.68.20

returned:

can't change value of fixed parameter 'server'

The fix became:

Record old storage config
        |
        v
Remove Proxmox storage definition
        |
        v
Recreate same storage ID
        |
        v
Use new server IP
        |
        v
Verify NFS storage active

Straightforward once I stopped trying to change a fixed parameter.

My Troubleshooting Checklist

If you’ve changed the IP address of an NFS server used by Proxmox:

  1. Confirm the NAS is reachable at the new address.
  2. Run showmount -e against the new IP.
  3. Run pvesm status.
  4. Back up or copy the relevant block from /etc/pve/storage.cfg.
  5. Check whether VMs or LXCs actively depend on the storage.
  6. Remove the old Proxmox storage definition.
  7. Recreate it using the same storage ID.
  8. Use the new server address.
  9. Preserve the existing export, content types and NFS options.
  10. Confirm the storage reports as active.
  11. Check /mnt/pve/<storage-id>.
  12. Verify affected VMs, containers and backup jobs.

The Realm Labs Takeaway

The error looked like:

can't change value of fixed parameter 'server'

which initially felt like Proxmox preventing an extremely simple change.

But the solution was equally simple once I understood how Proxmox treated the storage object.

Don’t keep trying:

pvesm set ...

for a fixed parameter.

Instead:

Remove the definition.
Recreate it correctly.
Keep the same storage ID.
Leave the actual NAS data alone.

The Synology hadn’t changed its NFS data.

Proxmox just needed to be told where that data lived now.

And after spending time tracking down old IP references across the rest of Realm Labs, this became another useful reminder:

Changing the address of core infrastructure is rarely just changing one address.