久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Debian磁盤映像

2024-01-24 188

Debian系統(tǒng)中,磁盤映像技術(shù)是管理和維護(hù)數(shù)據(jù)存儲的一個強(qiáng)大工具,允許用戶創(chuàng)建整個磁盤或分區(qū)的快照,這些快照可以用于備份、恢復(fù)系統(tǒng)、或者在不同設(shè)備間遷移數(shù)據(jù)。本教程將介紹一系列的磁盤映像操作技巧,包括如何制作和處理各種類型的磁盤映像文件。

一、制作磁盤映像文件

一個未掛載設(shè)備(例如,第二個 SCSI 或 串行 ATA 設(shè)備 “/dev/sdb”)的磁盤映像文件 “disk.img” 可以使用 cp(1) 或 dd(1) 通過下列方式建立。

# cp /dev/sdb disk.img
# dd if=/dev/sdb of=disk.img

傳統(tǒng) PC 中位于主 IDE 硬盤第一扇區(qū)的主引導(dǎo)記錄(MBR)的磁盤映像可以使用 dd(1) 通過下列方式建立。

# dd if=/dev/hda of=mbr.img bs=512 count=1
# dd if=/dev/hda of=mbr-nopart.img bs=446 count=1
# dd if=/dev/hda of=mbr-part.img skip=446 bs=1 count=66
  • “mbr.img”:帶有分區(qū)表的 MBR;
  • “mbr-nopart.img”:不帶分區(qū)表的 MBR;
  • “mbr-part.img”:僅 MBR 的分區(qū)表。

如果使用 SCSI 或 串行 ATA 設(shè)備作為啟動硬盤,需要使用 “/dev/sda” 替代 “/dev/hda”。如果要建立原始硬盤的一個硬盤分區(qū)的映像,需要使用 “/dev/hda1” 等替代 “/dev/hda”。

二、直接寫入硬盤

磁盤映像文件 “disk.img” 可以通過下列方式寫入到一個匹配大小的未掛載設(shè)備(例如,第二個 SCSI 設(shè)備 “/dev/sdb”。

# dd if=disk.img of=/dev/sdb

相似地,硬盤分區(qū)映像文件 “partition.img” 可以通過下列方式寫入到匹配大小的未掛載分區(qū)(例如,第二個 SCSI 設(shè)備的第一個分區(qū) “/dev/sdb1”)。

# dd if=partition.img of=/dev/sdb1

三、掛載磁盤映像文件

可以使用循環(huán)設(shè)備通過下列方式掛載和卸載包含單個分區(qū)映像的磁盤映像 “partition.img”。

# losetup -v -f partition.img
Loop device is /dev/loop0
# mkdir -p /mnt/loop0
# mount -t auto /dev/loop0 /mnt/loop0
...hack...hack...hack
# umount /dev/loop0
# losetup -d /dev/loop0

可以簡化為如下步驟。

# mkdir -p /mnt/loop0
# mount -t auto -o loop partition.img /mnt/loop0
...hack...hack...hack
# umount partition.img

可以使用 循環(huán)設(shè)備 掛載包含多個分區(qū)的磁盤映像 “disk.img” 的每個分區(qū)。因?yàn)檠h(huán)設(shè)備默認(rèn)不管理分區(qū),因此我們需要通過下列方式重新設(shè)置它。

# modinfo -p loop # verify kernel capability
max_part:Maximum number of partitions per loop device
max_loop:Maximum number of loop devices
# losetup -a # verify nothing using the loop device
# rmmod loop
# modprobe loop max_part=16

現(xiàn)在循環(huán)設(shè)備可以管理多達(dá) 16 個分區(qū)。

# losetup -v -f disk.img
Loop device is /dev/loop0
# fdisk -l /dev/loop0
Disk /dev/loop0: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x452b6464
Device Boot Start End Blocks Id System
/dev/loop0p1 1 600 4819468+ 83 Linux
/dev/loop0p2 601 652 417690 83 Linux
# mkdir -p /mnt/loop0p1
# mount -t ext4 /dev/loop0p1 /mnt/loop0p1
# mkdir -p /mnt/loop0p2
# mount -t ext4 /dev/loop0p2 /mnt/loop0p2
...hack...hack...hack
# umount /dev/loop0p1
# umount /dev/loop0p2
# losetup -d /dev/loop0

或者,也可以使用 kpartx 軟件包中的 kpartx(8) 建立 設(shè)備映射設(shè)備來達(dá)到相同的效果。

# kpartx -a -v disk.img
...
# mkdir -p /mnt/loop0p2
# mount -t ext4 /dev/mapper/loop0p2 /mnt/loop0p2
...
...hack...hack...hack
# umount /dev/mapper/loop0p2
...
# kpartx -d /mnt/loop0

也可以使用循環(huán)設(shè)備利用偏移量來跳過 MBR 等,來掛載此類磁盤映像的單個分區(qū)。但這更加容易出錯。

四、清理磁盤映像文件

使用下面的方式,一個磁盤映像文件 “disk.img” 能夠清理掉所有已經(jīng)刪除的文件,成為一個干凈的稀疏映像 “new.img”。

# mkdir old; mkdir new
# mount -t auto -o loop disk.img old
# dd bs=1 count=0 if=/dev/zero of=new.img seek=5G
# mount -t auto -o loop new.img new
# cd old
# cp -a --sparse=always ./ ../new/
# cd ..
# umount new.img
# umount disk.img

如果 “disk.img” 位于 ext2、ext3 或 ext4,也可以像下面那樣使用 zerofree 軟件包中的 zerofree(8)。

# losetup -f -v disk.img
Loop device is /dev/loop3
# zerofree /dev/loop3
# cp --sparse=always disk.img new.img

五、制作空的磁盤映像文件

按下面的方式使用 dd(1) ,可以制作一個大小為 5GiB 的空磁盤映像文件。

$ dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G

專業(yè)的 fallocate(8) 可以在這里被使用,用來替代使用 dd(1)。

按下面的方式使用環(huán)回設(shè)備,能夠在這個磁盤映像”disk.img”上創(chuàng)建 ext4 文件系統(tǒng)。

# losetup -f -v disk.img
Loop device is /dev/loop1
# mkfs.ext4 /dev/loop1
...hack...hack...hack
# losetup -d /dev/loop1
$ du --apparent-size -h disk.img
5.0G disk.img
$ du -h disk.img
83M disk.img

對于 “disk.img”,它的文件大小是5.0 GiB,而它實(shí)際磁盤使用僅僅是 83MiB.這個差距可能是由于 ext4 里面有稀疏文件.

注意:稀疏文件的實(shí)際磁盤使用會隨著數(shù)據(jù)的寫入而增加。

回環(huán)設(shè)備或設(shè)備映射設(shè)備上使用類似的操作,在這些設(shè)備掛載后, 能夠使用 parted(8) 或 fdisk(8)對這個磁盤映像”disk.img”進(jìn)行分區(qū),能夠使用 mkfs.ext4(8), mkswap(8)在上面創(chuàng)建文件系統(tǒng)等.

六、制作ISO9660鏡像文件

“源目錄”下的目錄樹可以通過如下所示的 cdrkit 提供的 genisoimage(1) 命令來制作 ISO9660 鏡像文件,”cd.iso”。

# genisoimage -r -J -T -V volume_id -o cd.iso source_directory

類似的,可引導(dǎo)的 ISO9660 鏡像文件,”cdboot.iso”, 能夠從 debian-installer 類似目錄樹 “source_directory” 制作,方式如下。

# genisoimage -r -o cdboot.iso -V volume_id \
-b isolinux/isolinux.bin -c isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table source_directory

這里的 Isolinux boot loader是用于啟動的.按下面的方式,可以直接從光驅(qū)設(shè)備計算 md5sum 值,并制作 ISO9660 鏡像。

$ isoinfo -d -i /dev/cdrom
CD-ROM is in ISO 9660 format
...
Logical block size is: 2048
Volume size is: 23150592
...
# dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror | md5sum
# dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror > cd.iso

注意:為了得到正確結(jié)果,必須小心避免 Linux ISO9600 文件系統(tǒng)預(yù)讀 bug。

七、直接寫入文件

對于由 cdrkit 提供的 wodim(1) 來講,DVD 僅僅是一個大的 CD。能夠通過如下所示的命令找到可用的設(shè)備。

# wodim --devices

然后將空的 CD-R 插入 CD 驅(qū)動器并且把 ISO9660 鏡像文件,”cd.iso” 寫入到設(shè)備中,例如用如下所示的 wodim(1) 將數(shù)據(jù)寫入到 “/dev/hda” 設(shè)備。

# wodim -v -eject dev=/dev/hda cd.iso

如果用 CD-RW 代替 CD-R,用如下所示的命令來替代。

# wodim -v -eject blank=fast dev=/dev/hda cd.iso

如果桌面系統(tǒng)自動掛載 CDs,在使用 wodim(1) 之前在終端里面用 “sudo umount /dev/hda” 卸載它。

八、掛載ISO9660鏡像文件

如果 “cd.iso” 包含一個 ISO9660 鏡像, 下面的命令手工掛載這個文件到 “/cdrom”.

# mount -t iso9660 -o ro,loop cd.iso /cdrom

現(xiàn)代桌面系統(tǒng)能夠自動掛載可移動介質(zhì),如按 ISO9660 格式化的 CD

  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請注明出處“站長百科”和原文地址。