
做数据库这一行最怕的就是换平台迁移。最近我拿到一台Mac miniM系列芯片想着把它变成日常开发测试机目标是在上面跑一套国产化环境麒麟V10操作系统加上达梦DM8数据库。听起来就三样东西但中间隔着一层虚拟机整个链条就长了。我实际折腾下来UTM虚拟机跑麒麟V10再装达梦DM8遇到的问题比预想的多得多网上资料却特别零散东拼西凑踩了三天坑才全部跑通。这篇文章就是给准备在Mac M系列芯片上搭这套环境的DBA和后端开发看的。我会把从UTM创建虚拟机到麒麟V10安装再到达梦DM8下载、安装、初始化实例、启动服务的完整过程写清楚尤其把那些容易卡住的地方单独拎出来讲。你如果按这个流程走镜像和安装包提前下载好大概一两个小时就能把DM8跑起来。1. 环境认知与整体方案选型1.1 为什么选用UTM方案而不是Parallels或VMware很多人第一反应是用Parallels Desktop界面友好跑Windows和Linux都挺顺。但Parallels在M系列芯片上走的是半虚拟化方案对ARM版Linux支持还算积极可一旦涉及到国产操作系统的非主流版本比如麒麟V10的aarch64服务器版启动兼容性就变得很玄学。VMware Fusion虽然支持M系列但免费版功能有限对aarch64 Linux的适配也没有宣传中那么省心。UTM就不一样了它是基于QEMU的虚拟机前端既能对ARM64系统做硬件虚拟化也能通过TCG去模拟其他架构。放到M系列芯片这个场景里最关键的是ARM64虚拟化路径Mac的M1/M2/M3本身就是aarch64UTM可以直接调用Hypervisor.framework把CPU虚拟化出来跑aarch64的麒麟V10几乎接近原生速度。这比Parallels那种“官方支持但排序靠后”的体验要稳得多也比在x86虚拟机里装x86版麒麟再装x86版达梦要快得多。下面这张表是我实测下来各方案的情况能帮你快速判断方案架构支持麒麟V10 aarch64性能表现推荐程度UTM虚拟化模式ARM64原生虚拟化好接近原生强烈推荐UTM模拟模式模拟x86_64能装但很慢较差不推荐Parallels DesktopARM64虚拟化偶尔抽风不错备选VMware FusionARM64虚拟化兼容一般不错备选在M系列芯片上跑达梦DM8数据引擎本身是ARM原生版本所以跑起来非常流畅瓶颈基本都在虚拟机和磁盘IO上。这也是我为什么坚持用UTM它把性能损失控制得最小。1.2 版本选型麒麟V10与DM8、UTM的版本搭配选版本是整个流程里最容易翻车的一步因为“麒麟V10”和“达梦DM8”往下细分有好几个大版本选错了后面全白搭。首先是麒麟V10它分桌面版和服务器版还分aarch64和x86_64架构。在Mac M系列上肯定选aarch64服务器版镜像一般叫类似“Kylin-Server-10-SP3-2403-Release-aarch64.iso”。为什么强调SP3因为SP3对外设、文件系统和安全模块的适配更完善安装出错概率低而且对UTM的虚拟化接口识别得更好。桌面版也可以但桌面版默认带图形界面在虚拟机里资源占用高服务器版反而更清爽我们后续只通过命令行和SSH操作就够用。然后是达梦DM8。达梦官网dameng.com提供针对不同平台的安装包一定要下载匹配麒麟V10、aarch64架构的版本典型文件名是“dm8_20240523_for_kylin10_aarch64.iso”之类。不要下成大版本不匹配的包更不要下x86版否则在ARM环境上直接报“Exec format error”。UTM方面我用的是UTM 4.4以上版本。你可以从Mac App Store下载正式版也可以配合TestFlight通道安装更新版。UMP这个前端本身迭代很快新版对Apple Silicon的虚拟化支持更好XP虚拟机和苹果官方虚拟化框架都稳一些。我建议优先用App Store版授权简单省得折腾。注意麒麟V10的服务器版镜像经常是ISO里还带一个“自动安装/手动安装”菜单默认项很可能是“Installing Kylin”而不是“Testing Kylin”不要选错。选错之后部分显卡驱动会加载异常导致安装界面看起来像卡住了。2. 搭建UTM虚拟机安装麒麟V102.1 用UTM创建ARM64虚拟机的关键设置打开UTM点“新建虚拟机”有两个入口一个是“虚拟化”一个是“模拟”。这里必须选虚拟化只有这样才能借助M系列芯片的硬件加速。然后操作系统类型选“Linux”架构选“Arm64AArch64”系统版本可以根据麒麟V10的引导方式选“Other”或者“Generic ARM”。接下来设置几个关键参数内存Memory至少给8GB。如果你Mac是16GB或更大直接给12GB。达梦DM8是内存敏感型数据库内存小容易启动失败。CPU核心数CPU Cores给4个核心以上数据库安装和后续查询并发都有优势。磁盘Disk建议40GB起步我用60GB因为DM8安装包加解压很占空间数据目录也会涨。显示Display默认的virtio通常没问题偶尔遇到黑屏就换virtio-ramfb或virtio-vga。网络Network选virtio这个虚拟网卡在Linux下性能最好。引导UEFI默认开启UEFI引导麒麟V10的aarch64版本支持不用改。然后挂载麒麟V10的ISO文件在“Drives”里添加一个CD/DVD光驱类型选“Disk Image”路径指到你的麒麟ISO。虚拟机启动时会从这个光驱引导。内存和CPU都可以在系统信息里查Mac mini M4默认16GB内存所以给虚拟机8GB内存加4核剩余留给宿主机运行一段时间也不会卡。如果机器只有8GB内存建议不要跑图形界面了用服务器版纯命令行内存至少给6GB。2.2 麒麟V10安装过程与避坑启动虚拟机后会看到麒麟的引导菜单。按回车进入默认安装几分钟后出现安装界面。这个过程中最容易遇到的问题就是屏幕黑屏。要是等了很久屏幕没反应不要急着强制关机先把它挂起然后把“Display”从virtio-vga改成virtio-ramfb再启动。这个坑在UTM里特别常见尤其在SP3内核上。进入安装界面后语言选中文。分区建议手动操作别直接自动分区。虽然自动分区简单但在虚拟机上可能会有几百兆的/reserved或者生成一个奇怪的分区表给后续扩容添麻烦。我习惯这样分挂载点大小文件系统/boot1GBext4/50GBext4swap4GBswap在磁盘上留一点未分配空间以后需要时可以动态扩根分区。虚拟机的磁盘文件如果放在效率较高的宿主机磁盘上这一套下来安装大概十几分钟M系列芯片虚拟化效率其实很好。安装快结束时系统会让你创建用户和root密码。这里优先给root设置密码并开启root登录因为后续安装达梦DM8要频繁切root用户省得每次sudo。如果系统创建的是普通用户后续用sudo passwd root设置root密码即可。安装完重启把ISO光驱断开或移除避免再次从安装盘启动。第一次进系统如果卡在欢迎页面通常也是显示驱动的问题按刚才换显示的思路处理就行。2.3 安装后的系统初始化与网络配置麒麟V10默认网络走DHCPUTM的NAT网卡会自动分配一个192.168.x.x地址。用普通用户登录后执行ip addr看一下IP地址然后就能通过SSH连接这样后面操作就不用一直盯着VM窗口了。不过麒麟的SSH服务默认不一定开着。我没记错的话有的版本会启用有的没有。先执行systemctl status sshd看一眼没启用就sudo systemctl enable sshd --now之后就可以用SSH工具、或者直接用Mac的终端连到虚拟机。IP地址先固定下来免得每次重启都变nmcli connection show sudo nmcli connection modify 连接名 ipv4.addresses 192.168.64.100/24 ipv4.method manual sudo nmcli connection up 连接名接下来是软件源的准备。麒麟V10的图形界面顺手但命令行环境如果要安装gcc、glibc-devel这些依赖还是需要配置软件源。麒麟官方有在线源如果你的Mac能正常上网虚拟机NAT也能用直接在/etc/yum.repos.d/里配置即可。如果网络受限可以用麒麟ISO作为本地源把ISO挂载后创建local.repo指向baseurlfile:///media/kylin然后dnf clean all dnf makecache。这一步必须提前搞定因为达梦DM8安装前系统里最好有gcc、glibc、libaio、numactl这些基础组件。虽然DM8有些包是自带的但缺了系统级依赖会导致安装向导闪退或起服务失败。dnf list installed | grep gcc查一下没有就安装。3. 安装达梦DM8的系统准备工作3.1 DM8安装包的获取、上传与校验达梦官网对试用账号放开下载我拿到的是一个ISO文件平台选择“麒麟V10/aarch64”就行。下载下来后直接在宿主机解压或者作为虚拟光驱挂载都行。我习惯把安装包ISO直接挂给虚拟机这样省去上传时间。在UTM虚拟机设置里把DM8的ISO也挂到光驱上系统启动后执行sudo mkdir -p /mnt/dm sudo mount /dev/sr0 /mnt/dm ls /mnt/dm如果能看到DMInstall.bin之类的文件说明挂载成功。如果用GUI解压记得校验一下文件完整性md5sum DM8安装包和官网给的MD5对比一下。安装包损坏是离线安装时特别隐形的问题之前有朋友装到一半报“无法解析安装程序”查了半天就是包没下完整血泪教训。如果不想挂ISO也可以通过scp从Mac上传scp dm8_xxx_for_kylin_aarch64.iso 用户虚拟机IP:/tmp/3.2 创建用户、目录与系统参数调整达梦DM8安装不能用root账户跑安装向导官方也不推荐直接跑最佳实践是单独建一个dmdba用户。首先创建组和用户sudo groupadd dinstall sudo useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba然后创建安装目录一般放在/dm8sudo mkdir -p /dm8 sudo chown -R dmdba:dinstall /dm8环境变量建议也提前写上在/home/dmdba/.bash_profile里加上export DM_HOME/dm8 export PATH$DM_HOME/bin:$PATH export LD_LIBRARY_PATH$DM_HOME/bin:$LD_LIBRARY_PATH系统参数方面不用改太多但有两个地方要注意。一个是文件句柄限制数据库运行时会打开大量文件默认值肯定不够。在/etc/security/limits.conf里加上dmdba soft nofile 65536 dmdba hard nofile 65536 dmdba soft stack 32768 dmdba hard stack 32768刷新后ulimit -n验证应该看到65536。另一个是SELinux麒麟V10默认可能是enforcing有些组件会莫名被卡掉建议先关闭sudo setenforce 0 sudo sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/configfirewalld如果开着把达梦数据库默认端口5236放行sudo firewall-cmd --permanent --add-port5236/tcp sudo firewall-cmd --reload3.3 中文环境与图形界面显示问题DM8的安装程序支持图形向导但在UTM虚拟机里麒麟的图形栈偶尔会抽风比如中文显示成方块、按钮点了没反应、窗口拉不出来。这真不稀奇我遇到好几次了每次都是卡在安装界面进退两难。最稳妥的解决方案就是不要用图形向导直接走命令行安装模式。DM8安装程序本身就支持-i参数安装体验虽然复古但绝对可靠而且VM里操作很方便不会因为显示问题中断。所以后面整个安装流程我都用命令行模式这也是我在这个环境里比较推荐的做法。当然如果只是启动图形安装器时黑屏也可以用export LANGzh_CN.UTF-8先保证语言环境。但如果你连xhost、DISPLAY这些还没配置好那就不用纠结了直接走命令行。4. 达梦DM8安装与实例初始化实测4.1 使用命令行模式安装DM8数据库软件把用户切到dmdba进入挂载目录执行sudo -i -u dmdba cd /mnt/dm ./DMInstall.bin -i命令行安装程序会问几个问题选择语言输入2选择中文当然你也可以选1英文这个无关紧要。是否输入Key文件路径直接回车跳过使用试用授权如果企业购买过Key就输入绝对路径。选择安装类型输入1典型安装。选择安装目录默认是/dm8确认即可。最后会问是否初始化数据库这里先选“否”因为我想用命令行单独初始化后面步骤更清晰。安装过程会输出很多解压和复制日志等一两分钟最后提示“请以root用户执行以下命令/dm8/script/root/root_installer.sh”。这一步必须切回root执行sudo /dm8/script/root/root_installer.sh它会创建dm用户相关的环境目录并设置服务脚本权限。看到“完成”就说明数据库软件安装好了。你可以在/dm8/bin下看到很多可执行文件比如dminit、disql、dmrman等。到此软件部分结束真正的实例还没创建。4.2 用dminit初始化数据库实例很多新手会去点图形版的“数据库配置助手”但在UTF环境下那个DBCA同样有可能崩溃。我推荐直接用dminit命令行参数一清二楚cd /dm8/bin ./dminit PATH/dm8/data DB_NAMEDAMENG INSTANCE_NAMEDMSERVER \ PORT_NUM5236 PAGE_SIZE32 EXTENT_SIZE16 \ CHARSET1 CASE_SENSITIVE0参数含义参数推荐值说明PATH/dm8/data数据文件目录DB_NAMEDAMENG数据库名INSTANCE_NAMEDMSERVER实例名PORT_NUM5236服务端口达梦默认就是5236PAGE_SIZE32页大小单位KB开发环境用32生产要提前规划EXTENT_SIZE16簇大小单位KBCHARSET11代表UTF-80代表GBK推荐UTF-8CASE_SENSITIVE00大小写不敏感1敏感根据业务SQL习惯选这里CASE_SENSITIVE值得多说一句如果你们团队历史SQL习惯大小写混用选0能省掉很多麻烦如果严格要求数据库对象命名规范选1更贴近Oracle默认模式。开发测试环境我一般选0省心。执行完成后/dm8/data/DAMENG下会生成控制文件、数据文件、日志文件和参数文件这时数据库还没有启动。4.3 注册服务、启动数据库并用disql验证初始化实例后需要把实例注册成系统服务这样能用systemctl管理也能开机自启。执行sudo /dm8/script/root/dm_service_installer.sh -t dmserver \ -dm_ini /dm8/data/DAMENG/dm.ini -p DMSERVER服务名一般是DmServiceDMSERVER启动sudo systemctl start DmServiceDMSERVER启动后可以用dmdba用户跑disql连接sudo -i -u dmdba cd /dm8/bin ./disql SYSDBA/SYSDBA:5236如果提示连接成功进入SQL提示符执行一句检查实例状态SELECT STATUS$, INSTANCE_NAME FROM V$INSTANCE;正常会返回“OPEN”状态。到这里达梦DM8就真正跑起来了。如果还想远程连接记得前面防火墙已经放行5236端口。宿主机Mac用数据库客户端工具连接时连接地址填UTM虚拟机的IP用户名SYSDBA初始密码默认SYSDBA生产必须马上改。新增实例后内存参数在dm.ini里可以微调比如BUFFER_POOL_SIZE默认值是128M开发环境可以先不动跑满再调。5. 常见问题与排查技巧实录避坑合集5.1 UTM与麒麟V10的常见系统级问题在整个环境搭建里UTM层面的坑最烦因为表现千奇百怪。我整理几个高频场景附带解决思路现象原因处理方法启动麒麟安装器黑屏virtio显示驱动兼容问题把Display换成virtio-ramfb或virtio-vga再启动安装完成后重启引导失败UEFI固件识别问题关闭UTM的安全启动选项改用传统BIOS引导虚拟机性能很卡内存/CPU给太少至少8GB内存、4核磁盘选用SSD别放在机械硬盘上网络不通网卡驱动未加载确认网络模型选virtio安装前先启用网络避免后续加网卡乱套剪贴板不共享UTM未安装SPICE工具这个在Linux下支持一般不必强求用SSH传文件更实在这里特别说一下“网络不通”。如果你装系统时为了省事把网络设备禁用了之后再在UTM设置里加一块新网卡麒麟V10未必能自动识别并开启有时候需要手动配置NetworkManager或重启网络服务甚至重建连接。所以安装时最好就把virtio网卡保留启用状态。5.2 达梦DM8安装与连接常见错误达梦在安装和连接阶段的问题我归成四类基本覆盖绝大部分报错第一类安装程序无法启动现象执行./DMInstall.bin报cannot execute binary file。肯定是架构选错了x86的二进制在ARM系统上跑不了。确认下载的是aarch64安装包用file DMInstall.bin看一下。第二类图形安装器闪退或按钮不显示现象点半天没反应。干脆放弃图形改用./DMInstall.bin -i命令行安装三步就走完最省心。第三类服务启动失败现象systemctl start DmServiceDMSERVER报错journalctl -u DmServiceDMSERVER看到缺库或权限错误。检查两点一是dm.ini里的路径是否真实存在文件属主是否为dmdba二是内存参数是否设得太高虚拟机内可用内存不够导致启动OOM。第四类disql连接失败或超时现象disql SYSDBA/SYSDBA:5236卡半天然后报网络错误。先ps -ef | grep dmserver看进程在不在再用ss -lntp | grep 5236确认端口在监听。如果进程没起来看日志如果只在本地监听可能dm.ini里设置了IP_ADDR改成IP_ADDR0.0.0.0重启实例。5.3 开发测试环境性能调优建议这套环境在开发测试场景下性能瓶颈集中在UTM的磁盘和内存分配上数据库本身的调优反而不用做太多。我实测下来的经验是给UTM足够的资源至少8GB内存4核CPU。M系列芯片性能很强别吝啬虚拟机里的数据库通常吃不满倒是虚拟机存储IO容易成为瓶颈。磁盘镜像格式UTM默认使用qcow2记得在设置里开启“Discard”或“TRIM”避免虚拟磁盘文件无限膨胀。达梦参数微调在dm.ini里可以调BUFFER_POOL_SIZE、MAX_BUFFER开发机可以设成512MB左右。修改后重启服务生效。连接池和SuperPIT开发测试不用刻意调等压测时再看AWR报告和v$buffer_pool统计。如果你是跑大数据量导入建议把宿主机的文件缓存打开UTM的磁盘放在Mac内置SSD上避免外接盘和网络盘。另外Mac M系列上因为芯片是ARM整个环境跑下来功耗很低开一整台虚拟机也比Intel机型安静得多。这也是我比较喜欢这套组合的原因。最后的几点个人经验坦率说我第一次在这套组合上装达梦踩的最大坑不是DM8本身而是麒麟V10图形环境不够配合。后来强制自己全程用命令行反而所有环节都能预期出错也好排查。如果你正准备动手我建议你把“图形界面”这个词从计划里划掉所有操作都走SSH这样你得到的是一个干净、可控、适合脚本化的环境。内存分配上宁多勿少。DM8启动时如果内存不够报错信息会非常隐晦甚至只是提示“Failed to allocate memory”查半天才发现是dminit分配缓存时虚拟内存不够了。8GB内存是底线能上12GB体验会好很多。还有一个操作小技巧每次安装前把操作步骤写成一个shell脚本比如用户创建、目录权限、系统参数调整这些本来就该自动化。我在Mac上用脚本重新部署整个环境大概三次就彻底稳定了。如果你也打算长期维护这个测试环境建议从第一天就记录命令并版本管理后面省下来的时间绝对值得。整套流程跑通后达梦DM8在Mac M系列的UTM虚拟机里运行非常稳日常开发、SQL验证、甚至小规模性能测试都能胜任。希望这篇指南能让你少走一些弯路。