歡迎光臨
每天分享高質量文章

使用 losetup 幫你建立虛擬磁碟

(點選上方公眾號,可快速關註)


來源:暗無天日 ,

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技能

贊(0)

分享創造快樂