使用 losetup 帮你创建虚拟磁盘

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 /

原文 

http://www.importnew.com/28580.html

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 使用 losetup 帮你创建虚拟磁盘

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址