菜单
首页 文章 {{t.nav.bookmarks}} {{t.nav.experience}} {{t.nav.profiles}} 关于 与我合作
Hard drive internals showing disk platters and read head
科技 3月 12, 2026 • 20分钟阅读

How AI Designed a Storage Layout I'd Have Spent Days Planning Myself

Designing an encrypted LVM layout for six workloads across three disks is a full day of planning alone. I described every service and let AI architect the storage, explaining every layer so I understood what I was building.

分享:
Lee Foropoulos

Lee Foropoulos

20分钟阅读

Continue where you left off?
Text size:

Contents

用提示词安装 machine:四部曲 install install

install 1:services 然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntu storageinstall 2:然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntu linux:四部曲系列 storageinstall 3:manual installinstall 4:machine linux:四部曲系列 GPU

如果你曾经在凌晨三点眼睁睁看着 encryption 分区被塞满,然后目睹 machine 陷入停滞,你就已经明白了:linux:四部曲系列的 encryption 方案是个 install。但要为六种不同的 适合新手。fedora install 三块 should 磁盘设计一套 should 的 storage LVM manual,那可是整整一天的 用提示词安装 规划、install 文档、machine 容量,以及对自己的 encryption。

下面教你如何让 AI 承担 然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntu 设计的繁重工作,让你不必在 man 手册里埋头苦干一整天。你只需把工作负载需求喂给它,就能得到一份完整的架构方案,附带真正看得懂的推理过程,最终对自己所构建的每一层都了然于胸。

第一部分,你已经选好了发行版并完成了硬件梳理。现在到了让大多数人要么接受糟糕默认值、要么彻底放弃的环节:然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntu 设计

近距离拍摄硬盘内部,展示磁盘盘片与读写磁头
然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntu 架构的核心不在于磁盘空间,而在于理解每种工作负载的行为方式,并为其提供独立运行的余地。

从工作负载出发,而非分区大小

你已经在第一部分完成了硬件梳理:假设是一台配备 NVMe 驱动器、SSD 和 HDD 的老款 ThinkPad。规格告诉你什么是可能的,但工作负载才能告诉你什么是必要的。

方法如下。不要直接向 AI 索要分区表,不要指定大小,也不要说"把 /home 放在独立分区"。而是描述行为与需求,让它推导出架构。比如这样:

"这台 machine 将运行 Docker 容器、带有 TimescaleDB 的 PostgreSQL、Redis、用于本地 AI 模型的 Ollama,并存储来自蜜罐网络的攻击产物。它还需要一个与操作系统隔离的 storage 分析工作区,以及用于长期存证的 storage 归档存储。请为我们找到的三块磁盘设计最佳的分区与 storage 策略。"

看出区别了吗?你交出的是约束条件和目标,而不是对解决方案的微观管理。如果推理过程合理,设计自然也会合理。如果某个选择说不通,你也能发现,因为你清楚自己的 machine 究竟需要做什么。

按磁盘行为对工作负载分类

首先要厘清的是按 IO 模式进行工作负载隔离。不是按大小,不是按重要性,而是按每种工作负载实际访问磁盘的方式。

三条通道

  • 高 IOPS、低延迟 = NVMe。操作系统、Docker、数据库和 AI 模型都放在这里。这些工作负载会进行大量小型随机读写,需要最快的存储。
  • 快速临时空间、独立隔离 = SSD。分析工作区放在这里。处理捕获数据和运行工具需要不错的速度,但更重要的是,它必须与操作系统磁盘隔离。如果分析工作导致文件系统损坏或磁盘写满,操作系统依然可以正常运行。
  • 大容量、顺序写入 = HDD。用于 pcap 文件、证据导出和备份的长期归档存储。顺序写入性能足够,容量比速度更重要。

仅凭这种隔离,就能避免最常见的故障模式:一个工作负载抢占另一个的磁盘 IO 或空间。

为什么每个服务都要有自己的逻辑卷

不要止步于三块磁盘。在 NVMe 上,将空间划分为六个独立的逻辑卷,每个都有其特定用途:

  • /var/lib/docker 需要隔离,因为 Docker 的磁盘消耗难以预测。失控的容器构建或被遗忘的镜像缓存不应该能把根分区塞满。
  • /var/lib/postgresql 需要隔离,以便独立调整大小、进行备份快照和未来的性能调优。数据库有独特的 IO 模式,专属空间对其有益。
  • /var/lib/ollama 需要隔离,因为 AI 模型体积庞大且独立增长。单个 LLM 可能超过 8GB,你不希望模型下载与操作系统争夺空间。
  • /home 需要隔离,这样用户数据、dotfile 和个人配置在重装系统后依然保留。
  • swap 作为独立逻辑卷,大小按需支持休眠功能。
  • 根目录(/) 限定在固定大小,防止指定路径之外的内容将其填满。根目录一旦写满,系统就会停止运行。限定大小是防御性设计。
不要问 AI "如何对磁盘分区"。告诉它磁盘需要支持什么,让它推导出设计方案。

storage 不是可选项

storage 在这里不是可选的,理由很直接。这是一台笔记本形态安全工作站,存储着静态敏感数据:蜜罐捕获、攻击产物、网络分析结果。如果 machine 被盗、丢失或报废,每块磁盘都必须在没有密码的情况下无法读取。

对于这种使用场景,基于 LUKS 的全盘 storage 是基本要求,没有例外。

在卷组中预留余量

这个细节是优秀 LVM 设计与业余设计的分水岭。预留约 5-10% 的卷组空间不分配。不是浪费,是保留。原因如下:

使用 LVM,你可以在不重启的情况下动态扩展逻辑卷。如果六个月后 Docker 需要更多空间,只需几秒钟扩展 LV 并调整文件系统大小。如果一开始就全部分配完毕,就必须缩小一个卷才能扩大另一个,而缩小操作速度慢、风险高,某些文件系统甚至无法缩小。

有意预留余量是一种特性,而非浪费。

6 LVs, 3 Encrypted Disks
跨 3 块 LUKS storage 物理磁盘、按角色隔离的卷,零空间浪费

然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntu 层级心智模型

这个心智模型是本章最有价值的收获,没有之一。不是分区大小,不是挂载点,而是这个八层栈,它从上到下解释了 Linux 存储的实际工作原理。

八层然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntu 栈

你的每一块存储都会从上到下经过这些层:

  1. 原始分区fdiskgdisk 在物理磁盘上创建的内容
  2. storage(LUKS):将原始分区包裹在一个 storage 容器中
  3. 映射设备:解锁后出现的设备:/dev/mapper/cryptnvme
  4. LVM 物理卷(PV):注册为 LVM 存储的映射设备
  5. 卷组(VG):将一个或多个 PV 汇聚成一个存储池
  6. 逻辑卷(LV):从 VG 中划出的一块空间,用于特定目的
  7. 文件系统:在 LV 上格式化的 ext4 或 swap
  8. 挂载点:文件系统在目录树中出现的位置

出现问题时,修复方法几乎总是针对某一特定层。如果无法判断是哪一层,你就会在错误的地方浪费数小时排查。

在实际安装过程中遇到的大多数故障,尤其是第三部分中涉及 fstab 和 crypttab 的部分,都源于混淆了这些层级。把第 2 层的 UUID 写到了本该填第 6 层的地方,或者在需要第 1 层的配置中引用了第 3 层的设备路径。每一个存储错误都可以追溯到某个层级的不匹配。

收藏这个栈,把它刻在脑子里。一旦内化了这八个层级,Linux 存储就不再神秘,不过是八件事,各司其职,依次相连。

NVMe 最终布局

以下是主 NVMe 驱动器的完整设计方案:

主 NVMe(nvme0n1)

分区大小类型用途
nvme0n1p11 GBEFI 系统(FAT32)启动固件
nvme0n1p22 GB/boot(ext4)内核与 initramfs
nvme0n1p3剩余空间LUKS2 storage其余所有内容

nvme0n1p3 上 LUKS 容器内部:

nvme0n1p3cryptnvme(LUKS2)→ LVM PVvgkali(卷组)

逻辑卷大小文件系统挂载点
root120 GBext4/
swap24 GBswap[swap]
docker220 GBext4/var/lib/docker
ollama180 GBext4/var/lib/ollama
postgres120 GBext4/var/lib/postgresql
home200 GBext4/home
(空闲)约 65 GB

次级磁盘

SSD(sdb): sdb1cryptanalysis(LUKS2)→ ext4 → /srv/analysis

HDD(sda): sda1cryptarchive(LUKS2)→ ext4 → /srv/archive

三块 storage 磁盘,主盘上六个逻辑卷,每种工作负载各行其道,没有任何不该共享空间的内容相互干扰。

近距离拍摄硬盘内部,展示磁盘盘片与读写臂
三块物理磁盘,三层 storage,六个逻辑卷。每种工作负载都有专属空间和独立的扩展路径。

将设计转化为构建脚本

设计确定后,下一个encryption就很简单了:

"给我完整的命令,用于在 Kali 实时环境中构建这整个然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntulayout。假设全部linux:四部曲系列块磁盘都可以擦除。"

要求生成一个完整的 shell 脚本:擦除现有签名、创建 GPT 分区表、用 sgdisk 划分然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntu、用强linux:四部曲系列默认参数创建 LUKS2 容器、打开容器、初始化 LVM 物理卷、创建卷组、分配全部六个逻辑卷、格式化所有内容,然后对固态硬盘和机械硬盘重复 LUKS 设置。

预计大约 80 行。每条命令都应该可以审查。如果脚本中有任何内容你看不懂,在运行之前先让 AI 解释那一行的含义。

哪里会出问题(而且不会是设计的问题)

提前说清楚:设计会是稳固的。执行过程才会跟你较劲。以下是需要留意的install:

Windows 换行符。 如果你在 Windows 机器上编写脚本,再通过 USB 传输到实时环境,每行结尾会是 \r\n 而不是 \n。Bash 会在每一条命令上报错,而且错误信息晦涩难懂。在运行任何内容之前,用 sed -i 's/\r$//' script.sh 修复它。

Shebang 损坏。 与换行符问题相关。#!/bin/bash 这一行会带上一个不可见的回车符,导致内核找不到解释器。报错看起来像是脚本根本不存在,尽管它明明就在那里。

路径混乱。 USB 挂载在某个路径,但你从另一个工作目录引用脚本。在实时环境中同时管理多个挂载点时,Tab 补全和相对路径都不可靠。请使用绝对路径。

错误的执行语法。 忘记在脚本名前加 ./,或者没有先设置执行权限。这些经典错误与然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntumanual无关,完全是肌肉记忆的问题。

"AI 可以写脚本,但你仍然需要理解自己粘贴的内容。如果某条命令你看不懂,停下来问清楚。"

一旦换行符和执行问题解决,然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntulayout的构建会在两分钟内完成。每个 LUKS 容器都能打开。每个 LVM 结构都能干净地创建。每个文件系统都能格式化。设计经受住了考验。

用粘贴检查模式验证一切

不要假设成功。脚本运行完毕后,把终端输出粘贴给 AI,让它审计结果:

"这是我的 lsblklvs 输出。一切都构建正确了吗?"

粘贴原始终端输出,让 AI 逐行检查。它应该确认:cryptnvme 处于活动状态、vgkali 存在且包含六个大小正确的逻辑卷、每个卷上的文件系统正确、辅助磁盘已加密并格式化。

这种粘贴验证模式是结合 AI 进行系统管理最实用的技巧之一。你运行一条命令,粘贴输出,然后询问现实是否与计划吻合。它能发现你因为太投入而忽略的问题:

  • 逻辑卷被意外格式化为错误的文件系统类型
  • 卷的大小单位是兆字节,而你本意是吉字节
  • 脚本静默跳过了某个缺失的然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntu
  • 某个 LUKS 容器实际上并未打开

几乎任何系统状态都可以这样操作:lsblklvspvsvgsblkidfdisk -lcryptsetup status。粘贴进去,让 AI 审计。这比自己逐一检查更快、更全面。

把终端输出粘贴给 AI 让它验证。这一个习惯能发现的错误,比任何细心的输入都要多。

核心要点:从工作负载出发设计,而非从linux:四部曲系列出发

这里的然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntumanual并非来自模板,也不是从论坛帖子复制的。它是从实际工作负载需求推导出来的。Docker 需要空间隔离。数据库需要专用 IO。AI 模型需要增长空间。安全工件需要静态加密。归档数据需要容量优先于速度。

每一个决策都追溯到真实的需求。这就是一个能用六个月的然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntumanual与一个在第一次意外发生时就崩溃的layout之间的区别。

这种方法适用于任何构建,不仅仅是安全工作站。告诉 AI 这台machine将要做什么。描述machine、数据模式、增长预期,以及你希望能够承受的故障场景。然后让它来决定如何组织磁盘。它向你展示的推理过程比最终的然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntu表更有价值,因为你会理解为什么做出每个选择,以及何时可能需要调整。


你的磁盘已经分区、加密,并划分为逻辑卷。架构已经完成。现在到了真正让人头疼的install:在这一切之上install操作系统,而没有图形化安装程序帮你托底。

install 3:manual install 中,你将挂载加密卷、从零引导 Kali、配置 fstab 和 crypttab 以确保启动时一切自动解锁,并构建可用的引导加载程序配置。这是八层模型真正接受压力测试的地方,也���一个错误的 UUID 就能让你盯着 GRUB 救援提示符发呆的地方。备好咖啡。

你的然后得到的回答正如你所料:一份发行版清单,配上浅尝辄止的描述。ubuntumanual清单 0/8
How was this article?

分享

Link copied to clipboard!

You Might Also Like

Lee Foropoulos

Lee Foropoulos

Business Development Lead at Lookatmedia, fractional executive, and founder of gotHABITS.

🔔

Bu cuoguo renhe wenzhang

Xin wenzhang fabu shi huoqu tongzhi. Wu xu dianzi youjian.

You xinwenzhang shi ninjianghui kandao wangzhan banner he liulanqi tongzhi (xu yunxu).

Jin liulanqi tongzhi. Wu laji youjian.

0 / 0