OMV如何通过ISCSI挂载磁盘

Posted by     "lxg" on Thursday, December 26, 2024

扫描所有可用的 iSCSI 目标

iscsiadm --mode discovery --type sendtargets --portal <IP地址>

返回如下

192.168.6.130:3260,1 iqn.2024-12.local.openmediavault:pistorage
192.168.6.130:3260,1 iqn.2024-12.local.openmediavault:raid0

登录到目标设备

iscsiadm --mode node --targetname <targetname> --portal <IP地址>:<端口> --login

连接

iscsiadm --mode node --targetname iqn.2024-12.local.openmediavault:raid0 --portal 192.168.6.130:3260 --login

查看 iSCSI 目标的详细信息:

iscsiadm --mode session --op show

使用 lsblk 查看块设备:

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT

使用 blkid 查看详细信息

blkid

挂载

设置卷名

e2label /dev/sdb testLabel

列出文件系统中的文件列表

sudo fls -pr -f ext4 "/dev/sdc"

获取innode的信息

sudo istat -f ext4 "/dev/sdc" "720898"

使用golang读取块信息

package main

import (
	"fmt"
	"log"
	"path/filepath"

	"github.com/diskfs/go-diskfs"
	"github.com/diskfs/go-diskfs/filesystem"
)

func traverseDirectory(fs filesystem.FileSystem, path string, visited map[string]bool) {
	if visited[path] {
		return
	}
	visited[path] = true

	files, err := fs.ReadDir(path)
	if err != nil {
		log.Printf("failed to read directory %s: %v", path, err)
		return
	}

	for _, file := range files {
		fullPath := filepath.Join(path, file.Name())
		fmt.Printf("Path: %s, Size: %d bytes, Modified: %s\n", fullPath, file.Size(), file.ModTime())

		if file.IsDir() {
			traverseDirectory(fs, fullPath, visited)
		}
	}
}

func main() {
	devicePath := "/dev/sdb" // 替换为实际的设备路径

	disk, err := diskfs.Open(devicePath, diskfs.WithOpenMode(diskfs.ReadOnly))
	if err != nil {
		log.Fatalf("failed to open device: %v", err)
	}

	fs, err := disk.GetFilesystem(0)
	if err != nil {
		log.Fatalf("failed to get filesystem: %v", err)
	}

	fmt.Println("卷名:", fs.Label())
	fmt.Println("卷格式:", fs.Type())

	if fs.Type() != filesystem.TypeExt4 {
		log.Fatalf("unexpected filesystem type: %s", fs.Type())
	}

	visited := make(map[string]bool)
	traverseDirectory(fs, "/", visited)
}

「真诚赞赏,手留余香」

Little Star Blog

真诚赞赏,手留余香

使用微信扫描二维码完成支付