Ⅰ ftp rnfr 550 怎麼辦
(1) 訪問命令 USER命令 格式:USER <username> 功能:指定登錄的用戶名,以便伺服器進行身份驗證。 PASS命令 格式:PASS <password> 功能:指定用戶口令,該命令必須跟在登錄用戶名命令之後。 ACCT命令 格式:ACCT <account> 功能:指定用戶賬號。 REIN命令 格式:REIN 功能:表示重新初始化用戶信息。 QUIT命令 格式:QUIT 功能:關閉與伺服器的連接。 2) 模式設置命令 PASV命令 格式:PASV 功能:該命令告訴FTP伺服器,讓FTP伺服器在指定的數據埠進行監聽,進入被動接收請求的狀態。 PORT命令 格式:PORT<address> 功能:該命令告訴FTP伺服器,客戶端監聽的埠號是address,讓FTP伺服器採用主動模式連接客戶端。 TYPE命令 格式:TYPE<data type> 功能:指定要傳輸的數據類型,有ASCII和BINARY。 MODE命令 格式:MODE<mode> 功能:指定傳輸模式,S表示流,B表示塊,C表示壓縮。
(3) 文件管理命令 CWD命令 格式:CWD <directory> 功能:改變工作目錄。 PWD命令 格式:PWD 功能:返回當前工作目錄。 MKD命令 格式:MKD <directory> 功能:在指定路徑下創建新目錄,參數為表示特定目錄的字元串。 CDUP命令 格式:CDUP 功能:回到上層目錄。 RMD命令 格式:RMD<directory> 功能:刪除指定目錄。參數為表示特定目錄的字元串。 LIST命令 格式:LIST<name> 功能:返回指定路徑下的子目錄及文件列表,省略<路徑>時,返回當前路徑下的文件列表。 NLST命令 格式:NLST <directory> 功能:返回指定路徑下的目錄列表,省略<路徑>時,返回當前目錄。 RNFR命令 格式:RNFR <old path> 功能:重新命名文件,該命令的下一條命令應該用RNTO指定新的文件名。 RNTO命令 格式:RNTO<new path> 功能:該命令和RNFR命令共同完成對文件的重命名,緊跟在RNFR命令後。 DELE命令 格式:DELE<filename> 功能:刪除指定路徑下的文件 (4) 文件傳輸命令 RETR命令 格式:RETR<filename> 功能:請求伺服器將指定路徑內的文件復制到客戶端,也即下載指定的文件。 STOR命令 格式:STOR<filename> 功能:上傳一個指定的文件,並將其存儲在指定的位置。 (5) 其他命令 常用的其他命令有SYST命令,該命令沒有參數,它返回伺服器使用的操作系統。
Ⅱ ftp命令中有沒有刪除文件夾,包括該文件夾下的文件一起刪除的命令(VC)
命令 描述
ABOR 中斷數據連接程序
ACCT <account> 系統特權帳號
ALLO <bytes> 為伺服器上的文件存儲器分配位元組
APPE <filename> 添加文件到伺服器同名文件
CDUP <dir path> 改變伺服器上的父目錄
CWD <dir path> 改變伺服器上的工作目錄
DELE <filename> 刪除伺服器上的指定文件
HELP <command> 返回指定命令信息
LIST <name> 如果是文件名列出文件信息,如果是目錄則列出文件列表
MODE <mode> 傳輸模式(S=流模式,B=塊模式,C=壓縮模式)
MKD <directory> 在伺服器上建立指定目錄
NLST <directory> 列出指定目錄內容
NOOP 無動作,除了來自伺服器上的承認
PASS <password> 系統登錄密碼
PASV 請求伺服器等待數據連接
PORT <address> IP 地址和兩位元組的埠 ID
PWD 顯示當前工作目錄
QUIT 從 FTP 伺服器上退出登錄
REIN 重新初始化登錄狀態連接
REST <offset> 由特定偏移量重啟文件傳遞
RETR <filename> 從伺服器上找回(復制)文件
RMD <directory> 在伺服器上刪除指定目錄
RNFR <old path> 對舊路徑重命名
RNTO <new path> 對新路徑重命名
SITE <params> 由伺服器提供的站點特殊參數
SMNT <pathname> 掛載指定文件結構
STAT <directory> 在當前程序或目錄上返回信息
STOR <filename> 儲存(復制)文件到伺服器上
STOU <filename> 儲存文件到伺服器名稱上
STRU <type> 數據結構(F=文件,R=記錄,P=頁面)
SYST 返回伺服器使用的操作系統
TYPE <data type> 數據類型(A=ASCII,E=EBCDIC,I=binary)
USER <username>> 系統登錄的用戶名
這就是FTP協議的命令集,是有刪除指令的,我們老師以前讓我們自己對照著自己編寫過FTP協議,刪除文件時候不分文件或者文件夾的,只要路徑正確就可以刪除,跟你電腦上點右鍵刪除東西一樣,如果是文件夾,內部所有也都會刪除的。
Ⅲ 請解釋一下FTP連接的命令及響應
FTP命令
命令 描述
ABOR 中斷數據連接程序
ACCT <account> 系統特權帳號
ALLO <bytes> 為伺服器上的文件存儲器分配位元組
APPE <filename> 添加文件到伺服器同名文件
CDUP <dir path> 改變伺服器上的父目錄
CWD <dir path> 改變伺服器上的工作目錄
DELE <filename> 刪除伺服器上的指定文件
HELP <command> 返回指定命令信息
LIST <name> 如果是文件名列出文件信息,如果是目錄則列出文件列表
MODE <mode> 傳輸模式(S=流模式,B=塊模式,C=壓縮模式)
MKD <directory> 在伺服器上建立指定目錄
NLST <directory> 列出指定目錄內容
NOOP 無動作,除了來自伺服器上的承認
PASS <password> 系統登錄密碼
PASV 請求伺服器等待數據連接
PORT <address> IP 地址和兩位元組的埠 ID
PWD 顯示當前工作目錄
QUIT 從 FTP 伺服器上退出登錄
REIN 重新初始化登錄狀態連接
REST <offset> 由特定偏移量重啟文件傳遞
RETR <filename> 從伺服器上找回(復制)文件
RMD <directory> 在伺服器上刪除指定目錄
RNFR <old path> 對舊路徑重命名
RNTO <new path> 對新路徑重命名
SITE <params> 由伺服器提供的站點特殊參數
SMNT <pathname> 掛載指定文件結構
STAT <directory> 在當前程序或目錄上返回信息
STOR <filename> 儲存(復制)文件到伺服器上
STOU <filename> 儲存文件到伺服器名稱上
STRU <type> 數據結構(F=文件,R=記錄,P=頁面)
SYST 返回伺服器使用的操作系統
TYPE <data type> 數據類型(A=ASCII,E=EBCDIC,I=binary)
USER <username>> 系統登錄的用戶名
FTP響應碼
響應代碼 解釋說明
110 新文件指示器上的重啟標記
120 伺服器准備就緒的時間(分鍾數)
125 打開數據連接,開始傳輸
150 打開連接
200 成功
202 命令沒有執行
211 系統狀態回復
212 目錄狀態回復
213 文件狀態回復
214 幫助信息回復
215 系統類型回復
220 服務就緒
221 退出網路
225 打開數據連接
226 結束數據連接
227 進入被動模式(IP 地址、ID 埠)
230 登錄網際網路
250 文件行為完成
257 路徑名建立
331 要求密碼
332 要求帳號
350 文件行為暫停
421 服務關閉
425 無法打開數據連接
426 結束連接
450 文件不可用
451 遇到本地錯誤
452 磁碟空間不足
500 無效命令
501 錯誤參數
502 命令沒有執行
503 錯誤指令序列
504 無效命令參數
530 未登錄網路
532 存儲文件需要帳號
550 文件不可用
551 不知道的頁類型
552 超過存儲分配
553 文件名不允許
Ⅳ redhat /dev/hda1 分區擴大的問題!
LVM是可以的,可以動態的劃分分區的空間,可以找相關的資料看看。
大致上就是先建pv,然後建vg,把pv加入到vg當中,最後建lv,然後掛載就可以了。呵呵,詳細的東西太麻煩。看下邊的東西吧
一份非常內行的linux LVM HOWTO
1. 緒論
歡迎你,親愛的讀者。
寫這個文檔的目的是為了告訴你什麼是LVM,它怎樣工作,你怎樣運用它使你的生活變得更容易。雖然有一份LVM FAQ,但仍是德文的,它是從不同的角度來描寫的。它是一份「真的」HOWTO,在傳授理解(有希望的)的時候也是非常內行的。
我要說清楚我不是一個Linux邏輯卷管理器(Logical Volume Manager)的作者。我向那些作者表示敬意,同時我希望能和他們合作。
不可思議的是我甚至不知道LVM的開發者。我希望這種情況不久會改變。我事先向他們表示道歉。
1.1 免責聲明 & 許可
分發這個文檔是希望它對你有用,但是不提供任何擔保,也沒有銷售或適應特殊目的的隱含擔保。
如果你的磁碟融化了,你公司解僱了你--這決不是我們的錯。對不起。請記得經常做備份,在沒有重要數據的系統上做實驗。
此外,Richard Allen不代表他老闆說話。
Linux是Linus Torvalds的注冊商標。
英文原文(若翻譯有誤,以原文為准)
This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
If your disks melt and your company fires you - its never our fault. Sorry. Make frequent backups and do your experiments on non-mission critical systems.
Furthermore, Richard Allen does not speak for his employer.
Linux is a registered trademark of Linus Torvalds.
1.2 預備知識
不是太多。如果你曾經安裝過Linux和創建過文件系統(fdisk/mkfs),那你就准備就緒了。但因為總是以root身份操作,所以一定要小心謹慎!錯誤的命令或操作設備文件都可能損壞已經存在的數據。
如果你知道怎樣配置HP/UX LVM,那你幾乎都完成了,Linux工作得很象HP上的處理。
1.3 注意事項
關於這份文檔有幾點需要注釋。雖然我寫了大部分,但我真的不希望它停步。我堅決相信Open Source,我鼓勵你反饋、更新、打補丁等等。不要不願意告訴我們有關排版或普通的老錯誤。
如果你感覺你更有資格來維護一部分,或者你認為你能創作和維護一個新的部分,歡迎你。這個HOWTO的SGML格式是通過CVS可用的。我預想這會是個合作計劃。
這份文檔里,你會發現許多FIXME的通知。補丁總是歡迎的!無論你在哪裡發現FIXME,你都要明白你正踩在未知的領域。這不是說其他地方沒有錯誤,而是說這里是要特別注意的地方。如果你已經驗證了什麼,請告訴我,我好刪除這FIXME通知。
1.4 訪問,CVS & 更新
這份HOWTO的規范定位在 這里。
我們現在有匿名的CVS訪問,對全世界普遍有效。這使你更容易獲得最新版的HOWTO,並提供改變和增強。
如果你想通過CVS獲得這份HOWTO,下面教你怎樣做:
$ export CVSROOT=:pserver:[email protected]:/var/cvsroot
$ cvs login
CVS password: [enter cvs (without s)]
$ cvs co lvm-howto
cvs server: Updating lvm-howto
U lvm-howto/lvm-howto.sgml
如果你發現錯誤,或者想增加什麼,本地修復它,並運行「cvs diff -u」,同時將結果發給我們。
提供了一個Makefile文件來幫助你創建postscript,dvi,pdf,html 和 plain text格式。你可能需要安裝sgml-tools,ghostscript 和 tetex 以獲得所有格式。
1.5 這份文檔的編排
我們將首先解釋一些需要的基本知識。我們盡量設法包括例子來幫助理解。
2. 什麼是LVM?
傳統上,一個分區大小是靜態的。這要求一個系統安裝人員必須考慮的不是「我要在這個分區上存儲多少數據」,而是「我『究竟』要在這個分區上存儲多少數據」。當一個用戶在這個分區上沒有空間了,他要麼不得不重新分區(這可能要求整個操作系統重裝),要麼象符號連接一樣使用組裝機。
一個分區就是物理磁碟上一系列連續數據塊的概念已經演變了。多數類Unix系統現在有能力分解物理磁碟到許多單元。多個驅動器上的存儲單元可以匯聚成一個「邏輯卷」,它們可以分配給分區。另外,單元可以隨著空間要求的改變而從分區中添加和刪除。
這就是基本的邏輯卷管理器(LVM)
例如,假設你有一個1GB的磁碟,並且創建「/home」分區花了600MB。設想你沒有空間了,於是決定「/home」需要1GB。用傳統的分區觀念,你不得不有另外一個至少1GB大小的驅動器。接著增加這個磁碟,創建新的/home,並且將現有的數據拷貝過去。
然而,用LVM配置,你僅僅只需要增加400MB(或更大)的磁碟,並將它的存儲單元添加到「/home」分區中。其他工具可以讓你調整原來文件系統的大小,所以你僅僅只需要調整「/home」大小來使用更大的分區,接著返回到商務中。
一個非常特殊的處理,LVM甚至可以做它自身的「快照」,這使你能對不可移動的目標做備份。我們返回到這個激動人心的可能中,稍後,有許多另外的真實應用。
以下章節中,我們解釋了LVM的基本要素,和它使用中的許多概要。
3. 基本原理
Ok,不要因為恐懼而停止,但是LVM有許多你要明白的術語,以免你危及你的文件系統。
我們從下面開始,或多或少。
物理介質 The physical media
你應該感受「物理」這個單詞有極大的延伸,雖然我們剛開始假設它僅僅是一個硬碟,或者一個分區。例如,/dev/hda,/dev/hda6,/dev/sda。你可以轉換一個塊設備上任何連續塊到一個。。。
物理卷 Physical Volume (PV)
一個PV只不過是有許多管理數據添加在它裡面的物理介質--一旦你添加了它,LVM就認為它是。。。的一個持有者。
物理分區 Physical Extents (PE)
物理分區真的象一些大的數據塊,通常有幾MB。PE可以分配給一個。。。
卷組 Volume Group (VG)
一個VG是由許多物理分區組成的(可能來自多個物理卷或硬碟)。雖然這可能容易讓你認為一個VG就是由幾個硬碟組成的(例如/dev/hda和/dev/sda),但是更確切的說,它包含由這些硬碟提供的許多PE。
>;從這個卷組,PE可以分配給一個。。。
邏輯卷 Logical Volume (LV)
Yes,我們最終到達某處。一個邏輯卷是我們工作的最終結果,這里是我們存儲信息的地方。這等同於傳統分區的想法。
象用通常的分區一樣,在邏輯卷上你能代表性的創建一個。。。
文件系統 Filesystem
文件系統是你想它成為的形態:標準的 ext2,ReiserFS,NWFS,XFS,JFX,NTFS,等等。。。對Linux內核來說,在通常的分區和邏輯卷之間沒有差別。
我試著畫了一個ASCII圖來使這些形象化。
一個物理卷,包含了許多物理分區:
+-----[ Physical Volume ]------+
| PE | PE | PE | PE | PE | PE |
+------------------------------+
一個卷組,包含了2個物理卷(PV)有6個物理分區:
+------[ Volume Group ]-----------------+
| +--[PV]--------+ +--[PV]---------+ |
| | PE | PE | PE | | PE | PE | PE | |
| +--------------+ +---------------+ |
+---------------------------------------+
我們現在做更進一步擴展:
+------[ Volume Group ]-----------------+
| +--[PV]--------+ +--[PV]---------+ |
| | PE | PE | PE | | PE | PE | PE | |
| +--+---+---+---+ +-+----+----+---+ |
| | | | +-----/ | | |
| | | | | | | |
| +-+---+---+-+ +----+----+--+ |
| | Logical | | Logical | |
| | Volume | | Volume | |
| | | | | |
| | /home | | /var | |
| +-----------+ +------------+ |
+---------------------------------------+
這個向我們展示了兩個文件系統,它跨越兩個磁碟。/home文件系統包含4個物理分區,/var文件系統包含2個。
bert hubert 正在寫一個工具來更真實的描述LVM,這里提供了一些它在屏幕上出現的外觀。看起來比ASCII圖畫要好。
3.1 Show & Tell
Ok,這些概念很難理解(』We are LVM of Borg...),因此下面給出了創建一個邏輯卷的例子。不要粘貼這個例子到你的控制台,因為這樣會破壞數據,除非碰巧你的計算機的/dev/hda3和/dev/hdb2沒有使用。
如果有疑問,查看上面的ASCII圖畫。
你應該首先設置/dev/hda3和/dev/hdb2的分區類型為0x8e,它表示」Linux LVM」。請注意你的fdisk的版本可能仍不認識這種類型,因此它顯示為「Unknown」:
# fdisk /dev/hda
Command (m for help): p
Disk /dev/hda: 255 heads, 63 sectors, 623 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 2 16033+ 83 Linux
/dev/hda2 3 600 4803435 83 Linux
/dev/hda3 601 607 56227+ 83 Linux
/dev/hda4 608 614 56227+ 83 Linux
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Command (m for help): p
Disk /dev/hda: 255 heads, 63 sectors, 623 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 2 16033+ 83 Linux
/dev/hda2 3 600 4803435 83 Linux
/dev/hda3 601 607 56227+ 8e Unknown
/dev/hda4 608 614 56227+ 83 Linux
Command (m for help): w
我們對/dev/hdb2做同樣的操作,在此就不演示了。這是需要的,以至LVM能重建你應該丟失的配置。
通常,不需要重啟,但有些計算機卻要求。因此如果下面的例子不工作,試試重啟。
接著我們創建物理卷(PV),如下:
# pvcreate /dev/hda3
pvcreate -- physical volume "/dev/hda3" successfully created
# pvcreate /dev/hdb2
pvcreate -- physical volume "/dev/hdb2" successfully created
我們再將這兩個物理卷(PV)加到一個叫做「test」的卷組(VG)中:
# vgcreate test /dev/hdb2 /dev/hda3
vgcreate -- INFO: using default physical extent size 4 MB
vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate -- doing automatic backup of volume group "test"
vgcreate -- volume group "test" successfully created and activated
現在我們有一個空的卷組(VG),讓我們來檢查一下:
# vgdisplay -v test
--- Volume group ---
VG Name test
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 0
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 184 MB
PE Size 4 MB
Total PE 46
Alloc PE / Size 0 / 0
Free PE / Size 46 / 184 MB
--- No logical volumes defined in test ---
--- Physical volumes ---
PV Name (#) /dev/hda3 (2)
PV Status available / allocatable
Total PE / Free PE 13 / 13
PV Name (#) /dev/hdb2 (1)
PV Status available / allocatable
Total PE / Free PE 33 / 33
這里的許多數據--大多數現在都容易理解了。我們看到沒有邏輯卷(LV)定義,因此我們要補上它。我們將在「test」卷組(PV)中創建一個50MB的邏輯卷,叫做「HOWTO」:
# lvcreate -L 50M -n HOWTO test
lvcreate -- rounding up size to physical extent boundary "52 MB"
lvcreate -- doing automatic backup of "test"
lvcreate -- logical volume "/dev/test/HOWTO" successfully created
Ok,到這里,我們創建一個文件系統:
# mke2fs /dev/test/HOWTO
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
13328 inodes, 53248 blocks
2662 blocks (5.00%) reserved for the super user
First data block=1
7 block groups
8192 blocks per group, 8192 fragments per group
1904 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
# mount /dev/test/HOWTO /mnt
# ls /mnt
lost+found
我們做完了!讓我們回顧我們的卷組(VG),它現在充滿了一些東西:
# vgdisplay test -v
--- Volume group ---
VG Name test
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 1
Open LV 1
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 184 MB
PE Size 4 MB
Total PE 46
Alloc PE / Size 13 / 52 MB
Free PE / Size 33 / 132 MB
--- Logical volume ---
LV Name /dev/test/HOWTO
VG Name test
LV Write Access read/write
LV Status available
LV # 1
# open 1
LV Size 52 MB
Current LE 13
Allocated LE 13
Allocation next free
Read ahead sectors 120
Block device 58:0
--- Physical volumes ---
PV Name (#) /dev/hda3 (2)
PV Status available / allocatable
Total PE / Free PE 13 / 13
PV Name (#) /dev/hdb2 (1)
PV Status available / allocatable
Total PE / Free PE 33 / 20
好,這就是了。/dev/hda3完全沒用,而/dev/hdb2有13個物理分區(PE)在用。
3.2 激活和非激活:內核空間和用戶空間
和使用所有操作系統一樣,Linux劃分了兩個部分:內核空間(kernel space)和用戶空間(user space)。用戶空間有時叫做用戶區(userland),這也是關於這個主題的一個很好的名字。
關於邏輯卷管理器的創建和修改都是在用戶空間做的,然後傳給內核。一旦卷組或邏輯卷向內核匯報,它就叫做「激活(Active)」。當它被激活時,只有某些更改可以執行,其他的更改只有在它非激活時執行。
4. 首要條件
LVM在很大范圍內的內核中都有效。在Linux 2.4,LVM將全部被集成。內核2.3.47和以前的,LVM要經過處理來合並到主內核中。
4.1 內核
Linux 2.4
包含了你需要的所有內容。希望大多數的發行版都將LVM當成模塊集成來發行。如果你需要編譯,僅僅是當你選擇塊設備時打勾LVM選項。
Linux 2.3.99.*
一旦內核向前發展穩定了,這部分就不會存在了。但是現在,我們還是要描述一下。
當我們寫這篇文檔時,Linux最新的內核版本是2.3.99pre5,它仍然需要一些小的補丁才能使LVM工作。
對於Linux 2.3.99pre3,有兩個補丁發行:
一個補丁是張貼在linux-kernel,在這里可以找到。
Andrea Arcangeli改進了這個補丁,提供了一個增量的補丁,它應用於2.3.99pre3 LVM補丁和這之上。
對於Linux 2.3.99pre5,bert hubert將這兩個補丁合並成一個了,並且主要針對2.3.99pre5。在這里可以找到這個補丁。使用它要小心。
2.3.99pre6-1,是的,是補丁的一個預覽版,特色是第一次完成了LVM的支持!它仍然遺漏了Andreas的補丁,但我們確信它不久真的會發行的。
2.3.99pre4-ac1預設有一個小的補丁在,並且能工作。雖然它不包括Andreas的補丁。
Linux 2.2
FIXME: write this
Linux 2.3
FIXME: write this
4.2 用戶餘地
你需要從LVM站點下載有效的工具。用glibc2.1編譯系統要求的一些補丁。即使這樣,在Debian 2.2上仍會出錯。
5. 增長文件系統
你可以用一個預備好的腳本做大量的工作,也可以根據你的需要手工做
5.1 使用e2fsadm
如果在你的卷組中有剩餘空間,並且你使用的是ext2文件系統(大多數人都是這樣的),你就可以使用這個便捷的工具。
e2fsadm命令利用商業的resize2fs工具。雖然人們都感覺resize2fs是一個很好的軟體,但是它並沒有被廣泛的安裝。
如果你想使用FSF的ext2resize命令,你需要告訴e2fsadm以下內容:
# export E2FSADM_RESIZE_CMD=ext2resize
# export E2FSADM_RESIZE_OPTS=""
餘下的就簡單了,e2fsadm使用時很象其他的LVM命令:
# e2fsadm /dev/test/HOWTO -L+50M
e2fsadm -- correcting size 102 MB to physical extent boundary 104 MB
e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/test/HOWTO: 11/25688 files (0.0% non-contiguous), 3263/102400 blocks
lvextend -- extending logical volume "/dev/test/howto" to 104 MB
lvextend -- doing automatic backup of volume group "test"
lvextend -- logical volume "/dev/test/HOWTO" successfully extended
ext2_resize_fs
ext2_grow_fs
ext2_block_relocate
ext2_block_relocate_grow
ext2_grow_group
ext2_add_group
ext2_add_group
ext2_add_group
ext2_add_group
ext2_add_group
ext2_add_group
direct hits 4096 indirect hits 0 misses 1
e2fsadm -- ext2fs in logical volume "/dev/test/HOWTO" successfully extended to 104 MB
5.2 增長邏輯卷
e2fsadm命令為你做了這些工作。然而,了解怎樣手工來做可能會有用的。
如果在你的卷組中有剩餘空間,那麼只需要一行:
# lvextend -L+12M /dev/test/HOWTO
lvextend -- rounding size to physical extent boundary
lvextend -- extending logical volume "/dev/test/HOWTO" to 116 MB
lvextend -- doing automatic backup of volume group "test"
lvextend -- logical volume "/dev/test/HOWTO" successfully extended
5.3 增長卷組
這是用vgextend功能實現的,它很象餡餅一樣容易。你首先需要創建一個物理卷。這要用pvcreate來實現。使用這個工具,你轉換任何塊設備為一個物理卷。
這樣做了之後,vgextend做餘下的任務:
# pvcreate /dev/sda1
pvcreate -- physical volume "/dev/sda1" successfully created
# vgextend webgroup /dev/sda1
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "webgroup"
vgextend -- volume group "webgroup" successfully extended
請注意,為了要做這些,你的卷組必須是激活的。你可以通過執行象「vgchange -a y webgroup」來使它激活。
5.4 增長文件系統
如果你想手工做,有兩條路徑可以實現。
ext2離線,使用ext2resize
離線,就意味著你必須umount這個文件系統來做這些改變。在做這些改變的時候,這個文件系統和它上面的數據暫時不可用。如果你想擴充根分區或其他重要的分區,你必須用其他的啟動介質來引導。
ext2resize工具可以在GNU ftp站點找到,但大多數的發行版都將它作為一個包來發行。它的語法也簡單易懂:
# ext2resize /dev/HOWTO/small 40000
這里40000是文件系統已經增長或收縮之後的塊的數目。
ext2在線
FIXME: write this
6. 替換磁碟
這是LVM的好處之一。一旦你發現某個磁碟有錯誤,那就是要移動你的數據的時候了。使用LVM它很象餡餅一樣容易。我們首先舉一個明顯的替換例子,你先添加一個磁碟到系統中,它至少要和你想要替換的磁碟一樣大。
要移動數據,我們移動卷組的物理分區到另一個磁碟上,或者更准確的說,到另一個物理卷上。要做這些,LVM給我們提供了pvmove功能。
假設我們懷疑的那塊磁碟叫/dev/hda1,並且我們想用/dev/sdb3來替換它。我們首先將/dev/sdb3添加到包含/dev/hda1的那個卷組中。
在這之前,umount這個卷組上的所有文件系統看來是明智的。有一個全備份也不會損壞什麼。
FIXME: is this necessary?
接下來我們執行pvmove。非常簡單的,我們僅僅提到我們想要移走的那塊磁碟,就象這樣:
# pvmove /dev/hda1
pvmove -- moving physical extents in active volume group "test1"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- doing automatic backup of volume group "test1"
pvmove -- 12 extents of physical volume "/dev/hda1" successfully moved
請留意這個警告。而且看來至少有些內核或LVM的版本在使用這個命令時有問題。我是用2.3.99pre6-2來測試的,它可以工作,但要警告。
現在,/dev/hda1沒有包含任何物理分區了,我們可以將它從卷組中刪除:
# vgrece test1 /dev/hda1
vgrece -- doing automatic backup of volume group "test1"
vgrece -- volume group "test1" successfully reced by physical volume:
vgrece -- /dev/hda1
FIXME: we need clarity on a few things. Should the volume group be active? When do we get data loss?
6.1 當事情發生在晚期時
如果一個磁碟沒有出現警告就失敗了,你就不能移走它上面的物理分區到另一個物理卷上,這樣你可能會丟失數據,除非在這個失敗的PV上的邏輯卷是鏡像了的。正確的行為是用一個同樣的PV或者至少同樣大小的分區來替換這個失敗的PV。
/etc/lvmconf目錄包含了LVM數據和結構的備份,包括哪些磁碟做成了PV,每個PV屬於哪個VG,每個VG中有哪些LV。
替換了出錯的磁碟之後,你可以用vgcfgrestor命令來恢復LVM數據到新的PV上。它恢復卷組和所有它的信息,但是不會恢復在邏輯卷上的數據。這是因為當LVM數據做一些更改時,LVM命令自動做備份。
--------------------------------------------------------------------------------
7. 為一致性備份做快照
這是更加難以置信的一個可能性。假設你有一個非常繁忙的伺服器,有許多東西運行。為了一個有用的備份,你需要停止大量的程序,否則,你將以數據不一致告終。
一個規范的例子是從/tmp移動一個文件到/root下,而且/root將先備份。當/root被讀的時候,這個文件還不在那裡。當/tmp被備份時,這個文件已經不在了。
另一個事例是保存資料庫或目錄。如果一個文件在使用狀態,我們就沒有任何線索了,除非我們給應用程序時間做一個清除的關閉。
這樣的話,新的問題又出現了。我們關閉程序,做我們的備份,接著重新啟動它們。如果備份只花幾分鍾這是很好的,但是,如果它要花數小時,或者你根本不確定它到底要花多久的時候,事情就真的痛苦了。
LVM可以營救。
使用LVM,我們可以做一個LV瞬間的快照,然後mount它,再備份它。
讓我們試驗一下:
# mount /dev/test/HOWTO /mnt
# echo >; /mnt/a.test.file
# ls /mnt/
a.test.file lost+found
# ls -l /mnt/
total 13
-rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found
Ok,我們現在有些事情要用它一起做。讓我們產生這個快照:
# lvcreate --size 16m --snapshot --name snap /dev/test/HOWTO
lvcreate -- WARNING: all snapshots will be disabled if more than 16 MB are changed
lvcreate -- INFO: using default snapshot chunk size of 64 KB
lvcreate -- doing automatic backup of "test"
lvcreate -- logical volume "/dev/test/HOWTO" successfully created
對於「--size」參數以後再詳述。讓我們mount這個快照:
# mount /dev/test/snap /snap
# ls /snap
total 13
-rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found
現在我們從原處刪除a.test.file,並且檢查它是否仍然在快照里:
# rm /mnt/a.test.file
# ls /snap
total 13
-rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found
太令人驚訝了!
7.1 它是如何工作的?
記得我們不得不設置「--size」參數嗎?真正發生的事情是,「snap」卷需要有那些當LVM調用時,在原處要被改變的所有塊的一個拷貝。
當我們刪除a.test.file時,它的i節點被刪除。這引起64KB要被標注成「臟的」--同時原始數據的一個拷貝被寫到「snap」卷。這個例子中,我們分配了16MB給快照,因此如果多於16MB的塊要被修改,快照就會無效了。
要決定一個快照分區的正確大小,你將不得不推測基於主LV的使用模式、快照要激活的總時間。例如,在午夜,當無人使用系統的情況下,一個幾小時的備份可能要求很小的空間。
請注意,快照不是永久的。如果你卸下LVM或重啟,它們就丟失了,需要重新創建。
--------------------------------------------------------------------------------
8. 冗餘 & 性能
為了性能的考慮,可以將數據分散在幾個條塊化的磁碟上。這意味