設定 SMB 儲存體容錯移轉叢集執行個體 - Linux 上的 SQL Server
適用於:SQL Server - Linux
此文章說明如何針對 Linux 上的容錯移轉叢集執行個體 (FCI) 設定 SMB 儲存體。
在非 Windows 的世界中,SMB 還稱為通用網際網路檔案系統 (CIFS) 共用,並透過 Samba 執行。 在 Windows 領域中,存取 SMB 共用的方式如下:\\SERVERNAME\SHARENAME
。 針對 Linux 型 SQL Server 安裝,SMB 共用必須以資料夾的形式掛接。
重要的來源和伺服器資訊
以下是成功使用 SMB 的一些提示和注意事項:
- SMB 共用可以在 Windows、Linux 或甚至是設備上,只要它使用 SMB 3.0 或更新版本即可。 如需 Samba 和 SMB 3.0 的詳細資訊,請參閱 SMB 3.0 \(英文\),以查看您的 Samba 實作為是否符合 SMB 3.0 的規範。
- SMB 共用應該具有高可用性。
- 必須在 SMB 共用上妥善設定安全性。 以下是來自
/etc/samba/smb.conf
的範例,其中SQLData
是共用的名稱。
[SQLData]
path=/var/smb/SQLData
read only = no
browseable = yes
guest ok = no
writeable = yes
valid users = SQLSambaUser
使用說明
選擇將會參與 FCI 設定的其中一部伺服器。 任何一個都可以。
取得
mssql
使用者的資訊。sudo id mssql
請注意
uid
、gid
和群組。執行
sudo smbclient -L //NameOrIP/ShareName -U User
。-
<NameOrIP>
是裝載 SMB 共用的伺服器 DNS 名稱或 IP 位址。 -
<ShareName>
是 SMB 分享的名稱。
-
針對系統資料庫或任何儲存在預設資料位置的內容,請遵循這些步驟。 否則,請跳到步驟 5。
確定您正在處理之伺服器上的 SQL Server 已經停止。
sudo systemctl stop mssql-server sudo systemctl status mssql-server
完全切換成超級使用者。
sudo -i
切換至
mssql
使用者。su mssql
建立暫存目錄來儲存 SQL Server 資料和記錄檔。
mkdir <TempDir>
-
<TempDir>
是資料夾的名稱。 下列範例會建立名為/var/opt/mssql/tmp
的資料夾。
mkdir /var/opt/mssql/tmp
-
將 SQL Server 資料和記錄檔複製到暫存目錄。
cp /var/opt/mssql/data/* <TempDir>
-
<TempDir>
是上一個步驟中的資料夾名稱。
-
確認檔案位於目錄中。
ls <TempDir>
<TempDir> 是步驟 d 中資料夾的名稱。
將檔案從現有的 SQL Server 資料目錄中刪除。
rm - f /var/opt/mssql/data/*
確認檔案已被刪除。
ls /var/opt/mssql/data
輸入 exit 以切換回根使用者。
將 SMB 共用掛接在 SQL Server 的 data 資料夾中。 此範例顯示連線到 Windows Server 上的 SMB 3.0 共用的語法。
Mount -t cifs //<ServerName>/<ShareName> /var/opt/mssql/data -o vers=3.0,username=<UserName>,password=<Password>,domain=<domain>,uid=<mssqlUID>,gid=<mssqlGID>,file_mode=0777,dir_mode=0777
-
<ServerName>
是具有 SMB 共用之伺服器的名稱 -
<ShareName>
是此共用資料夾的名稱 -
<UserName>
是用來訪問共享資源的使用者名稱 -
<Password>
是使用者的密碼 -
<domain>
是 Active Directory 的名稱 -
<mssqlUID>
是mssql
使用者的 UID -
<mssqlGID>
是mssql
使用者的 GID
-
透過執行不帶參數的 mount 指令來檢查掛載是否成功。
mount
切換至
mssql
使用者。su mssql
複製暫存目錄
/var/opt/mssql/data
中的檔案。cp /var/opt/mssql/tmp/* /var/opt/mssql/data
驗證檔案存在。
ls /var/opt/mssql/data
輸入
exit
以不包含mssql
。輸入
exit
以不成為root
。啟動 SQL Server。 如果所有內容皆已正確複製,並正確地套用安全性,SQL Server 應該會顯示為已啟動。
sudo systemctl start mssql-server sudo systemctl status mssql-server
若要進一步測試,請建立資料庫以確保權限正常。 下列範例使用 Transact-SQL,您可以使用 SSMS。
停止 SQL Server 並驗證它已關閉。 如果您要新增或測試其他磁碟,請勿關閉 SQL Server,直到磁碟都已新增和測試為止。
sudo systemctl stop mssql-server sudo systemctl status mssql-server
只有在任務完成後,才將共用取消掛接。 若否,完成測試或新增任何額外磁碟後卸載。
sudo umount //<IPAddressorServerName>/<ShareName /<FolderMountedIn>
-
<IPAddressOrServerName>
是 SMB 主機的 IP 位址或名稱 -
<ShareName>
是共用資源的名稱 -
<FolderMountedIn>
是裝載 SMB 的資料夾名稱
-
針對系統資料庫以外的其他內容 (例如,使用者資料庫或備份),請遵循這些步驟。 如果僅使用預設位置,請跳到步驟 14。
切換成超級使用者。
sudo -i
建立 SQL Server 將會使用的資料夾。
mkdir <FolderName>
<FolderName> 是資料夾的名稱。 如果資料夾不是位於正確的位置,則必須指定其完整路徑。 下列範例會建立名為
/var/opt/mssql/userdata
的資料夾。mkdir /var/opt/mssql/userdata
將 SMB 共用掛接在 SQL Server 的 data 資料夾中。 此示範顯示連接到基於 Samba 的 SMB 3.0 共用的語法。
Mount -t cifs //<ServerName>/<ShareName> <FolderName> -o vers=3.0,username=<UserName>,password=<Password>,uid=<mssqlUID>,gid=<mssqlGID>,file_mode=0777,dir_mode=0777
-
<ServerName>
是具有 SMB 共用之伺服器的名稱 -
<ShareName>
是共享的名稱 -
<FolderName>
是在最後步驟中所建立之資料夾的名稱 -
<UserName>
是用來存取共享資源的使用者名稱 -
<Password>
是使用者的密碼 -
<mssqlUID>
是mssql
使用者的 UID -
<mssqlGID>
是mssql
使用者的 GID。
-
請執行不帶參數的 mount 指令來檢查掛載是否成功。
輸入 exit 來退出超級使用者。
若要進行測試,請在該資料夾中建立資料庫。 下列範例使用 sqlcmd 來建立資料庫,將內容切換至它,驗證檔案存在於 OS 層級,然後刪除暫存位置。 您可以使用 SSMS。
解除共用掛載
sudo umount //<IPAddressorServerName>/<ShareName> /<FolderMountedIn>
-
<IPAddressOrServerName>
是 SMB 主機的 IP 位址或名稱 -
<ShareName>
是共用的名稱 -
<FolderMountedIn>
是裝載 SMB 的資料夾名稱。
-
對其他節點重複這些步驟。
您現在已準備好設定 FCI。