存儲管理、LVM和文件系統(下)
導航:
管理邏輯卷
文件系統
五、管理邏輯卷
一個邏輯卷映射一個或多個物理卷,具體取決於您希望維護的數據副本的數量
單個邏輯卷副本,表示存在一個邏輯分區到物理分區的映射
添加邏輯卷
使用mklv命令創建邏輯卷,該命令指定邏輯卷的名稱並定義其特徵,包括要分配的邏輯分區數量(默認為128個邏輯分區)
mklv命令標誌:
-c設置每個邏輯分區的物理分區數量
-i從標準輸入讀取Phsical Volume的參數
-L設置邏輯卷標籤。標籤大小為127個字符,如果邏輯卷將用做日記記錄文件系統(JFS),JFS將使用此字段來存儲文件系統在該邏輯捲上的掛載點。
-P指定邏輯卷特殊文件的權限(文件模式)
-t設置邏輯卷的類型。標準類型為JFS(文件系統)、JFSLOG(日記文件系統日誌)和paging(分頁空間)
-y指定要使用邏輯卷的名稱
示例:在rootvg中創建一個新邏輯卷newlv,並且該邏輯卷有10個邏輯分區,每個邏輯分區由兩個物理分區組成。
mklv -y newlv -c 2 rootvg 10 或使用smit mklv命令
刪除邏輯卷
使用rmlv命令刪除邏輯卷
rmlv命令標誌:
-f刪除邏輯卷而不請求確認
-p僅刪除PV上的邏輯分區。
示例:刪除邏輯卷newlv
rmlv newlv 或者smit rmlv
縮小邏輯卷的大小
備份邏輯卷中的所有數據->刪除該邏輯卷->重新創建具有縮小邏輯分區分配的邏輯卷->還原數據
增加邏輯卷的大小
使用extendlv命令或者smit extendlv增加現有邏輯卷的大小
示例:將邏輯卷增加3個額外分區
extendlv newlv 3
複製邏輯卷
示例:使用cplv命令複製邏輯卷,將邏輯卷oldlv中數據複製到卷組myvg中的newlv邏輯卷
cplv -v myvg -y newlv oldlv
注:如果未指定卷組,則默認在oldlv所在卷組創建新的邏輯卷
示例:將邏輯卷oldlv複製到現有邏輯卷existinglv
cplv -e existinglv oldlv
注:如果cplv創建新的邏輯卷,並且卷組是以併發模式varyon的,則此命令會失敗;
不要將包含較大數據的邏輯卷複製到較小邏輯卷,會導致破壞文件系統。
示例:更改邏輯卷的類型為copy
cplv -t copy newlv
拆分邏輯卷的副本
splitlvcopy拆分一個邏輯卷中的副本,並從這些副本創建一個單獨的新邏輯卷。拆分邏輯卷之前應卸載文件系統並關閉邏輯卷
注:splitlvcopy命令可以拆分已打開的邏輯卷,包含那些已掛載的文件系統的邏輯卷。建議不要這麼做,如果多個進程同時訪問該邏輯卷,LV和newlv可能會失去一致性。
示例:要拆分邏輯卷oldlv中的每個邏輯分區的一個副本(當前有三個副本)並創建一個新的邏輯卷newlv
splitlvcopy -y newlv oldlv 2
現在oldlv中每個邏輯分區含有2個物理分區
現在newlv中每個邏輯分區含有1個物理分區
列出邏輯卷
使用命令:lsvg |lsvg -il
邏輯卷大小
總的邏輯卷大小=PP大小 * 分配到LV的LP的數量 * LV的副本數量
六、文件系統
AIX支持三種文件系統:
日記記錄文件系統(Journaled file system,JFS)
本機文件系統,每個日記記錄文件系統駐留在單獨的邏輯卷中,操作系統在初始化期間掛載某些日記記錄文件系統(啓動和運行系統所必須的日記記錄文件系統)
網絡文件系統(NFS)
分佈式文件系統,允許用户訪問遠程計算機上的文件和目錄。
CD-ROM文件系統(CDRFS)
允許通過一般的文件系統接口來訪問CD-ROM中的內容
日記記錄文件系統將邏輯卷劃分為許多固定大小的單元,這些單元稱為邏輯塊。文件系統中的邏輯塊按照以下方式組織:
邏輯塊0
文件系統的第一個邏輯塊被保留,可用於引導程序或其他所需的信息,文件系統不適用此塊。
超級塊
第1~31邏輯塊用於超級塊。超級塊包含相關信息,文件系統總大小,文件系統名稱,文件系統日誌設備地址、版本號和文件系統狀態。
分配組
文件系統中其餘的邏輯塊分為許多分配組,分配組由數據塊和索引節點組成,當數據塊分配到目錄或文件時,將使用索引節點來引用那些數據塊。
管理日記記錄文件系統
文件系統是文件、目錄和其他數據結構的集合。
文件系統對相關信息進行維護,並標示文件或目錄數據的具體位置。
文件系統還包含一個引導塊、一個超級塊、位圖一個或多個分配組。分配組包含磁盤索引節點和分段(fragment)
日記記錄文件系統的特徵
索引節點的數目
分配組的大小
文件系統分段的可尋址性
日記記錄文件系統的日誌大小
日記記錄文件系統的最大大小
索引節點的數目
文件系統中的索引節點總數限制了文件總數和該文件系統的總大小。JFS提供了nbpi(每個索引節點的字節數)參數,用於改變文件系統中的索引節點數目。
JFS支持的nbpi值為512、1024、2048、4096、8192、16384、65536和131072。
創建nbpi為4096的8M文件,將為每4096字節的數據創建一個索引節點,導致8M的文件系統最多有2048個索引節點。
JFS將所有文件系統限制為16MB的索引節點
分配組的大小
AIX將文件系統空間隔離為索引節點和用於用户數據的磁盤塊的分組,這些分組成為分配組。分配組的大小可以在創建文件系統時指定,分配組大小可以為8MB、16MB、32MB、64MB
文件系統分段的可尋址性
JFS支持4種分段大小:512、1024、2048和4096字節的連續磁盤空間單元。JFS在索引節點和空間塊中維護28位數字的分段地址。每個分段必須可通過0~2的28次方大小的數字尋址。
分段是最小的可尋址存儲單元。如果文件主要是大小為400字節,則512的分段大小將是最高效的。
日記記錄文件系統的日誌大小
多個日記記錄文件系統使用一個公共日誌,成為JFS日誌,並配置為一個4MB大小。
初始安裝之後,根卷組中的所有文件系統都是用邏輯卷hd8作為公共JFS日誌,缺省為4MB,並且缺省的日誌大小為一個分區;
當使用單個日誌的文件系統空間總量超過2GB時,需要增加缺省日誌大小,JFS日誌僅限於最大256MB。
日記記錄文件系統的最大大小
最大的JFS大小是在創建文件系統時定義的。
文件系統大小限制為(npbi*224)或分段大小*228的最小值
創建文件系統
使用smit crjfs創建日記記錄文件系統
注意:在AIX中,所有的I/O都是以4KB的塊進行;但空間是以512字節塊的倍數進行分配的,能夠創建的最小文件系統等於一個pp。
示例:512字節 = 1個塊
1024字節 = 2個塊
1MB = 2 * 1024個塊
xMB = x * 1024個塊
示例:創建一個4KB的日記記錄文件系統,並將/dummy作為在rootvg卷組中的掛載點。
掛載文件系統
掛載指的是使用户能夠在特定位置使用文件系統、文件、目錄、設備和特殊文件。
AIX使用掛載點將新創建文件系統連接到其他文件樹的過程:
注意:將文件系統掛載到某個目錄中,所掛載文件系統根目錄的權限優先於掛載點的權限
常見問題是pwd命令失敗,由於沒有掛載點目錄的搜索權限,返回permission denied。
通過將掛載點目錄的權限至少設置為111,可以避免此問題。
使用命令行掛載文件系統(/FileSystemX)
mount /FileSystemX
如果知道與文件系統相關聯的設備名稱,可以使用設備名稱來掛載新創建的文件系統;
如果希望掛載所有文件系統:mount{-a|all};
使用smit掛載文件系統:smit mount
自動掛載
將掛載設置為系統初始化期間自動掛載,存在兩種類型的自動掛載:
第一種:啓動和系統運行所必須的掛載。此類文件系統在/etc/filesystem文件中的節具有mount=automatic屬性。當多用户初始化時,/etc/rc腳本嘗試運行mount all命令時,不會掛載這些文件系統,類似,運行unmount all命令也不會卸載這些文件系統。
第二種:用户控制的自動掛載。此類文件系統在/etc/filesystem文件中的節具有mount=true屬性,在系統初始化期間由/etc/rc腳本發出mount all命令時掛載。
通過mount all命令或/etc/rc腳本,指定在初始化時自動掛載某個文件系統。通過創建文件系統時,將Mount AUTOMATICALLY as system restart字段設置為true,或通過命令crfs -A yes filename
顯示已掛載文件系統
使用mount命令
刪除文件系統
步驟1:查看已掛載文件系統,使用mount命令。
步驟2:如刪除文件系統已掛載,使用unmount命令卸載文件系統,#unmount filename。重複步驟1確認是否卸載成功;
如刪除文件系統未掛載,直接跳到步驟3。
步驟3:使用smit rmjfs來刪除日記記錄文件系統,如果刪除掛載此文件系統的目錄,將remove mount point字段設為yes;
使用命令#rmjfs filename,如果刪除掛載點加上-r標誌。
增加文件系統大小
AIX提供動態增加文件系統空間的能力,以保證磁盤具有足夠的空間。
使用命令行增加文件系統大小
步驟1:使用df命令確定文件系統的大小
步驟2:計算需要添加的塊數
步驟3:輸入命令#chfs -a size=new_size_in_512_byte_blocks filename
使用smit增加文件系統大小
步驟1:smit chfs
檢查文件系統的一致性
fsck命令可以檢查文件系統的一致性,並以交互方式修復文件系統。
fsck的標誌:
-f:執行快速檢查。系統掛起而沒有正常關閉所影響到的唯一文件系統是在系統停止時掛載的文件系統。
-p:不顯示次要問題的消息,而是自動修復它們。
-y:對fsck命令提出的所有問題作肯定回答
應在掛載任何文件系統之前,運行fsck命令。必須能夠讀取文件系統所在的設備文件。
fsck命令只是報告文件系統中的文件、已使用塊和空閒塊的數量。如果文件系統不一致,fsck將顯示有關已發現的不一致性的信息,並提示您准許修復它們。
掛載不一致的文件系統可能會導致系統崩潰,如果不使用FileSystem參數指定文件系統,則fsck命令檢查在/etc/filesystems中具有屬性check=TRUE的所有文件系統。
注意:缺省情況下,/,/usr,/var和/tmp文件系統在它們的/etc/filesystem節中將check屬性設置為false(check=false),
原因如下:啓動過程顯式對/,/usr,/var和/tmp文件運行fsck命令。
/,/usr,/var和/tmp文件系統運行/etc/rc文件時掛載,fsck不會修改已掛載的文件系統。
初始化JFS日誌設備
logform命令初始化某個邏輯卷已將其用作JFS日誌設備,此設備存儲有關文件系統元數據的事物信息,並且可以在崩潰時用於回滾未完成的操作。
logform命令的一般語法:logform LogName
注意:logform命令是破壞性的;它清除邏輯卷中的所有數據。
應在運行logform命令之前卸載文件系統,logform命令銷燬現有日誌設備上所有日誌記錄,從而可能導致文件系統數據丟失。
JFS日誌設備的放置
將JFS日誌設備放置在與最活躍文件系統不同的物理捲上,最好放在具有最低I/O使用率的磁盤上,以提高並行資源使用率。
支持大型文件的文件系統
在支持大型文件的文件系統中,在4MB文件偏移量之前存儲的文件數據以4096字節的塊進行分配,在4MB文件偏移量以後,存儲的文件數據使用128KB大小的大型磁盤塊進行分配(32個4096字節的塊)。
示例:一個132MB的文件,在大型文件系統中具有1024個4KB磁盤塊和1024個128KB磁盤塊,兩個單獨的間接塊。
在普通文件系統中需要33個單獨的間接塊(每個塊填充有1024個4KB磁盤地址)
確定支持大型文件的文件系統
lsfs -q filesystem
#lsfs -q /tmp
對文件系統進行故障排除
對超級塊錯誤進行恢復
超級塊受到損害,通過將超級塊備份還原到主超級塊,從而解決問題:
#dd count=1 bs=4k skip=31 seek=1 if=/dev/lvoo of=/dev/lvoo
完成還原過程之後,使用fsck命令檢查文件系統的完整性
#fsck /dev/lvoo
多數情況下,將超級塊備份還原到主超級塊將會恢復文件系統。如果無效,那麼重新創建文件系統,並從備份還原數據。
無法卸載文件系統
如果文件系統存在任何處於活躍狀態的引用,則不能卸載文件系統。將會顯示一下錯誤信息:Device Busy或a device is already mounted or cannot be unmount。
對策:在卸載該文件系統時,必須關閉這些文件。#fuer filesystem將顯示打開文件系統引用的所有進程ID。使用kill命令終止打開引用的進程,然後就可以完成卸載工作。
如果文件系統仍然處於繁忙狀態並且無法對其進行卸載,那麼可能是由於加載了內核擴展,但存在於源文件系統中。
fuser不會顯示以下文件類型的引用,因為沒有涉及到任何用户進程;genkex命令將報告所有已加載的內核擴展。
①該文件系統掛載了其他文件系統。卸載這些文件系統,然後即可卸載該文件系統。使用mount命令獲取已掛載文件系統的列表,要卸載某個文件系統,需要卸載其中已掛載的所有文件系統。
②進程正在使用該文件系統中的目錄作為其當前工作目錄。fuser的-u標誌可以確定進程的所有者。
#fuser -u /tmp