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): mCommand actionabcdmnopqstuvwx toggle a bootable flagedit bsd disklabeltoggle the dos compatibility flagdelete a partitionlist known partition typesprint this menuadd a new partitioncreate a new empty DOS partition tableprint the partition tablequit without saving changescreate a new empty Sun disklabelchange a partition's system idchange display/entry unitsverify the partition tablewrite table to disk and exitextra 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 前請先確定管理程式是否已經執行,可以使用以下指令來檢視:
/sbin/service crond status
雖然 cron 允許使用者自行安排自己的工作,以方便在結束聯機後,程式能自動運作,但這類工作對於已經提供多種網路服務的伺服器來說負擔太大,因此建議不要教使用者使用它,本文也不討論這類的事情,畢竟我們的伺服器只是 PC,不是 main frame。
cron 的主要設定檔 /etc/crontab 內容如下:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
前面幾行是定義 cron jobs 執行時的環境,我們不需要去修改它,底下四行是用來定義工作管理程式,上面看到的是系統管理程式的定義區分為七個欄位,分別代表:分、時、日、月、星期、執行時的身分、要執行的 script,而一般的工作則只區分為六個欄位,前五個欄位與系統管理程式相同,最後一個欄位則是要執行的工作。
欄位 有效數值
分 0~59, * 代表每分鐘都要執行,1-4 是指前四分鐘各要執行一次,如果執行的時間不是連續的,可以用逗號來區隔,例如:5,10,15,20 代表第五分鐘、第十分鐘、第十五分鐘、第二十分鐘時要執行,如果每隔五分鐘要執行一次,可以簡寫為 */5。
時 採用 24 時制,有效數值為 0~23,可以使用 * - , / 等通配字元,意義同上。
日 1~31,如果使用 30,則每逢二月會跳過不執行,如果使用 31,會變成大月時才執行,因此對於每月都得執行一次的工作,請安排在 28 日以前執行。當月份有指定時,必須為有效日期,否則該工作將永遠不執行。通配字元使用方式同上。
月 1~12,也可以直接用英文縮寫:jan、feb......等。 通配字元使用方式同上。
星期 0~7,其中 0 和 7 都代表星期天,也可以使用英文縮寫:sun、mon......等。 通配字元使用方式同上。
如果要執行的工作是屬於每天、每週或每月執行一次,建議改用 anacron 以確保一定會執行,如果是每小時要執行,建議直接在 /etc/cron.hourly 目錄內直接新增一個定義檔案,語法需與 /etc/crontab 相同。 其它情形則把定義檔放置在 /etc/cron.d,這裡的定義檔將會每分鐘都檢查一次。
anacron 的設定檔位於 /etc/anacrontab,如前所述它是以檢查時間間隔的方式來決定是否執行,因此不受系統時間設定的影響,為了要檢查時間間隔必須紀錄每個工作每次執行時的時間戳記(timestamp),這些檔案會放置在 /var/spool/anacron 目錄裡面。
anacron 設定檔案分為間隔週期、執行延遲時間、工作識別名稱、 要執行的工作四個欄位,說明如下:
欄位 使用說明
間隔週期 每次執行工作時應相隔幾天,小於一天的請改用 cron
執行延遲時間 當距離上次執行的時間超過時間間隔,這表示中間有執行失敗的情形,這種情形下在延遲幾分鐘後,該工作會再嘗試執行一次。
工作識別名稱 用來識別不同工作,同一名稱不能重複使用。
要執行的工作 通常是一個命令或 script
anacron 的設定檔預設內容如下:
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin;/usr/local/sbin;/usr/local/bin
# These entries are useful for a Red Hat Linux system.
1 5 run-parts /etc/cron.daily
7 10 run-parts /etc/cron.weekly
30 15 run-parts /etc/cron.monthly
這個設定可以用來確保 cron job 一定會如期執行。
at 指令用來執行一次性的工作而非週期性的工作,我們可以指定要執行的時間,它和 cron 一樣會檢查系統時間的設定,因此設定錯誤會造成工作無法正確執行,設定方式如下:
at 16:00 011503[ ENTER](排定執行時間是 2003年1月15日下午4點)
at> perl /root/backup.pl[Ctrl-D]
我們可以使用 atq 指令來查詢現在尚未執行的預定工作。
如果想根據主機負載情形來決定執行時間,必須使用 batch 指令,實際上 batch 指令算是 at 的特殊應用,使用方式如下:
batch[ ENTER](不用指定執行時間)
at> perl /root/backup.pl[Ctrl-D]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939942/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 遠端升級Linux系統(轉)Linux
- linux 升級系統核心Linux
- FreeBSD 升級系統(轉)
- Ubuntu 16.04 升級Linux 系統核心UbuntuLinux
- LINUX核心升級 (轉)Linux
- LINUX核心升級(轉)Linux
- MES系統助力企業轉型升級
- Truffle 2.0升級3.0升級指南
- Linux-PAM系統管理指南(轉)Linux
- Wii將有一個可升級的Linux作業系統(轉)Linux作業系統
- Linux作業系統升級openssh實踐Linux作業系統
- Zurmo – – 升級指南
- 社交系統 ThinkSNS+ V2.2-V2.3 版本升級指南
- The Linux-PAM 系統管理員指南(轉)Linux
- ModStartCMS 系統升級指引
- CentOS系統核心升級CentOS
- Linux系統安裝及升級kangle+EasyPanelLinux
- 開源社交系統ThinkSNS+ V2.2-V2.3升級指南
- 升級到Linux 2.4核心(轉)Linux
- Vue 3.0 升級指南Vue
- HTTPS 升級指南HTTP
- 怎麼升級win11系統?升級Win11系統的方法
- 在Linux中,如何進行系統更新和升級?Linux
- OA系統迎合時代升級
- 升級AIX作業系統AI作業系統
- AIX系統升級記錄AI
- win10 系統如何升級_電腦怎麼升級系統win10Win10
- Ubuntu桌面生存指南(4):Ubuntu系統備份恢復升級策略Ubuntu
- 豐田系統,是福特系統的升級版?
- [轉載]Linux/Mac go版本升級LinuxMacGo
- LINUX核心及升級簡介(轉)Linux
- 升級Linux核心奮鬥記(轉)Linux
- iview 升級指南 —— MenuItem 篇ViewUI
- Polymer 1.0 升級指南
- Linux系統檔案命令精通指南(上)(轉)Linux
- Fedora 30系統的升級方法
- redhat系統升級openssh到7.5Redhat
- 如何升級win10系統?Win10