本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
佈建 Linux 的 iSCSI
FSx for ONTAP 支援 iSCSI 通訊協定。您需要同時在 Linux 用戶端和檔案系統上佈建 iSCSI,才能使用 iSCSI 通訊協定在用戶端和檔案系統之間傳輸資料。iSCSI 通訊協定可用於具有 6 個或更少高可用性 (HA) 對的所有檔案系統。
在 Amazon FSx for NetApp ONTAP 上設定 iSCSI 有三個主要步驟,涵蓋於下列程序:
在 Linux 主機上安裝和設定 iSCSI 用戶端。
在檔案系統的 SVM 上設定 iSCSI。
建立 iSCSI 啟動器群組。
將啟動器群組對應至 LUN。
在 Linux 用戶端上安裝 iSCSI LUN。
開始之前
在開始設定 iSCSI 檔案系統的程序之前,您需要完成下列項目。
建立適用於 ONTAP 檔案系統的 FSx。如需詳細資訊,請參閱建立檔案系統。
在檔案系統上建立 iSCSI LUN。如需詳細資訊,請參閱建立 iSCSI LUN。
在與檔案系統相同的 VPC 中建立執行 Amazon Linux 2 Amazon Machine Image (AMI) 的 EC2 執行個體。這是您要設定 iSCSI 並存取檔案資料的 Linux 主機。
除了這些程序的範圍之外,如果主機位於另一個 VPC 中,您可以使用 VPC 對等互連 AWS Transit Gateway ,或授予其他 VPCs存取磁碟區的 iSCSI 端點。如需詳細資訊,請參閱從部署 VPC 外部存取資料。
設定 Linux 主機的 VPC 安全群組,以允許傳入和傳出流量,如 中所述使用 Amazon VPC 的檔案系統存取控制。
取得具有您將用來存取 CLI ONTAP 之
fsxadmin
權限ONTAP的使用者登入資料。如需詳細資訊,請參閱ONTAP 角色和使用者。您將為 iSCSI 設定的 Linux 主機,以及用於存取 FSx for ONTAP 檔案系統的 Linux 主機位於相同的 VPC 和 中 AWS 帳戶。
我們建議 EC2 執行個體與您檔案系統偏好的子網路位於相同的可用區域,如下圖所示。
如果您的 EC2 執行個體執行與 Amazon Linux 2 不同的 Linux AMI,則可能已安裝這些程序和範例中使用的一些公用程式,而且您可以使用不同的命令來安裝必要的套件。除了安裝套件之外,本節中使用的命令對其他 EC2 Linux AMIs 有效。
在 Linux 主機上安裝和設定 iSCSI
安裝 iSCSI 用戶端
-
確認您的 Linux 裝置已安裝
device-mapper-multipath
iscsi-initiator-utils
和 。使用 SSH 用戶端連線至 Linux 執行個體。如需詳細資訊,請參閱使用 SSH 連線至 Linux 執行個體。 使用下列命令安裝
multipath
和 iSCSI 用戶端。如果您想要在檔案伺服器之間自動容錯移轉,multipath
則需要安裝 。~$
sudo yum install -y device-mapper-multipath iscsi-initiator-utils-
若要在使用 時,在檔案伺服器之間自動容錯移轉時加快回應速度
multipath
,請將/etc/iscsi/iscsid.conf
檔案中的替代逾時值設定為 值,5
而不是使用 的預設值120
。~$
sudo sed -i 's/node.session.timeo.replacement_timeout = .*/node.session.timeo.replacement_timeout = 5/' /etc/iscsi/iscsid.conf; sudo cat /etc/iscsi/iscsid.conf | grep node.session.timeo.replacement_timeout 啟動 iSCSI 服務。
~$
sudo service iscsid start請注意,根據您的 Linux 版本,您可能需要改用此命令:
~$
sudo systemctl start iscsid-
使用以下命令確認服務正在執行。
~$
sudo systemctl status iscsid.service系統會以下列輸出回應:
iscsid.service - Open-iSCSI Loaded: loaded (/usr/lib/systemd/system/iscsid.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-09-02 00:00:00 UTC; 1min ago Docs: man:iscsid(8) man:iscsiadm(8) Process: 14658 ExecStart=/usr/sbin/iscsid (code=exited, status=0/SUCCESS) Main PID: 14660 (iscsid) CGroup: /system.slice/iscsid.service ├─14659 /usr/sbin/iscsid └─14660 /usr/sbin/iscsid
在 Linux 用戶端上設定 iSCSI
-
若要讓用戶端在您的檔案伺服器之間自動容錯移轉,您必須設定多路徑。使用下列命令:
~$
sudo mpathconf --enable --with_multipathd y -
使用以下命令判斷 Linux 主機的啟動者名稱。啟動器名稱的位置取決於您的 iSCSI 公用程式。如果您使用的是
iscsi-initiator-utils
,則啟動器名稱位於 檔案 中/etc/iscsi/initiatorname.iscsi
。~$
sudo cat /etc/iscsi/initiatorname.iscsi系統會以啟動者名稱回應。
InitiatorName=iqn.1994-05.com.redhat:abcdef12345
在 FSx for ONTAP 檔案系統上設定 iSCSI
-
使用下列命令,連線到您建立 iSCSI LUN 之 FSx for ONTAP 檔案系統的 NetApp ONTAP CLI。如需詳細資訊,請參閱使用 NetApp ONTAP CLI。
~$
ssh fsxadmin@your_management_endpoint_ip
-
使用 NetApp ONTAP CLI lun igroup create
命令建立啟動器群組 ( igroup
)。啟動器群組會映射至 iSCSI LUNs並控制哪些啟動器 (用戶端) 可存取 LUNs。host_initiator_name
將 取代為您在先前程序中擷取的 Linux 主機的啟動器名稱。::>
lun igroup create -vserver
-igroupsvm_name
igroup_name
-initiatorhost_initiator_name
-protocol iscsi -ostype linux如果您想要將對應至此 igroup LUNs 提供給多個主機,您可以指定多個以逗號分隔的啟動者名稱。如需詳細資訊,請參閱 NetApp ONTAP 文件中心中的 lun igroup 建立
。 -
使用 lun igroup show
命令確認 igroup
存在:::>
lun igroup show系統會以下列輸出回應:
Vserver Igroup Protocol OS Type Initiators --------- ------------ -------- -------- ------------------------------------
svm_name
igroup_name
iscsi linux iqn.1994-05.com.redhat:abcdef12345 -
此步驟假設您已建立 iSCSI LUN。如果尚未執行,請參閱 建立 iSCSI LUN 以取得執行此作業step-by-step說明。
使用 從您建立的 LUN 建立對應到您建立的 igrouplun mapping create
,並指定下列屬性: -
– 提供 iSCSI 目標的儲存虛擬機器名稱。主機使用此值來到達 LUN。svm_name
-
– 託管 LUN 的磁碟區名稱。vol_name
-
– 您指派給 LUN 的名稱。lun_name
-
– 啟動器群組的名稱。igroup_name
-
– LUN ID 整數專屬於映射,而非 LUN 本身。這由 igroup 中的啟動器用作邏輯單位編號,在存取儲存體時,會為啟動器使用此值。lun_id
::>
lun mapping create -vserversvm_name
-path /vol/vol_name
/lun_name
-igroupigroup_name
-lun-idlun_id
-
-
使用
lun show -path
命令來確認 LUN 已建立、上線和映射。 ::>
lun show -path /vol/vol_name
/lun_name
-fields state,mapped,serial-hex系統會以下列輸出回應:
Vserver Path serial-hex state mapped --------- ------------------------------- ------------------------ -------- --------
svm_name
/vol/vol_name
/lun_name
6c5742314e5d52766e796150 online mapped儲存
serial_hex
值 (在此範例中為6c5742314e5d52766e796150
),您將在後續步驟中使用它來為區塊型裝置建立易記的名稱。 -
使用
network interface show -vserver
命令來擷取您已建立 iSCSI LUN 之 SVM 的 iscsi_1
和iscsi_2
介面地址。::>
network interface show -vserversvm_name
系統會以下列輸出回應:
Logical Status Network Current Current Is Vserver Interface Admin/Oper Address/Mask Node Port Home ----------- ---------- ---------- ------------------ ------------- ------- ----
svm_name
iscsi_1 up/up 172.31.0.143/20 FSxId0123456789abcdef8-01 e0e true iscsi_2 up/up 172.31.21.81/20 FSxId0123456789abcdef8-02 e0e true nfs_smb_management_1 up/up 198.19.250.177/20 FSxId0123456789abcdef8-01 e0e true 3 entries were displayed.在此範例中, 的 IP 地址
iscsi_1
為172.31.0.143
,而iscsi_2
為172.31.21.81
。
在 Linux 用戶端上安裝 iSCSI LUN
在 Linux 用戶端上安裝 iSCSI LUN 的程序包含三個步驟:
探索目標 iSCSI 節點
分割 iSCSI LUN
在用戶端上安裝 iSCSI LUN
下列程序涵蓋這些項目。
探索目標 iSCSI 節點
在 Linux 用戶端上,使用下列命令,使用
iscsi_1
的 IP 地址iscsi_1_IP
探索目標 iSCSI 節點。~$
sudo iscsiadm --mode discovery --op update --type sendtargets --portal
iscsi_1_IP
172.31.0.143:3260,1029 iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3 172.31.21.81:3260,1028 iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3
在此範例中,
iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3
會對應至偏好可用區域中target_initiator
iSCSI LUN 的 。(選用) 若要將高於 Amazon EC2 單一用戶端最高 5 Gbps (~625 MBps) 的輸送量驅動到您的 iSCSI LUN,請遵循適用於 Linux 執行個體的 Amazon Elastic Compute Cloud 使用者指南中所述的 Amazon EC2 執行個體網路頻寬程序,以建立額外的工作階段以提高輸送量。
下列命令會在每個可用區域中為每個 ONTAP 節點建立每個啟動器 8 個工作階段,讓用戶端能夠驅動高達 40 Gbps (5,000 MBps) 的彙總輸送量至 iSCSI LUN。
~$
sudo iscsiadm --mode node -T
target_initiator
--op update -n node.session.nr_sessions -v 8登入目標啟動器。您的 iSCSI LUNs會顯示為可用的磁碟。
~$
sudo iscsiadm --mode node -T
target_initiator
--loginLogging in to [iface: default, target: iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3, portal: 172.31.14.66,3260] (multiple) Login to [iface: default, target: iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3, portal: 172.31.14.66,3260] successful.
上述輸出已截斷;您應該會在每個檔案伺服器上看到每個工作階段
Logging in
的一個Login successful
回應。如果每個節點有 4 個工作階段,將會有 8 個Logging in
和 8 個Login successful
回應。使用下列命令,透過顯示具有多個政策的單一 LUN 來驗證
dm-multipath
是否已識別和合併 iSCSI 工作階段。應該有相同數量的裝置,列出為active
,而列出為enabled
。~$
sudo multipath -ll
在輸出中,磁碟名稱的格式為
dm-xyz
,其中xyz
是整數。如果沒有其他多路徑磁碟,則此值為dm-0
。3600a09806c5742314e5d52766e79614f
dm-xyz
NETAPP ,LUN C-Mode size=10G features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=50 status=active | |- 0:0:0:1 sda 8:0 active ready running | |- 1:0:0:1 sdc 8:32 active ready running | |- 3:0:0:1 sdg 8:96 active ready running | `- 4:0:0:1 sdh 8:112 active ready running `-+- policy='service-time 0' prio=10 status=enabled |- 2:0:0:1 sdb 8:16 active ready running |- 7:0:0:1 sdf 8:80 active ready running |- 6:0:0:1 sde 8:64 active ready running `- 5:0:0:1 sdd 8:48 active ready running您的區塊裝置現在已連線至您的 Linux 用戶端。它位於路徑 下
/dev/
。您不應將此路徑用於管理用途;而是使用路徑 下的符號連結dm-xyz
/dev/mapper/
,其中wwid
是 LUN 的唯一識別符,在各裝置之間保持一致。在下一個步驟中,您將為 提供易記的名稱wwid
,以便與其他多路徑磁碟區區別。wwid
為區塊裝置指派易記的名稱
若要為裝置提供易記的名稱,請在
/etc/multipath.conf
檔案中建立別名。若要執行此作業,請使用您偏好的文字編輯器將下列項目新增至 檔案,取代下列預留位置:serial_hex
將 取代為您在在 FSx for ONTAP 檔案系統上設定 iSCSI程序中儲存的值。將 字首
3600a0980
新增至serial_hex
值,如範例所示。這是 Amazon FSx for NetApp ONTAP 使用的 NetApp ONTAP 分佈的唯一前導詞。device_name
將 取代為您想要用於裝置的易記名稱。
multipaths { multipath { wwid 3600a0980
serial_hex
aliasdevice_name
} }或者,您可以將下列指令碼複製並儲存為 bash 檔案,例如
multipath_alias.sh
。您可以使用 sudo 權限執行指令碼,將
(不含 3600a0980 字首) 和 取代serial_hex
為各自的序號和所需的易記名稱。此指令碼會在device_name
/etc/multipath.conf
檔案中搜尋未註解的multipaths
區段。如果存在項目,它會將multipath
項目附加到該區段;否則,它會為區塊裝置建立一個具有multipath
項目的新multipaths
區段。#!/bin/bash SN=serial_hex ALIAS=device_name CONF=/etc/multipath.conf grep -q '^multipaths {' $CONF UNCOMMENTED=$? if [ $UNCOMMENTED -eq 0 ] then sed -i '/^multipaths {/a\\tmultipath {\n\t\twwid 3600a0980'"${SN}"'\n\t\talias '"${ALIAS}"'\n\t}\n' $CONF else printf "multipaths {\n\tmultipath {\n\t\twwid 3600a0980$SN\n\t\talias $ALIAS\n\t}\n}" >> $CONF fi
重新啟動
multipathd
服務,以使變更/etc/multipathd.conf
生效。~$
systemctl restart multipathd.service
分割 LUN
下一個步驟是使用 格式化和分割 LUNfdisk
。
-
使用以下命令來驗證 的路徑
device_name
是否存在。~$
ls /dev/mapper/
device_name
/dev/
device_name
使用 分割磁碟
fdisk
。您將輸入互動式提示。依顯示的順序輸入選項。您可以使用小於最後一個扇區的值來建立多個分割區 (20971519
在此範例中為 )。注意
Last sector
值會根據 iSCSI LUN 的大小 (在此範例中為 10GB) 而有所不同。~$
sudo fdisk /dev/mapper/
device_name
fsdisk
互動式提示隨即啟動。Welcome to fdisk (util-linux 2.30.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x66595cb0. Command (m for help):
n
Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p):
p
Partition number (1-4, default 1):
1
First sector (2048-20971519, default 2048):
2048
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519):
20971519
Created a new partition 1 of type 'Linux' and of size 512 B. Command (m for help):
w
The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
進入 後
w
,您的新分割區/dev/mapper/
就會變成可用。partition_name
partition_name
的格式為<device_name>
<partition_number>
。1
做為上一個步驟中fdisk
命令中使用的分割區編號。-
使用
/dev/mapper/
作為路徑來建立檔案系統。partition_name
~$
sudo mkfs.ext4 /dev/mapper/
partition_name
系統會以下列輸出回應:
mke2fs 1.42.9 (28-Dec-2013) Discarding device blocks: done Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=16 blocks 655360 inodes, 2621184 blocks 131059 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2151677952 80 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
在 Linux 用戶端上掛載 LUN
-
建立 directory
directory_path
做為檔案系統的掛載點。~$
sudo mkdir /
directory_path
/mount_point
-
使用以下命令掛載檔案系統。
~$
sudo mount -t ext4 /dev/mapper/
partition_name
/directory_path
/mount_point
-
(選用) 如果您想要提供掛載目錄的特定使用者所有權,
請以擁有者的使用者名稱取代 。username
~$
sudo chown
username
:username
/directory_path
/mount_point
-
(選用) 確認您可以從檔案系統讀取和寫入資料。
~$
echo "Hello world!" > /
directory_path
/mount_point
/HelloWorld.txt~$
cat
directory_path
/HelloWorld.txtHello world!
您已成功在 Linux 用戶端上建立和掛載 iSCSI LUN。