Hallo,
ich habe eine Frage zu der Verwendung von iSCSI.
tldr:
Wenn ich auf dem iSCSI-Server etwas an dem iSCSI-Target ändere, z.B. Größe oder ein Snapshot zurückspiele, wie kann ich das dem iSCSI-Client klar machen ohne alles zu rebooten?
Zum Aufbau in Detail:
Zum einen habe ich einen Server (Testaufbau):
Das iSCSI Target wurde wie folgt angelegt:
# Dise Konfiguration wurde dann exportiert + anpassung des Kennwortes in der conf-Datei
Der iSCSI Client wurde wie folgt eingerichtet:
Bisher alles gut und funktioniert, das iSCSI-Target wird als neues Blockdevice unter /dev/sdb aufgelistet und ich kann damit wie mit einer lokalen Platte arbeiten.
Partiton anlegen, formatieren, mounten und Daten aufspielen, usw.
Nun mache ich folgendes.
Auf dem Server erzeuge ich per zfs ein snapshot vom naspool/vol1.
Dann ändere ich auf dem Client den inhalt des iSCSI mounts, also z.b. lege eine Datei "x" an.
Dann spiele ich den erzeugten snapshot auf dem Server zurück.
Jetzt ist die Erwartungshaltung, dass ich auf dem Client für den iSCSI mount folgenden Inhalt sehen.
Zu diesem Zeitpunkt sind aber noch der Stand nach dem Snapshot dort zu sehen.
Auch nach einen rescan der Targets ist der Inhalt unverändert.
Erst wenn ich beide Systeme Client und Server zeitgleich neu starte hab eich den erwarten Inhalt auf dem iSCSI mount, also den Stand, der im snapshot enthalten ist, ohne der Datei "x".
Wie kann ich das ohne Neustart der Rechner aktualisieren?
Gruß und Danke
ich habe eine Frage zu der Verwendung von iSCSI.
tldr:
Wenn ich auf dem iSCSI-Server etwas an dem iSCSI-Target ändere, z.B. Größe oder ein Snapshot zurückspiele, wie kann ich das dem iSCSI-Client klar machen ohne alles zu rebooten?
Zum Aufbau in Detail:
Zum einen habe ich einen Server (Testaufbau):
- OS: Debian 11 LTS
- mit RaidZ1:
Code:$ zfs listNAME USED AVAIL REFER MOUNTPOINT naspool 2.15G 13.0G 30.6K /naspool naspool/vol1 2.14G 15.1G 82.4M -
- mit: installiertem "tgt" Paket
Das iSCSI Target wurde wie folgt angelegt:
Code:
server$ tgtadm --lld iscsi --op new --mode target --tid 1 --targetname ign.2022-09.local.test.server:naspool.vol1
server$ tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 --backing-store /dev/naspool/vol1
server$ tgtadm --lld iscsi --op new --mode account --user ServerUser --password myawesomepassword
server$ tgtadm --lld iscsi --op bind --mode account --tid 1 --user ServerUser
# Dise Konfiguration wurde dann exportiert + anpassung des Kennwortes in der conf-Datei
Code:
server$ tgt-admin --dump | sudo tee /etc/tgt/targets.conf
server$ nano /etc/tgt/targets.conf
...
Der iSCSI Client wurde wie folgt eingerichtet:
- OS: Debian 11 LTS
Code:
# Installation von open-iSCSI
client$ apt install open-iscsi
# Targets finden:
client$ iscsiadm --mode discovery --type sendtargets --portal <IP_DES_SERVERS>
# Target einbinde
client$ iscsiadm --mode node --targetname ign.2022-09.local.test.server:naspool.vol1 --op update --name node.session.auth.authmethod --value CHAP
client$ iscsiadm --mode node --targetname ign.2022-09.local.test.server:naspool.vol1 --op update --name node.session.auth.username --value ServerUser
client$ iscsiadm --mode node --targetname ign.2022-09.local.test.server:naspool.vol1 --op update --name node.session.auth.password --value myawesomepassword
client$ iscsiadm --mode node --targetname ign.2022-09.local.test.server:naspool.vol1 --login
client$ iscsiadm --mode node --targetname ign.2022-09.local.test.server:naspool.vol1 --op update --name node.startup --value automatic
Bisher alles gut und funktioniert, das iSCSI-Target wird als neues Blockdevice unter /dev/sdb aufgelistet und ich kann damit wie mit einer lokalen Platte arbeiten.
Partiton anlegen, formatieren, mounten und Daten aufspielen, usw.
Code:
client$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 32G 0 disk
├─sda1 8:1 0 31G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 975M 0 part [SWAP]
sdb 8:16 0 2G 0 disk
└─sdb1 8:17 0 2G 0 part /mnt
client$ tree /mnt
/mnt
├── lost+found
└── tst
└── test
Nun mache ich folgendes.
Auf dem Server erzeuge ich per zfs ein snapshot vom naspool/vol1.
Code:
server$ zfs snapshot naspool/vol1@snap_1
Dann ändere ich auf dem Client den inhalt des iSCSI mounts, also z.b. lege eine Datei "x" an.
Code:
client$ tree /mnt
/mnt
├── lost+found
└── tst
├── test
└── x
Dann spiele ich den erzeugten snapshot auf dem Server zurück.
Code:
server$ zfs rollback -Rfr naspool/vol1@snap_1
Jetzt ist die Erwartungshaltung, dass ich auf dem Client für den iSCSI mount folgenden Inhalt sehen.
Code:
client$ tree /mnt
/mnt
├── lost+found
└── tst
└── test
Zu diesem Zeitpunkt sind aber noch der Stand nach dem Snapshot dort zu sehen.
Code:
client$ tree /mnt
/mnt
├── lost+found
└── tst
├── test
└── x
Auch nach einen rescan der Targets ist der Inhalt unverändert.
Code:
client$ iscsiadm -m node --rescan
client$ tree /mnt
/mnt
├── lost+found
└── tst
├── test
└── x
Erst wenn ich beide Systeme Client und Server zeitgleich neu starte hab eich den erwarten Inhalt auf dem iSCSI mount, also den Stand, der im snapshot enthalten ist, ohne der Datei "x".
Wie kann ich das ohne Neustart der Rechner aktualisieren?
Gruß und Danke