我有一个主存储/iSCSI 服务器,我想在其中保存所有数据。
另一方面,我有工作站和虚拟机,我根本不需要数据。但是,由于性能要求,我希望在工作站和虚拟机上保留一些本地存储作为/boot
主cache
iSCSI 卷。
我还没有决定是否使用bcache
,LVMs dm-cache
所以如果它们在这个问题上有任何区别,请在你的答案中提及。
问题:
如何安装 linux (ubuntu),以便我的本地存储仅充当目标GRUB
,/boot
并iSCSI initiator
在目标上安装一个特定卷(不涉及 PXE)。Cache
当然,也是如此。理想情况下,可以使用 Live CD 或其他东西的命令行将其安装到每个工作站。对于虚拟机,我只需复制磁盘本身,然后更改要挂载的 iSCSI 卷。
答案1
嗯,事实证明这是一次学习经历:)
步骤1
为了完成这项工作,我使用了 Ubuntu网络安装程序服务器映像。只有 55MB。
第2步
安装是基于文本的,但功能不亚于桌面版本。它确实有一个微小的区别,允许您直接在安装中指定 iSCSI 连接参数,但您必须选择手动分区。我不确定它是否有帮助,因为在安装程序中输入启动器信息会导致相同的 LUN 被安装两次,这有点不幸,因为这会弄乱(至少)我接下来要安装的 LVM。所以我只是从安装程序中输入启动器 ID,然后切换到控制台 #2 (ctrl + alt + F2) 并手动连接到目标从那里。回到安装程序和手动磁盘分区,我现在有了 /dev/sda (我的本地存储)和 /dev/sdb (iSCSI 卷)。
请注意,桌面安装程序(对于 ubuntu gnome 版本)没有在部署中预先安装 open-iscsi,我最终放弃了它,只是使用服务器安装程序。
步骤3
继续手动分区,下一步是为 SSD 缓存建立基础条件。在本例中,我决定使用 LVM 的 dm-cache 实现,因此现在我只是在 iSCSI LUN 中创建一个卷组,并在其中创建一个逻辑卷。这将是根。请注意,iSCSI LUN 上现有的逻辑卷不会在安装程序的分区管理器中显示,因此您可能需要先将其删除,然后创建一个新卷,然后才能继续。
步骤4
完成手动磁盘分区后,我现在创建分区:
- sda1:/启动
- sda2:交换
- sdb:vg/lv: /(根)
并将操作系统安装到其中。你得到一个选择您最喜欢的桌面风格在安装过程中,所以没有任何任务。您甚至可以选择先安装必需品,然后tasksel
按照上面链接中的建议重新启动。
步骤5
这导致我的部署无法正常工作,原因有两个:
- 烧录到部署的 initramfs 中的 iSCSI 启动器 ID 不是用于连接到目标的 ID。
- 用于 CHAP 身份验证的密码信息也被遗漏在 initramfs 映像中
结果,我新安装的 Ubuntu 出现了 initramfs 提示符,因为它无法挂载包含根 FS 的 iSCSI 映像。
我不确定如何在安装阶段解决这个问题,所以我只是通过以下步骤修复它:
- 我验证了我的新部署使用的客户端 ID,并在我的服务器的
targetcli
.同时我禁用了 CHAP 身份验证。通过简单地从 initramfs 提示符中使用正确的参数调用可以更好地完成此操作iscsistart
,但当时我根本不知道这一点。在这里选择你最喜欢的毒药。 - 客户端启动后,我
/etc/iscsi/initiatorname.iscsi
使用正确的启动器 ID 以及/etc/iscsi/iscsi.initramfs
完整的目标和身份验证详细信息修复了该问题。后一个文件的参数名称为 ISCSI_INITIATOR、ISCSI_TARGET_NAME、ISCSI_TARGET_IP、ISCSI_TARGET_PORT、ISCSI_TARGET_GROUP、ISCSI_USERNAME、ISCSI_PASSWORD、ISCSI_IN_USERNAME、ISCSI_IN_PASSWORD。我得到了他们这里。更新后,我发布了update-initramfs -u
相应更新的启动配置。
完成此步骤后,我就拥有了一个正确设置的系统,该系统从一开始就按照我想要的方式启动和运行。还有两个步骤我还没有完成。
步骤6
该部署存在一个“错误”,在关闭期间,网络堆栈和 iSCSI 卷会在卸载根文件系统之前关闭。这会导致关机中途挂起。当我找到解决此问题的方法时,我将相应地更新此步骤并继续执行最后一步。
步骤7
我目前正在研究 LVM 缓存,原因有两个:
- 我已经在我的主服务器上设置了 bcache,虽然它非常强大、可配置且可靠,但我遇到了一些小问题(但仍然很烦人)。
- LVM 的缓存使逻辑卷的路径保持不变:您可以随意启用/禁用/删除缓存,而无需更改底层卷的使用方式。另一方面,bcache 创建一个新的映射,即使您禁用缓存本身,该映射也需要保持活动状态。好吧,从技术上讲,因为我必须设置 LVM只是为了以后能够启用缓存,我想我说 bcache 有另一层而 LVM 没有,这不太公平,是吗?