Skip to content

Commit e196d05

Browse files
committed
Prevent shared FC/iSCSI LUNs from being used simultaneously across hosts
Add a wwn field to BlockDeviceInfo, populated from lsblk for local disks and from the DM alias for mpath devices. Use WWNs in the disk fixture to: - Mark a LUN unavailable on all hosts if it is already in use on any host (cross-host deduplication for shared FC/iSCSI LUNs). - Deprioritize LUNs listed in LVMOHBA_DEVICE_CONFIG or LVMOISCSI_DEVICE_CONFIG so they are only selected when no other disk is available. Signed-off-by: Gaëtan Lehmann <gaetan.lehmann@vates.tech>
1 parent 1c75251 commit e196d05

3 files changed

Lines changed: 118 additions & 46 deletions

File tree

conftest.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import pytest
44

55
import argparse
6+
import dataclasses
67
import itertools
78
import logging
89
import os
@@ -435,6 +436,42 @@ def _host_disks(host: Host, hosts_cli_disks: list[DiskDevName] | None) -> Iterab
435436
ret = {host: list(_host_disks(host, cli_disks.get(host.hostname_or_ip)))
436437
for host in pools_hosts_by_name_or_ip.values()
437438
}
439+
# Cross-host deduplication: a LUN in use on any host (same WWN) is unavailable on all hosts.
440+
# This matters for shared FC/iSCSI LUNs visible on multiple hosts simultaneously.
441+
used_wwns = {
442+
disk.wwn
443+
for host_disks in ret.values()
444+
for disk in host_disks
445+
if disk.wwn and not disk.available
446+
}
447+
if used_wwns:
448+
logging.debug("cross-host used WWNs: %s", used_wwns)
449+
ret = {
450+
host: [
451+
dataclasses.replace(disk, available=False) if (disk.wwn and disk.wwn in used_wwns) else disk
452+
for disk in host_disks
453+
]
454+
for host, host_disks in ret.items()
455+
}
456+
# LUNs reserved for lvmohba/lvmoiscsi: sort them to the end so they are
457+
# only picked if no other disk is available.
458+
reserved_wwns: set[str] = set()
459+
try:
460+
import data
461+
for key in ('LVMOHBA_DEVICE_CONFIG', 'LVMOISCSI_DEVICE_CONFIG'):
462+
cfg = getattr(data, key, None)
463+
if isinstance(cfg, dict):
464+
scsiid = cfg.get('SCSIid', '').lower().lstrip('0x')
465+
if scsiid:
466+
reserved_wwns.add(scsiid)
467+
except ImportError:
468+
pass
469+
if reserved_wwns:
470+
logging.debug("reserved WWNs (lvmohba/lvmoiscsi): %s", reserved_wwns)
471+
ret = {
472+
host: sorted(host_disks, key=lambda d: d.wwn in reserved_wwns)
473+
for host, host_disks in ret.items()
474+
}
438475
logging.debug("disks collected: %s", {host.hostname_or_ip: value for host, value in ret.items()})
439476
return ret
440477

lib/host.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class BlockDeviceInfo:
6363
log_sec: int # logical sector size; 0 for md/mpath
6464
type: str # "disk", "md", "mpath"
6565
available: bool # not mounted, not member of md/lvm/mpath/zfs
66+
wwn: str = '' # LUN WWN (hex, no 0x prefix); same LUN has same WWN across hosts
6667

6768
block_devices_info: list[BlockDeviceInfo]
6869

@@ -677,7 +678,7 @@ def rescan_block_devices_info(self) -> None:
677678
"""
678679
RAID_TYPES = {'raid0', 'raid1', 'raid4', 'raid5', 'raid6', 'raid10', 'linear'}
679680
USED_TYPES = RAID_TYPES | {'lvm', 'mpath', 'crypt'}
680-
LSBLK_FIELDS = 'NAME,KNAME,PKNAME,SIZE,LOG-SEC,TYPE,MOUNTPOINT'
681+
LSBLK_FIELDS = 'NAME,KNAME,PKNAME,SIZE,LOG-SEC,TYPE,MOUNTPOINT,WWN'
681682

682683
devices: list[Host.BlockDeviceInfo] = []
683684

@@ -717,13 +718,16 @@ def _all_available(kname: str) -> bool:
717718

718719
# --- local disks ---
719720
if typ == 'disk' and not r.get('pkname'):
721+
raw_wwn = r.get('wwn', '').strip()
722+
wwn = raw_wwn[2:] if raw_wwn.startswith('0x') else raw_wwn
720723
devices.append(Host.BlockDeviceInfo(
721724
name=r['name'],
722725
path=f'/dev/{r["name"]}',
723726
size=int(r['size']),
724727
log_sec=int(r['log-sec']),
725728
type='disk',
726729
available=_all_available(kname) and not r['mountpoint'].strip(),
730+
wwn=wwn,
727731
))
728732

729733
# --- mdadm arrays (may appear once per member, deduplicate) ---
@@ -747,13 +751,16 @@ def _all_available(kname: str) -> bool:
747751
continue
748752
seen_knames.add(kname)
749753
available = not r['mountpoint'].strip() and all(_all_available(c) for c in children.get(kname, []))
754+
# r['name'] is the WWN-based alias when multipath names by LUN (all-hex, ≥16 chars)
755+
wwn = r['name'] if re.fullmatch(r'[0-9a-f]{16,}', r['name']) else ''
750756
devices.append(Host.BlockDeviceInfo(
751757
name=kname,
752758
path=f'/dev/mapper/{r["name"]}',
753759
size=int(r['size']),
754760
log_sec=int(r.get('log-sec', '0')),
755761
type='mpath',
756762
available=available,
763+
wwn=wwn,
757764
))
758765

759766
self.block_devices_info = sorted(devices, key=lambda d: d.name)

tests/unit/rescan_block_devices_info.py

Lines changed: 73 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -157,10 +157,10 @@
157157
# Minimal: single plain disk, no children
158158
# Minimal: md array across two disks, not mounted
159159
LSBLK_MD_FREE = """\
160-
NAME="nvme0n1" KNAME="nvme0n1" PKNAME="" SIZE="15360950534144" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
161-
NAME="md0" KNAME="md0" PKNAME="nvme0n1" SIZE="30721630535680" LOG-SEC="512" TYPE="raid0" MOUNTPOINT=""
162-
NAME="nvme1n1" KNAME="nvme1n1" PKNAME="" SIZE="15360950534144" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
163-
NAME="md0" KNAME="md0" PKNAME="nvme1n1" SIZE="30721630535680" LOG-SEC="512" TYPE="raid0" MOUNTPOINT=""
160+
NAME="nvme0n1" KNAME="nvme0n1" PKNAME="" SIZE="15360950534144" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
161+
NAME="md0" KNAME="md0" PKNAME="nvme0n1" SIZE="30721630535680" LOG-SEC="512" TYPE="raid0" MOUNTPOINT="" WWN=""
162+
NAME="nvme1n1" KNAME="nvme1n1" PKNAME="" SIZE="15360950534144" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
163+
NAME="md0" KNAME="md0" PKNAME="nvme1n1" SIZE="30721630535680" LOG-SEC="512" TYPE="raid0" MOUNTPOINT="" WWN=""
164164
"""
165165

166166

@@ -187,7 +187,7 @@ def _by_name(devices: list[Host.BlockDeviceInfo], name: str) -> Host.BlockDevice
187187

188188
def test_plain_disk_no_children():
189189
devices = _rescan(
190-
'NAME="sda" KNAME="sda" PKNAME="" SIZE="500107862016" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""\n'
190+
'NAME="sda" KNAME="sda" PKNAME="" SIZE="500107862016" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""\n'
191191
)
192192
assert len(devices) == 1
193193
d = devices[0]
@@ -197,13 +197,21 @@ def test_plain_disk_no_children():
197197
assert d.size == 500107862016
198198
assert d.log_sec == 512
199199
assert d.available is True
200+
assert d.wwn == ''
201+
202+
203+
def test_plain_disk_wwn_stripped():
204+
devices = _rescan(
205+
'NAME="sda" KNAME="sda" PKNAME="" SIZE="500107862016" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN="0x6005076813810286"\n'
206+
)
207+
assert devices[0].wwn == '6005076813810286'
200208

201209

202210
def test_disk_with_free_partitions_is_available():
203211
devices = _rescan("""\
204-
NAME="sda" KNAME="sda" PKNAME="" SIZE="536870912000" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
205-
NAME="sda1" KNAME="sda1" PKNAME="sda" SIZE="536870912" LOG-SEC="512" TYPE="part" MOUNTPOINT=""
206-
NAME="sda2" KNAME="sda2" PKNAME="sda" SIZE="536334039040" LOG-SEC="512" TYPE="part" MOUNTPOINT=""
212+
NAME="sda" KNAME="sda" PKNAME="" SIZE="536870912000" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
213+
NAME="sda1" KNAME="sda1" PKNAME="sda" SIZE="536870912" LOG-SEC="512" TYPE="part" MOUNTPOINT="" WWN=""
214+
NAME="sda2" KNAME="sda2" PKNAME="sda" SIZE="536334039040" LOG-SEC="512" TYPE="part" MOUNTPOINT="" WWN=""
207215
""")
208216
assert len(devices) == 1
209217
d = devices[0]
@@ -214,19 +222,19 @@ def test_disk_with_free_partitions_is_available():
214222

215223
def test_disk_with_mounted_partition_is_unavailable():
216224
devices = _rescan("""\
217-
NAME="sda" KNAME="sda" PKNAME="" SIZE="536870912000" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
218-
NAME="sda1" KNAME="sda1" PKNAME="sda" SIZE="536870912" LOG-SEC="512" TYPE="part" MOUNTPOINT="/"
219-
NAME="sda2" KNAME="sda2" PKNAME="sda" SIZE="536334039040" LOG-SEC="512" TYPE="part" MOUNTPOINT=""
225+
NAME="sda" KNAME="sda" PKNAME="" SIZE="536870912000" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
226+
NAME="sda1" KNAME="sda1" PKNAME="sda" SIZE="536870912" LOG-SEC="512" TYPE="part" MOUNTPOINT="/" WWN=""
227+
NAME="sda2" KNAME="sda2" PKNAME="sda" SIZE="536334039040" LOG-SEC="512" TYPE="part" MOUNTPOINT="" WWN=""
220228
""")
221229
assert len(devices) == 1
222230
assert devices[0].available is False
223231

224232

225233
def test_disk_with_partition_in_raid_is_unavailable():
226234
devices = _rescan("""\
227-
NAME="sda" KNAME="sda" PKNAME="" SIZE="536870912000" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
228-
NAME="sda1" KNAME="sda1" PKNAME="sda" SIZE="536870912" LOG-SEC="512" TYPE="part" MOUNTPOINT=""
229-
NAME="md0" KNAME="md0" PKNAME="sda1" SIZE="536739586048" LOG-SEC="512" TYPE="raid1" MOUNTPOINT=""
235+
NAME="sda" KNAME="sda" PKNAME="" SIZE="536870912000" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
236+
NAME="sda1" KNAME="sda1" PKNAME="sda" SIZE="536870912" LOG-SEC="512" TYPE="part" MOUNTPOINT="" WWN=""
237+
NAME="md0" KNAME="md0" PKNAME="sda1" SIZE="536739586048" LOG-SEC="512" TYPE="raid1" MOUNTPOINT="" WWN=""
230238
""")
231239
# sda is a disk (unavailable), md0 is the raid array
232240
disk = _by_name(devices, 'sda')
@@ -255,10 +263,10 @@ def test_md_array_free_is_available():
255263

256264
def test_md_array_mounted_is_unavailable():
257265
devices = _rescan("""\
258-
NAME="nvme0n1" KNAME="nvme0n1" PKNAME="" SIZE="15360950534144" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
259-
NAME="md0" KNAME="md0" PKNAME="nvme0n1" SIZE="30721630535680" LOG-SEC="512" TYPE="raid0" MOUNTPOINT="/mnt/data"
260-
NAME="nvme1n1" KNAME="nvme1n1" PKNAME="" SIZE="15360950534144" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
261-
NAME="md0" KNAME="md0" PKNAME="nvme1n1" SIZE="30721630535680" LOG-SEC="512" TYPE="raid0" MOUNTPOINT="/mnt/data"
266+
NAME="nvme0n1" KNAME="nvme0n1" PKNAME="" SIZE="15360950534144" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
267+
NAME="md0" KNAME="md0" PKNAME="nvme0n1" SIZE="30721630535680" LOG-SEC="512" TYPE="raid0" MOUNTPOINT="/mnt/data" WWN=""
268+
NAME="nvme1n1" KNAME="nvme1n1" PKNAME="" SIZE="15360950534144" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
269+
NAME="md0" KNAME="md0" PKNAME="nvme1n1" SIZE="30721630535680" LOG-SEC="512" TYPE="raid0" MOUNTPOINT="/mnt/data" WWN=""
262270
""")
263271
assert _by_name(devices, 'md0').available is False
264272

@@ -324,12 +332,32 @@ def test_full_output_free_plain_disks_available():
324332
assert _by_name(devices, name).available is True, f"{name} should be available"
325333

326334

335+
def test_full_output_disk_wwn():
336+
devices = _rescan(LSBLK_FULL)
337+
# free disks: 0x prefix stripped
338+
for name in ('sdf', 'sdb', 'sdm', 'sde', 'sdn', 'sdc', 'sdj', 'sdr'):
339+
assert _by_name(devices, name).wwn == '6005076813810286', f"{name} wwn mismatch"
340+
# dm-0 path disks
341+
for name in ('sdd', 'sdk', 'sdg', 'sdh', 'sdl', 'sdp', 'sdq', 'sdt'):
342+
assert _by_name(devices, name).wwn == '6005076813810225', f"{name} wwn mismatch"
343+
# dm-8 path disks
344+
for name in ('sdo', 'sds', 'sdi', 'sda'):
345+
assert _by_name(devices, name).wwn == '600507638081046d', f"{name} wwn mismatch"
346+
347+
348+
def test_full_output_mpath_wwn():
349+
devices = _rescan(LSBLK_FULL)
350+
# mpath NAME is the WWN-based alias (no 0x prefix)
351+
assert _by_name(devices, 'dm-0').wwn == '3600507681381022548000000000001ec'
352+
assert _by_name(devices, 'dm-8').wwn == '3600507638081046dd800000000000043'
353+
354+
327355
def test_disk_with_lvm_child_is_unavailable():
328356
# part -> lvm (mounted): unavailability must propagate up through the partition to the disk
329357
devices = _rescan("""\
330-
NAME="sda" KNAME="sda" PKNAME="" SIZE="536870912000" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
331-
NAME="sda1" KNAME="sda1" PKNAME="sda" SIZE="536334039040" LOG-SEC="512" TYPE="part" MOUNTPOINT=""
332-
NAME="myvg-mylv" KNAME="dm-0" PKNAME="sda1" SIZE="536220073984" LOG-SEC="512" TYPE="lvm" MOUNTPOINT="/data"
358+
NAME="sda" KNAME="sda" PKNAME="" SIZE="536870912000" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
359+
NAME="sda1" KNAME="sda1" PKNAME="sda" SIZE="536334039040" LOG-SEC="512" TYPE="part" MOUNTPOINT="" WWN=""
360+
NAME="myvg-mylv" KNAME="dm-0" PKNAME="sda1" SIZE="536220073984" LOG-SEC="512" TYPE="lvm" MOUNTPOINT="/data" WWN=""
333361
""")
334362
assert _by_name(devices, 'sda').available is False
335363

@@ -339,21 +367,21 @@ def test_disk_with_lvm_child_is_unavailable():
339367
# - sdb: free disk with unused partitions
340368
# - nvme0n1, nvme1n1: members of md0 (raid0)
341369
LSBLK_RAID1_HOST = """\
342-
NAME="nvme0n1" KNAME="nvme0n1" PKNAME="" SIZE="15360950534144" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
343-
NAME="md0" KNAME="md0" PKNAME="nvme0n1" SIZE="30721630535680" LOG-SEC="512" TYPE="raid0" MOUNTPOINT=""
344-
NAME="sdb" KNAME="sdb" PKNAME="" SIZE="240057409536" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
345-
NAME="sdb9" KNAME="sdb9" PKNAME="sdb" SIZE="8388608" LOG-SEC="512" TYPE="part" MOUNTPOINT=""
346-
NAME="sdb1" KNAME="sdb1" PKNAME="sdb" SIZE="240047357952" LOG-SEC="512" TYPE="part" MOUNTPOINT=""
347-
NAME="nvme1n1" KNAME="nvme1n1" PKNAME="" SIZE="15360950534144" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
348-
NAME="md0" KNAME="md0" PKNAME="nvme1n1" SIZE="30721630535680" LOG-SEC="512" TYPE="raid0" MOUNTPOINT=""
349-
NAME="sda" KNAME="sda" PKNAME="" SIZE="240057409536" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
350-
NAME="sda4" KNAME="sda4" PKNAME="sda" SIZE="536870912" LOG-SEC="512" TYPE="part" MOUNTPOINT="/boot/efi"
351-
NAME="sda2" KNAME="sda2" PKNAME="sda" SIZE="19327352832" LOG-SEC="512" TYPE="part" MOUNTPOINT=""
352-
NAME="sda5" KNAME="sda5" PKNAME="sda" SIZE="4294967296" LOG-SEC="512" TYPE="part" MOUNTPOINT="/var/log"
353-
NAME="sda3" KNAME="sda3" PKNAME="sda" SIZE="195496058368" LOG-SEC="512" TYPE="part" MOUNTPOINT=""
354-
NAME="XSLocalEXT--9cf600ab--221b--8deb--a1f6--51354b56fb85-9cf600ab--221b--8deb--a1f6--51354b56fb85" KNAME="dm-0" PKNAME="sda3" SIZE="195483926528" LOG-SEC="512" TYPE="lvm" MOUNTPOINT="/run/sr-mount/9cf600ab-221b-8deb-a1f6-51354b56fb85"
355-
NAME="sda1" KNAME="sda1" PKNAME="sda" SIZE="19327352832" LOG-SEC="512" TYPE="part" MOUNTPOINT="/"
356-
NAME="sda6" KNAME="sda6" PKNAME="sda" SIZE="1073741824" LOG-SEC="512" TYPE="part" MOUNTPOINT="[SWAP]"
370+
NAME="nvme0n1" KNAME="nvme0n1" PKNAME="" SIZE="15360950534144" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
371+
NAME="md0" KNAME="md0" PKNAME="nvme0n1" SIZE="30721630535680" LOG-SEC="512" TYPE="raid0" MOUNTPOINT="" WWN=""
372+
NAME="sdb" KNAME="sdb" PKNAME="" SIZE="240057409536" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
373+
NAME="sdb9" KNAME="sdb9" PKNAME="sdb" SIZE="8388608" LOG-SEC="512" TYPE="part" MOUNTPOINT="" WWN=""
374+
NAME="sdb1" KNAME="sdb1" PKNAME="sdb" SIZE="240047357952" LOG-SEC="512" TYPE="part" MOUNTPOINT="" WWN=""
375+
NAME="nvme1n1" KNAME="nvme1n1" PKNAME="" SIZE="15360950534144" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
376+
NAME="md0" KNAME="md0" PKNAME="nvme1n1" SIZE="30721630535680" LOG-SEC="512" TYPE="raid0" MOUNTPOINT="" WWN=""
377+
NAME="sda" KNAME="sda" PKNAME="" SIZE="240057409536" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
378+
NAME="sda4" KNAME="sda4" PKNAME="sda" SIZE="536870912" LOG-SEC="512" TYPE="part" MOUNTPOINT="/boot/efi" WWN=""
379+
NAME="sda2" KNAME="sda2" PKNAME="sda" SIZE="19327352832" LOG-SEC="512" TYPE="part" MOUNTPOINT="" WWN=""
380+
NAME="sda5" KNAME="sda5" PKNAME="sda" SIZE="4294967296" LOG-SEC="512" TYPE="part" MOUNTPOINT="/var/log" WWN=""
381+
NAME="sda3" KNAME="sda3" PKNAME="sda" SIZE="195496058368" LOG-SEC="512" TYPE="part" MOUNTPOINT="" WWN=""
382+
NAME="XSLocalEXT--9cf600ab--221b--8deb--a1f6--51354b56fb85-9cf600ab--221b--8deb--a1f6--51354b56fb85" KNAME="dm-0" PKNAME="sda3" SIZE="195483926528" LOG-SEC="512" TYPE="lvm" MOUNTPOINT="/run/sr-mount/9cf600ab-221b-8deb-a1f6-51354b56fb85" WWN=""
383+
NAME="sda1" KNAME="sda1" PKNAME="sda" SIZE="19327352832" LOG-SEC="512" TYPE="part" MOUNTPOINT="/" WWN=""
384+
NAME="sda6" KNAME="sda6" PKNAME="sda" SIZE="1073741824" LOG-SEC="512" TYPE="part" MOUNTPOINT="[SWAP]" WWN=""
357385
"""
358386

359387

@@ -387,15 +415,15 @@ def test_raid1_host_nvme_members_unavailable():
387415
# - nvme0n1: free disk, no children
388416
# - sda: boot disk (mounted partitions, lvm child)
389417
LSBLK_SIMPLE_HOST = """\
390-
NAME="nvme0n1" KNAME="nvme0n1" PKNAME="" SIZE="512110190592" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
391-
NAME="sda" KNAME="sda" PKNAME="" SIZE="120034123776" LOG-SEC="512" TYPE="disk" MOUNTPOINT=""
392-
NAME="sda4" KNAME="sda4" PKNAME="sda" SIZE="536870912" LOG-SEC="512" TYPE="part" MOUNTPOINT="/boot/efi"
393-
NAME="sda2" KNAME="sda2" PKNAME="sda" SIZE="19327352832" LOG-SEC="512" TYPE="part" MOUNTPOINT=""
394-
NAME="sda5" KNAME="sda5" PKNAME="sda" SIZE="4294967296" LOG-SEC="512" TYPE="part" MOUNTPOINT="/var/log"
395-
NAME="sda3" KNAME="sda3" PKNAME="sda" SIZE="75499053056" LOG-SEC="512" TYPE="part" MOUNTPOINT=""
396-
NAME="XSLocalEXT--1fa367e3--84ac--b13d--7dc1--6c5ec5ad1808-1fa367e3--84ac--b13d--7dc1--6c5ec5ad1808" KNAME="dm-1" PKNAME="sda3" SIZE="75485585408" LOG-SEC="512" TYPE="lvm" MOUNTPOINT="/run/sr-mount/1fa367e3-84ac-b13d-7dc1-6c5ec5ad1808"
397-
NAME="sda1" KNAME="sda1" PKNAME="sda" SIZE="19327352832" LOG-SEC="512" TYPE="part" MOUNTPOINT="/"
398-
NAME="sda6" KNAME="sda6" PKNAME="sda" SIZE="1073741824" LOG-SEC="512" TYPE="part" MOUNTPOINT="[SWAP]"
418+
NAME="nvme0n1" KNAME="nvme0n1" PKNAME="" SIZE="512110190592" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
419+
NAME="sda" KNAME="sda" PKNAME="" SIZE="120034123776" LOG-SEC="512" TYPE="disk" MOUNTPOINT="" WWN=""
420+
NAME="sda4" KNAME="sda4" PKNAME="sda" SIZE="536870912" LOG-SEC="512" TYPE="part" MOUNTPOINT="/boot/efi" WWN=""
421+
NAME="sda2" KNAME="sda2" PKNAME="sda" SIZE="19327352832" LOG-SEC="512" TYPE="part" MOUNTPOINT="" WWN=""
422+
NAME="sda5" KNAME="sda5" PKNAME="sda" SIZE="4294967296" LOG-SEC="512" TYPE="part" MOUNTPOINT="/var/log" WWN=""
423+
NAME="sda3" KNAME="sda3" PKNAME="sda" SIZE="75499053056" LOG-SEC="512" TYPE="part" MOUNTPOINT="" WWN=""
424+
NAME="XSLocalEXT--1fa367e3--84ac--b13d--7dc1--6c5ec5ad1808-1fa367e3--84ac--b13d--7dc1--6c5ec5ad1808" KNAME="dm-1" PKNAME="sda3" SIZE="75485585408" LOG-SEC="512" TYPE="lvm" MOUNTPOINT="/run/sr-mount/1fa367e3-84ac-b13d-7dc1-6c5ec5ad1808" WWN=""
425+
NAME="sda1" KNAME="sda1" PKNAME="sda" SIZE="19327352832" LOG-SEC="512" TYPE="part" MOUNTPOINT="/" WWN=""
426+
NAME="sda6" KNAME="sda6" PKNAME="sda" SIZE="1073741824" LOG-SEC="512" TYPE="part" MOUNTPOINT="[SWAP]" WWN=""
399427
"""
400428

401429

0 commit comments

Comments
 (0)