我有一个 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
)。