如何在 Fedora 17 下强制将特定应用程序安装在特定硬盘上?

如何在 Fedora 17 下强制将特定应用程序安装在特定硬盘上?

我有一个 Fedora 17 系统,包含三 (3) 个硬盘 [ /dev/sda、 /dev/sdb 和 /dev/sdc ]。

/dev/sda 磁盘是我系统的“启动驱动器”。我已将系统设置为自动挂载 /dev/sdb 和 /devsdc。我有一个数据库应用程序 [MySQL],我想只将其安装在 /dev/sdb 上,但我不知道如何实现这一点。[我打算使用 /dev/sdc 作为系统备份的位置。]

有人能告诉我如何完成这个任务吗?在 Windows 7 下(例如)这个任务很简单,但我从未见过任何 Linux 文档。提前感谢您的帮助。

答案1

不是太直率,但是您对磁盘存储的所有了解都是错误的!
(或者至少基于 Windows 从 DOS 继承的根本上破坏的范式,而 DOS 又从 CP/M 继承了该范式)。


对 Unix 文件系统的简短且非常不完整的介绍

在用户/文件系统级别,Unix 并不关心它正在使用什么物理设备。只有一个真正伟大而丰富的目录层次结构(树),以/(根)为根,所有事物都存在于其下。

/dev/sda1文件系统在磁盘设备( 、、等)上创建/dev/sda2/dev/sdb1并安装在您想要逻辑访问它们的位置。

例如,/dev/sda1(Windows 驱动器C:,第一个硬盘)可能安装在/(根目录)。
然后,您可能已/dev/sda2安装在/usr包含所有“用户空间”程序的,并/dev/sda3安装在/home包含所有用户主目录的。 /dev/sdb1可能安装在/var保存日志文件,这样它们就不会填满您的启动驱动器,等等。

物理结构(哪些磁盘/分区与哪些挂载点相关联)是您在构建系统时根据预计的需求/增长决定的。
逻辑结构(目录名称及其内容)是标准化的,并记录在您的系统手册中(hier手​​册页 --hier(7) from a Linux system, 和来自 BSD 系统)。

你可以通过运行以下命令来查看哪些分区(文件系统)被挂载在哪里mount命令:

[mgraziano@monitor ~]$ mount
/dev/da0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/da0s1h on /home (ufs, local, soft-updates)
/dev/da0s2d on /opt (ufs, local, soft-updates)
/dev/da0s1g on /tmp (ufs, local, soft-updates)
/dev/da0s1e on /usr (ufs, local, soft-updates)
/dev/da0s1f on /usr/local (ufs, local, soft-updates)
/dev/da1s1d on /usr/local/pgsql/data (ufs, local, soft-updates)
/dev/da3s1d on /usr/local/pgsql/data/pg_xlog (ufs, local, soft-updates)
/dev/da2s1d on /usr/local/pgsql/data/xlog_archive (ufs, local, soft-updates)
/dev/da0s1d on /var (ufs, local, soft-updates)

您可以使用以下方式获取更多信息(例如可用空间)df命令:

[mgraziano@monitor ~]$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/da0s1a      2G     73M    1.7G     4%    /
devfs          1.0k    1.0k      0B   100%    /dev
/dev/da0s1h     18G    6.3M     16G     0%    /home
/dev/da0s2d     63G    7.4M     58G     0%    /opt
/dev/da0s1g      2G     14k    1.8G     0%    /tmp
/dev/da0s1e    9.7G    810M    8.1G     9%    /usr
/dev/da0s1f     14G    1.9G     11G    14%    /usr/local
/dev/da1s1d    266G     21G    223G     9%    /usr/local/pgsql/data
/dev/da3s1d    130G    128M    120G     0%    /usr/local/pgsql/data/pg_xlog
/dev/da2s1d    266G    2.1G    242G     1%    /usr/local/pgsql/data/xlog_archive
/dev/da0s1d    9.7G    308M    8.6G     3%    /var

上面的结果来自 FreeBSD 系统,因此设备名称不同,但输出的一般格式是相同的。


那么你的问题的答案是什么?——“你想错了。”

当您在 Unix 系统上安装像 MySQL 这样的软件包时,它(希望)会遵守文档中的约定hier。例如:

  • MySQL 的配置文件可能会进入/etc/mysql/
  • MySQL 数据库文件可能会进入/var/db/mysql/
  • MySQL 客户端二进制文件可能安装为/usr/bin/mysql
  • MySQL 转储程序可能安装为/usr/sbin/mysqldump
  • MySQL 守护进程(数据库服务器程序)可能是/usr/sbin/mysqld
  • 启动脚本可能会被安装,/etc以便数据库在系统启动时启动。

对于安装(和用户)来说重要的是逻辑文件系统层次结构中的位置。底层物理磁盘的概念被完全抽象出来(除非您用完了空间,并且假设您(系统管理员)已经将分区设置得足够大以容纳正在安装的内容)。

Unix 文件系统提供的抽象有许多好处,其中包括能够弥补初始分区时的错误。
例如,如果/var您系统上的分区只有 10GB,但您希望 MySQL 存储 100GB 的数据,那么您可能会出去购买一个新硬盘,安装它,并将其挂载在,/var/db/mysql这样您就有足够的空间容纳您的数据库。
例如,看看df我上面提供的输出 - /usr/local/pgsql/data(我的 Postgres 数据库目录)位于一个单独的、更大的分区上/usr/local(它本身与 分开/usr)。

相关内容