1. 程式人生 > >Linux下的磁碟克隆

Linux下的磁碟克隆

如果一個機房有多臺伺服器,在一臺上安裝完Linux後,怎樣把這個系統盤克隆到其他磁碟,最簡便的方法就是用Linux dd命令,不需要藉助Ghost之類的第三方程式。況且Ghost對Linux的支援似乎不太好。

使用dd

dd是一個簡單,多功能,強大的工具。可以用來把資料按照塊順序從源位置複製到目標位置,並且不管檔案型別和作業系統。一種快捷的方法就是從live環境中使用dd,比如從Live CD上。

警告:像任何這種型別的命令一樣,你使用的時候需要非常小心。這個命令可以毀壞資料。記住輸入檔案(if=)和輸出檔案(of=)的順序,不能顛倒!時刻保證目標磁碟或者分割槽(of=)的容量等於或大於源位置(if=)的容量。

克隆一個分割槽

從物理磁碟/dev/sda 分割槽1 到物理磁碟/dev/sdb 分割槽2。

# dd if=/dev/sda1 of=/dev/sdb1 bs=512 conv=noerror,sync

警告:如果輸出檔案of=(上面例子的sdb1)不存在,dd會建立一個這個名字的檔案,然後開始填充你的root檔案系統!

克隆一個完整的硬碟

從物理磁碟/dev/sdX到物理磁碟/dev/sdY

# dd if=/dev/sdX of=/dev/sdY bs=512 conv=noerror,sync

這個命令會克隆整個磁碟,包括MBR(因此也包含bootloader),所有分割槽,UUID和資料。
  • noerror 指定dd命令繼續操作,忽略所有的讀錯誤。dd預設行為是會在任何錯誤時候停止
  • sync 如果有讀錯誤,把輸入的塊填0,所以資料偏移在sync設定時保留
  • bs=512 設定塊大小512bytes,對於硬碟來說是“經典”的塊大小。只有在你的硬碟是4Kb塊大小時,你才可以用4096而不是512。同時,請閱讀下面的警告,因為這個不僅僅是“塊大小”,它同時會影響到如何處理讀錯誤。
警告:你指定的塊大小會影響到如何處理讀錯誤。請讀以下內容。 dd工具有”輸入塊大小“(IBS)和”輸出塊大小“(OBS)。當你設定bs,其實是同時設定了IBS和OBS。通常情況下,如果你的塊大小是1Mb,dd會讀取1024*1024bytes,然後寫同樣數量的bytes。但是如果一個讀錯誤發生,事情就變錯誤了。許多人看起來像是認為如果設定了noerror,sync,dd會”把讀錯誤填0”,但其實事實不是這樣。dd會按照文件的描述,在完成讀命令後,把OBS填滿到IBS,這就意味著在塊末尾添0。也就是說,對於一個磁碟來說,整個1Mb的有效資料會變混亂,因為對於一個512byte讀錯誤,一開始讀到的資料:12ERROR89會變成128900000,而不是12000089。

如果你很樂觀,你的磁碟不會有任何的錯誤,那你可以使用更大的塊大小,這樣會成倍增加拷貝速度。比如,在一個單賽揚2.7GHz的系統上,把bs從512改變到64K會把拷貝速度從35MB/s增加到120MB/s。但是記住源磁碟上的讀錯誤會導致目標磁碟上的塊錯誤。比如,一個512byte的讀錯誤會破壞整個64Kb的輸出塊資料。

技巧:如果你想檢視dd的進度,用status=progress選項

補充:

  • 重新獲得ext2/3/4檔案系統的唯一UUIDs,在每個分割槽上使用 tune2fs /dev/sdXY -U random
  • dd導致分割槽表的變化沒有註冊到kernel中。如果要不重啟讓改變生效,使用工具諸如partprobe(GNU Parted)

備份MBR

MBR儲存在磁碟的第一個512bytes中,包含以下三部分。

  1. 開始446bytes包含boot loader
  2. 接下來64bytes包含分割槽表(每項16bytes,4項,每個主分割槽對應一項)
  3. 最後2bytes包含identifier
儲存分割槽表到mbr.img:
# dd if=/dev/sdX of=/path/to/mbr_file.img bs=512 count=1
恢復(謹慎操作,恢復可能會損壞現有的分割槽表,以至於無法訪問磁碟上的所有資料):
#dd if=/path/to/mbr_file.img of=/dev/sdX
如果你只是想恢復boot loader,而不是主分割槽表,只是恢復MBR的前446bytes資料:
#dd if=/path/to/mbr_file.img of=/dev/sdX bs=446 count=1
只恢復分割槽表,使用:
#dd if=/path/to/mbr_file.img of=/dev/sdX bs=1 skip=446 count=64
同樣,你也可以從一個完整的dd磁碟映象中獲得MBR:
#dd if=/path/to/mbr_file.img of=/dev/sdX bs=1 bs=512 count=1
建立磁碟映象 1. 從live介質啟動 2. 確保沒有分割槽掛載在源硬碟上 3. 掛載外接硬碟 4. 備份硬碟 把源盤中的內容壓縮後放在本地磁碟目標位置
#dd if=/dev/sdX conv=sync,noerror bs=64k | gzip -c > /path/to/backup.img.gz
如果需要(例如外接硬碟是FAT32時),把磁碟映象拆分成多個卷(參考split man頁面)
#dd if=/dev/sdX conv=sync,noerror bs=64K | gzip -c| split -a3 -b2G - /path/to/backup.img.gz
如果本地磁碟沒有足夠空間,你可以通過ssh傳送映象
#dd if=/dev/sdX conv=sync,noerror bs=64K | gzip -c | ssh [email protected] dd of=backup.img.gz

5. 儲存磁碟結構資訊,以便解析儲存在映象中的分割槽表。其中最重要的部分是柱大小
#fdisk -l /dev/sdX > /path/to/list_fdisk.info
補充:你可能想和使用和備份硬碟快取一樣容量的塊大小。例如,8M快取對應bs=8192K。本文中提到的64Kb比預設bs=512好,但使用更大的bs=會更快 恢復系統
#gunzip -c /path/to/backup.img.gz | dd of=/dev/sdX
當映象拆分過,使用這樣的命令:
#cat /path/to/backup.img.gz* | gunzip -c | dd of=/dev/sdX

磁碟克隆軟體列表,摘自Wikipedia
Name Developer Licensing Maintained?
AOMEI Backupper AOMEI Technology Free software Yes
Steven Shiau Free software Yes
SubRosaSoft Non-free Yes
Apple Non-free No
FarStone Technology Non-free Yes
Francois Dupoux Free software Yes
GParted developers Free software Yes
Ghost Non-free Yes [4]
TeraByte Unlimited Non-free Yes
Paramount Software Non-free Yes
Hugo Rabson Free software Yes
Szabolcs Szakacsits Free software No [5]
Szabolcs Szakacsits, Per Olofsson and Anton Altaparmakov. Ported to ntfs-3g by Erik Larsson and Jean-Pierre Andre Free software Yes [6]
Thomas Tsai Free software Yes
Francois Dupoux and Franck Ladurelle Free software Yes
PING SysAngel Free software No
chrysocome Free software No
Miguel Angel Alvarez Free software No
Tom Kerremans Free software Yes
unknown Free software Yes

相關推薦

linux基礎3-磁碟和檔案系統相關 LINUX支援哪些檔案系統 linux磁碟分割槽詳解 圖文(fdisk;mkfs)

一 dumpe2fs :    在Linux使用過程中,我們如果要了解檔案系統的配置情況,可以使用dumpe2fs檢視ext2/ext3/ext4格式的檔案系統資訊。 命令格式: dumpe2fs [選項] 裝置 常用選項: -h  僅列出超級塊中的資訊

Linux磁碟分割槽,格式化以及掛載

接下來,我們詳細介紹在Linux下,如何用命令對磁碟進分割槽、格式化以及如何掛載到目錄。   測試環境:VMware Workstation / centos7   操作步驟:     第一步:首先來看看當前虛擬機器的磁碟情況。              以及先前分割槽情況:由下

linux磁碟檢視和分割槽

9月25日任務 4.1 df命令 4.2 du命令 4.3/4.4 磁碟分割槽 df命令 df輸出磁碟檔案系統使用情況: [root@centos ~]# df 檔案系統 1K-塊 已用 可用 已用% 掛載點 /

linux磁碟空間不足導致oracle無法登入的解決方案

問題:​​​​​​oracle突然無法登入成功 原因:發現是磁碟空間不足,而且oracle被關閉了 解決方案如下: 1、確定oracle安裝在哪臺linux機器,並登入 2、檢視磁碟使用情況 : df -h,看看哪個磁碟空間滿了 3、找到沒有用的檔案,並刪掉。

linux磁碟分割槽,格式化和掛載

按照規定,整個硬碟只能有4個主分割槽,包括基本分割槽和擴充套件分割槽。擴充套件分割槽最多隻能有1個,擴充套件分割槽裡可以分出多個任意大小的邏輯分割槽,而基本分割槽不可再分。 我的硬碟有1T,sda1為系統盤,有30G,sda2有100G,sda5為swap分割

Linux磁碟分割槽和目錄的關係

 1、任何一個分割槽都必須掛載到某個目錄下(我安裝雙系統的時候,將一個分割槽掛載在/目錄下); 2、目錄是邏輯上的區分,分割槽是物理上的區分; 3、磁碟Linux分割槽都必須掛載到目錄樹中某個具體的目錄上才能進行讀寫操作(這點在安裝Linux系統的時候,需要你手動選擇掛

Linux 磁碟分割槽和建立檔案系統(基於Ubuntu平臺)

Linux系統中對於檔案系統的存在方式和windows完全不相同,對於Linux來說一切皆檔案的思想是其核心,所以對於Linux下的裝置來說,其所對應的裝置檔案都存放在/dev目錄下,linux下硬碟裝置名為(IDE硬碟為hdx(x為a開始的字元一般一塊硬碟裝置對應一個字母

Linux磁碟分割槽與擴容

虛擬機器增加磁碟進行磁碟分割槽 檢視磁碟情況 [[email protected] /]#df 檢視裝置 [[email protected] /]#ls /dev/sd* 增加磁碟 [[email protected] /]#ls

20151117 Linux磁碟管理(centos 6.5)1.新增硬碟 2.硬碟分割槽 3.格式化硬碟 4.掛載硬碟 5.設定開機自動掛載】

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF                               disklabel Building a new DOS disklabel with disk i

測試linux磁碟的讀寫速率

1) 通過df -h命令檢視磁碟情況 Filesystem            Size  Used Avail Use% Mounted on /dev/sda4             289G   61G  214G  23% / tmpfs            

Linux磁碟加密——luks

Linux下磁碟加密          LUKS(Linux Unified Key Setup)為Linux硬碟加密提供了一種標準,它不僅能通用於不同的Linux發行版本,還支援多使用者/口令。因為它的加密金鑰獨立於口令,所以如果口令失密,我們可以迅速改變口令而無需重新加

Linux磁碟操作筆記

檢視分割槽情況及資料盤名稱 shell > df -lhT 檢視磁碟 shell > fdisk -l 格式化磁碟 shell > mkfs.ext4 /dev/vdb [檢視硬碟UUID] 方法一:shell >

LINUX磁碟IO效能監測分析

     這兩天發現一臺測試用的伺服器經常負載很高,但cpu和記憶體消耗卻很少,很是奇怪,經過診斷髮現是由於大容量的測試資料導致高併發下的磁碟IO消耗比較大,由於快取是小檔案並且數量比較大,所以併發比較高的情況下Io消耗非常大。那怎樣才能快速的定位到併發高是由於磁碟io開銷大呢? 一、用 top 命令中的

Linux磁碟克隆

如果一個機房有多臺伺服器,在一臺上安裝完Linux後,怎樣把這個系統盤克隆到其他磁碟,最簡便的方法就是用Linux dd命令,不需要藉助Ghost之類的第三方程式。況且Ghost對Linux的支援似乎不太好。 使用dd dd是一個簡單,多功能,強大的工具。可以用來把資料按

Linuxxfs磁碟擴容

根據下面磁碟情況根盤只有 8G 大小,所以將磁碟 /dev/vda 分割槽並擴容至根盤  1、新建磁碟分割槽 fdisk /dev/vda 2、更改新分割槽磁碟型別 3、儲存分割槽操作並重啟作業系統 4、檢視新建分割槽 5、格式化分割槽 6、建立新的物

Win7+Ubuntu雙系統結構,Ubuntu克隆至新硬碟,啟動成功 Linux檢視硬碟UUID和修改硬碟UUID(轉)

前言梗概: 750GB 機械硬碟下安裝 Win7 和 Ubuntu雙系統,之前Win7單獨重灌後,將grub引導覆蓋;利用EasyBCD恢復Ubuntu啟動。 最近發現之前Ubuntu分配空間太小,想將其安裝到一個大一點的SSD(固態硬碟)上。 Ubuntu情況如下, /dev/s

Linuxfdisk命令操作磁碟詳解--新增、刪除、轉換分割槽等

linux下fdisk命令操作磁碟詳解--新增、刪除、轉換分割槽等 fdisk 操作硬碟的命令格式如下: [[email protected] beinan]# fdisk 裝置 比如我們通過 fdisk -l 得知 /dev/hda 或者 /dev/sda 裝置;我們如果想再

Linux測試磁碟讀寫速度

 1.測/目錄所在磁碟的純寫速度: time dd if=/dev/zero bs=1024 count=1000000 of=/1Gb.file 2.測/目錄所在磁碟的純讀速度: time dd if=/1Gb.file bs=64k |dd of=/dev/null

Linuxjava獲取CPU、記憶體、磁碟IO、網路頻寬使用率

原文地址:https://www.cnblogs.com/gisblogs/p/3985393.html 一、CPU 使用proc檔案系統,"proc檔案系統是一個偽檔案系統,它只存在記憶體當中,而不佔用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。使用者和應用程式可以通過p

Linux安裝jdk和Linux克隆出現的問題

關於克隆後的問題和配置 ——直接修改:/etc/sysconfig/network-script/ifcfg-eth0(可能沒有這個) ——刪掉:UUID HWADDR(可能沒有這個) ——配置靜態地址 ——然後 ——rm -rf /etc/udev/rules.d/70-persist