df、du、fdisk:Linux磁盤管理三板斧
df 命令可以獲取硬盤被占用了多少空間,目前還剩下多少空間等信息,它也可以顯示所有文件系統對i節點和磁盤塊的使用情況;
du的英文原義為“disk usage”,含義為顯示磁盤空間的使用情況,統計目錄(或文件)所占磁盤空間的大小;
fdisk 命令 用于磁盤分區;
mkfs ?創建文件系統。
1、查看新增硬盤設備
fdisk ? -l ??
命令的作用是列出當前系統中所有硬盤設備及其分區的信息。其中 /dev/sda ?為原有磁盤設備,/dev/sdb ?為新增磁盤設備。
新的硬盤設備還未進行初始化,沒有包含有效的分區信息。在Linux系統中,分區和格式化的過程是相對獨立的。先分區后創建文件格式。
Device:分區的設備文件名稱。
Boot:是否是引導分區,是,則有“*”標識。
Start:該分區在硬盤中的起始位置(柱面數)。
End:該分區在硬盤中的結束位置(柱面數)。
Blocks:分區的大小,以Blocks(塊)為單位,默認的塊大小為1024字節。
Id:分區類型的ID標記號,對于ext3分區為83,LVM分區為8e。
System:分區類型。
2、分區
對磁盤進行分區,以新建可用的分區;
對該分區進行格式化(format),以創建系統可用的文件系統;
若想要仔細一點,則可對剛才新建好的文件系統進行檢驗;
在Linux系統上,需要創建掛載點(也既是目錄),并將它掛載上來。
這個 fdisk 只有root才能執行。此外,請注意,使用的“設備文件名”不要加上數字,因為分區是對“整個硬盤設備”而不是某個分區。
fdisk ?/dev/sdb ? ?#對 sdb ?進行操作
對硬盤分區, 使用扇區的方式分區
使用直接給定大小的方式分區?
將分區寫入磁盤
partprobe? /dev/sdb? ? ? ? #使操作系統獲知新的分區表情況
#partprobe 命令是強制讓內核重新找一次分區表,否則系統要重啟才能識別到新的分區表。
#因為我們的磁盤無法卸載(含有根目錄),所以內核無法重新取得分區表信息,因此此時系統會要求我們重新啟動(reboot)以更新內核的分區表信息。所以需要使用 partprobe 命令。
fdisk ?-l ? ? ? ?# 查看分區情況
fdisk 沒有辦法處理大于 2TB 以上的磁盤分區,此時你就需要用到 parted 這個命令了。
另外,因為SATA硬盤最多能夠支持到15號的分區,IDE則可以支持63號。所以我們在分區的時候千萬不要超過15號。否則即使你還有剩余的柱面容量,但還是會無法繼續進行分區。
3、格式化
mkfs 即是(make file system)
mkfs ?-t ?ext4 ?/dev/sdb1 ? ?#創建文件系統
4、掛載 / 卸載 文件系統
在安裝Linux操作系統的過程中,自動建立或識別的分區通常會由系統自動完成掛載。然而對于后來新增加的硬盤分區、USB盤、光盤等設備,有時候還需要管理員手動進行掛載,實際上用戶訪問的是經過格式化后建立的文件系統。掛載一個分區時,必須為其制定一個目錄作為掛靠點,用戶通過這個目錄訪問設備中的文件、目錄數據。
查看系統支持那些文件系統和驅動程序:
/etc/filesystems:系統指定的測試掛在文件系統類型;
/proc/filesystem:Linux系統已經加載的文件系統類型;
/lib/modules/$(uname -r)/kernel/fs/ ?:Linux支持的文件系統驅動程序;
df ?-hT ? ? ? ?#查看已掛載分區的使用情況
注意注意:
如果你要掛載的目錄里面并不是空的,那么掛載了文件系統之后,原目錄下的東西就會暫時消失,并不是被覆蓋掉了,而是被隱藏起來了,等到新分區被卸載之后才會重新出現。
但是如果直接將 新的分區,如 ?"/dev/sdb1" ?掛載到某個目錄下,如 "/home"下,則會導致 "/home" 目錄以前的全部文件被覆蓋,但并未消失。且不會將此前的目錄容量加上,這會導致嚴重的問題。如 "/home" 目錄下的 "/zhang" 用戶便不能登錄,zhang 用戶的所有配置和文件也將消失。所以必須注意這個問題。
一定要注意,復制 /home 下面的全部文件,不要忘了隱藏文件,不要忘了權限。不然你更改過后可能導致你這個用戶起不來,這就很尷尬了。虛擬機還好,可以進 root 后再修改回來,要使遠程主機不允許 root 登錄,那你就只有跑過去機房了。如果是阿里云的服務器,哈哈哈。
所以我們需要先將 "/dev/sdb1" ?掛載到 ?"/mnt" 下;
再將 "/home/*" ?所有東西復制到 ?"/mnt/";
接著刪除 "/home/*"? 全部文件;若因為與此目錄有關的程序運行占用目錄導致無法刪除 "/home",則利用 lsof? 命令找到這些程序的 PID,然后 "kill? -9 PID" 后在刪除 "/home" 。lsof 命令?列出被進程所打開的文件的信息
之后再解掛載 "/mnt";
最后再將 ?"/dev/sdb1" 掛載到 ?"/home";
mount ?/dev/sdb1 ?/mnt
cp ?-Rp ?/home/* ?/mnt ? ?#R遞歸負責,p保持復制的權限,如果沒有這個,到時后/home目錄下的某文件夾的所有者和所屬組都是 root,沒有辦法切換到此用戶。
rm ?-rf ?/home ? ? ? ?#此處可能會用到 ?lsof ?命令 --> ?lsof ?/home
umount ?/mnt
mount ?/dev/sdb1 ?/home
Bingo !!!
好像還差一步,需要將此寫進 /etc/fstab 配置文件中,讓它開啟自讀取。
設置文件系統的自動掛載
/etc/fstab?配置文件:包含了需要開機后自動掛載的文件系統記錄。Linux系統每次開機時,會自動讀取這個文件的內容,自動掛載所指定的文件系統。
在 fstab 配置文件中加入掛載點之后其實就已經是開機自動掛載了,不需要用 mount 命令掛載。但是還是用 mount ?實在,因為最后還是需要寫入 /etc/fstab
vi ?/etc/fstab
第一字段:
設備名或設備卷標名。
第二字段:文件系統的掛載點目錄的位置。
第三字段:文件系統類型,如ext3、swap等。
第四字段:掛載參數,即mount命令“-o”選項后可使用的參數,如defaults、rw等。
第五字段:表示文件系統是否需要dump備份,一般設為1時表示需要,設為0時將被dump所忽略。
第六字段:該數字用于決定在系統啟動時進行磁盤檢查的順序,0表示不進行檢查,1表示優先檢查,2表示其次檢查。對于根分區應設為1,其他分區設為2.
添加自動掛載 "/dev/sdb1"分區的配置
vi ?/etc/fstab
/dev/sdb1 ?/home ?ext4 ?defaults ?0 ?0?
這里我將 defaults ?錯寫成 default,導致我開機后用戶 zhang 無法登錄,然后找了半天才找到這個錯誤。
內存交換空間(swap)
還記得在安裝Linux時一定需要的兩個分區吧,一個是根(/)分區,一個就是內存交換分區(swap)。
我們知道CPU多都取得數據都來自內存,那當內存不足的時候,為了讓后續的程序可以順利運行,因此在內存中暫不使用的程序與數據就會被挪到swap中。此時內存就會空出來給需要執行的程序加載。
由于swap使用硬盤來暫時放置內存中的信息,所以用到swap時,你的主機硬盤燈就會開始閃個不停。
mkswap? ? ? ? # 建立交換分區
LVM概述
LVM是Linux系統中對磁盤分區進行管理的一種邏輯機制,它是建立再硬盤和分區之上,文件系統之下的一個邏輯層,在建立文件系統時屏蔽了下層的磁盤分區布局,能夠在保持現有數據不變的情況下動態調整磁盤容量,從而提高了磁盤管理的靈活性。
在安裝RHEL5系統的過程中選擇自動分區時,默認就會采用LVM分區方案,不需要再進行手動配置。如果有特殊需要,也可以使用安裝向導提供的磁盤定制工具調整LVM分區。需要注意的是,“/boot”分區不能基于LVM創建,必須獨立出來。
關于LVM的幾個基本術語:
1、PV(Physical?Volume,物理卷)
物理卷是LVM機制的基本存儲設備,通常對應為一個普通分區或整個硬盤。創建物理卷時,會在分區或硬盤的頭部創建一個保留區塊,用于記錄LVM的屬性,并把存儲空間分割成默認大小為4MB的基本單元PE,從而構成物理卷。
物理卷一般直接使用設備文件名稱,如“/dev/sdb1”、“/dev/sdb2”等。
用于轉換成物理卷的普通分區,建議先使用fdisk工具將分區類型的ID標記號改為“8e”。若是整塊硬盤,可以將所有磁盤空間劃分為一個主分區后再作相應調整。
2、VG(Volume?Group,卷組)
由一個或多個物理卷組成一個整體,即成為卷組,在卷組中可以動態地添加或移除物理卷。許多個物理卷可以分別組成不同的卷組,卷組名稱由用戶自行定義。
3、LV(Logical?Volume,邏輯卷)
邏輯卷是建立在卷組之上的,與物理卷沒有直接關系。
對于邏輯卷來說,每一個卷組就是一個整體,從這個整體中“切出”一小塊空間,作為用戶創建文件系統的基礎,這一小塊空間就稱為邏輯卷。使用mkfs等工具在邏輯卷上創建文件系統以后,即可掛載到Linux系統中的目錄下使用。
通過上述對物理卷、卷組、邏輯卷的解釋可以看出,建立LVM分區管理機制的過程就是:首先,將普通分區或整個硬盤創建為物理卷;接下來,將物理上比較分散的各物理卷的存儲空間組成一個邏輯整體,即卷組;最后,基于卷組這個整體,分割出不同的數據存儲空間,形成邏輯卷。而邏輯卷才是最終用戶可以格式化并掛載使用的存儲單位。
主要命令的語法
pvcreate????設備名
vgcreate????卷組名????物理卷名1????物理卷名2
lvcreate??????-L????大小????-n?????邏輯卷名?????卷組名
lvextend?????-L??+大小?????/dev/卷組名/邏輯卷名