UNIX系統中Shell的一種新應用(轉)

BSDLite發表於2007-08-12
UNIX系統中Shell的一種新應用(轉)[@more@]  在對作業系統進行管理時,有時候當前系統本身就是操作物件。這種在執行系統中管理自己的行為是一種動態操作,似有擺脫不了操作物件干係之嫌,於是乎,人們要求一個獨立的系統環境。

  UNIX Shell的情況與上述相反。對於Tu64 UNIX而言,以發行介質光碟引匯出的安裝環境,可以提供UNIX Shell(或Shell 視窗)、Installation Shell。它是一個獨立的UNIX系統環境,能在安裝環境中很好的完成有關係統盤的管理任務,以及普通系統所能做的大部分工作。使用UNIX Shell時,操作物件處於靜止狀態,因此,這種操作是一種與被管理物件(作業系統)無關的獨立系統操作。

  筆者認為UNIX Shell是為系統安裝管理而設,又有天生的獨立性,用它來做系統盤的克隆、仿製及系統的全備份非常合適。為了增強直觀性,避免冗長的文字敘述,我們下面列舉真實AdvFS例子來討論一下UNIX Shell的這種新應用。至於ufs, UNIX Shell的這些應用同樣適用,而且其操作比AdvFS更簡單容易。如果讀者對ufs系統盤的克隆、仿製及系統的全備份感興趣的話,無論你熟悉不熟悉AdvFS,閱讀本文都能從中悟出所需原理。

  1、克隆(Clone)

  必須準備一個與原系統盤型號完全相同的磁碟。

  1.1 Digital UNIX V4.0E的例項

  假定,原系統盤的控制檯方式裝置名為dkb100:,新盤為dkb200:,發行介質光碟為dka400:。

  製作克隆盤有兩種方式,一為製作備份式系統盤,另一為製作並存式系統盤。

  1.1.1 製作備份式系統盤

  首先談談備份式系統盤的製作,其過程與在普通環境下的製作相似,很簡單:準備一個型號規格與原先的系統盤完全一樣的磁碟,再執行帶適當選項的dd命令,就完成了。>>>boot dka400 從發行介質光碟引導系統,

  點選“UNIX Shell”,出現shell視窗。

  # file /dev/rrz*c 假定,原系統盤為rz9,新盤為rz10
  # disklabel -z
  # dd if=/dev/rrz9c of=/dev/rrz10c conv=noerror,sync bs=100k

  命令執行完畢之後,取下新系統盤備用。當原系統盤出現故障時,取下故障盤,插入備用盤即可。以上是製作備份式系統盤的過程。

  1.1.2 製作並存式系統盤

  如果想製作並存式系統盤的話,應以備份式系統盤為基礎,將此盤置於原系統盤的位置,然後用此盤引導系統,由超級賬戶進入系統去修改系統檔案fstab,然後刪除、建立相應的符號連結,再改正swap 的指向。

  # vi /etc/fstab
  將/dev/rz9b改為/dev/rz10b
  # cd fdmns/root_domain
  # ls -l
  # rm rz9a
  # ln -s /dev/rz10a
  # cd ..
  # cd usr_domain
  # ls -l
  # rm rz9g
  # ln -s /dev/rz10g
  # cd /sbin
  # rm swapdefault
  # ln -s /dev/rz10b swapdefault
  # shutdown -h now ·
  ·
  ·

  >>>boot dkb200 將克隆盤重新置回克隆時的位置,從克隆盤引導系統,以此證實新盤可用。
 1.2 Tru64 UNIX V5.1的例項

  在V5.1下磁碟一旦被作業系統識別認可,其裝置名就是唯一的而且不可改變的(這裡順便說一句,V5.1系統安裝之後,系統盤的SCSI-ID是可以隨意改變的,不影響其引導),所以V5.1的AdvFS系統盤克隆只能做到並存方式。

  >>>show dev 假定,原系統盤的控制檯方式裝置名為dkb100:,而新盤為dkb200:,發行介質光碟為dka400:,

  >>>boot dkb400 用光碟引導系統,

  歡迎安裝(主機資訊)檔案?Shell 視窗?#

  #file /dev/rdisk/dsk*c 假定,原系統盤的裝置名為dsk0,新盤的為dsk1,
  # disklabel -z dsk1
  # dd if=/dev/rdisk/dsk0c of=/dev/rdisk/dsk1c conv=noerror,sync bs=100k
  # cd /etc/fdmns
  # mkdir root_domain usr_domain
  # cd root_domain
  # ls -l
  # ln -s /dev/disk/dsk1a
  # cd ../usr_domain
  # ln -s /dev/disk/dsk1g
  # cd
  # mount -t advfs root_domain#root /mnt
  # cd /mnt/etc/fdmns/root_domain
  # ls -l (應該顯示dsk0a?/dev/disk/dsk0a)
  # rm dsk0a
  # ln -s /dev/disk/dsk1a
  # cd ../usr_domain
  # ls -l
  # rm dsk0g
  # ln -s /dev/disk/dsk1g
  # cd ../..
  # vi sysconfigtab 將其中swapdevice=/dev/disk/dsk0b改為swapdevice=/dev/disk/dsk1b
  # umount /mnt
  # exit
  主機資訊?檔案?退出?#
  # halt

  >>>boot dkb200 使用新制作的克隆盤引導系統。

  2、仿製(duplicate)

  首先要準備一個磁碟,其容量要等於或大於原系統盤。仿製系統盤,主要做如下幾件事:

  (1) 按照原先系統盤的大小配置一個新盤;
  (2) 為新系統建立域和檔案集;
  (3) 為原系統建立目錄並在該目錄中建立符號連結;
  (4) 利用命令vdum,vrestore和管道完成檔案集的複製;
  (5) 修改仿製系統中的符號鏈;
  (6) 修改仿製系統中的fstab檔案,並更改對換區(swap)的指向

  2.1 Digital UNIX V4.0E的例項

  >>>show device

  >>>boot dka500

  "Installation Setup"?"Install Type"中"Custom"?“Partition Disks...”

  按照原系統盤的各個分割槽大小配置新盤,配置新盤時應將多餘磁碟空間配置成一個或多個分割槽留作他用(操作務必小心謹慎,萬萬不可對原系統盤進行配置操作!!)?"UNIX Shell..."

  # mkfdmn /dev/rz12a root_domain1
  # mkfdmn /dev/rz12g usr_domain1
  # mkfset root_domain1 root
  # mkfset usr_domain1 usr
  # cd /etc/fdmns
  # ls
  # mkdir root_domain0 usr_domain0
  # cd root_domain0
  # ln -s /dev/rz10a
  # cd ../usr_domain0
  # ln -s /dev/rz10g
  # mount -t advfs usr_domain0#usr /home
  # mount -t advfs usr_domain1#usr /mnt
  # vdump -0vf - /home | vrestore -xf - -D /mnt
  # umount /home /mnt
  # mount -t advfs root_domain0#root /home
  # mount -t advfs root_domain1#root /mnt
  # vdump -0vf - /home | vrestore -xf - -D /mnt
  # umount /home
  # cd /mnt/etc
  # ed fstab 將檔案中的rz10b改為rz12b
  # cd /mnt/etc/fdmns
  # cd root_domain
  # rm rz0a
  # ln -s /dev/rz12a
  # cd ../usr_domain
  # rm rz10g
  # ln -s /dev/rz12g
  # cd /mnt/sbin
  # rm swapdefault
  # ln -s /dev/rz12b swapdefault
  # umount /mnt
  # exit · · ·

  >>>boot dkb400 從仿製盤引導系統。

  順便提一下,剩餘磁碟分割槽rz12h,可以按需要做成AdvFS或UFS。

  2.2 Tru64 UNIX V5.1的例項

  >>>show device 原系統盤dkb200: RZ1CF-CF;新盤dkb400: RZ2ED-LS。

  >>>boot dka400 由光碟引導系統?歡迎安裝?檔案?Shell視窗?#

  # file /dev/disk/dsk*c

  顯示原系統盤RZ1CF-CF的裝置名為dsk0,新盤RZ2ED-LS的裝置名為dsk1

  # diskconfig

  按照原先系統盤各個分割槽的大小來配置新盤,多餘的磁碟空間分配給一分割槽留作他用。

  # mkfdmn /dev/disk/dsk1a root_domain1
  # mkfdmn /dev/disk/dsk1g usr_domain1
  # mkfset root_domain1 root
  # mkfset usr_domain1 usr
  # mkfset usr_domai1 var
  # cd /etc/fdmns
  # mkdir root_domain0 usr_domain0
  # cd root_domain0
  # ln -s /dev/disk/dsk0a
  # cd ../usr_domain0
  # ln -s /dev/disk/dsk0g
  # mount -t advfs usr_domain0#usr /home
  # mount -t advfs usr_domain1#usr /mnt
  # vdump -0vf - /home | vrestore -xf - -D /mnt
  # umount /home /mnt
  # mount -t advfs usr_domain0#var /home
  # mount -t advfs usr_domain1#var /mnt
  # vdump -0vf - /home | vrestore -xf - -D /mnt
  # umount /home /mnt
  # mount -t advfs root_domain0#root /home
  # mount -t advfs root_domain1#root /mnt
  # vdump -0vf - /home | vrestore -xf - -D /mnt
  # umount /home
  # cd /mnt/etc/fdmns
  # ls
  # cd root_domain
  # ls -l
  # rm dsk0a
  # ln -s /dev/disk/dsk1a
  # cd ../usr_domain
  # ls
  # rm dsk0g
  # ln -s /dev/disk/dsk1g
  # cd ../..
  # vi sysconfigtab
  將swapdevice=/dev/disk/dsk0b 改為 swapdevice=/dev/disk/dsk1b
  # cd
  # umount /mnt
  # exit ?“檔案”?“退出”?#?#
  # halt · · ·

  >>>boot dkb400

 3、全備份(full backup)

  眾所周知,V4.0E和V5.1,它們的復原工作都是在UNIX Shell下完成的,但災前備份的全備份卻是在普通系統的單使用者方式下做的。詳情請參閱有關資料(如,“Installation Guide-Advanced Topics”的第三章“The UNIX Shell")。

  下面我們討論一下用UNIX Shell做災前備份的問題。這裡最主要的一點就是要知道如何將系統盤的各個檔案集裱附(mount)到一個臨時的裱附點上;至於其它操作,那都是常規工作,不必詳述。

  Digital UNIX V4.0E與Tru64 UNIX V5.1的情況相似,主要差別在建立裝置特殊檔案的命令不同,裝置特殊檔名亦不同,為節省篇幅起見,下面只列出V5.1的例子。

  >>>set bootdef_dev “”

  >>>boot dka400

  歡迎安裝?檔案?Shell視窗?#

  # hwmgr -view device
  # /sbin/dn_setup -install_tape
  # cd /etc/fdmns
  # mkdir root_domain0 usr_domain0
  # cd root_domain0
  # ln -s /dev/disk/dsk2a
  # cd ../usr_domain0
  # ln -s /dev/disk/dsk2g
  # mount -t advfs root_domain0#root /mnt
  # vdump -0vf /dev/ntape/tape0_d1 /mnt
  # umount /mnt
  # mount -t advfs usr_domain0#usr /mnt
  # vdump -0vf /dev/ntape/tape0_d1 /mnt
  # umount /mnt
  # mount -t advfs usr_domain0#var /mnt
  # vdump -0vf /dev/ntape/tape0_d1 /mnt
  # umount /mnt

  4、結束語

  由於UNIX Shell 是獨立系統,操作物件處於靜止狀態,克隆、仿製皆與操作物件沒有干係,因此,操作簡潔方便,可靠。

  我們在前面只討論AdvFS系統盤的例項,是因為它比較特別;其實,UNIX Shell對AdvFS和ufs都一樣適用,ufs系統盤的克隆、仿製等工作都可以在UNIX Shell下完成,感興趣的讀者不妨一試。

  UNIX Shell是為系統管理員提供的一種工具,在有了一定UNIX系統管理經驗之後就可以應用;但是應該特別強調,在克隆、仿製等操作中必須頭腦清醒、小心謹慎,否則,會造成災難性後果。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-949576/,如需轉載,請註明出處,否則將追究法律責任。

相關文章