使用 losetup 帮你创建虚拟磁盘

java admin 43200 0 评论

linux一切都是文件的特性可以使你把一个文件当成虚拟磁盘来用。步骤如下:

1. 使用dd创建虚拟磁盘文件。例如,使用下面可以创建一个200M的磁盘

dd if=/dev/zero of=~/HDD.img bs=1M count=200

2. 使用fdisk对其进行分区

 

[lujun9972@X61 ~]$ fdisk HDD.img

欢迎使用 fdisk (util-linux 2.32)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x38ffa4dc 的新 DOS 磁盘标签。

命令(输入 m 获取帮助):n
分区类型

 p
 主分区 (0个主分区,0个扩展分区,4空闲)

 e
 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认
1):
 第一个扇区 (2048-409599, 默认 2048):
 上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-409599, 默认 409599): +100M

创建了一个新分区 1,类型为“Linux”,大小为 100 MiB。

命令(输入 m 获取帮助):n
分区类型

 p
 主分区 (1个主分区,0个扩展分区,3空闲)

 e
 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (2-4, 默认
2):
 第一个扇区 (206848-409599, 默认 206848):
 上个扇区,+sectors 或 +size{K,M,G,T,P} (206848-409599, 默认 409599):

 创建了一个新分区 2,类型为“Linux”,大小为 99 MiB。
命令(输入 m 获取帮助):w

分区表已调整。
正在同步磁盘。

3. 使用losetup创建loop设备

[lujun9972@X61 ~]$ sudo losetup -Pf --show ~/HDD.img
[sudo] lujun9972 的密码:
/dev/loop0

其中参数

-P
强制要求核心扫描loop设备中的分区表
-f
自动寻找并使用第一个未用的loop设备
–show
输出所分配的loop设备

使用 lsblk 可以看到已经把虚拟磁盘文件挂载上去了

[lujun9972@X61 ~]$ lsblk
NAME
MAJ:MIN RM
 SIZE RO TYPE MOUNTPOINT
loop0
 7:0

0
 200M
0 loop
 ├─loop0p1 259:2

0
 100M
0 loop
 └─loop0p2 259:3

0

99M
0 loop
 sda
8:0

0 111.8G
0 disk
 ├─sda1
8:1

0

50G
0 part /home
├─sda2
8:2

0

 8G
0 part [SWAP]
└─sda3
8:3

0
53.8G
0 part /

4. 像普通磁盘那样使用

虚拟磁盘用起来跟普通磁盘一样:

可以创建文件系统

[lujun9972@X61 ~]$ sudo mkfs.reiserfs /dev/loop0p1
 mkfs.reiserfs 3.6.27

Guessing about desired format.. Kernel 4.15.15-1-ARCH is running.
Format 3.6 with standard journal
Count of blocks on the device: 25600
Number of blocks consumed by mkreiserfs formatting process: 8212
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: 6cad1bcb-4798-4643-b471-a5ab695e0eb5
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!

ALL DATA WILL BE LOST ON '/dev/loop0p1'!
Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok
ReiserFS is successfully created on /dev/loop0p1.

可以挂载

[lujun9972@X61 ~]$ sudo mount /dev/loop0p1 /mnt
[lujun9972@X61 ~]$ df -h
文件系统

容量
已用
可用 已用% 挂载点
dev

 1.9G

 0
1.9G

0% /dev
run

 1.9G
720K
1.9G

1% /run
/dev/sda3

53G
7.3G
 43G
 15% /
tmpfs
 1.9G
 23M
1.9G

2% /dev/shm
tmpfs
 1.9G

 0
1.9G

0% /sys/fs/cgroup
tmpfs
 1.9G
 52K
1.9G

1% /tmp
/dev/sda1

50G
 25G
 26G
 49% /home
tmpfs
 388M
4.0K
388M

1% /run/user/1000
/dev/loop0p1

100M
 33M
 68M
 33% /mnt

存入文件

[lujun9972@X61 ~]$ sudo touch /mnt/secret
[lujun9972@X61 ~]$ ls -l /mnt/secret
 -rw-r--r-- 1 root root 0 4月
 9 18:36 /mnt/secret

5. 使用完后,再使用losetup卸载虚拟磁盘

[lujun9972@X61 ~]$ sudo umount /mnt
[lujun9972@X61 ~]$ sudo losetup -d /dev/loop0
 [lujun9972@X61 ~]$ lsblk
NAME
 MAJ:MIN RM
 SIZE RO TYPE MOUNTPOINT
sda
8:0

0 111.8G
0 disk
 ├─sda1
 8:1

0

50G
0 part /home
├─sda2
 8:2

0

 8G
0 part [SWAP]
└─sda3
 8:3

0
53.8G
0 part /

转载请注明: 飞嗨_分享互联网 » 使用 losetup 帮你创建虚拟磁盘

赞 (0) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽

高效,专业,符合SEO

联系我们