创建指向 SAN 的文件系统组

Posted

技术标签:

【中文标题】创建指向 SAN 的文件系统组【英文标题】:create a file system group pointing at a SAN 【发布时间】:2013-05-18 15:13:39 【问题描述】:

我正在使用在 sql server 2012 中创建 FileTable。我想将文件存储在 SAN(存储区域网络)上。我已将其映射到 sql server 上的驱动器。

要使用 FileTable,我需要设置一个文件系统组。我正在使用以下脚本,但未能正确:

ALTER DATABASE [MyDatabase]
ADD FILE 
(
    NAME = FileStreamFile,
    FILENAME= '\\123.456.789.001\MyFolder',
    MAXSIZE = UNLIMITED
    )
TO FileGroup MyFileStreamGroup
END

我为 FileName 输入的条目似乎总是失败。如何设置 FileStreamGroup 以指向 SAN,然后我将使用它来创建文件表?

【问题讨论】:

【参考方案1】:

正如您所发现的,您不能使用 UNC 路径将文件流文件放到远程驱动器上。最好的办法是在 SAN 上创建一个 LUN 并通过 iSCSI 连接到该 LUN,这样驱动器将显示为 SQL Server 的本地驱动器,但物理上仍位于 SAN 上。

您可能想与您的存储管理员讨论一下如何真正做到这一点。

【讨论】:

【参考方案2】:

首先,你需要创建一个文件组:

ALTER DATABASE [MyDatabase]
ADD FILEGROUP [MyFileStreamGroup]

然后你就可以往里面添加文件了:

ALTER DATABASE [MyDatabase]
ADD FILE ( 
    NAME = N'NewDataFile'
    ,FILENAME = N'\\123.456.789.001\MyFolder\NewDataFile.mdf' 
    ,SIZE = 1024KB
    ,FILEGROWTH = 1024KB
) TO FILEGROUP [MyFileStreamGroup]

最后你可以创建表格了:

CREATE TABLE [MyDatabase].[dbo].[NewTable] (
    [Id] int NOT NULL,
    [Text] varchar(50) NOT NULL
) ON [MyFileStreamGroup]

通过指定ON [MyFileStreamGroup],您可以强制在该文件组中创建它,而该文件组又将使用 SAN 上新创建的文件。如果您不指定 filegrop,则该表将以默认值结束,通常称为 PRIMARY。如果你希望新的文件组是默认的,你可以使用:

ALTER DATABASE [MyDatabase]
MODIFY FILEGROUP [MyFileStreamGroup] DEFAULT

【讨论】:

当我尝试“路径 '\\123.456.789.001\MyFolder\NewDataFile.mdf' 不能用于 FILESTREAM 文件时出现此错误。有关支持的路径的信息,请参阅 SQL Server 联机丛书.2 哦,我忘了将 CONTAINS FILESTREAM 添加到 ADD FILEGROUP。你是对的,我得到同样的错误。似乎不可能在远程路径上拥有文件流数据文件。我发现了这个:sqlskills.com/blogs/paul/…,上面写着“数据库的 FILESTREAM 数据容器必须放在本地连接存储上的 NTFS 卷上”。

以上是关于创建指向 SAN 的文件系统组的主要内容,如果未能解决你的问题,请参考以下文章

文件链接

请问SAN和NAS两种存储的区别是啥?

分析SAN LUN Mapping出错导致文件系统共享冲突的情况

SAN LUN Mapping出错导致文件系统共享冲突,数据恢复成功

磁盘工作原理文件系统及i节点块存储文件存储对象存储DASNAS还有SAN

SAN LUN Mapping出错导致文件系统共享冲突的数据恢复全过程