本节摘要:安装 Linux 不是"下一步点到底",分区方案、最小化安装、桌面环境这三个决定直接影响系统上线后的稳定性与可维护性。本节从一起"全盘默认分区拖垮线上业务"的故障复盘入手,讲清分区规划、安装流程验证与桌面环境(GNOME、KDE、XFCE)的取舍标准。
某互联网公司的日志平台跑在一台自建虚拟机上,是某个实习生半年前装的。安装那天他图省事,所有选项一路默认:整块盘一个分区、图形化桌面全装、语言包装齐。系统上线后相安无事——直到某个周三凌晨,监控报警,日志平台完全不可用。
值班同学登上去一看:
df -h
Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 40G 0 100% /
根分区写满了。这台机器每天要接收几百兆的访问日志,日志全写在根分区下的应用目录里,半年积累下来把 40G 吃光。更糟的是写满的不只是数据盘——根分区一满,系统日志写不进、临时目录不可用、数据库的 WAL 文件落不了盘,整台机器上的所有服务跟着一起瘫痪。这就是"把所有鸡蛋放进一个分区"的经典后果:一个普通的空间问题被放大成了整机故障。
复盘会上定了三条规矩:数据目录必须独立分区或独立磁盘、生产服务器一律最小化安装不装桌面、装机必须走标准清单而不是个人临场发挥。这三条规矩就是本节的主线。
分区这件事的本质是隔离爆炸半径。你没法保证任何目录永远不写满,但你可以决定它写满时拖累谁。规划分区时问自己一个问题:这台机器上什么东西会持续增长?日志、数据库、用户上传文件、容器镜像——这些就是需要独立空间的东西。
一台典型的应用服务器,我会这样划:
| 挂载点 | 大小参考 | 用途 | 写满的后果 |
|---|---|---|---|
| 根分区 | 20–50G | 系统与软件 | 影响整机,需重点保护 |
| 交换分区 | 内存的 1–2 倍或更小 | 内存吃紧时的缓冲 | 系统变慢但不至于立即崩溃 |
| 应用数据区 | 按增长预估 | 日志、数据库 | 只影响该应用,报警可预期 |
| 可选:临时区 | 数 G | 临时文件 | 隔离失控的临时写入 |
交换分区的大小众说纷纭。老规矩是内存的两倍,那是内存以兆计的年代的算法。现在内存动辄几十 G,云厂商普遍建议小交换甚至无交换——用弹性内存替代磁盘交换,性能好得多。物理服务器跑数据库这类内存大户,留适量交换作保险即可。
💡 关键直觉:分区的第一目标不是性能,是故障隔离。让"必然会发生的写满"只烧伤一个小角落,而不是烧掉整台机器。
安装界面里的另一种选择也值得说:逻辑卷管理(LVM)。传统分区一旦定死大小,后期调整很痛苦;LVM 把多个磁盘或分区抽象成一个可伸缩的存储池,空间不够时在线扩。代价是多一层概念、排错时多一跳。我的建议:服务器装机默认 LVM,你会感谢未来的自己;学习环境用普通分区,先把概念搞懂。
安装程序通常给你几个"软件选择"套餐:带桌面的、带开发工具的、最小化的。生产服务器的答案只有一个——最小化。原因有三。
第一,攻击面。装上去的每一个软件包都是一个潜在的漏洞入口。桌面环境带来的图形栈、浏览器、多媒体编解码器,对一个跑 Nginx 的服务器毫无用处,却可能出现在安全扫描报告里逼你打补丁。
第二,资源。桌面环境常驻就要吃掉几百兆内存和持续的 CPU 开销。4G 内存的机器,桌面白白吃掉十分之一,对寸土寸金的小规格云主机是明显浪费。
第三,可预测性。最小化安装的系统行为简单,启动的东西少,出问题的环节少,排错时的心智负担小。运维喜欢"无聊"的系统——一切平淡无事就是最好的状态。
装完之后做一轮验证,确认系统处于预期状态:
systemctl list-units --type=service --state=running
UNIT LOAD ACTIVE SUB DESCRIPTION ssh.service loaded active running OpenBSD Secure Shell server systemd-journald.service loaded active running Journal Service cron.service loaded active running Regular background program ...
最小化系统跑着的服务应该一屏内数得过来:SSH、日志、定时任务、网络管理,再多就要问一句"这是干嘛的"。每个多出来的服务都是一个需要回答的问题。
再确认防火墙状态与可用更新:
sudo apt update && apt list --upgradable | head -5
Hit:1 http://mirrors.aliyun.com/ubuntu jammy InRelease Listing... Done bash/jammy-updates 5.1-6ubuntu1.9 amd64 [upgradable]
装机当天把补丁打到最新,是很多安全事件的低成本预防。见过太多被蠕虫扫中的服务器,补的就是装系统那周就该打的补丁。
桌面环境是 Linux 的可选外壳,不是系统的一部分。主流选择有三个,气质差别明显。
GNOME 是 Ubuntu 等发行版的默认桌面,走简洁现代路线,动画多、集成度高,资源占用中等。对从 Windows 或 macOS 迁移过来的用户最友好。KDE Plasma 功能密度高、可定制到牙齿,喜欢折腾外观和效率工具的人会爱上它,代价是选项多到眼花。XFCE 走轻量经典路线,内存占用小、界面朴素,老机器和虚拟机里跑起来飞快。
| 桌面 | 内存占用参考 | 适合 |
|---|---|---|
| GNOME | 1–2G 起 | 日常桌面、笔记本 |
| KDE Plasma | 1–2G 起,可调 | 喜欢定制的重度桌面用户 |
| XFCE | 500M 内 | 老硬件、虚拟机、低配设备 |
什么时候值得装桌面?你自己日常使用的开发机、需要图形软件(浏览器调试、办公套件)的环境、给非技术同事用的机器。什么时候坚决不装?所有生产服务器、所有跑对外服务的机器、所有你想好好学命令行的环境——最后这条是给自己的:桌面在,手就会痒去点鼠标,命令行永远练不出来。
装完桌面后想反悔也不用重装,把默认启动目标改回命令行即可:
sudo systemctl set-default multi-user.target
Removed /etc/systemd/system/default.target. Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/multi-user.target.
下次开机就是纯命令行,桌面还在盘里但不再自动启动,需要时一条命令临时拉起来。这个技巧在"装了桌面又想省内存"的边缘场景很实用。
不管什么用途,新系统落地的第一小时建议按这个清单走一遍。
第一件,确认网络与主机名。主机名是有意义的运维资产,叫 web-01 比叫 ubuntu 好一万倍:
sudo hostnamectl set-hostname app-01 hostnamectl
Static hostname: app-01 Chassis: vm Operating System: Ubuntu 22.04.4 LTS
第二件,建一个日常使用的普通用户并给 sudo 权限,禁用 root 直接远程登录。这是第 4 章权限治理的起点,这里先记住动作。
第三件,配置 SSH 密钥登录并关闭密码认证,把暴力破解的大门直接焊死。密钥对生成后把公钥放到服务器的授权文件里,具体流程在 1.3 节的终端实战中演示。
第四件,把软件源换成本地镜像并全量升级,前面演示过的更新命令在这里执行。
第五件,装上最小工具集:用于查看的工具、用于监控的工具、编辑器。工具清单因人而异,原则是"够用就好",缺什么再装什么——最小化的纪律要贯彻到日常。
下面这张图把整个装机决策流程串起来,照着走能避开本节开头那类事故。

学习期用虚拟机,理由是快照。VirtualBox 这类工具能把你折腾前的状态整盘冻结,搞砸了一键回到五分钟前——这种"随便死"的自由对学习无比珍贵。云主机按小时计费虽然便宜,但快照要额外收费、网络配置也要额外小心,不适合放飞自我的实验。等你进入"照着生产规范搭建一套环境"的阶段,再切到云主机练真实的部署流程,两者各司其职。
学习 Linux 阶段不建议。双系统要动分区表,引导配置出问题会波及原有系统,省下的虚拟机开销远抵不上一次引导修复的心智损耗。真想在物理机上体验 Linux,拿一台退役的旧笔记本整个盘装进去,比在主力机上搞双系统干净得多。
能,但代价不小。普通分区扩容要动文件系统离线工具,风险与操作复杂度都高;这正是 1.2 节推荐 LVM 的原因——逻辑卷可以在线扩,数据盘加空间不用停机。已经装好的系统想补独立数据分区也不算晚:加一块新盘、格式化、挂到数据目录、迁移数据、改挂载配置,第 3 章会把这套动作完整走一遍。分区方案定错不是绝症,但治起来比当初多花十倍功夫,这就是"装机是运维的第一个决策点"的含义。
建议联网。联网安装能拉到最新的包索引与补丁,省掉装机后再全量升级的一步;离线安装则保证过程不受镜像源速度影响,适合批量部署的标准化场景。个人学习直接联网在线装;企业环境往往用内部镜像与自动化安装流程,那是另一套话题,入门阶段知道有这条路径即可。
缺什么装什么,这正是包管理器存在的意义(第 5 章主角)。最小化的纪律不是"永远不装东西",而是"装上去的每个东西都叫得出名字、说得出用途"。一台软件包数量能数清的机器,出问题时你的把握是完全不一样的——每个包都是熟人,陌生面孔一眼就能看出来。
装机这一节还有一个隐性目标:建立决策留痕的习惯。分区为什么这么划、桌面为什么不装、交换为什么给这么大,每个决定当时都有理由,但这些理由半年后就会忘记。把装机决策记成几行注释放在团队知识库里——不是文档负担,是三行字的成本换未来无数次的问号。事实上你翻一遍本教程会发现,每章的事故复盘都始于某个当初没想到或当初没记下。把决策写下来,就是让未来的自己少一次考古。
系统装好了,下一节我们进入真正的战场——终端与 Shell。黑屏滚字不再是恐慌的来源,而是你未来十年最亲密的工作界面。