扫描所有可用的 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)
}
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付
