4
使用losetup帮你创建虚拟磁盘
source link: https://www.lujun9972.win/blog/2018/04/09/%E4%BD%BF%E7%94%A8losetup%E5%B8%AE%E4%BD%A0%E5%88%9B%E5%BB%BA%E8%99%9A%E6%8B%9F%E7%A3%81%E7%9B%98/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
使用losetup帮你创建虚拟磁盘
linux一切都是文件的特性可以使你把一个文件当成虚拟磁盘来用。步骤如下:
使用dd创建虚拟磁盘文件
例如,使用下面可以创建一个200M的磁盘
dd if=/dev/zero of=~/HDD.img bs=1M count=200
使用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 分区表已调整。 正在同步磁盘。
使用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 /
像普通磁盘那样使用
虚拟磁盘用起来跟普通磁盘一样:
可以创建文件系统
[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
使用完后,再使用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 /
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK