There is a new version of this tutorial available for Debian 6 (Squeeze).

Using iSCSI On Debian Lenny (Initiator And Target) - Page 2

This tutorial exists for these OS versions

On this page

  1. 4 Links

To use that device, we must format it:

fdisk /dev/sdb

server1:~# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x882944df.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

The number of cylinders for this disk is set to 20480.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help):
 <-- m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help):
 <-- n
Command action
   e   extended
   p   primary partition (1-4)

<-- p
Partition number (1-4): <-- 1
First cylinder (1-20480, default 1): <-- ENTER
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-20480, default 20480):
Using default value 20480

Command (m for help):
 <-- t
Selected partition 1
Hex code (type L to list codes):
 <-- L

 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot
 1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris
 2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx
 6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT
1c  Hidden W95 FAT3 75  PC/IX
Hex code (type L to list codes):
 <-- 83

Command (m for help): <-- w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Afterwards, the output of

fdisk -l

should look as follows:

server1:~# fdisk -l

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00031334

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        3749    30113811   83  Linux
/dev/sda2            3750        3916     1341427+   5  Extended
/dev/sda5            3750        3916     1341396   82  Linux swap / Solaris

Disk /dev/sdb: 21.4 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk identifier: 0x882944df

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       20480    20971504   83  Linux

Now we create a filesystem on /dev/sdb1...

mkfs.ext3 /dev/sdb1

... and mount it for test purposes:

mount /dev/sdb1 /mnt

You should now see the new device in the outputs of...


server1:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 on /mnt type ext3 (rw)

... and

df -h

server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              29G  685M   27G   3% /
tmpfs                 253M     0  253M   0% /lib/init/rw
udev                   10M   88K   10M   1% /dev
tmpfs                 253M     0  253M   0% /dev/shm
/dev/sdb1              20G  173M   19G   1% /mnt

You can unmount it like this:

umount /mnt

To have the device mounted automatically at boot time, e.g. in the directory /storage, we create that directory...

mkdir /storage

... and add the following line to /etc/fstab:

vi /etc/fstab

/dev/sdb1       /storage        ext3    defaults,auto,_netdev 0 0

For test purposes, you can now reboot the system:


After the reboot, the device should be mounted:


server1:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 on /storage type ext3 (rw,_netdev)

df -h

server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              29G  685M   27G   3% /
tmpfs                 253M     0  253M   0% /lib/init/rw
udev                   10M   88K   10M   1% /dev
tmpfs                 253M     0  253M   0% /dev/shm
/dev/sdb1              20G  173M   19G   1% /storage


Falko Timme

About Falko Timme

Falko Timme is an experienced Linux administrator and founder of Timme Hosting, a leading nginx business hosting company in Germany. He is one of the most active authors on HowtoForge since 2005 and one of the core developers of ISPConfig since 2000. He has also contributed to the O'Reilly book "Linux System Administration".

Share this page:

Suggested articles

6 Comment(s)

Add comment


By: Axel Werner

Hi again!

Sorry for my last comment. it somehow fucked up using this ugly what-you-see-will-look-like-even-more-worse-after Editor on your Website. editor is perfect.

Finaly I found  the Problem with my configuration. Its the two small numbers at the end of the lines located within the /etc/fstab. In my Version i entered "0 2" which means recording the man fstab pages that this partition/disk is supposed to be filechecked on boottime after the rootfs and other more important filesystems.

While in Your Manual you used "0 0" which recording to the "man fstab" means "do not fscheck this partition at boot time".

I dont know why Debian Lenny cannot fscheck those iSCSI Drives at this time, but fact is, i have to use "0 0" for those iSCSI Entries in /etc/fstab to make it boot properly.

maybe one of you guys can explain why this 0 2 wont work. Since i think its a good idea to have all FS checked sometimes at boottime.

Thanks again for Manual/Howto!


By: Anonymous

The reason for this is in your logfiles you posted:

At the time that fsck runs, you have not yet mounted the drive.  This is due to the connection being fired AFTER the devices are mounted.  More than likely you could alter this by changing various boot scripts, but another (less trouble; easier to diagnose problems; and overall just a better answer) is to fsck yourself in your local init script.

That's what the local init script is for: things that you are doing to your local box, at boot, that aren't in another script.  Local customization if you like.

It's in /etc/rc.local, and by default, as it says, it does nothing.

Just be sure when you do the fsck that you have the output sent somewhere, and that you block the login from finishing until it is done.  (i.e. don't background the fsck, or the local init script itself.)

The reason for sending the output somewhere is I am not sure you will be able to trigger a 'must reboot!' or similar from the rc.local script.  (You could, of course, reboot without intervention; so I suppose you can script something here.)

Overall you can make this as complex as you like, just remember that if you make it TOO complex, later if the system doesn't work properly, you have to figure out what the heck your scripts are doing.  That's not something you want to do under pressure (like your boss screaming at you that he can't get his mail and the internetz are down.)

By: Axel Werner

Hi! First of all THANKS for this Great Manual. 

But i got one single thing remaining that i was not able to solve yet.

My Debian Lenny stops the boot process at some point, telling me that he was not able to find the iSCSI Devices under /dev/disk/by-path/<some iSCSI Target Adress here> - ill have to press CONTROLL+D to continue. After i do a CTRL+D i find my linux box all bootet up and working. Even those iSCSI Targets i wanted to mount automaticly at boot time are mounted and fully accessable.

 I searched the net n stuff for any similar problems and i found some. but all those problems "should" been solved meanwhile through debian/ubuntu updates. however it still gots me.

After a interupted boot i can see and use this:

hostname:/dev/disk/by-path# ls -la
total 0
drwxr-xr-x 2 root root 180 2009-04-14 17:10 .
drwxr-xr-x 5 root root 100 2009-04-14 17:01 ..
lrwxrwxrwx 1 root root   9 2009-04-14 17:10 ip-                                               -> ../../sdb
lrwxrwxrwx 1 root root   9 2009-04-14 17:10 ip-                                               -> ../../sdc


my fstab looks like this

# iSCSI Eintraege (manuell)
/dev/disk/by-path/ /home           ext3    defaults,_netdev0 2
/dev/disk/by-path/ /zksfs-data1    ext3    defaults,_netdev0 2

 now.. Why is yours working and mine stops at boot time? :-P

best regards





By: Anonymous

just wanted to say that this helped me alot

works perfect

 thank you so much

By: Francis

Great tutorial, it works perfectly.

 Do you know if it's possible do dynamicaly resize vulumes?

Also is it possible to access the same volume from 2 clients at the same time?

By: yannick

Thank you for this very good howto

In my case I have multiples iscsi target to mount. Unfortunetly , I did not find a mean to map a target to a device. And ... at boot time the system does not map the device in the correct order, As a consequence, I end up with target mounted on the wrong mount point.

To sort it out,

1. label the device with e2label (ext2,ext3) or xfs_admin (xfs)


>xfs_admin -L mysql1 /dev/sdb1


2. Edit the fstab and use the label instead of the device


>vi /etc/fstab

#device         mount point     FS      Options   Backup  fsck
LABEL=mysql2     /mysql2        xfs     _netdev   0       0
LABEL=mysql1     /mysql1        xfs     _netdev   0       0

It works well for me.

 (references : and )