將 iSCSI 連接至用戶端 - FSx for OnTAP

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 iSCSI 連接至用戶端

這些程序中顯示的範例使用下列設定:

  • 已經建立掛載至 Linux 主機的 iSCSI 磁碟區。如需詳細資訊,請參閱 建立一 iSCSI

  • 掛接 iSCSI LUN 的 Linux 主機是執行 Amazon Linux 2 Amazon 機器映像 (AMI) 的亞馬遜 EC2 執行個體。它具有設定為允許輸入和輸出流量的 VPC 安全群組,如中使用 Amazon VPC 進行檔案系統存取控制所述。

  • 適用於 ONTAP 檔案系統的 Linux 主機和 FSx 位於相同的 VPC 和. AWS 帳戶如果主機位於另一個 VPC 中,您可以使用 VPC 對等互連或 AWS Transit Gateway 授與其他 VPC 存取磁碟區 iSCSI 端點。如需詳細資訊,請參閱 從部署 VPC 外部存取資料

    如果您使用執行不同 Linux AMI 的 EC2 執行個體,主機上安裝的部分公用程式可能已預先安裝,而且您可能會使用不同的命令來安裝必要的套件。除了安裝套件之外,本節中使用的命令對其他 EC2 Linux AMI 也有效。

    我們建議 EC2 執行個體與檔案系統偏好的子網路位於相同的可用區域,如下圖所示。

此影像顯示適用於 NetApp ONTAP 檔案系統的 Amazon FSx,其中含有 iSCSI LUN 和 Amazon EC2 執行個體位於與檔案系統偏好子網路相同的可用區域。

在用戶端上安裝及設定 iSCSI

若要安裝 iSCSI 用戶端
  1. 確認iscsi-initiator-utils並已安裝device-mapper-multipath在您的 Linux 設備上。使用安全殼層用戶端 Connect 至您的 Linux 執行個體。如需詳細資訊,請參閱使用安全殼層 Connect 到 Linux 執行個體

  2. 使用以下命令安裝 multipath iSCSI 用戶端。如果您想要在檔案伺服器之間自動容錯移轉,則需要進行安multipath裝。

    ~$ sudo yum install -y device-mapper-multipath iscsi-initiator-utils
  3. 若要在使用時在檔案伺服器之間自動容錯移轉時加快回應速度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
  4. 啟動 iSCSI 服務。

    ~$ sudo service iscsid start

    請注意,根據您的 Linux 版本,您可能必須使用以下命令:

    ~$ sudo systemctl start iscsid
  5. 使用以下命令確認服務正在運行。

    ~$ 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
若要在您的用戶端上設定 iSCSI
  1. 若要讓用戶端在檔案伺服器之間自動容錯移轉,您必須設定多重路徑。使用下列命令:

    ~$ sudo mpathconf --enable --with_multipathd y
  2. 使用下列命令判斷 Linux 主機的啟動器名稱。啟動器名稱的位置取決於您的 iSCSI 公用程式。如果使用iscsi-initiator-utils,初始器名稱位於檔案/etc/iscsi/initiatorname.iscsi中。

    ~$ sudo cat /etc/iscsi/initiatorname.iscsi

    系統以初始器名稱回應。

    InitiatorName=iqn.1994-05.com.redhat:abcdef12345

在 FSx 上設定適用於 ONTAP 檔案系統的 iSCSI

  1. 使用 NetApp 下列指令,Connect 至您在其上建立 iSCSI LUN 的 FSx 適用於 ONTAP 檔案系統上的 ONTAP CLI。如需詳細資訊,請參閱 使用 NetApp ONTAP CLI

    ~$ ssh fsxadmin@your_management_endpoint_ip
  2. 使用 NetApp ONTAP CLI 指令lun igroup create建立初始器群組 (igroup)。啟動器群組對應至 iSCSI LUN,並控制哪些啟動器 (用戶端) 可以存取 LUN。取代host_initiator_name為您在上一個程序中擷取的 Linux 主機中的初始器名稱。

    ::> lun igroup create -vserver svm_name -igroup igroup_name -initiator host_initiator_name -protocol iscsi -ostype linux

    如果您要讓對應至此 igroup 的 LUN 可供多台主機使用,您可以指定多個初始器名稱,並以逗號分隔。如需詳細資訊,請參閱 NetApp ONTAP 文件中心的 LUN 測試建立

  3. 使用以下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
  4. 此步驟假設您已經建立了一個 iSCSI LUN。如果尚未執行,請參建立一 iSCSI閱以取得相 step-by-step 關說明。

    使用指定下列屬性,從您建立的 LUN 建立對應至您建立的 lun mapping createigroup:

    • svm_name— 提供 iSCSI 目標的儲存區虛擬機器名稱。主機會使用此值連線到 LUN。

    • vol_name— 裝載 LUN 的磁碟區名稱。

    • lun_name— 您指派給 LUN 的名稱。

    • igroup_name— 初始器群組的名稱。

    • lun_id— LUN ID 整數是特定於對應,而不是 LUN 本身。igroup 中的初始器會使用此值,作為邏輯單位編號在存取儲存裝置時使用此值作為初始器。

    ::> lun mapping create -vserver svm_name -path /vol/vol_name/lun_name -igroup igroup_name -lun-id lun_id
  5. 使用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),您將在稍後的步驟中使用該值,為區塊裝置建立易記的名稱。

  6. 使用此network interface show -vserver命令擷取您在其中建立 iSCSI LUN 之 SVM 的位址iscsi_1iscsi_2介面。

    ::> network interface show -vserver svm_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_1172.31.0.143iscsi_2172.31.21.81

在您的用戶端上掛載 iSCSI 磁碟

  1. 在您的 Linux 用戶端上,使用下列指令來探索使用iscsi_1的 IP 位址 ICSI _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 的。

  2. (選擇性) 您可以使用建立其他工作階段target_initiator。對於單一流程流量,Amazon EC2 的頻寬限制為每秒 5 GB (約 625 MB/秒),但是您可以建立多個工作階段,從單一用戶端提高檔案系統的輸送量。如需詳細資訊,請參閱 Amazon 彈性運算雲端 Linux 執行個體使用者指南中的 Amazon EC2 執行個體網路頻寬

    下列命令會在每個可用區域中的每個 ONTAP 節點為每個啟動器建立 8 個工作階段,讓用戶端能夠將最高 40 Gb/s (5,000 MB) 的彙總輸送量驅動到 iSCSI LUN。

    ~$ sudo iscsiadm --mode node -T target_initiator --op update -n node.session.nr_sessions -v 8
  3. 登入目標初始器。您的 iSCSI LUN 會顯示為可用的磁碟。

    ~$ sudo iscsiadm --mode node -T target_initiator --login
    Logging 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.

    上面的輸出被截斷;您應該在每個文件服務器上看到每個會話的一個Login successful響應Logging in和一個響應。在每個節點有 4 個會話的情況下,將有 8 個Logging in和 8 個Login successful響應。

  4. 使用下列命令,透過顯示dm-multipath具有多個原則的單一 LUN,以確認是否已識別並合併 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,其中wwid是 LUN 的唯一識別碼,在不同裝置間保持一致。在下一個步驟中,您將提供易記的名稱,以wwid便將其與其他多重路徑磁碟區分開來。

為您的區塊裝置提供易記的名稱
  1. 若要為您的裝置提供易記的名稱,請在/etc/multipath.conf檔案中建立別名。若要這麼做,請使用偏好的文字編輯器將下列項目新增至檔案,取代下列預留位置:

    • 以您在在 FSx 上設定適用於 ONTAP 檔案系統的 iSCSI程序中儲存的值取serial_hex代。

    • 如範例所示,3600a0980將前置字元加入至serial_hex值。這是適用於 ONTAP 的 Amazon FSx 使用的 NetApp ONTAP 發行版的唯一序言。 NetApp

    • 以您要在裝置上使用的易記名稱取device_name代。

    multipaths { multipath { wwid 3600a0980serial_hex alias device_name } }

    作為替代方法,您可以將以下腳本複製並保存為 bash 文件,例如multipath_alias.sh. 您可以使用 sudo 權限執行指令碼,取代 serial_hex (不含 3600a0980 前置詞) 以及您個別device_name的序號和所需的易記名稱。此指令碼會搜尋/etc/multipath.conf檔案中未註解的multipaths區段。如果存在,它會在該部分附加一個multipath條目;否則,它將創建一個新的multipaths部分,其中包含塊設備的multipath條目。

    #!/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
  2. 重新啟動multipathd服務以使變更/etc/multipathd.conf生效。

    ~$ systemctl restart multipathd.service
若要磁碟分割 LUN

下一步是使用格式化和分割 LUN fdisk

  1. 使用以下命令來驗證您的路徑device_name是否存在。

    ~$ ls /dev/mapper/device_name
    /dev/device_name
  2. 使用分割磁碟fdisk。您將輸入互動式提示。依照顯示的順序輸入選項。請注意,此Last sector值會因 iSCSI LUN 的大小而有所不同 (此範例中為 10GB)。您可以使用小於最後一個磁區的值來建立多個分割區 (20971519在此範例中)。

    ~$ 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變為可用。磁碟分割名稱<device_name><partition_number>具有格式。 1被用作上一個步驟中fdisk指令中使用的分割區號碼。

  3. 使用/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
  1. 建立目錄 directory_path 做為檔案系統的掛載點。

    ~$ sudo mkdir /directory_path/mount_point
  2. 使用下列指令掛載檔案系統。

    ~$ sudo mount -t ext4 /dev/mapper/partition_name /directory_path/mount_point
  3. (選擇性) 您可以將掛載目錄的擁有權變更為使用者。username以您的使用者名稱取代。

    ~$ sudo chown username:username /directory_path/mount_point
  4. (選擇性) 確認您可以從檔案系統讀取和寫入資料。

    ~$ echo "Hello world!" > /directory_path/mount_point/HelloWorld.txt ~$ cat directory_path/HelloWorld.txt Hello world!

    您已經在 Linux 用戶端上成功建立並掛接了一個 iSCSI LUN。