專題六 - 以 rootfs 備份、復原系統,以 grub4dos 處理多重選單
上次更新日期 2019/07/08
前一章節我們談到了 rootfs 這個好用的東西!另外也提到了實體機器可能會透過這種方式來進行備份、復原整體裸機環境的設計! 這節課,我們就實際透過 rootfs 來處理備份復原的情境,同時進行一些比較底層作業系統的處置方案,讓未來管理系統變得更簡單。 此外,如同資傳系的教室環境,我們都有多重作業系統的環境,那麼如何建置這種環境?如何處理子選單呢?如何做不同平台的選單處理呢? 這裡就讓我們繼續看下去!
- 磁碟容量擴增與 Linux LVM 的利用
- MSDOS 分割表的多重作業系統安裝流程以及 grub4dos 的選單製作
- 使用 rootfs 搭配 partclone 進行備份、復原的任務
- 參考資料
磁碟容量擴增與 Linux LVM 的利用
磁碟容量不足的時候,在實體機器的架構下,我們就使用更高容量的磁碟來『抽換』即可!雖然這個動作會花費很多很多時間與精力... 但是在虛擬機器的情況下呢?似乎不太需要啊~因為我們可以『直接增加磁碟容量』呢!
- 虛擬機器容量不足的解決方案
- 當初給予虛擬機器大約 40G 的容量,現在可能不夠用了!在 Linux 的環境架構下,如何進行容量的放大? 實體機大多使用直接增加磁碟的方案,虛擬機器並沒有實體磁碟~此時,可以透過放大磁碟檔案,就可以讓整顆硬碟的容量變大!
# 1. 建立測試用的磁碟環境: # cd /vmdisk # vim create_vm_settings.sh ... vmnames="lvmsystem" ... # sh create_vm_settings.sh
# 2. 更改 lvmsystem.img 由 snapshot 的模式改成 original 的模式! # qemu-img info lvmsystem.img image: lvmsystem.img file format: qcow2 virtual size: 40G (42949672960 bytes) disk size: 196K cluster_size: 65536 backing file: /vmdisk/demo.img <==使用的是 backing file!不要! Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false # cp /vmdisk/demo.img lvmsystem.img <==會複製稍久 # qemu-img info lvmsystem.img image: lvmsystem.img file format: qcow2 virtual size: 40G (42949672960 bytes) <==至於原本則是 40G 喔! disk size: 1.3G <==原始磁碟格式,容量會比較大! cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false
# 3. 在不變動檔案系統的情況下,讓磁碟容量增加成為 60G 看看 # qemu-img resize --shrink lvmsystem.img 60G Image resized. # qemu-img info lvmsystem.img image: lvmsystem.img file format: qcow2 virtual size: 60G (64424509440 bytes) <==容量就會放大囉! disk size: 1.3G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false
# 4. 啟動這個系統並且登入後,嘗試處理,將增加的容量整個以 LVM 的格式,掛載到 /data 中 # virsh create lvmsystem.xml # tail -f /var/log/messages <==用這個方法抓取系統的 IP May 24 10:42:33 myhostname dhcpd: DHCPDISCOVER from 52:54:00:ed:0e:cf via mybr0 May 24 10:42:34 myhostname dhcpd: DHCPOFFER on 192.168.19.15 to 52:54:00:ed:0e:cf via mybr0 May 24 10:42:34 myhostname dhcpd: DHCPREQUEST for 192.168.19.15 (192.168.19.254) from 52:54:00:ed:0e:cf via mybr0 May 24 10:42:34 myhostname dhcpd: DHCPACK on 192.168.19.15 to 52:54:00:ed:0e:cf via mybr0 # ssh 192.168.19.15 # 接下來的動作,就是在這個新的 VM 環境底下喔! # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 252:0 0 60G 0 disk <==容量是有放大的! ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2 0 39G 0 part ├─centos-root 253:0 0 37G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] # fdisk -l Disk /dev/vda: 64.4 GB, 64424509440 bytes, 125829120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O 大小 (最小/最佳化):512 位元組 / 512 位元組 Disk label type: dos 磁碟識別碼:0x000c0cd4 所用裝置 開機 開始 結束 區塊 識別號 系統 /dev/vda1 * 2048 2099199 1048576 83 Linux /dev/vda2 2099200 83886079 40893440 8e Linux LVM # fdisk /dev/vda # 將所有的容量設計為 primary ,並且提供給 /dev/vda3 使用 # fdisk -l /dev/vda Disk /dev/vda: 64.4 GB, 64424509440 bytes, 125829120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O 大小 (最小/最佳化):512 位元組 / 512 位元組 Disk label type: dos 磁碟識別碼:0x000c0cd4 所用裝置 開機 開始 結束 區塊 識別號 系統 /dev/vda1 * 2048 2099199 1048576 83 Linux /dev/vda2 2099200 83886079 40893440 8e Linux LVM /dev/vda3 83886080 125829119 20971520 8e Linux LVM <==我需要這個喔! # pvcreate /dev/vda3 # vgcreate mylvm /dev/vda3 # vgdisplay mylvm --- Volume group --- VG Name mylvm System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 20.00 GiB PE Size 4.00 MiB Total PE 5119 <==這個多個! Alloc PE / Size 0 / 0 Free PE / Size 5119 / 20.00 GiB VG UUID AqtC3w-4ISG-ajKq-IuyM-nofs-H3EB-F8cp5l # lvcreate -n varlv -l 5119 mylvm # lvdisplay /dev/mylvm/varlv --- Logical volume --- LV Path /dev/mylvm/varlv LV Name varlv VG Name mylvm LV UUID 9D9M7B-s3U9-lvtq-ZMf0-5PDU-dIXn-dYXWYF LV Write Access read/write LV Creation host, time localhost.localdomain, 2019-05-24 10:50:28 +0800 LV Status available # open 0 LV Size 20.00 GiB Current LE 5119 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 # mkfs.xfs /dev/mylvm/varlv # blkid /dev/mylvm/varlv /dev/mylvm/varlv: UUID="ca6d9578-9240-427d-9c35-bc0ed997a251" TYPE="xfs" # vim /etc/fstab /dev/mylvm/varlv /data xfs defaults 0 0 # mkdir /data # mount -a # df -Th /data 檔案系統 類型 容量 已用 可用 已用% 掛載點 /dev/mapper/mylvm-varlv xfs 20G 33M 20G 1% /data # mkdir /data/testing # cp -a /etc /root /data/testing - 若還需要將資料『固定放置於某個目錄』時,可以將該目錄重新設計掛載成為 LVM 的格式 (盡量不要使用到系統槽),
然後透過 LVM 的容量放大行為,就可以讓該目錄持續不斷的長大了!不過,這一開始就要好好的規劃!不然,未來還是得要重新格式化製作 LVM!
假設上面的 lvmsystem.img 你還要放大容量成為 100G 呢?該如何處理?
# 1. 關閉 lvmsystem 這個虛擬機之後,增加容量成為 100G,先假設你在 VM 內,可以 poweroff 喔! # poweroff Connection to 192.168.19.15 closed by remote host. Connection to 192.168.19.15 closed. # 要注意!不要在實體機下達 poweroff !不然就糗了! # virsh list # 確認這個系統已經不在使用中! # lsof lvmsystem.img # 確認目前沒有任何程序有動到 lvmsystem.img 這個檔案! # qemu-img resize --shrink lvmsystem.img 100G # qemu-img info lvmsystem.img image: lvmsystem.img file format: qcow2 virtual size: 100G (107374182400 bytes) <==再次變大! disk size: 1.4G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false
這樣,你的 /data 目錄,其實就有點像可以無限制放大的一個目錄所在囉!
# 2. 開始重新啟動 lvmsystem 虛擬機器,登入後將增加的容量再次的放入 /data 中! # virsh create lvmsystem.xml # lsof lvmsystem.img COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME qemu-kvm 13861 qemu 20u REG 259,2 1485899328 28861760 lvmsystem.img qemu-kvm 13861 qemu 21u REG 259,2 1485899328 28861760 lvmsystem.img # ssh 192.168.19.15 # 接下來就在 VM 裡面工作! # fdisk /dev/vda # 將所有容量放入到 extended 當中後,將所有容量都給予一個 logical 分割槽 # fdisk -l /dev/vda Disk /dev/vda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O 大小 (最小/最佳化):512 位元組 / 512 位元組 Disk label type: dos 磁碟識別碼:0x000c0cd4 所用裝置 開機 開始 結束 區塊 識別號 系統 /dev/vda1 * 2048 2099199 1048576 83 Linux /dev/vda2 2099200 83886079 40893440 8e Linux LVM /dev/vda3 83886080 125829119 20971520 8e Linux LVM /dev/vda4 125829120 209715199 41943040 5 Extended /dev/vda5 125831168 209715199 41942016 8e Linux LVM <==就是要有他! # pvcreate /dev/vda5 # vgextend mylvm /dev/vda5 # vgdisplay mylvm --- Volume group --- VG Name mylvm System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 59.99 GiB PE Size 4.00 MiB Total PE 15358 Alloc PE / Size 5119 / 20.00 GiB Free PE / Size 10239 / 40.00 GiB VG UUID AqtC3w-4ISG-ajKq-IuyM-nofs-H3EB-F8cp5l # lvresize /dev/mylvm/varlv -l +10239 # lvdisplay /dev/mylvm/varlv --- Logical volume --- LV Path /dev/mylvm/varlv LV Name varlv VG Name mylvm LV UUID 9D9M7B-s3U9-lvtq-ZMf0-5PDU-dIXn-dYXWYF LV Write Access read/write LV Creation host, time localhost.localdomain, 2019-05-24 10:50:28 +0800 LV Status available # open 1 LV Size 59.99 GiB Current LE 15358 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 # xfs_growfs /data # df -Th /data 檔案系統 類型 容量 已用 可用 已用% 掛載點 /dev/mapper/mylvm-varlv xfs 60G 69M 60G 1% /data # ll /data/testing/ drwxr-xr-x. 79 root root 8192 5月 24 10:52 etc dr-xr-x---. 4 root root 196 5月 24 10:52 root
即使如此,你應該還是會覺得很怪異!那就是,我們最終不是讓新增加的容量通通變成了 extended 的容量了?所以, 那 4 個 primary + extended 的限制已經飽和了!未來如果再增加容量,可能就會變成無法新增!怎辦?
其實你可以抄下 logical 的範圍,將 extended 刪除後,重建 extended 成為最大,然後再增加兩個 logical,這樣就好。 只是...沒有經驗的管理員,會很害怕失敗啊!其實...鳥哥也很害怕!那怎辦?可能得要重頭規劃系統喔!安裝時,處理分割表成為 GPT 的格式即可!不過,可能得要重新安裝才行啊!
MSDOS 分割表的多重作業系統安裝流程以及 grub4dos 的選單製作
一般知道 Linux / Windows 安裝流程的朋友,都會跟你說,要先安裝 windows 在安裝 Linux,這樣 Linux 才能接管開機管理程式。 但若是以本系的教學用教室環境來說,我們的系統安裝了多重作業系統,包括管理用 Linux 界面、上課用 windows 界面以及考試用 windows 界面等。 因為有多個系統,所以我們通常使用一個小型的檔案系統來管理開機選單。因此,使用的環境就是:
- 一個小小的大約佔用 5G 容量的 Linux,重點在管理開機選單
- 大約 100G 的 windows,上課專用的
- 大約 30G 的 windows,考試環境專用的。
現在,就讓我們來完成這一個小小的案例吧!
- 建立所需要的虛擬環境,以及第一個 Linux 管理系統:
- 先進入 /vmdisk 後,建立一個大約 135G 容量的虛擬磁碟系統
# 1. 先建立好 XML 的環境吧: # vim /vmdisk/create_vm_settings.sh ..... vmnames="dicos" ... # sh create_vm_settings.sh # qemu-img create -f qcow2 dicos.img 135G # ll dicos.* -rw-r--r--. 1 root root 198768 5月 26 22:17 dicos.img -rw-r--r--. 1 root root 2612 5月 26 22:17 dicos.xml # qemu-img info dicos.img image: dicos.img file format: qcow2 virtual size: 135G (144955146240 bytes) disk size: 196K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false # 請確認 (1)容量與 (2)是否為原始磁碟格式!
# 2. 修改 XML 檔案,讓光碟機可以進行開機行為 # vim dicos.xml ..... <disk type="file" device="cdrom"> <driver name="qemu" type="raw"/> <source file="/vmdisk/iso/CentOS-7-x86_64-DVD-1810.iso"/> <target dev="hda" bus="ide"/> <readonly/> </disk> ..... # virsh create dicos.xml - 接下來,請在 spice 的環境下,將 CentOS 安裝妥當!大概需要注意的僅有:
- 選擇中文-台灣語系
- 選擇『最小型安裝』,但是增加『相容性函式庫』、『開發工具』、『系統管理工具』等
- 安裝目的地,使用『標準分割』,不要 swap,不要 /boot,只需要 / 大約 5G,且為 EXT4 檔案系統
- 關閉 KDUMP 吧!
- 在網路與主機名稱的部份,直接啟用網路吧!
- root 密碼以及你的個人帳號,就自由設定,但是不可以太簡單!
- 完成並且重新開機進入這個小型 Linux 管理系統,進行全系統升級,並且安裝需要的軟體:
# yum -y update # yum install net-tools bash-completion vim-enhanced tcpdump bind-utils bridge-utils iptables-services # fdisk /dev/vda # 最終需要切出來 windows 也需要安裝的分割槽即可!一定要給予 System ID 為 NTFS 才行! # fdisk -l /dev/vda Disk /dev/vda: 145.0 GB, 144955146240 bytes, 283115520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O 大小 (最小/最佳化):512 位元組 / 512 位元組 Disk label type: dos 磁碟識別碼:0x000c07c2 所用裝置 開機 開始 結束 區塊 識別號 系統 /dev/vda1 2048 10487807 5242880 83 Linux /dev/vda2 10487808 220203007 104857600 7 HPFS/NTFS/exFAT <==這是上課用的 windows 10 /dev/vda3 220203008 283115519 31456256 7 HPFS/NTFS/exFAT <==考試才會用到的系統
然後再次的在確認沒有任何怪異的問題之後,就直接關機,這樣就完成第一個系統了。
- 先進入 /vmdisk 後,建立一個大約 135G 容量的虛擬磁碟系統
- 建立平時上課用的 Windows 10 系統:
- 目前 (2019/05) 使用的最新 windows 為 1809 版本,請從校內官網下載此版本,我們預計作為一個測試用的環境,
所以安裝完畢後,請不要開啟!直接安裝好就好。另外,也得下載 windows 專用的 virtio driver 才行!
所以,前驅軟體我們需要的有:
- Windows 10 ISO (KSU FTP)
- Virtio for windows (search here)
- 開始修改 xml 檔案,讓我們可以使用 windows 10 的 ISO 來進行安裝行為:
# 1. 修改 dicos.xml 檔案內容: # vim /vmdisk/dicos.xml <disk type="file" device="cdrom"> <driver name="qemu" type="raw"/> <source file="/vmdisk/iso/Win10_1809_64.iso"/> <target dev="hda" bus="ide"/> <readonly/> </disk>
# 2. 啟動 dicos,不過你得要留意,開機時,大概只有數秒鐘按下 [enter] 來進入 windows 安裝喔! # virsh create dicos.xml - 進入安裝程序後,你可以依序這樣選擇:
- 確認安裝的語言,然後『下一步』
- 按下『立即安裝』後,開始程序
- 選擇『Windows 10 專業版』這一個版本
- 接受授權條款後,下一步
- 使用『自訂:只安裝 Windows』這個項目
- 接下來,你會看到『找不到任何磁碟機』的畫面!不要懷疑!確實沒有磁碟機。
- 抽換光碟片,這個就需要在實體機器進行了!指令也很簡單:
# virsh attach-disk dicos /vmdisk/iso/virtio-win-0.1.171.iso hda --type cdrom --mode readonly
此時,請回到 spice 畫面,然後按下『載入驅動程式』的按鈕,再按下『瀏覽』就可以看到 D 槽了! 光碟標題會是『virtio-win-0.1....』這樣。最重要的是底下這幾個驅動程式要安裝:- amd64/win10 --> Red Hat VirtIO SCSI controller
- NetKVM/win10/amd64 --> Red Hat VirtIO Ethernet Adapter
- qemufwcfg/win10/amd64 --> QEMU FWCfg Device
- qxldod/win10/amd64 --> Red Hat QXL controller
- viorng/win10/amd64 --> VirtIO RNG Device
# virsh attach-disk dicos /vmdisk/iso/Win10_1809_64.iso hda --type cdrom --mode readonly
- 然後,你應該就會看到剛剛建立成功的 3 個分割槽,在 100G 左右的那個分割槽上面點一下,然後按『下一步』之後, 系統就開始自動安裝了!接下來就是持續不斷的等待而已。
- 再次的登入 windows 系統,比較重要的部份,在建立帳號的那個地方!大致上的本機帳號建置流程:
- 選擇左下角『離線帳戶』
- 不要使用 microsoft 帳戶,所以選擇『否』
- 開始輸入你的帳號與密碼 (個人使用,可以不輸入密碼喔!)
- 紀錄個人歷程可以選『否』,然後接受隱私權設定,就可以順利登入了!
- 目前 (2019/05) 使用的最新 windows 為 1809 版本,請從校內官網下載此版本,我們預計作為一個測試用的環境,
所以安裝完畢後,請不要開啟!直接安裝好就好。另外,也得下載 windows 專用的 virtio driver 才行!
所以,前驅軟體我們需要的有:
- 建立第二套 Windows 系統的手段
- 要先將存在的 windows 分割槽隱藏!基本上, windows 會找到前一個安裝好的 windows 系統作為開機管理主系統,
然後將之後安裝的系統的控制權,通通交給前一個!所以,如果第一個 windows 系統沒有隱藏的話,後來安裝的 windows
系統,就不會在 boot sector 上面安裝開機管理程式了。選擇了第一個 windows 之後,才會出現不同的選單啊!
所以,當然就需要將第一個 windows 隱藏了!隱藏的方法很簡單,就是製作一個 windows 不認識的 system id 即可。
# 1. 開機進入 rootfs 的環境 # vim /vmdisk/dicos.xml <os> <type arch="x86_64">hvm</type> <boot dev="network"/> <boot dev="cdrom"/> <boot dev="hd"/> </os> # virsh create dicos.xml
接下來,就會重新進入 windows 10 的安裝畫面程序中!
# 2. 開始使用 spice 的環境,確認有進入 rootfs 的系統,然後再透過 ssh 的方式連線到 rootfs 系統內操作: # fdisk /dev/vda # 將 /dev/vda2 的 system ID 更改為 93 # 同時將 /dev/vda2 的 boot 取消掉喔! # fdisk -l /dev/vda Disk /dev/vda: 145.0 GB, 144955146240 bytes, 283115520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O 大小 (最小/最佳化):512 位元組 / 512 位元組 Disk label type: dos 磁碟識別碼:0x000c07c2 所用裝置 開機 開始 結束 區塊 識別號 系統 /dev/vda1 2048 10487807 5242880 83 Linux /dev/vda2 10487808 220203007 104857600 93 Amoeba <==這裡要變成這樣! /dev/vda3 220203008 283115519 31456256 7 HPFS/NTFS/exFAT # poweroff
# 3. 再次更新 dicos.xml,設計成為用 CD 開機囉! # vim /vmdisk/dicos.xml <os> <type arch="x86_64">hvm</type> <!--boot dev="network"/--> <boot dev="cdrom"/> <boot dev="hd"/> </os> # virsh create dicos.xml - 基本上,windows 常見的 partition system id 大致上有:
- 07: NTFS 正常的系統
- 17: 隱藏的 NTFS 檔案系統
- 27: 給開發商使用的特別檔案系統
- 93: 很怪的,windows 不認識的檔案系統
- 依據前一套 windows 的安裝流程,持續進行安裝!只是,在處理安裝的磁碟畫面時,得要選擇 30G 的那一個分割槽才行! 接下來就持續安裝吧!同樣的,安裝完畢且可以登入後,就直接關機吧!
- 要先將存在的 windows 分割槽隱藏!基本上, windows 會找到前一個安裝好的 windows 系統作為開機管理主系統,
然後將之後安裝的系統的控制權,通通交給前一個!所以,如果第一個 windows 系統沒有隱藏的話,後來安裝的 windows
系統,就不會在 boot sector 上面安裝開機管理程式了。選擇了第一個 windows 之後,才會出現不同的選單啊!
所以,當然就需要將第一個 windows 隱藏了!隱藏的方法很簡單,就是製作一個 windows 不認識的 system id 即可。
- 使用 rootfs 救援開機選單:
- 接下來,你需要重新處理整個系統的開機選單~當然,MBR 就得需要重新安裝才行!但是,因為 MBR 已經被第二個 windows 接管了,
因此,你可以使用:
- 原版 CentOS 光碟,進入救援系統去重新處理選單與重裝 grub2
- 使用 rootfs 進入管理系統去重新處理選單與重裝 grub2
# vim /vmdisk/dicos.xml <os> <type arch="x86_64">hvm</type> <boot dev="network"/> <boot dev="cdrom"/> <boot dev="hd"/> </os> # virsh create dicos.xml
接下來,就透過 ssh 或者是直接在 spice 的畫面中,直接處理 rootfs 系統的相關行為囉! - 進入 rootfs 之後,我們得要先將原本的系統掛載回來~可以簡單的使用底下的指令來處理即可:
mkdir /sysroot mount /dev/vda1 /sysroot mount --bind /proc /sysroot/proc mount --bind /sys /sysroot/sys mount --bind /dev /sysroot/dev chroot /sysroot/
這時就進入了 chroot 的環境,也就是原本的第一個 CentOS 系統中。首先處理 partition 的類型,開放原本第一套 windows 的 partition system id 變成正常:# fdisk /dev/vda # 將原本的 93 ID 改回 7 ID 喔! # fdisk -l /dev/vda Disk /dev/vda: 145.0 GB, 144955146240 bytes, 283115520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O 大小 (最小/最佳化):512 位元組 / 512 位元組 Disk label type: dos 磁碟識別碼:0x000c07c2 所用裝置 開機 開始 結束 區塊 識別號 系統 /dev/vda1 2048 10487807 5242880 83 Linux /dev/vda2 10487808 220203007 104857600 7 HPFS/NTFS/exFAT /dev/vda3 220203008 283115519 31456256 7 HPFS/NTFS/exFAT
- 接下來請處理開機的選單。我們需要注意的:
- 要啟用的那個 windows 系統,必須要設定 (1)不隱藏分割 (2)設定為啟動 (boot flag)
- 不啟用的那個 windows 系統,必須要設定 (1)隱藏分割 (2)設定為不啟動
# vim /etc/grub.d/40_custom #!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry "Windows 10 - Class" { insmod chain insmod ntfs parttool hd0,msdos2 hidden- boot+ parttool hd0,msdos3 hidden+ boot- set root='hd0,msdos2' chainloader +1 } menuentry "Windows 10 - Exam" { insmod chain insmod ntfs parttool hd0,msdos2 hidden+ boot- parttool hd0,msdos3 hidden- boot+ set root='hd0,msdos3' chainloader +1 }
之後,就可以重建 grub 選單,並且重新安裝 grub 到你的 MBR 囉:
# 另外,也增加開機選單的停留時間,原本只有 5 秒,我們改到 30 秒,方便我們的連線處理延遲 # vim /etc/default/grub GRUB_TIMEOUT=30 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="rhgb quiet" GRUB_DISABLE_RECOVERY="true"# grub2-mkconfig -o /boot/grub2/grub.cfg # grub2-install /dev/vda # poweroff
- 將光碟移除,並且將網路開機功能暫時取消,純粹用硬碟開機,就會出現各項選單囉!接下來就是一個一個的系統去測試開機! 三個系統都可以各自開機成功!那就是 OK 啦!正常的情況下,重新開機後,應該就會出現如下的選單才對:
- 接下來,你需要重新處理整個系統的開機選單~當然,MBR 就得需要重新安裝才行!但是,因為 MBR 已經被第二個 windows 接管了,
因此,你可以使用:
- 使用 grub4dos 製作線上選單系統:
- 你應該會發現到一件事情,那就是,我們的 grub 選單可以在 Linux 管理系統上面進行處理,所以基本上,
只要用本機磁碟開機,那麼就可以進入 30 秒的選單挑選模式。問題是,我們得要移除網路的 iPXE 選單耶!
如果使用 iPXE 選單的話,那就得要進入兩層選單:
- 一個是 iPXE 的選單,可以選擇進入 rootfs 或選擇利用虛擬磁碟開機
- 要先選擇虛擬磁碟開機後,才能夠挑選不同的 windows 開機。
- iPXE 搭配 grub4dos 的相關參考資料,可以參考底下的連結:
http://ipxe.org/appnote/boot_local_drive_with_grub4dos
http://grub4dos.chenall.net/
我們主要從官網下載 (2019/05) 最新的版本,為: grub4dos-0.4.6a-2019-05-12.7z。 - 因為下載的預編譯版本使用 .7z 作為壓縮軟體,因此,我們得要安裝好 7z 的壓縮軟體才行。
# 1. 先安裝好 p7zip 這個支援的壓縮軟體: # yum --enablerepo=epel install p7zip # 開始下載 grub4dos # mkdir /vmdisk/rootfs/grub4dos # cd /vmdisk/rootfs/grub4dos # wget http://dl.grub4dos.chenall.net/grub4dos-0.4.6a-2019-05-12.7z
# 2. 開始在 /var/www/html/ipxe 底下進行解壓縮: # mkdir /var/www/html/ipxe/grub # cd /var/www/html/ipxe/grub # 7za e /vmdisk/rootfs/grub4dos/grub4dos-0.4.6a-2019-05-12.7z - 開始設定:要注意的是, grub4dos 使用的是 grub version 0.x 版,與目前的 version 2.0 是不一樣的!
同時,磁碟代號完全不一樣!兩者的差異是這樣的:
- Linux / Grub4dos / Grub2
- (/dev/vda) / (hd0) / (hd0)
- (/dev/vda1) / (hd0,0) / (hd0,1)
- (/dev/vda2) / (hd0,1) / (hd0,2)
# 1. 處理一下 /var/www/html/ipxe/menu.php # vim /var/www/html/ipxe/menu.php ... :start menu iPXE ${version} Boot Menu (ip ${net0/ip}, mac ${net0/mac}) item --gap -- ------------------------- Select your OS---------------------------------- item diskless Go To diskless item local Go To Local HD booting item win10class Go To Windows 10 Class item win10exam Go To Windows 10 Exam ... :win10class echo Go To Windows 10 class set base-url http://${net0/gateway}/ipxe/grub chain ${base-url}/grub.exe --config-file=" hide (hd0,2); unhide (hd0,1); rootnoverify (hd0,1); chainloader +1; makeactive" || goto failed :win10exam echo Go To Windows 10 Exam set base-url http://${net0/gateway}/ipxe/grub chain ${base-url}/grub.exe --config-file=" hide (hd0,1); unhide (hd0,2); rootnoverify (hd0,2); chainloader +1; makeactive" || goto failed
再次的重新開機,就會出現如下的模樣了:
- 你應該會發現到一件事情,那就是,我們的 grub 選單可以在 Linux 管理系統上面進行處理,所以基本上,
只要用本機磁碟開機,那麼就可以進入 30 秒的選單挑選模式。問題是,我們得要移除網路的 iPXE 選單耶!
如果使用 iPXE 選單的話,那就得要進入兩層選單:
透過這一大串的流程下來,我們的系統就可以擁有多個可以獨立執行的作業系統環境,也不用擔心考試的環境被影響!同時, 也可以直接透過 iPXE 搭配 grub4dos 的選單功能,進行一大堆的設定!相當的輕鬆愉快!如果你還有其他的想法, 甚至可以讓 iPXE 直接接管你的開機選單!
此外,如果這部主機搬移到其他沒有線上 iPXE 的選單處,同樣可以透過自己的 Linux 管理系統進行選單的管理! 有需要進行修改時,也能夠直接進入 Linux 系統去處理!對於熟悉 Linux 的網管人員來說,這樣的系統在管理上是相當方便的!
使用 rootfs 搭配 partclone 進行備份、復原的任務
在虛擬機器上面,我們可以簡單的透過複製磁碟映像檔來進行資料的移動,這種方式非常的快速有效!但是,其實一般的電腦教室, 大部分還是以實體機器處理相關的教學目的為主。因為虛擬機器的 Windows 桌面...確實效能方面有待加強 (這裡指的是圖形界面的顯示效果)
因此,當你在第一部實體機器上面,按照上面的流程建置好所有所需要的 Linux / Windows 上課 / Windows 考試的環境後, 能不能將這些系統,以類似虛擬機器的複製磁碟檔案的方式,完整的複製所需要的各項檔案系統資料呢?其實好像是沒問題的! 我們可以透過所謂的 partclone 來處理喔!
- 修改 rootfs 檔案系統,加入 nfs-utils 工具組:
- 當初製作 rootfs 的根目錄檔案系統時,忘記將 NFS 的工具組加進去了!為了避免未來每次都得要重新安裝 NFS 工具組, 所以,我們需要將 nfs-utils 這個軟體直接加入在 rootfs 根目錄當中。
- 直接前往 /vmdisk/rootfs/filesystem 目錄,然後這樣做即可:
# 1. 先安裝 nfs-utils 這個軟體吧! # yum --installroot /vmdisk/rootfs/filesystem/ install nfs-utils # yum --installroot /vmdisk/rootfs/filesystem/ clean all
簡單快速的搞定 rootfs 根目錄的重建!
# 2. 開始打包 rootfs 的根目錄系統 # cd /vmdisk/rootfs # sh create.initramfs.sh # ll initramfs.gz* -rw-r--r--. 1 root root 263825132 5月 21 15:51 initramfs.gz-20190521 -rw-r--r--. 1 root root 265351595 5月 28 08:53 initramfs.gz-20190528
# 3. 開始移動到 /var/www/html/ipxe 底下,並且重新連結到正確的 initramfs 檔案: # cp initramfs.gz-20190528 /var/www/html/ipxe/ # cd /var/www/html/ipxe/ # rm initramfs.gz; ln -s initramfs.gz-20190528 initramfs.gz
- 使用 rootfs 的 partclone 進行備份的行為
- 我們想要讓剛剛這個系統的磁碟進行備份的行為!最佳的備份方法,就是完整的備份下來! 這個可以透過國家高速網路中心開發的 partclone 來處理。上個專題我們處理的 rootfs 裡面預先安裝好了 partclone 了! 因此,我們可以將 VM 關機後,改以 rootfs 開機。
- 不過,最好將備份的資料放置到 server 統一管理比較好!既然是 Linux base 的系統,我們就以 NFS 開放 /vmdisk/backups/ 目錄分享,
來讓內部虛擬機器可以使用我們的檔案系統吧!
# 1. 先建立目錄,並且處理設定檔: # mkdir /vmdisk/backups # vim /etc/exports.d/backup.exports <==副檔名一定要 .exports 喔 /vmdisk/backups 127.0.0.0/8(rw,no_root_squash,async,insecure) 192.168.19.0/24(rw,no_root_squash,async,insecure)
# 2. 開始啟動 NFS server ,同時自我測試觀察一下: # systemctl start nfs-server # systemctl enable nfs-server # showmount -e localhost Export list for localhost: /vmdisk/backups 192.168.19.0/24,127.0.0.0/8
# 3. 自我測試掛載看看有沒有問題,同時看一下掛載參數囉! # mount -t nfs 127.0.0.1:/vmdisk/backups /mnt # nfsstat -m Flags: rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1 # umount /mnt - 接下來就是處理用戶端電腦的備份工作!請修改開機選單,讓 dicos 可以在 rootfs 裡面啟動才好:
# 1. 確認你的 XML 裡面, network 開機是最優先的情況: # vim /vmdisk/dicos.xml <os> <type arch="x86_64">hvm</type> <boot dev="network"/> <boot dev="cdrom"/> <boot dev="hd"/> </os>
雖然 xz 的壓縮比更好,而且可以透過 -T 0 來啟用多個 CPU 核心進行壓縮,速度快又好!但是,鳥哥測試過幾次, 發現到 xz 用多執行緒壓縮過後,常常會有無法給後續解壓縮的情況發生!這個問題如何產生鳥哥還搞不太清楚! 另外,通常 gzip 的壓縮、解壓縮的效能比較好,所以,最終我們使用了 gzip 進行簡易壓縮了。
# 2. 啟動虛擬機器,並且觀察確定 IP: # virsh create /vmdisk/dicos.xml # tail -f /var/log/messages # ssh 192.168.19.18
# 3. 開始在 rootfs 的環境下,開始掛載來自 Server 的 NFS 檔案系統: # showmount -e 192.168.19.254 Export list for 192.168.19.254: /vmdisk/backups 192.168.19.0/24,127.0.0.0/8 # mount -t nfs 192.168.19.254:/vmdisk/backups /mnt # df -Th 檔案系統 類型 容量 已用 可用 已用% 掛載點 tmpfs tmpfs 1.5G 1.1G 465M 70% / devtmpfs devtmpfs 1.4G 0 1.4G 0% /dev tmpfs tmpfs 1.5G 0 1.5G 0% /dev/shm tmpfs tmpfs 1.5G 8.6M 1.5G 1% /run tmpfs tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup tmpfs tmpfs 296M 0 296M 0% /run/user/0 192.168.19.254:/vmdisk/backups nfs4 358G 67G 292G 19% /mnt
# 4. 開始備份 Linux 小系統 # blkid /dev/vda1: UUID="e5a9633d-0730-4485-9424-aa93631ecc32" TYPE="ext4" /dev/vda2: UUID="40668E96668E8C7A" TYPE="ntfs" /dev/vda3: UUID="4CB65C66B65C5316" TYPE="ntfs" # mkdir /mnt/msdos # partclone.ext4 -c -d -s /dev/vda1 -I | gzip -c -1 > /mnt/msdos/dicos.linux.vda1.img.gz Partclone v0.3.11 http://partclone.org 開始備份 裝置 (/dev/vda1) 到 印象檔 (-) Reading Super Block Calculating bitmap... Please wait... 經過:00:00:01, 剩餘: 00:00:00, 完成:100.00% 全部時間:00:00:01, 100.00% completed! done! 檔案系統: EXTFS Device size: 5.4 GB = 1310720 Blocks Space in use: 2.0 GB = 495901 Blocks Free Space: 3.3 GB = 814819 Blocks 裝置區塊大小: 4096 Byte 經過:00:01:04, 剩餘: 00:00:00, 完成:100.00%, 速率: 1.90GB/min current block: 1178113, total block: 1310720, Complete: 100.00% 全部時間:00:01:04, 平均速率: 1.9GB/min, 100.00% completed! Syncing... OK! 備份 裝置 (/dev/vda1) 到 印象檔 (-) 完成 Cloned successfully. - 繼續,讓我們開始備份其他的兩個容量挺大的 windows 系統吧:
# 1. 開始備份上課用系統 # partclone.ntfs -c -d -s /dev/vda2 -I | gzip -c -1 > /mnt/msdos/dicos.win10class.vda2.img.gz Partclone v0.3.11 http://partclone.org 開始備份 裝置 (/dev/vda2) 到 印象檔 (-) Reading Super Block Calculating bitmap... Please wait... 經過:00:00:01, 剩餘: 00:00:00, 完成:100.00% 全部時間:00:00:01, 100.00% completed! done! 檔案系統: NTFS Device size: 107.4 GB = 26214399 Blocks Space in use: 12.0 GB = 2931565 Blocks Free Space: 95.4 GB = 23282834 Blocks 裝置區塊大小: 4096 Byte 經過:00:04:54, 剩餘: 00:00:00, 完成:100.00%, 速率: 2.45GB/min current block: 2986735, total block: 26214399, Complete: 100.00% 全部時間:00:04:54, 平均速率: 2.5GB/min, 100.00% completed! Syncing... OK! 備份 裝置 (/dev/vda2) 到 印象檔 (-) 完成 Cloned successfully. # partclone.ntfs -c -d -s /dev/vda3 -I | gzip -c -1 > /mnt/msdos/dicos.win10exam.vda3.img.gz Partclone v0.3.11 http://partclone.org 開始備份 裝置 (/dev/vda3) 到 印象檔 (-) Reading Super Block Calculating bitmap... Please wait... 經過:00:00:01, 剩餘: 00:00:00, 完成:100.00% 全部時間:00:00:01, 100.00% completed! done! 檔案系統: NTFS Device size: 32.2 GB = 7864063 Blocks Space in use: 11.3 GB = 2768388 Blocks Free Space: 20.9 GB = 5095675 Blocks 裝置區塊大小: 4096 Byte 經過:00:04:30, 剩餘: 00:00:00, 完成:100.00%, 速率: 2.52GB/min current block: 2832516, total block: 7864063, Complete: 100.00% 全部時間:00:04:30, 平均速率: 2.5GB/min, 100.00% completed! Syncing... OK! 備份 裝置 (/dev/vda3) 到 印象檔 (-) 完成 Cloned successfully. # ll /mnt/msdos/ -rw-r--r-- 1 root root 792571696 5月 28 14:34 dicos.linux.vda1.img.gz -rw-r--r-- 1 root root 5492751240 5月 28 14:43 dicos.win10class.vda2.img.gz -rw-r--r-- 1 root root 4855172840 5月 28 14:48 dicos.win10exam.vda3.img.gz
這樣,我們就將整個機器的檔案系備份下來了! - 嘗試備份 partition table 以及 MBR 的資訊,還有額外的分割資訊部份,
我們知道 MBR 以及 partition table 都集中在第一個磁區,也就是前面 512bytes 的磁碟部份,所以,可以透過底下的方式備份 MBR 喔!
# 1. 先來備份 1st sector 的內容 # dd if=/dev/zero of=/mnt/msdos/mbr.img bs=512 count=1 # 2. 再來備份 partition tables 的資訊 # LANG=C sfdisk -l /dev/vda 2> /dev/null Disk /dev/vda: 280868 cylinders, 16 heads, 63 sectors/track Units: cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/vda1 2+ 10404- 10403- 5242880 83 Linux /dev/vda2 * 10404+ 218455- 208051- 104857600 7 HPFS/NTFS/exFAT /dev/vda3 218455+ 280868- 62414- 31456256 17 Hidden HPFS/NTFS # LANG=C sfdisk -l /dev/vda > /mnt/msdos/partition.txt 2> /dev/null # ll /mnt/msdos/ -rw-r--r-- 1 root root 792571696 5月 28 14:34 dicos.linux.vda1.img.gz -rw-r--r-- 1 root root 5492751240 5月 28 14:43 dicos.win10class.vda2.img.gz -rw-r--r-- 1 root root 4855172840 5月 28 14:48 dicos.win10exam.vda3.img.gz -rw-r--r-- 1 root root 512 5月 28 15:31 mbr.img -rw-r--r-- 1 root root 456 5月 28 15:33 partition.txt # poweroff
基本上,這樣就備份完畢囉!然後當然就可以關閉這部機器了!
- 開始進行裸機還原的動作:
- 我們當然知道在虛擬機器的情況下,可以直接透過複製虛擬磁碟機,並且透過複製 XML 檔案,就可以複製磁碟與硬體設定資料了。 但是在實體機器內呢?可不行這樣做的吧!此時,就可以透過類似上述的行為,直接幫我們搞定裸機復原的動作了!接下來, 讓我們一步一步處理一般常見的裸機復原手段吧:
- 先建立好所需要的原生磁碟與新機器的 XML 檔案,假設為 dicosnew 好了:
# 1. 先建立好硬體配置檔: # cd /vmdisk # vim create_vm_settings.sh .... vmnames="dicosnew" .... # sh create_vm_settings.sh # qemu-img create -f qcow2 dicosnew.img 135G
# 2. 修改 XML 檔案,讓網路在第一個開機裝置: # vim dicosnew.xml <os> <type arch="x86_64">hvm</type> <boot dev="network"/> <boot dev="cdrom"/> <boot dev="hd"/> </os>
# 3. 就直接開機進入 rootfs 吧! # virsh create dicosnew.xml - 開始復原整個系統!時間會花費不少喔:
# 1. 先登入這個 rootfs 的系統後,觀察一下磁碟的資訊再說: # ssh 192.168.19.22 # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 253:0 0 135G 0 disk # fdisk -l /dev/vda Disk /dev/vda: 145.0 GB, 144955146240 bytes, 283115520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O 大小 (最小/最佳化):512 位元組 / 512 位元組 # 觀察到了,確實是 135G 左右的磁碟容量!可以來搞定一下:
對!你沒看錯!不需要預先格式化!因為 parclone 會根據檔案的內容,自動的幫你處理好檔案系統的問題! 這樣就將全系統復原完畢了!比起當初一個一個安裝系統,不知道快了好幾倍!!
# 2. 開始處理分割表的問題!通常會先放置 MBR,然後用 sfdisk 將分割資訊匯入 # mount -t nfs 192.168.19.254:/vmdisk/backups /mnt # ll /mnt/msdos -rw-r--r-- 1 root root 792571696 5月 28 14:34 dicos.linux.vda1.img.gz -rw-r--r-- 1 root root 5492751240 5月 28 14:43 dicos.win10class.vda2.img.gz -rw-r--r-- 1 root root 4855172840 5月 28 14:48 dicos.win10exam.vda3.img.gz -rw-r--r-- 1 root root 512 5月 28 15:31 mbr.img -rw-r--r-- 1 root root 456 5月 28 15:33 partition.txt # dd if=/mnt/msdos/mbr.img of=/dev/vda bs=512 count=1 # sfdisk /dev/vda < /mnt/msdos/partition.txt # 通常,透過這兩個動作,就可以將 MBR 與 partition table 重建! # 不過,因為虛擬機器的關係,上述的方式,似乎無法重建 MBR 與 partition table 的樣子! # 所以,我們只好手動來處理 partition 了! # fdisk /dev/vda # 請分別建立 5G, 100G, 30G 的磁碟容量出來: # fdisk -l /dev/vda Disk /dev/vda: 145.0 GB, 144955146240 bytes, 283115520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O 大小 (最小/最佳化):512 位元組 / 512 位元組 Disk label type: dos 磁碟識別碼:0x000b4f27 所用裝置 開機 開始 結束 區塊 識別號 系統 /dev/vda1 2048 10487807 5242880 83 Linux /dev/vda2 10487808 220203007 104857600 7 HPFS/NTFS/exFAT /dev/vda3 220203008 283115519 31456256 7 HPFS/NTFS/exFAT
# 3. 開始復原 Linux 小系統: # gzip -d -c /mnt/msdos/dicos.linux.vda1.img.gz | partclone.ext4 -I -r -s - -o /dev/vda1 Partclone v0.3.11 http://partclone.org 開始還原 印象檔 (-) 到 裝置 (/dev/vda1) Calculating bitmap... Please wait... done! 檔案系統: EXTFS Device size: 5.4 GB = 1310720 Blocks Space in use: 2.0 GB = 495901 Blocks Free Space: 3.3 GB = 814819 Blocks 裝置區塊大小: 4096 Byte 經過:00:00:30, 剩餘: 00:00:00, 完成:100.00%, 速率: 4.06GB/min current block: 1178113, total block: 1310720, Complete: 100.00% 全部時間:00:00:30, 平均速率: 4.1GB/min, 100.00% completed! Syncing... OK! 還原 印象檔 (-) 到 裝置 (/dev/vda1) 完成 Cloned successfully.
# 4. 開始復原第一個較大的 windows 上課系統: # gzip -d -c /mnt/msdos/dicos.win10class.vda2.img.gz | partclone.ntfs -I -r -s - -o /dev/vda2 Partclone v0.3.11 http://partclone.org 開始還原 印象檔 (-) 到 裝置 (/dev/vda2) Calculating bitmap... Please wait... done! 檔案系統: NTFS Device size: 107.4 GB = 26214399 Blocks Space in use: 12.0 GB = 2931565 Blocks Free Space: 95.4 GB = 23282834 Blocks 裝置區塊大小: 4096 Byte 經過:00:03:14, 剩餘: 00:00:00, 完成:100.00%, 速率: 3.71GB/min current block: 2986735, total block: 26214399, Complete: 100.00% 全部時間:00:03:14, 平均速率: 3.7GB/min, 100.00% completed! Syncing... OK! 還原 印象檔 (-) 到 裝置 (/dev/vda2) 完成 Cloned successfully.
# 5. 復原最後一個 windows 考試系統: # gzip -d -c /mnt/msdos/dicos.win10exam.vda3.img.gz | partclone.ntfs -I -r -s - -o /dev/vda3 Partclone v0.3.11 http://partclone.org 開始還原 印象檔 (-) 到 裝置 (/dev/vda3) Calculating bitmap... Please wait... done! 檔案系統: NTFS Device size: 32.2 GB = 7864063 Blocks Space in use: 11.3 GB = 2768388 Blocks Free Space: 20.9 GB = 5095675 Blocks 裝置區塊大小: 4096 Byte 經過:00:03:00, 剩餘: 00:00:00, 完成:100.00%, 速率: 3.78GB/min current block: 2832516, total block: 7864063, Complete: 100.00% 全部時間:00:03:00, 平均速率: 3.8GB/min, 100.00% completed! Syncing... OK! 還原 印象檔 (-) 到 裝置 (/dev/vda3) 完成 Cloned successfully. - 重建 MBR grub 軟體的安裝:雖然上述的動作可以重建檔案系統,但是最重要的選單還是無法處理的。
所以,我們得要好好的來處理這個問題才行:
# 1. 先將所需要的 Linux 系統掛載起來: mkdir /sysroot mount /dev/vda1 /sysroot mount --bind /proc /sysroot/proc mount --bind /sys /sysroot/sys mount --bind /dev /sysroot/dev chroot /sysroot/
# 2. 開始安裝 grub 囉! # grub2-install /dev/vda Installing for i386-pc platform. Installation finished. No error reported. # exit
- 未來,你如果在實體機器上面搞定了一個 demo 的主系統,透過 rootfs 搭配 partclone 等功能,就可以輕鬆愉快的進行裸機備份、 裸機復原的動作!唯一需要注意的,應該就是你的 NFS 效能是否足以負荷大量用戶同時下載復原的頻寬與磁碟 I/O 性能, 還有如果是 Windows 的系統時,也需要注意到是否具有足夠的磁碟容量來提供用戶端的備份資料囉。
參考資料題
- VirtIO for windows drivers
(https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/) - iPXE 對 grub4dos 的說明
(http://ipxe.org/appnote/boot_local_drive_with_grub4dos) - grub4dos 官網 (http://grub4dos.chenall.net/)
- 可提供 grub4dos 設定參考的 GNU grub 0.9 說明文件
(https://www.gnu.org/software/grub/manual/legacy/)