在* NIX上装载卷时,最佳实践是创建一个带有已装载文件系统的子目录来承载实际文件。这是由于每个文件系统lost+found该文件系统的基本(根)目录中都有一个目录,该目录通常由root用户拥有。这可能会导致非root用户命令和进程出现问题。
我们最近在尝试使用tpm update命令时在客户站点上看到了此影响:
[tungsten@db1 tungsten-clustering-6.1.4-44]$ ./tools/tpm update
db1|ERROR: Initializing new object in package update failed:
find: ‘/opt/continuent/lost+found’: Permission denied
发生此问题的原因是,文件系统直接安装在 /opt/continuent
最佳实践是在主根目录下有一个子目录来保存安装点,并将文件系统安装到这些子目录上,然后在安装点目录下使用其他子目录供应用程序使用。
例如,假设我们有以下I / O流,每个I / O流都应具有自己的文件系统以获得最佳性能:
Root volume
MySQL Data
MySQL Binary Logs
Tungsten THL
MySQL General Log and any other logging
为了说明上述最佳做法,请查看以下结构:
/volumes/data/mysql
/volumes/binlogs/mysql
/volumes/logging/mysql
/volumes/tungsten/thl
我们上面看到的是一个3级的结构开始/volumes,这是一个简单的目录举行第二级子目录data,binlogs,logging和tungsten。在这些子目录上挂载文件系统时,它们称为mount points。挂载后,lost+found目录将变为可见。接下来,cd到安装点目录并创建第三级目录供应用程序使用。
这种结构的另一个好处是,在未挂载文件系统的情况下,可以防止MySQL写入根目录,因为文件系统上存在的第三级子目录将不可见。这将完全停止MySQL的启动,并确保所有适当的磁盘依赖项都已到位。
最佳做法是执行以下操作:
mkdir -p /volumes/data
mount {resource} /volumes/data
cd /volumes/data
mkdir continuent
cd /opt/
ln -s /volumes/data/continuent
并在INI中设置 install-directory=/volumes/data/continuent
总而言之,通过使用多个文件系统可以获得最佳性能。正确挂载和使用它们,以避免使非根进程与lost+found每个文件系统根目录下的目录交互的陷阱。
文章来源:https://www.continuent.com/resources/blog/best-practices-using-multiple-filesystems-mysql-database-servers