{"id":21131,"date":"2026-09-06T15:46:20","date_gmt":"2026-09-06T07:46:20","guid":{"rendered":"https:\/\/synopower.club\/?p=21131"},"modified":"2026-09-06T17:02:28","modified_gmt":"2026-09-06T09:02:28","slug":"synology-vdsm-docker-migration","status":"publish","type":"post","link":"https:\/\/synopower.club\/ja\/synology-vdsm-docker-migration\/","title":{"rendered":"Synology VDSM: AI \u3092\u6d3b\u7528\u3057\u305f Docker \u306e\u79fb\u52d5\u3068\u4eee\u60f3\u30c7\u30a3\u30b9\u30af\u306e\u30b5\u30a4\u30ba\u5909\u66f4 (2026)"},"content":{"rendered":"<p class=\"wp-block-paragraph\">A virtual NAS is one of those features people install once, poke at for an afternoon, and then forget they own. That is a shame, because Synology VDSM \u2014 Virtual DSM, run inside Virtual Machine Manager \u2014 quietly solves two of the most annoying problems in small-scale self-hosting. The first is that moving a Docker stack between machines normally costs you an evening of fiddly work. The second is that when a virtual disk runs out of room, most people assume they have to rebuild the whole thing. Neither is true on VDSM. This guide walks through a real migration we ran in about thirty-five minutes: an internal Redmine issue tracker with five plugins, lifted out of one VDSM guest and dropped into another, with an AI assistant driving the shell. Along the way the destination ran out of disk, so we grew its virtual disk from 10 GB to 20 GB and carried on. Everything below is what actually happened, including the one trap that would have silently destroyed the application.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>SynoPower Club\u30dd\u30a4\u30f3\u30c8\uff1a<\/strong>I have watched a lot of people talk themselves out of virtualisation on a NAS because they assume it is for labs and not for real work. The migration in this article was real work &mdash; a ticket system three colleagues use every day &mdash; and the part that surprised me was not the AI. It was how little ceremony VDSM needs. No hypervisor to license, no separate management server, no export-import dance between incompatible formats. The guest ran out of disk mid-job and I fixed it by typing a bigger number into a text field while it was still running. The whole job took thirty-five minutes and the only outage anyone noticed was ninety seconds on an unrelated website. If you already own a Synology with spare memory, you are one package install away from this.<\/p><\/blockquote>\n\n\n\n<nav class=\"wp-block-stackable-table-of-contents stk-block-table-of-contents stk-block stk-81f8a0c\" data-block-id=\"81f8a0c\"><p class=\"stk-table-of-contents__title\">\u76ee\u6b21<\/p><ul class=\"stk-table-of-contents__table\"><li><a href=\"#what-is-synology-vdsm\">What Is Synology VDSM?<\/a><\/li><li><a href=\"#synology-vdsm-vs-a-second-physical-nas-which-do-you-need\">Synology VDSM vs a Second Physical NAS: Which Do You Need?<\/a><\/li><li><a href=\"#what-you-need-before-you-start\">\u59cb\u3081\u308b\u524d\u306b\u5fc5\u8981\u306a\u3082\u306e<\/a><\/li><li><a href=\"#vdsm-docker-migration-in-4-steps\">VDSM Docker Migration in 4 Steps<\/a><\/li><li><a href=\"#why-the-compose-file-is-not-the-whole-container\">Why the Compose File Is Not the Whole Container<\/a><\/li><li><a href=\"#how-a-small-team-uses-vdsm-to-consolidate-servers\">How a Small Team Uses VDSM to Consolidate Servers<\/a><\/li><li><a href=\"#resizing-a-virtual-disk-that-ran-out-of-room\">Resizing a Virtual Disk That Ran Out of Room<\/a><\/li><li><a href=\"#what-the-ai-assistant-actually-did\">What the AI Assistant Actually Did<\/a><\/li><li><a href=\"#where-to-find-more-official-resources\">\u305d\u306e\u4ed6\u306e\u516c\u5f0f\u8cc7\u6599\u306e\u5165\u624b\u5148<\/a><\/li><li><a href=\"#limits-to-know-before-you-trust-vdsm-with-production\">Limits to Know Before You Trust VDSM With Production<\/a><\/li><li><a href=\"#references\">\u53c2\u8003\u6587\u732e<\/a><\/li><li><a href=\"#frequently-asked-questions\">\u3088\u304f\u3042\u308b\u8cea\u554f<\/a><\/li><\/ul><\/nav>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-is-synology-vdsm\">What Is Synology VDSM?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">VDSM is Synology&#8217;s Virtual DSM: a complete copy of DiskStation Manager running as a guest operating system inside Virtual Machine Manager on a physical NAS. It behaves like a separate NAS. Its own IP address, its own DSM login, its own packages, its own Container Manager. From the network&#8217;s point of view there is simply another Synology on the LAN. From the hardware&#8217;s point of view it is one more process on a box you already paid for.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The practical appeal is isolation. Run every service directly on the host and one badly behaved container can starve the file server the whole office depends on. Splitting workloads across VDSM guests gives each one a memory ceiling, a CPU allocation and a disk of its own, and lets you reboot one without touching the others.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Every NAS that supports Virtual Machine Manager includes one VDSM licence at no cost. Running a second and subsequent guest needs a <a href=\"https:\/\/synopower.club\/ja\/vdsm-%e3%83%91%e3%83%83%e3%82%af\/\">paid Virtual DSM licence<\/a> each. That single free instance is enough to follow everything in this article, and it is why so many people already own the capability and have never switched it on. If you need to add, map or unmap a licence later, we have a walkthrough on <a href=\"https:\/\/synopower.club\/ja\/docs\/how-to-add-deactivate-map-and-unmap-virtual-dsm-license\/\">managing VDSM licences<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"synology-vdsm-vs-a-second-physical-nas-which-do-you-need\">Synology VDSM vs a Second Physical NAS: Which Do You Need?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The honest comparison is not that virtual is better. It is a trade of resilience for flexibility. A second physical box survives the failure of the first; a VDSM guest does not. What a guest buys you instead is the ability to create, resize, snapshot and move a whole server in minutes rather than days.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>&nbsp;<\/th><th>VDSM guest<\/th><th>Second physical NAS<\/th><\/tr><\/thead><tbody><tr><td>Cost to add one<\/td><td>Free for the first guest, licence after that<\/td><td>A whole NAS plus drives<\/td><\/tr><tr><td>Time to provision<\/td><td>Minutes<\/td><td>Days, once shipping is counted<\/td><\/tr><tr><td>Resize CPU, RAM or disk<\/td><td>Edit a field, restart the guest<\/td><td>Buy new hardware<\/td><\/tr><tr><td>Survives host hardware failure<\/td><td>\u3044\u3044\u3048<\/td><td>\u306f\u3044<\/td><\/tr><tr><td>Snapshot and clone<\/td><td>Built into Virtual Machine Manager<\/td><td>Not applicable<\/td><\/tr><tr><td>Move to another NAS<\/td><td>Migrate or replicate the guest<\/td><td>Physically relocate it<\/td><\/tr><tr><td>\u6700\u9069<\/td><td>Isolating services, staging, consolidating small servers<\/td><td>Backup targets and real redundancy<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For this job the choice was obvious. We were consolidating a lightly used issue tracker that had been given an entire VDSM guest of its own onto a guest already running a website with spare capacity. Nothing about that needs new hardware. It needs ten minutes and a little care.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-you-need-before-you-start\">\u59cb\u3081\u308b\u524d\u306b\u5fc5\u8981\u306a\u3082\u306e<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before anything else, give the assistant its own login rather than handing over yours. In DSM open Control Panel, go to User &amp; Group and click Create. Name it something unmistakable &mdash; we used <strong>claude<\/strong> with the description <strong>AI control<\/strong> &mdash; and let DSM generate a strong random password.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"728\" src=\"https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-create-ai-user.png\" alt=\"Creating a dedicated DSM account for AI SSH access before a VDSM migration\" class=\"wp-image-21134\" srcset=\"https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-create-ai-user.png 1000w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-create-ai-user-300x218.png 300w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-create-ai-user-768x559.png 768w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-create-ai-user-16x12.png 16w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-create-ai-user-360x262.png 360w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-create-ai-user-400x291.png 400w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">A dedicated account, named so that nobody has to guess what it is for.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">On the next screen, tick <strong>administrators<\/strong>. This is not optional: DSM only permits members of the administrators group to log in over SSH, so an account outside that group cannot reach the shell at all. Do the same on both VDSM guests, then make sure SSH is switched on under Control Panel, Terminal &amp; SNMP.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"954\" height=\"693\" src=\"https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-ai-user-administrators-group.png\" alt=\"Adding the AI account to the administrators group so it can SSH into the VDSM guest\" class=\"wp-image-21135\" srcset=\"https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-ai-user-administrators-group.png 954w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-ai-user-administrators-group-300x218.png 300w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-ai-user-administrators-group-768x558.png 768w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-ai-user-administrators-group-18x12.png 18w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-ai-user-administrators-group-360x262.png 360w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-ai-user-administrators-group-400x291.png 400w\" sizes=\"auto, (max-width: 954px) 100vw, 954px\" \/><figcaption class=\"wp-element-caption\">DSM only lets members of the administrators group in over SSH, so this box has to be ticked.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>When the work is finished, disable the account.<\/strong> That is the whole point of making a separate one. Edit the user in Control Panel and switch it off, or delete it outright; access is revoked in one click without touching your own credentials, and everything the assistant did stays attributable to a login that exists for exactly that purpose. Leaving a permanently enabled administrator account lying around because it was convenient once is how small estates accumulate access nobody remembers granting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Two VDSM guests, SSH enabled on both, and Container Manager installed on the destination. You also need to know one thing that catches almost everyone the first time: the Docker binary is not on the default PATH inside DSM. Package binaries live under the package directory, so every command needs the full path or a shell alias.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check the destination has room before you start rather than halfway through a transfer. The commands below are the whole pre-flight check, and they are identical on any VDSM guest.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One more thing before any of it: <strong>take a snapshot of both guests in Virtual Machine Manager<\/strong>. Snapshots are in the free edition of Virtual Machine Manager, not just Pro, and it will keep up to 32 of them per guest. A VDSM snapshot captures the whole machine, so if an import goes wrong or a command does something you did not intend, you roll the guest back instead of rebuilding it. It costs seconds and it is the single cheapest insurance in this entire process. Take one on the source as well as the destination, because the source is your fallback.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Docker is not on PATH in DSM - use the full path\nD=\/volume1\/@appstore\/ContainerManager\/usr\/bin\/docker\n\n# What is running, and what is it built from?\nsudo $D ps -a\nsudo $D images\n\n# How much room is left on the destination volume?\ndf -h \/volume1\n\n# How much memory does the destination guest actually have free?\nfree -m<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"vdsm-docker-migration-in-4-steps\">VDSM Docker Migration in 4 Steps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">These are the four steps we ran, and they work for any container stack you need to lift between VDSM guests. The order matters: the application container is stopped first so nothing writes to the database mid-dump, and the database container stays up so it can be dumped cleanly.<\/p>\n\n\n<div id=\"rank-math-howto\" class=\"rank-math-block\" >\n<div class=\"rank-math-howto-description\">\n\n<\/div>\n\n<div class=\"rank-math-steps\">\n<div id=\"step-1\" class=\"rank-math-step\">\n<h3 class=\"rank-math-step-title\">Take a VDSM snapshot, then snapshot the container itself<\/h3>\n<div class=\"rank-math-step-content\"><p>Take a Virtual Machine Manager snapshot of both guests first &#8211; it is in the free edition and it is your undo button for everything that follows. Then stop the application container and run docker commit against it to capture its filesystem as a new image. This is the step people skip, and skipping it is what breaks the migration. Bind-mounted paths are excluded from a commit, so the data volume still has to be handled separately in step two.<\/p>\n<\/div>\n<\/div>\n<div id=\"step-2\" class=\"rank-math-step\">\n<h3 class=\"rank-math-step-title\">Dump the database and archive the data volume<\/h3>\n<div class=\"rank-math-step-content\"><p>With the database container still running, take a logical dump with mariadb-dump and the single-transaction flag. Then tar the bind-mounted data directory. A logical dump is deliberately preferred over copying the raw data files, because the image tag on the destination is almost never the exact same database build.<\/p>\n<\/div>\n<\/div>\n<div id=\"step-3\" class=\"rank-math-step\">\n<h3 class=\"rank-math-step-title\">Stream everything to the destination guest<\/h3>\n<div class=\"rank-math-step-content\"><p>Pipe docker save through gzip on the source and straight into a file on the destination over SSH, then do the same for the data archive. Our 816 MB image compressed to 366 MB and crossed the LAN in about a minute. Load the image on the far side and unpack the archive with the preserve-permissions flag.<\/p>\n<\/div>\n<\/div>\n<div id=\"step-4\" class=\"rank-math-step\">\n<h3 class=\"rank-math-step-title\">Start the database first, import, then bring up the application<\/h3>\n<div class=\"rank-math-step-content\"><p>Bring up only the database service, wait for it to accept connections, import the dump, and confirm the table and row counts match the source. Only then start the application container. Set restart policies to always so the stack survives a reboot of the guest.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why-the-compose-file-is-not-the-whole-container\">Why the Compose File Is Not the Whole Container<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the trap, and it is worth the price of admission on its own. The compose file for our Redmine stack declared two bind mounts: one for uploaded files, one for the database. Read that file and you would reasonably conclude that recreating the stack on the new guest meant copying two directories and running docker compose up.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It did not. Five plugins, the Ruby gems those plugins pulled in, the mail configuration and several edited initialiser files had all been installed straight into the running container over the years. None of it was in a volume. One command told us how bad it was.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># How many files differ between the container and the image it came from?\nsudo $D diff Redmine | wc -l\n6764\n\n# Plugins living inside the container, backed by no volume at all\nsudo $D exec Redmine ls \/usr\/src\/redmine\/plugins<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pulling a fresh official image would have produced a container with none of those plugins, pointed at a database that still held the 144 tables created by their migrations. The application would not have failed loudly. It would have started, looked almost right, and then broken in ways that are miserable to diagnose. Committing the running container to an image sidesteps the problem entirely, at the cost of a larger transfer. On a LAN between two VDSM guests that cost is about a minute, so take the trade every time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-a-small-team-uses-vdsm-to-consolidate-servers\">How a Small Team Uses VDSM to Consolidate Servers<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The pattern this migration follows is one most small teams eventually need. Over a few years you accumulate single-purpose guests: one for the wiki, one for the ticket tracker, one for a monitoring dashboard (the shape described in our <a href=\"https:\/\/synopower.club\/ja\/docs\/how-to-build-a-home-data-center-with-synology-nas-a-personal-journey-with-virtual-dsm\/\">home data centre walkthrough<\/a>). Each was sized generously on the day it was built and each now idles at a fraction of what it was given, while the host is over-committed and everything feels slightly slow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Consolidating with VDSM means folding the quiet workloads into a guest that is already awake. Our ticket tracker had a whole guest with its own CPU allocation and 1 GB of memory to itself, for a service three people touch a few times a day. Moving it next to an existing web stack released that allocation outright and cost the destination about 480 MB of resident memory across two containers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The discipline that makes this safe is retiring the source properly instead of leaving it running. We set the old containers to a restart policy of no, stopped them, left a text file in the directory explaining where the service now lives, and powered the guest down with auto-start disabled. It stays a complete rollback point, and it cannot quietly come back to life after a host reboot and start accepting writes the new instance will never see. Divergent duplicates are the classic way a tidy migration becomes a data-loss incident a month later.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"resizing-a-virtual-disk-that-ran-out-of-room\">Resizing a Virtual Disk That Ran Out of Room<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Halfway through, the destination ran out of space. Its volume was 9.6 GB with 1.5 GB free and we were about to add an 816 MB image plus 123 MB of application data. On a physical NAS this is where the story stops until new drives arrive. On VDSM it is a text field.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"646\" height=\"474\" src=\"https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-resize-virtual-disk.png\" alt=\"Editing the virtual disk size of a Synology VDSM guest in Virtual Machine Manager\" class=\"wp-image-21129\" srcset=\"https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-resize-virtual-disk.png 646w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-resize-virtual-disk-300x220.png 300w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-resize-virtual-disk-16x12.png 16w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-resize-virtual-disk-360x264.png 360w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-resize-virtual-disk-400x293.png 400w\" sizes=\"auto, (max-width: 646px) 100vw, 646px\" \/><figcaption class=\"wp-element-caption\">Growing the virtual disk is one field in Virtual Machine Manager &mdash; no volume rebuild, no reinstall.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Open the guest&#8217;s settings in Virtual Machine Manager, go to the Storage tab, type the new size and click OK. <strong>The guest does not have to be shut down for this.<\/strong> The disk grows while the machine keeps running, which is why this is a fundamentally different experience from adding capacity to bare hardware. The one rule worth knowing is that a virtual disk can only grow, never shrink, so there is no undo and no reason to be shy about the number.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What makes it genuinely painless is what happens inside the guest. DSM expands the partition and the filesystem to fill the new space by itself. There is no Storage Manager wizard to run, no partition table to edit, no volume to rebuild and no data to migrate. Our volume went from 9.6 GB with 1.5 GB free to 20 GB with 13 GB free, and the containers carried on. This is the single strongest argument for putting a service on VDSM rather than on bare hardware: getting the sizing wrong is cheap to fix later.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1707\" height=\"222\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-virtual-disk-usage.png\" alt=\"Virtual disk usage after resizing a Synology VDSM guest from 10 GB to 20 GB\" class=\"wp-image-21130\" srcset=\"https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-virtual-disk-usage.png 1707w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-virtual-disk-usage-300x39.png 300w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-virtual-disk-usage-1024x133.png 1024w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-virtual-disk-usage-768x100.png 768w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-virtual-disk-usage-1536x200.png 1536w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-virtual-disk-usage-18x2.png 18w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-virtual-disk-usage-360x47.png 360w, https:\/\/synopower.club\/wp-content\/uploads\/2026\/09\/synology-vdsm-virtual-disk-usage-400x52.png 400w\" \/><figcaption class=\"wp-element-caption\">After the restart the guest reports the full 20 GB, with the volume inside already expanded.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-the-ai-assistant-actually-did\">What the AI Assistant Actually Did<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">It is worth being precise here, because &#8220;AI moved my server&#8221; invites both too much and too little credulity. The assistant had no magical insight. It had a shell on both VDSM guests and it was systematic in a way a tired human at the end of a working day usually is not.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The single most valuable thing it did was run docker diff before touching anything, notice 6,764 changed files, and refuse the obvious plan. Somebody following the compose file would have had no reason to run that command. The second most valuable thing was verification: after the import it counted tables, issues, projects, journal entries and attachments on both sides, checked that every attachment file existed on disk, listed the plugin versions the application had registered, and confirmed there were no pending database migrations. That is a tedious checklist, and tedious checklists are exactly what gets skipped at five in the afternoon.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What it still needed from a human was judgement about consequences. Restarting a VDSM guest to add memory meant taking a live website down, and that is a decision to be asked about rather than assumed. The same goes for deleting anything at all. Treat the assistant as a very fast, very literal pair of hands that never gets bored of checking, and keep the irreversible calls for yourself.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"where-to-find-more-official-resources\">\u305d\u306e\u4ed6\u306e\u516c\u5f0f\u8cc7\u6599\u306e\u5165\u624b\u5148<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Virtual Machine Manager, the package that hosts every VDSM guest, has been in DSM for years and is well covered. These three walkthroughs cover installing the package, creating a guest and the general shape of the interface you will be working in.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Synology Virtual Machine Manager Walkthrough\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/l-qOXRUvBcc?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">A walkthrough of Virtual Machine Manager, the package that hosts Virtual DSM guests.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Synology DSM Virtual Machine\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/w7rc1pWHIiU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">Creating a DSM virtual machine from scratch, including the licence prompt.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Install Synology DSM on Virtual Machine Manger - DSM 6.1\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/Nnk5OKgtwXo?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">An older but still accurate look at installing Virtual DSM inside Virtual Machine Manager.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"limits-to-know-before-you-trust-vdsm-with-production\">Limits to Know Before You Trust VDSM With Production<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">First, memory is the binding constraint far more often than CPU. Our destination guest had 2 GB and was already into swap before we added anything. A second application plus a second database needed roughly another 480 MB, so we raised it to 4 GB. Check free memory on the destination before you plan the move, not after.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Second, a VDSM virtual disk grows but never shrinks. Over-provision and you cannot reclaim the space by editing the field back down; the only route to a smaller disk is building a new guest and migrating into it. Pick a number you will still be happy with in two years.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Third, licensing. One guest is included with the NAS; every additional guest needs its own <a href=\"https:\/\/synopower.club\/ja\/vdsm-%e3%83%91%e3%83%83%e3%82%af\/\">Virtual DSM licence<\/a>. Clustering across several NAS units, live migration and the larger snapshot retention are <a href=\"https:\/\/synopower.club\/ja\/synology-vmm-pro-license\/\">VMM Pro<\/a> features rather than standard ones. If your consolidation plan involves splitting one busy guest into four tidy ones, price that before you design it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fourth, the scenarios to avoid. Do not put a guest&#8217;s virtual disk on the same physical volume you back up to and call that a backup. Do not run a database with heavy sustained writes on a guest sharing spinning disks with a busy file server. Do not treat VDSM as a substitute for a second machine, because if the host dies every guest on it dies at the same moment. And do not migrate a container you have never inspected, for the reasons in the compose-file section above.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fifth, credentials. A migration touches database passwords, environment variables and configuration files. Ours moved a compose file holding plaintext database credentials, so it was placed deliberately outside the web server&#8217;s document root. A compose file left inside a document root is downloadable by anyone who guesses the filename, and that is a depressingly common way credentials leak. If you let an assistant script a migration, read where it is writing files. And when the job is done, disable the account you created for the assistant rather than leaving a live administrator login behind.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sixth, snapshot before you touch anything. A VDSM snapshot in Virtual Machine Manager takes seconds, is available without the Pro licence, and turns almost every mistake in this article into a two-minute rollback. It is the one step worth adding to any migration runbook, whether a human or an assistant is doing the typing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, verify rather than assume. Every claim in this article was checked against the running system: table counts on both sides, attachment files present on disk, plugin versions registered by the application, no pending migrations, and a full restart of the stack to prove it comes back on its own. A migration is not finished when the service responds. It is finished when you have proven it survives a reboot of the VDSM guest, and when the old copy can no longer accept writes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A note on where to get those licences, since it is what we do: SynoPower Club sells Synology licences with round-the-clock instant key delivery. The two that matter here are the <a href=\"https:\/\/synopower.club\/ja\/vdsm-%e3%83%91%e3%83%83%e3%82%af\/\">Virtual DSM licence<\/a>, which you need for every guest past the free one, and the <a href=\"https:\/\/synopower.club\/ja\/synology-vmm-pro-license\/\">VMM Pro licence<\/a> if you want clustering, live migration or 255 snapshots per guest instead of 32. The <a href=\"https:\/\/synopower.club\/ja\/\">full licence catalogue<\/a> covers Surveillance Station and MailPlus as well.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"references\">\u53c2\u8003\u6587\u732e<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/synopower.club\/ja\/\" target=\"_blank\" rel=\"noreferrer noopener\">SynoPower Club<\/a>, our Synology NAS guides and camera reviews<\/li><li><a href=\"https:\/\/www.synology.com\/en-global\/dsm\/feature\/virtual_machine_manager\" target=\"_blank\" rel=\"noreferrer noopener\">Synology &mdash; Virtual Machine Manager<\/a>, the official overview of the package that runs VDSM<\/li><li><a href=\"https:\/\/kb.synology.com\/en-global\/DSM\/help\/Virtualization\/virtualization_desc\" target=\"_blank\" rel=\"noreferrer noopener\">Synology Knowledge Center \u2014 Virtual Machine Manager help<\/a>, guest creation and settings<\/li><li><a href=\"https:\/\/docs.docker.com\/reference\/cli\/docker\/container\/commit\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Docker \u2014 docker container commit<\/a>, the command behind step one<\/li><li><a href=\"https:\/\/docs.docker.com\/reference\/cli\/docker\/image\/save\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Docker \u2014 docker image save<\/a>, used to stream the image between guests<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"frequently-asked-questions\">\u3088\u304f\u3042\u308b\u8cea\u554f<\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list\">\n<div id=\"faq-1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question\">Is Synology VDSM free?<\/h3>\n<div class=\"rank-math-answer\">\n\n<p>Every NAS that supports Virtual Machine Manager includes one Virtual DSM licence at no cost, which is enough to run a single guest permanently. Additional guests each need a paid licence. The Virtual Machine Manager package itself is free from Package Center.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question\">Can Synology VDSM run Docker containers?<\/h3>\n<div class=\"rank-math-answer\">\n\n<p>Yes. A Virtual DSM guest is a full DSM installation, so you install Container Manager from Package Center exactly as you would on a physical NAS. The migration in this article moved a two-container stack between two guests with no changes to the containers themselves.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question\">Do I need to shut the guest down to enlarge a virtual disk?<\/h3>\n<div class=\"rank-math-answer\">\n\n<p>No, and you do not need to reinstall anything either. Raise the size in the Storage tab of Virtual Machine Manager and the disk grows while the guest keeps running. DSM inside the guest expands the partition and filesystem on its own, so there is no Storage Manager wizard and no volume to rebuild. The only rule is that a virtual disk can grow but never shrink.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-4\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question\">How does Synology VDSM compare with running Docker on the host NAS?<\/h3>\n<div class=\"rank-math-answer\">\n\n<p>Running containers directly on the host is simpler and slightly faster because there is no virtualisation layer. A guest gives you isolation instead: a hard memory ceiling, a separate DSM to reboot, and a whole server you can snapshot or move. Use the host for things that must always work, and guests for things you want to be able to break.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question\">Should I take a VDSM snapshot before migrating?<\/h3>\n<div class=\"rank-math-answer\">\n\n<p>Yes, and it is free. Snapshots are included in the standard edition of Virtual Machine Manager, which keeps up to 32 per guest, and a snapshot captures the whole machine rather than one folder. Take one on the source and one on the destination before you start. This matters even more when an AI assistant is driving the shell: keep the source intact until the destination is verified, require confirmation before anything irreversible, and read what is about to run rather than approving on reflex.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question\">What happens to files installed inside a container with no volume?<\/h3>\n<div class=\"rank-math-answer\">\n\n<p>They exist only in that container&#8217;s writable layer and disappear the moment it is recreated from its image. Run docker diff against a container before migrating it. If the count is large, commit the container to an image and move that image rather than pulling a fresh one from the registry.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-7\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question\">How long does a migration like this take?<\/h3>\n<div class=\"rank-math-answer\">\n\n<p>About thirty-five minutes end to end for a small stack, including verification. The transfer itself was roughly a minute for a 366 MB compressed image over a gigabit LAN. Most of the time goes on inspecting the source and checking the result, which is the part worth not rushing.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-8\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question\">Can I move a Synology VDSM guest between NAS units?<\/h3>\n<div class=\"rank-math-answer\">\n\n<p>Yes. Virtual Machine Manager can migrate or replicate a guest to another NAS in the same cluster, which is a different and often better answer than migrating the containers inside it. Moving the containers, as we did here, makes sense when you want to consolidate two guests into one rather than relocate a whole guest.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>A virtual NAS is one of those features people install once, poke at for an afternoon, and then forget they own. That is a shame, because Synology VDSM \u2014 Virtual DSM, run inside Virtual Machine Manager \u2014 quietly solves two of the most annoying problems in small-scale self-hosting. The first is that moving a Docker stack between machines normally costs you an evening of fiddly work. The second is that when a virtual disk runs out of room, most people assume they have to rebuild the whole thing. Neither is true on VDSM. This guide walks through a real migration we ran in about thirty-five minutes: an internal Redmine issue [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":21128,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_eb_attr":"","footnotes":""},"categories":[183,182],"tags":[184],"class_list":["post-21131","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vdsm","category-virtual-machine-manager","tag-ai-automation"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"_links":{"self":[{"href":"https:\/\/synopower.club\/ja\/wp-json\/wp\/v2\/posts\/21131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/synopower.club\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/synopower.club\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/synopower.club\/ja\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/synopower.club\/ja\/wp-json\/wp\/v2\/comments?post=21131"}],"version-history":[{"count":4,"href":"https:\/\/synopower.club\/ja\/wp-json\/wp\/v2\/posts\/21131\/revisions"}],"predecessor-version":[{"id":21137,"href":"https:\/\/synopower.club\/ja\/wp-json\/wp\/v2\/posts\/21131\/revisions\/21137"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/synopower.club\/ja\/wp-json\/wp\/v2\/media\/21128"}],"wp:attachment":[{"href":"https:\/\/synopower.club\/ja\/wp-json\/wp\/v2\/media?parent=21131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/synopower.club\/ja\/wp-json\/wp\/v2\/categories?post=21131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/synopower.club\/ja\/wp-json\/wp\/v2\/tags?post=21131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}