Jamyy's Weblog

分割、格式化與掛載 Raw Disk Image

by Jamyy on 二月.06, 2012, under Linux

在 VM Host 分割、格式化與掛載 Raw Disk Image 的操作備忘
環境: CentOS 6

建立 3TB RAW 格式的 Disk Image (不預先分配空間)

qemu-img create test.raw -f raw 3t

dd if=/dev/zero of=test.raw bs=1 seek=3T count=0

以 parted 進行磁碟分割

parted test.raw
(parted) mklabel gpt
(parted) mkpart primary 2048s 100% (也可以用 -0 或 -1 取代 100%)
(parted) print

Model:  (file)
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  3299GB  3299GB               primary

(parted) quit

Ref: How to align partitions for best performance using parted | Rainbow Chard

* 因 parted 的 mkfsmkpartfs 只支援 ext2, fat16/32, linux-swap, reiserfs 等格式, 以下借助 guestfish 將 disk image 裡的分割區格式化為 ext4; 亦可用 guestfish 分割與格式化一氣呵成, 列於文末.

將 Disk Image 裡的分割區格式化為 ext4

guestfish
><fs> add test.raw
><fs> run
><fs> list-filesystems

/dev/vda1: unknown

><fs> mkfs ext4 /dev/vda1
><fs> list-filesystems

/dev/vda1: ext4

><fs> quit

* 格式化完成後 test.raw 實際約佔用 49GB 空間 (@ ext4 partition)

掛載 Disk Image 裡的分割區

parted test.raw unit s print

Model:  (file)
Disk test.raw: 6442450944s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End          Size         File system  Name     Flags
 1      2048s  6442448895s  6442446848s  ext4         primary

mount -o loop,offset=$((2048*512)) test.raw /mnt

* offset 計算方法: Start sector * 512

以 guestfish 進行 Disk Image 的磁碟分割與格式化

guestfish
><fs> add test.raw
><fs> run
><fs> part-disk /dev/vda gpt
><fs> mkfs ext4 /dev/vda1
><fs> quit

最大單一檔案大小限制 (block size = 4k)

線上文件:



:, ,