歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux維護 >> linux系統升級指南

linux系統升級指南

日期:2017/3/2 10:43:00   编辑:Linux維護

  

  本文是假設您已經使用 Linux 一段時間,隨著硬件的升級或空間不足,必須要升級 Linux 系統,抑或是想提供更多的網絡服務給用戶,因應這個需求而編寫的。

  一、調整虛擬內存:

  在 Linux 上是使用 swap 技術將硬盤空間挪用為虛擬內存,當服務器建置完成使用一段日子以後,有可能會擴充硬件,其中又以擴充主存儲器來改善執行效能最為普遍,在這種情形下,就需要增加 swap 虛擬內存的容量。

  由於 swap 跟 LVM 機制一樣能將多塊磁盤分割區虛擬成一塊,因此我們並不需要將舊的 swap 扇區先移除,或是直接修改 swap 扇區大小,而是可以采用追加 swap 扇區的方式來配置。做法如下:

  mkswap /dev/hdx2(將新扇區格式化為 swap)

  swapon /dev/hdx2(立即啟用新的 swap 扇區)

  修改 /etc/fstab 加入下面這一行

  /dev/hdx2 swap swap defaults 0 0

  如果硬盤已經沒有剩余空間,而且無法加裝新的硬盤,這種情況下,我們沒辦法變更 swap 扇區來滿足需求,但是可以挪用已經掛載的分割區一部分空間,以檔案的形式來追加 swap 虛擬內存的容量:

  dd if=/dev/zero of=/swapfile bs=1024 count=65536(建立 /swapfile 檔案,單位為 KB,所以這是 64MB)

  mkswap /swapfile(將該檔案空間格式化為 swap)

  swapon /swapfile(立即啟用新的 swap 檔案)

  修改 /etc/fstab 加入下面這一行

  /swapfile swap swap defaults 0 0

  Linux 並沒有辦法搬移 swap 扇區,如果想要把 swap 作成單一一個扇區,必須先將舊 swap 扇區移除,再加入新的 swap 扇區,如果先加入新扇區,則新舊扇區會聯合運作,造成舊扇區無法移除的現象。移除 swap 扇區的方法如下:

  swapoff /dev/hdx2(關閉 swap 功能)

  修改 /etc/fstab 移除 /dev/hdx2 那一行

  二、加載硬盤與檔案系統轉換:

  當硬盤不敷使用時,需要加掛新的硬盤到系統上,加掛硬盤的做法很簡單,先使用 fdisk 或 parted 將扇區分割好,接著使用 mkfs 指令來格式化硬盤,最後修改 /etc/fstab 讓系統重開機後能自動掛載新的硬盤。fdisk 的使用方法如下:

  #> fdisk /dev/hdb(假設要加掛的硬盤,是接在第一條排線的第二個位置)

  

The number of cylinders for this disk is set to 2498.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): m
Command action
a
b
c
d
m
n
o
p
q
s
t
u
v
w
x toggle a bootable flag
edit bsd disklabel
toggle the dos compatibility flag
delete a partition
list known partition types
print this menu
add a new partition
create a new empty DOS partition table
print the partition table
quit without saving changes
create a new empty Sun disklabel
change a partition's system id
change display/entry units
verify the partition table
write table to disk and exit
extra functionality (experts only)
Command (m for help):

  先用 l 指令列出所有已分割好的扇區,你可以使用 d 指令將不要的扇區刪除,或使用 t 指令將扇區的檔案系統改為 Linux 用的 82(swap) 或 83(ext2,ext3),假如硬盤是空的尚未分割任何扇區,這時候請用 n 指令建立扇區,所有需要的修改完成後,輸入 w 指令將設定儲存起來,然後重開機讓修改生效,以便進行後續動作。

  扇區分割好了以後,必須針對每個不同檔案系統將扇區格式化,swap 扇區格式化的方法前面已經提過,而作為一般用途的扇區,建議直接格式化為 ext3:

  /sbin/mkfs -t ext3 /dev/hdb1(將空白扇區格式化為 ext3)

  ext3 是從 ext2 改良而來,主要是挪用 ext2 一些 inode 拿來做成日志文件(.journal),因此它與 ext2 只有些微不同,兩種系統也可以很容易互相轉換(轉換完仍需自行修改 /etc/fstab 組態):

  /sbin/mke2fs /dev/hdb1(將空白扇區格式化為 ext2)

  /sbin/tune2fs -j /dev/hdb1 (將 ext2 轉為 ext3,轉換時順便建立日志文件)

  當新扇區格式化好了之後,就可以將它掛載上來,您可以直接指定要掛載的扇區型態:

  /sbin/mount -t ext3 /dev/hdb1 /mount/point(指定掛載 ext3 扇區到 /mount/point 目錄)

  或先修改 /etc/fstab 然後再掛載,修改 /etc/fstab 的方法是插入下面這一行:

  /dev/hdb1 /mount/point ext3 defaults 0 0

  接著掛載時不需指定扇區型態及裝置名稱,指令如下:

  /sbin/mount /mount/point

  已經格式化為 ext3 的扇區,如果要掛載到 6.X版以前的系統上使用,必須將格式改回 ext2,變更方法如下:

  /sbin/tune2fs -O ^has_journal /dev/hdb1 (通知 kjournald 關閉日志文件功能)

  mount -t ext2 /dev/hdb1 /mount/point(將 ext3 掛載為 ext2)

  rm -f .journal(刪除日志文件)

  將 ext2 轉換成 ext3 有許多好處,包括速度快、安全、高可用性、修復省時......等等優點。簡單的講,所謂 journal 就是把文件讀寫動作逐項紀錄下來,當硬盤未正常關機(unclean shutdown)時,不需要檢查硬盤(e2fsck)直接可以掛載(mount),如果以 fsck 強制修復硬盤,則直接從日志文件讀取需要修復的扇區資料,而不需要整顆硬盤都檢查。由於這些優點,我們也建議不要再使用舊的 ext2 格式。

  掛載好後,如需進行數據移轉,可以使用 cp -Rp 指令,參數 R 表示連子數據夾一起備份,參數 p 表示要保留所有檔案權限設定,例如:cp -Rp /home /home1

  三、升級磁盤系統:

  LVM 邏輯扇區

  事實上新版 Linux 由於提供 LVM (Logical Volume Manager)功能,可以將多個扇區組合成一個 VG(Volume Group),然後將一個 VG 掛載成單一一個目錄,這樣就可以做到扇區合並的效果,省掉轉移資料的麻煩,要使用這項功能,首先在安裝 Linux 時,必須先將可能會事後擴充的扇區做成 LVM 扇區型態(代號是 8e),如果您在安裝時沒有啟用這項功能想要事後補做,那樣可行不通,因為修改扇區型態將會造成所有資料遺失!

  如果是新硬盤上的扇區,請用 fdisk 修改好扇區型態後,利用以下指令來做起始化的動作,在底下的例子裡,我們會把新硬盤上的三個扇區合並成一個,並在稍後加入第四個扇區以擴充容量(透過這些步驟,可以了解當初 Linux 安裝程序幫我們裝 LVM 時,到底做了哪些事情):

  /sbin/pvcreate /dev/hdb1

  /sbin/pvcreate /dev/hdb2

  /sbin/pvcreate /dev/hdb3

  然後需建立 VG,建立好的 VG 將被視為一個裝置名稱,事後可以用 /dev/VG_name 來引用它:

  /sbin/vgcreate new_home /dev/hdb1 /dev/hdb2 /devhdb3

  對於 VG 這種裝置來說,仍必須進一步在上面分割邏輯扇區才能使用,我們不妨把 VG 想象成是一個外掛的 SCSI 磁盤陣列,對主機板來說,他被視為單一一顆硬盤(LVM 並不是真正的 RAID 系統,因為它只能實作 RAID0,事實上 2.4.x 版的 kernel 另外還提供 softRAID 功能,在後面說明)。既然它是一種裝置,當然無法直接掛載使用,必須先進一步作虛擬分割及格式化的動作, 下面的例子裡,我們僅分割單一一個扇區:

  /sbin/lvcreate -L 30g new_home(將 new_home 虛擬裝置中的 30 GB 空間割成一個虛擬延伸扇區)

  使用 lvcreate 指令除了可以分割l邏輯延伸扇區(所謂延伸是指可以動態變大,當然變小也是可以,但應該沒有人會這麼做),還可以分割一種稱為快照的扇區,這可以用來自動備份某塊邏輯延伸扇區,而這種備份是 自動進行的,並不需要人力介入管理。

  一但邏輯扇區分割好了,依照慣例仍然得先將扇區格式化,一般是格式化成 ext3:

  /sbin/mkfs -t ext3 /dev/new_home/lvol1(由於當初分割扇區時未使用 -n 參數來指定名稱,因此系統會自動編號)

  格式化好的扇區就可以直接掛載使用:

  mkdir /home2

  mount -t ext3 /dev/new_home/lvol1 /home2

  接下來進行文件轉移:

  cp -Rp /home /home2(將使用者文件從實體扇區拷貝到 lvm 扇區)

  以光盤片開機進入 rescue mode

  rm -rf /home (將 /home 刪除)

  mkdir /home (建立掛載點)

  mount -t ext3 /dev/new_home/lvol1 /home (重新將 /dev/new_home/lvol1 掛載到 /home)

  rmdir /home2(刪除掛載點)

  緊接著修改 /etc/fstab 來掛載這個新作好的邏輯扇區:

  /dev/new_home/lvol1 /home ext3 defaults 0 0

  重開機後,系統會嘗試掛載該虛擬扇區,如果掛載失敗,請在 /etc/rc.d/rc.local 加入以下指令:

  vgchange -a y new_home

  mount /dev/new_home/lvol1 /home

  假如使用一段時間後, /home 的空間不足,這時我們可以動態加入新的實體扇區(以 /dev/hdb4 為例)來擴充空間:

  以 fdisk 修改 /dev/hdb4 的扇區類型為 8e

  /sbin/pvcreate /dev/hdb4 (邏輯扇區起始化)

  /sbin/vgextend new_home /dev/hdb4(將實體扇區加入到虛擬裝置上)

  /sbin/lvextend -L +10g /dev/new_home/lvol1 /dev/hdb4(從該實體扇區擴充 10GB 空間至邏輯扇區)

  完成以上步驟後,現在的 /home 空間容量已經變成 40GB!然而使用 df 指令去查看 inode,卻發現空間沒有增加,經過測試後發現必須重新mkfs才能使用新的空間,這個缺點讓 LVM 有點美中不足。

  SoftRAID 軟件磁盤陣列

  使用軟件磁盤陣列應該在安裝 Linux 時,直接透過 Disk-Druid 來設定比較方便,如果事後想要手動加上去,步驟比較繁雜,首先和 LVM 系統一樣,你必須先使用 fdisk 將預先割好要作磁盤陣列的分割區改為 fd 類型,千萬不要拿已經有資料的 Linux ext2 或 swap 來改,否則資料會全部遺失,修改方法請自行參考前面的解說。特別要注意的是,要作磁盤陣列的分割區其容量必須一致,不可以有大有小!

  改好扇區類型後,請用底下指令建立軟件磁盤陣列組態文件:

  touch /etc/raidtab

  該檔案內容如下:

  raiddev /dev/md0 //定義磁盤陣列的裝置名稱

  raid-level 1 //定義磁盤陣列的等級,RAID 1 就是 Mirror

  nr-raid-disks 2 //定義磁盤陣列是由多少實體分割區組成的

  chunk-size 64k //定義 chunk 大小,由於是軟件數組所以是使用系統主存儲器來進行 chunk,這個數值設大一點雖然對磁盤陣列效能有幫助,但卻會耗掉系統資源,建議使用默認值就好了

  persistent-superblock 1//啟用 superblock,這是用來作磁盤尋址,它能幫助 kernel 在偵測 RAID 磁盤時不會誤判

  nr-spare-disks 0 //定義備用的扇區

  device /dev/hda1 //定義組成 RAID 的第一塊實體分割區

  raid-disk 0

  device /dev/hdc1 //定義組成 RAID 的第二塊實體分割區

  raid-disk 1

  以上面這個例子來說,作好的磁盤陣列在寫入數據時,兩個實體分割區都會寫入數據,讀取資料時,則只要其中一個扇區能正常讀取即可,這樣就可以充分利用磁盤陣列的好處來進行數據保全。做好組態設定以後,接下來請以下列指令開始制作磁盤陣列:

  mkraid /dev/md0

  磁盤陣列一但制作好了,依然得先將扇區格式化,一般是格式化成 ext3:

  /sbin/mkfs -t ext3 /dev/md0

  格式化好的扇區就可以直接掛載使用:

  mkdir /secure_data

  mount -t ext3 /dev/md0 /secure_data

  資料保全測試:

  使用 fdisk 將 RAID 磁盤陣列其中一個實體分割區刪除後,重新開機,發現 RAID 激活時出現錯誤訊息,警告我們有部分磁盤損毀,但儲存的資料仍然具全沒有遺失。

  如果開機訊息閃得太快沒有看清楚,可以使用底下指令來觀察:

  lsraid -a /dev/md0

  將該分割區重新分割並修改格式為 fd 後,進行資料復原工作:

  raidhotadd /dev/md0 /dev/hdc1(將空白扇區 /dev/hdc1 加入 RAID 中並復原資料)

  完成以上步驟後,再使用 lsraid 指令來觀察,發現 RAID 裝置已經恢復正常。

  四、工作管理進程:

  Linux 提供四種自動執行程序的機制,包含:cron、anacron、at 和 batch。使用時機分述如下:

  cron 主要用來做周期性工作的管理進程,會根據系統時間來判斷程序是否該執行,萬一系統時間設定不正確將會造成進程錯亂。

  anacron 和 cron 一樣也是用來做周期性工作的管理進程,但是它不檢查系統時間,而改以讀取時間戳記來計算間隔日數,依間隔日數判斷是否該執行,適用於每天、每周或每月只執行一次的工作。

  at 讓指定程序在某個時間點到達時自動執行,適用於只執行一次的工作。

  batch 指定工作在系統閒置時執行,可用來避開高負載時段。

  使用 cron 前請先確定管理程序是否已經執行,可以使用以下指令來查看:

Copyright © Linux教程網 All Rights Reserved