linux qemu-nbd介紹

1. 介紹

NBD(Network Block Device),即網絡塊設備。可以將一個遠程主機的磁盤空間,當作一個塊設備來使用。就像一塊硬盤一樣使用它,你可以很方便的將另一臺服務器的硬盤空間,增加到本地服務器上。NBD與NFS有所不同,NFS只是提供一個掛載點供客戶端使用,客戶端無法改變這個掛載點的分區格式,而NBD提供的是一個塊設備,客戶端可以把這個塊設備格式化成各種類型的分區,更便於用戶的使用。NBD是一個內核模塊,大部分Linux發行版都已包含它。

在centos中, 編譯成模塊NBD, 保存在 /lib/modules/$version/kernel/driver/block/

遠程服務器是一段輕量級的守護進程代碼,它提供對遠程設備的訪問,而且該守護進程並不需要運行在linux平臺之上。本地操作系統必須是linux,而且要支持Linux內核NBD驅動,並且能夠運行本地客戶端進程。

在這裏插入圖片描述
圖1.NBD在本地客戶端代表遠程資源

文件系統能被掛載到NBD上(圖1),而且NBD設備也能夠用來組成冗餘磁盤陣列(RAID)。在本地Linux上掛載一個EXT2文件系統到NBD,其傳輸率要比在同樣的遠程機器上掛載一個NFS快。

在這裏插入圖片描述
圖2.使用NBD的冗餘磁盤陣列

2. 加載 nbd 驅動

某些版本的 Linux 不加 max_part 參數會導致沒有設備節點 /dev/nbd0p{1,2,3,4…} 等.用 kpartx 也不行. /dev/nbd0p{1,2,3,4} 分區。

# modprobe nbd max_part=8

備註:查看Linux 模塊信息(modinfo),例如查看nbd模塊的參數。 加載後,在/dev/目錄下,根據參數創建nbdxx塊設備文件。

# modinfo nbd
filename:       /lib/modules/4.18.0-147.el8.x86_64/kernel/drivers/block/nbd.ko.xz
license:        GPL
description:    Network Block Device
rhelversion:    8.1
srcversion:     6A98CFDAB8374FFFD7FCD25
depends:        
intree:         Y
name:           nbd
vermagic:       4.18.0-147.el8.x86_64 SMP mod_unload modversions 
sig_id:         PKCS#7
signer:         CentOS Linux kernel signing key
sig_key:        79:05:D0:5C:21:6F:8A:C5:DD:6E:19:BB:77:9D:05:F6:F2:21:B8:17
sig_hashalgo:   sha256
signature:      AB:3E:49:FE:84:52:F2:52:6B:AB:C8:D7:A5:71:06:40:87:C8:E6:17:
		E2:EF:0E:B9:2C:ED:F4:D8:FA:82:0B:31:70:37:7D:A1:3D:7A:79:32:
		1D:89:9C:F2:2E:89:D9:9B:D4:86:EC:33:56:60:60:A3:64:2F:B1:26:
		08:9E:47:EF:76:48:96:67:2B:3A:83:A5:8E:5D:F2:4B:D7:83:05:86:
		FD:54:AC:ED:38:2E:8B:E8:EE:66:6B:F7:4B:E2:D7:CE:63:A7:4A:2B:
		E6:CD:DA:24:04:CC:56:61:CC:84:6D:0B:0E:E6:A3:D2:90:37:E5:FA:
		1B:36:91:57:F7:37:B3:FC:5F:44:93:24:9A:B3:A5:8F:8E:BE:08:FA:
		35:58:61:9B:C2:4D:02:29:AC:A0:75:8D:3E:0B:75:77:93:31:44:90:
		39:BF:C7:ED:39:CE:38:E3:44:30:CA:D4:29:9F:57:E5:86:75:C0:A5:
		F0:88:76:A6:37:00:43:A2:10:98:E5:89:38:22:89:25:AE:35:BE:00:
		F4:5B:C6:3F:68:C5:49:06:15:6D:58:AF:34:2C:C5:A0:A4:E6:55:49:
		10:BD:B1:1A:E5:F2:07:BE:26:AC:80:2B:2D:2C:00:B2:AA:59:79:90:
		7B:15:95:FC:28:E7:FE:D0:9D:F3:2F:FE:7C:37:B4:93:99:77:B1:E8:
		FD:3D:4B:3A:51:D6:53:FA:DF:FE:47:52:08:14:4B:4A:C8:F3:B9:FD:
		A0:98:3F:3F:92:1A:66:3A:D9:5F:80:5E:26:5C:11:3C:E2:38:4D:D0:
		D1:DB:DF:16:1B:02:C2:88:AA:5D:24:12:AE:1A:CB:B7:32:2E:50:42:
		C7:E1:E5:6F:47:D7:8A:F3:C9:7E:F5:56:B8:38:3C:B1:58:76:1A:CA:
		51:E7:1B:E5:CA:6A:6F:72:C7:08:DC:DC:CC:1B:86:C8:8F:8D:38:22:
		4C:07:AE:C2:2C:3D:D3:13:8C:FF:3E:BD:27:D8:03:7E:45:B1:2C:85:
		13:EE:02:B7
parm:           nbds_max:number of network block devices to initialize (default: 16) (int)
parm:           max_part:number of partitions per device (default: 16) (int)

3. 掛載

連接:

# qemu-nbd -c /dev/nbd0 test.qcow2 

查看分區:

# fdisk -l /dev/nbd0
Disk /dev/nbd0: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

格式化:

# mkfs.ext4  /dev/nbd0 
mke2fs 1.44.6 (5-Mar-2019)
Discarding device blocks: done                            
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 361767db-1aae-4f07-bac2-e93e7903d6c8

掛載:

# mount /dev/nbd0  /root/fs

4. 卸載

卸載文件系統:

# umount /root/fs

斷開連接:

# qemu-nbd -d /dev/nbd0 
/dev/nbd0 disconnected
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章