14.1.5 Lab: Configure An Iscsi Target
planetorganic
Oct 28, 2025 · 10 min read
Table of Contents
Let's dive into configuring an iSCSI target, a critical skill for any system administrator dealing with networked storage solutions. iSCSI, or Internet Small Computer Systems Interface, allows you to use your existing IP network to transport SCSI commands, essentially turning a server into a networked storage device accessible by other machines. This lab will guide you through the process, providing a solid understanding of how to set up and manage an iSCSI target.
Introduction to iSCSI
iSCSI (Internet Small Computer Systems Interface) is an IP-based storage networking standard for linking data storage facilities. By carrying SCSI commands over IP networks, iSCSI enables location-independent data access. In simpler terms, it allows a server to act as a hard drive for another server, even if they are physically located in different places. This makes it a powerful tool for creating centralized storage solutions, virtual machine environments, and disaster recovery setups. iSCSI leverages the existing TCP/IP infrastructure, meaning you don't need specialized hardware like Fibre Channel, making it a cost-effective solution. It’s a key component in many modern data centers and enterprise storage strategies.
Why Use iSCSI?
- Cost-Effectiveness: Leverages existing IP infrastructure, reducing hardware costs.
- Flexibility: Allows centralized storage management, improving data availability and utilization.
- Scalability: Easily expand storage capacity without significant infrastructure changes.
- Disaster Recovery: Facilitates remote replication and backup for business continuity.
- Virtualization: Ideal for virtual machine storage, offering shared and scalable storage pools.
Key iSCSI Components
Before configuring an iSCSI target, it's essential to understand the key components:
- iSCSI Target: The server or storage device that provides the storage resources. Think of it as the "hard drive" being shared over the network.
- iSCSI Initiator: The client machine that wants to access the storage provided by the target. This is the server that will "mount" the shared storage.
- iSCSI Qualified Name (IQN): A unique identifier for both the target and the initiator. It's like an address for the iSCSI devices.
- Logical Unit Number (LUN): A unique identifier for a specific storage volume on the target. The initiator uses the LUN to access the correct storage space.
Lab Environment Setup
For this lab, you'll need two servers:
- iSCSI Target Server: This server will host the iSCSI target and share its storage. A Linux distribution like CentOS, Ubuntu, or Debian is ideal.
- iSCSI Initiator Server: This server will connect to the iSCSI target and use the shared storage. Again, a Linux distribution is recommended.
Both servers should be on the same network to ensure connectivity. You'll also need root access to both servers to install and configure the necessary software.
Software Requirements
- Target Server:
targetcli(ortgtadmdepending on your distribution),lio-utils(or equivalent) - Initiator Server:
iscsiadm
These packages can usually be installed using your distribution's package manager. For example, on Debian/Ubuntu:
sudo apt update
sudo apt install targetcli open-iscsi
And on CentOS/RHEL:
sudo yum install targetcli iscsi-initiator-utils
Basic Network Configuration
Ensure both servers have static IP addresses within the same subnet and can ping each other. This is crucial for establishing a reliable iSCSI connection. For example:
- Target Server: 192.168.1.10
- Initiator Server: 192.168.1.20
Use the ifconfig or ip addr command to verify network configuration and ping to test connectivity.
Configuring the iSCSI Target (Step-by-Step)
Now, let's configure the iSCSI target server. We'll use targetcli, a powerful command-line tool for managing LIO (Linux I/O) targets.
1. Install and Start the Target Service
If you haven't already, install targetcli and its dependencies. Then, start the target service and ensure it's enabled to start on boot:
sudo systemctl start target
sudo systemctl enable target
2. Launch targetcli
Run the targetcli command to enter the interactive configuration shell:
sudo targetcli
You'll see a prompt that looks like this: />.
3. Create a Backing Store
The backing store is the actual storage that will be shared. This can be a file, a block device (like a partition), or even a logical volume. For this example, we'll create a file:
cd /backstores/fileio
create my_iscsi_image /path/to/your/iscsi_image.img 10G
- Replace
/path/to/your/iscsi_image.imgwith the desired path and filename for the image file. 10Gspecifies the size of the image (10 gigabytes in this case). Adjust this to your needs.
Important: Ensure you have enough free space on the filesystem where you're creating the image file.
4. Create an iSCSI Target
Now, create the iSCSI target. This is where you'll define the IQN.
cd /iscsi
create iqn.2024-10.com.example:mytarget
iqn.2024-10.com.example:mytargetis the IQN for your target.iqnindicates that it's an iSCSI Qualified Name.2024-10is the year and month of the organization's domain registration (reverse order).com.exampleis the reverse domain name of the organization.mytargetis a unique name for this specific target.
Best Practice: Use a meaningful and unique IQN to avoid conflicts.
5. Create a LUN (Logical Unit Number)
Associate the backing store (the image file we created earlier) with the target as a LUN:
cd iqn.2024-10.com.example:mytarget/tpg1/luns
create /backstores/fileio/my_iscsi_image
This command creates a LUN and links it to the my_iscsi_image backing store.
6. Configure Access Control (ACL)
You need to allow the initiator server to access the target. This is done by creating an ACL based on the initiator's IQN.
First, determine the IQN of the initiator server (we'll configure this later). Let's assume it's iqn.2024-10.com.example:myinitiator.
cd /iscsi/iqn.2024-10.com.example:mytarget/tpg1/acls
create iqn.2024-10.com.example:myinitiator
This command creates an ACL for the initiator, allowing it to connect to the target.
7. Configure Network Portal (Optional, but Recommended)
By default, the target listens on all network interfaces. To restrict access to a specific interface, configure a network portal.
cd /iscsi/iqn.2024-10.com.example:mytarget/tpg1/portals
create 192.168.1.10
192.168.1.10is the IP address of the target server.- If you omit the IP address, the target will listen on all interfaces.
8. Save the Configuration and Exit
Save the configuration to disk so that it's loaded automatically on reboot:
cd /
saveconfig
exit
The iSCSI target is now configured and ready to accept connections.
Configuring the iSCSI Initiator (Step-by-Step)
Now, let's configure the iSCSI initiator server to connect to the target.
1. Install and Start the Initiator Service
If you haven't already, install the iscsiadm package. Then, start the iSCSI initiator service and ensure it's enabled to start on boot:
sudo systemctl start iscsid
sudo systemctl enable iscsid
2. Discover the iSCSI Target
Use the iscsiadm command to discover the iSCSI target:
sudo iscsiadm -m discovery -t st -p 192.168.1.10
-m discoveryspecifies the discovery mode.-t stspecifies the send targets discovery method.-p 192.168.1.10specifies the IP address of the iSCSI target.
This command will scan the target server for available iSCSI targets and display their IQNs. You should see the IQN we configured earlier: iqn.2024-10.com.example:mytarget.
3. Configure Initiator Name (Important!)
Before connecting, you need to ensure the initiator has a unique IQN. This is usually automatically generated, but it's good practice to verify it.
Check the contents of the /etc/iscsi/initiatorname.iscsi file:
cat /etc/iscsi/initiatorname.iscsi
It should contain a line like this:
InitiatorName=iqn.2024-10.com.example:myinitiator
- If the IQN is different from what you expected (e.g., if it doesn't match the ACL you created on the target), edit the file to set the correct IQN.
- After making changes, restart the
iscsidservice:
sudo systemctl restart iscsid
4. Login to the iSCSI Target
Use the iscsiadm command to log in to the iSCSI target:
sudo iscsiadm -m node -T iqn.2024-10.com.example:mytarget -l
-m nodespecifies the node mode.-T iqn.2024-10.com.example:mytargetspecifies the IQN of the target.-lspecifies the login action.
This command will establish a connection to the iSCSI target and make the storage available as a block device.
5. Verify the Connection
Check the system logs for any errors. You can also use the dmesg command to view kernel messages related to the iSCSI connection:
dmesg | grep iscsi
You should see messages indicating a successful connection to the target.
6. Find the Block Device
The iSCSI target will appear as a new block device on the initiator server. Use the lsblk command to list available block devices:
lsblk
You should see a new device, typically named something like /dev/sdb or /dev/sdc. This is the iSCSI target.
7. Format the Block Device (Optional)
If this is a new storage volume, you'll need to format it with a filesystem before you can use it.
Warning: Formatting will erase any existing data on the device.
sudo mkfs.ext4 /dev/sdb
- Replace
/dev/sdbwith the actual device name. mkfs.ext4formats the device with the ext4 filesystem. You can use other filesystems like XFS or Btrfs if you prefer.
8. Mount the Block Device
Create a mount point and mount the block device:
sudo mkdir /mnt/iscsi
sudo mount /dev/sdb /mnt/iscsi
/mnt/iscsiis the mount point. You can choose any directory you like./dev/sdbis the block device.
9. Verify the Mount
Use the df -h command to verify that the iSCSI target is mounted:
df -h
You should see an entry for the mounted device, showing its size and available space.
10. Configure Persistent Mount (Important!)
To ensure the iSCSI target is automatically mounted on boot, add an entry to the /etc/fstab file.
First, get the UUID of the block device:
sudo blkid /dev/sdb
You'll see output like this:
/dev/sdb: UUID="a1b2c3d4-e5f6-7890-1234-567890abcdef" TYPE="ext4"
Copy the UUID. Then, edit the /etc/fstab file:
sudo nano /etc/fstab
Add a line like this to the end of the file:
UUID=a1b2c3d4-e5f6-7890-1234-567890abcdef /mnt/iscsi ext4 defaults,_netdev 0 0
UUID=...specifies the UUID of the block device./mnt/iscsiis the mount point.ext4is the filesystem type.defaults,_netdevare the mount options._netdevis crucial; it tells the system to wait for the network to be up before mounting the device.0 0are dump and fsck options (usually set to 0 for network filesystems).
Save the file and exit.
Now, the iSCSI target will be automatically mounted on boot.
Troubleshooting Tips
- Connectivity Issues: Ensure both servers can ping each other. Check firewall rules that might be blocking iSCSI traffic (port 3260).
- IQN Mismatch: Double-check the IQNs on both the target and initiator. They must match the ACL configuration.
- Target Not Discovered: Verify that the target service is running on the target server. Check network connectivity.
- Login Failures: Check the system logs for authentication errors. Ensure the initiator's IQN is allowed access on the target.
- Mounting Issues: Verify that the block device exists (
lsblk) and is formatted with a filesystem. Check the/etc/fstabentry for errors.
Security Considerations
iSCSI traffic is not encrypted by default, which makes it vulnerable to eavesdropping. Consider these security measures:
- CHAP Authentication: Use CHAP (Challenge Handshake Authentication Protocol) to authenticate the initiator to the target. This requires configuring a username and password on both sides.
- IPsec: Encrypt iSCSI traffic using IPsec (Internet Protocol Security). This provides strong encryption but can be more complex to configure.
- VLANs: Isolate iSCSI traffic on a separate VLAN to limit exposure.
- Firewall Rules: Restrict access to the iSCSI target to only authorized initiators.
Advanced Configuration
- Multiple LUNs: You can create multiple LUNs on a single target to provide different storage volumes.
- Multipathing: Use multipathing to create redundant connections to the target, improving availability and performance.
- Thin Provisioning: Use thin provisioning to allocate storage space on demand, saving space and improving utilization.
- Snapshotting: Use snapshotting to create point-in-time copies of the data, facilitating backups and disaster recovery.
Conclusion
Configuring an iSCSI target is a fundamental skill for system administrators managing networked storage. By following these steps, you can create a flexible, scalable, and cost-effective storage solution for your environment. Remember to pay attention to security considerations and explore the advanced configuration options to optimize your iSCSI setup. This lab provides a solid foundation for further exploration and experimentation with iSCSI technology. Remember to test thoroughly and document your configuration for future reference.
Latest Posts
Related Post
Thank you for visiting our website which covers about 14.1.5 Lab: Configure An Iscsi Target . We hope the information provided has been useful to you. Feel free to contact us if you have any questions or need further assistance. See you next time and don't miss to bookmark.