在软件 IDE raid1 上设置 /var 分区
![]() 请随时帮助我们制作一个最新的版本。(讨论) |
本文档将展示如何使用廉价的 IDE 磁盘创建硬盘镜像。
本文档是为 alpine-1.8.3 编写的
为了获得最大的可靠性,我将在 raid1 上设置 swap。如果您更喜欢最大的速度,则无需为 swap 配置任何 raid 设备。只需在不同的磁盘上添加 2 个 swap 分区,Linux 将自动条带化它们。
缺点是,一旦一个磁盘发生故障,系统将会崩溃。这就是我选择将 swap 放在 raid1 上的原因。
设置 RAID
按照此处描述设置 raid 阵列。在本文档中,配置了两个 raid 阵列:md0 用于 swap (512MB),md1 用于 /var。
通常使用 LVM 是一个好主意,这样您将来可以轻松扩展数据存储。LVM 在这里不进行讨论。
创建文件系统
现在我们可以为 /var 创建交换空间和文件系统。
mkswap /dev/md0 swapon /dev/md0
您可以使用 free 验证 swap 是否真的被激活。它应该显示您有多少交换空间。
free
我们需要安装软件来创建文件系统(“格式化”分区)。我将在此处使用 ext3,因此我安装 e2fsprogs。如果您喜欢 reiserfs 或 xfs,则必须安装 xfsprogs 或 reiserfsprogs。
apk_add e2fsprogs
如果您使用的 Alpine 版本早于 1.3.8,则需要手动创建到 /etc/mtab 的链接。
ln -fs /proc/mounts /etc/mtab
创建文件系统。-j 选项使其成为 ext3。没有 -j 选项,它将变成非日志型的 ext2。如果您的分区很大,此步骤可能需要一些时间。
mke2fs -j /dev/md1
现在编辑 /etc/fstab 并添加您的新分区。我的看起来像这样
none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 udev /dev tmpfs size=100k 0 0 none /dev/pts devpts defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 /dev/cdrom /media/cdrom iso9660 ro 0 0 /dev/fd0 /media/floppy vfat noauto 0 0 /dev/usba1 /media/usb vfat noauto 0 0 none /proc/bus/usb usbfs noauto 0 0 /dev/md0 swap swap defaults 0 0 /dev/md1 /var ext3 defaults 0 0
移动数据
现在您应该停止所有在 /var 中放置任何东西的服务(例如 syslog)。如果您在干净的安装上启动并且没有运行 setup-alpine,则不应有任何服务正在运行。但是,某些软件包可能已在 /var 中创建了目录,因此我们需要备份 /var,挂载新的 /var,并将所有备份的目录移回 raided /var。
mv /var /var.tmp mkdir /var mount /var mv /var.tmp/* /var rmdir /var.tmp
使用 df 实用程序验证一切看起来都正常。
~ $ df Filesystem 1k-blocks Used Available Use% Mounted on none 255172 23544 231628 9% / udev 100 0 100 0% /dev /dev/cdrom 142276 142276 0 100% /media/cdrom /dev/md1 37977060 181056 35866876 1% /var
重启后保留
现在我们已经完成了所有设置并正在运行。我们需要确保在下次重启期间一切都会恢复。
创建一个 init 脚本,该脚本将在启动期间为您挂载 /var。我称之为 /etc/init.d/mountdisk,它看起来像这样
#!/sbin/runscript start() { ebegin "Mounting /var" mount /var eend $? } stop() { ebegin "Unmounting /var" umount /var eend $? }
使其可执行
chmod +x /etc/init.d/mountdisk
注意:自 Alpine-1.7.3 起,已附带 localmount 脚本,因此您无需创建自己的 mountdisk 脚本。
并且 /var 在 raid 创建 *之后* 挂载。-k 选项将使 alpine 在启动期间卸载 /Var 分区。还要添加启动 swap。
rc-update add mountdisk boot rc-update add swap boot
/dev/md* 设备节点不会自动创建,因此我们也需要将它们放在软盘上。
lbu include /dev/md*
如果您的服务器上有用户并且希望 /home 是永久的,则可以创建一个目录 /var/home 并创建到 /var/home 的链接。
mkdir /var/home mv /home/* /var/home/ ln -s /var/home/* /home/
注意:您不能仅仅将 /home 替换为指向 /var/home 的链接,因为基础系统已经有一个 /home 目录。当启动尝试从软盘复制配置时,由于已存在的 /home 目录,它将失败。
确保链接存储到软盘
lbu include /home/*
另请记住将任何新创建的用户移动到 /var/home 并创建链接
adduser bob mv /home/bob /var/home/ ln -s /var/home/bob /home/bob lbu include /home/bob
保存到软盘
lbu commit floppy
测试是否工作
重启计算机。现在应该启动 raid 并且应该挂载 /var。使用 df 检查
~ $ df Filesystem 1k-blocks Used Available Use% Mounted on none 255172 23976 231196 9% / mdev 100 0 100 0% /dev /dev/cdrom 140932 140932 0 100% /media/cdrom /dev/md1 37977060 180984 35866948 1% /var
升级
由于软件包数据库放在磁盘上,因此您不能仅通过更换 CDROM 来更新。您必须在新 CDROM 上运行升级,或者手动运行 apk_add -u ... && update-conf。