(點選上方公眾號,可快速關註)
來源:暗無天日 ,
lujun9972.github.io/blog/2018/04/09/使用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 /
看完本文有收穫?請轉發分享給更多人
關註「ImportNew」,提升Java技能