在软件 IDE raid1 上设置 /var 分区

来自 Alpine Linux
此材料已过时...

请随时帮助我们制作一个最新的版本。(讨论

本文档将展示如何使用廉价的 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。