#######linux文件系統管理##########
文件系統
文件系統這個名詞大家都很陌生,不過如果說成分區,大家就比較容易理解了。原先每個分區只能格式化為一個文件系統,所以我們可以認為文件系統就是指分區。不過隨着技術的進步,現在一個文件系統可以由幾個分區組成,或者一個分區可以格式化為幾個不同的文件系統,所以我們已經不能把文件系統和分區等同對待了。
文件系統是創建在硬盤上,所以先聊聊硬盤
##硬盤
#機械硬盤HDD
機械硬盤采用磁性碟片來存儲數據
機械硬盤主要由磁盤盤片、磁頭、主軸與傳動軸等組成
數據就存放在磁盤盤片中,機械硬盤是上下盤面同時進數據讀取的,目前機械硬盤的常見轉速是 7200 r/min),所以機械硬盤在讀取或寫入數據時,非常害怕晃動和磕碰
機械硬盤的邏輯結構主要分為磁道、扇區和拄面
磁道:每個盤片都在邏輯上有很多的同心圓,最外面的同心圓就是 0 磁道。我們將每個同心圓稱作磁道(注意,磁道只是邏輯結構,在盤面上並沒有真正的同心圓)
扇區:在磁盤上每個同心圓是磁道,從圓心向外呈放射狀地產生分割線(扇骨),將每個磁道等分為若干弧段,每個弧段就是一個扇區。每個扇區的大小是固定的,為 512Byte。扇區也是磁盤的最小存儲單位。
柱面:盤片都會從外向內進行磁道編號,最外側的就是 0 磁道。具有相同編號的磁道會形成一個圓柱
硬盤的大小等於使用"磁頭數 x 柱面數 x 扇區數 x 每個扇區的大小
#常見的硬盤接口
IDE 硬盤接口(Integrated Drive Eectronics,並口,即電子集成驅動器)也稱作 "ATA硬盤" 或 "PATA硬盤"
SATA 接口(Serial ATA,串口),是速度更高的硬盤標准,具備了更高的傳輸速度,並具備了更強的糾錯能力
SCSI 接口(Small Computer System Interface,小型計算機系統接口),廣泛應用在服務器上,具有應用范圍廣、多任務、帶寬大、CPU 占用率低及熱插拔等優點
#固態硬盤SSD
固態硬盤通過閃存顆粒來存儲數據
一種是采用閃存作為存儲介質的;另一種是采用DRAM作為存儲介質的。目前使用較多的主要是采用閃存作為存儲介質的固態硬盤
##文件系統
硬盤是用來存儲數據的,可以將其想象成櫃子,只不過櫃子是用來存儲衣物的。新買來的硬盤,通常要對其進行分區並格式化,分區就如同把一個大櫃按照要求分割成幾個小櫃子(組合衣櫃);格式化就好比在每個小櫃子中打入隔斷,決定每個隔斷的大小和位置,然后在櫃門上貼上標簽,標簽中寫清楚每件衣服保存的隔斷的位置和這件衣服的一些特性(比如衣服是誰的,衣服的顏色、大小等)。所以格式硬盤不僅僅是刪除數據,而且向硬盤中寫入文件系統(不同的操作系統就有不同的文件系統,所以格式化是有必要的)。既然可以把硬盤比喻成衣櫃,那么怎么快定位到數據呢,那就是通過索引搜索了。
#存儲方式
通常情況下,文件系統會將文件的實際內容和屬性分開存放:
文件的屬性保存在 inode 中(i 節點)中,每個 inode 都有自己的編號。每個文件各占用一個 inode。不僅如此,inode 中還記錄着文件數據所在 block 塊的編號;
文件的實際內容保存在 block 中(數據塊),類似衣櫃的隔斷,用來真正保存衣物。每個 block 都有屬於自己的編號。當文件太大時,可能會占用多個 block 塊。
另外,還有一個 super block(超級塊)用於記錄整個文件系統的整體信息,包括 inode 和 block 的總量、已經使用量和剩余量,以及文件系統的格式和相關信息等
#查看當前系統支持的文件系統
/usr/src/kernels/當前系統版本/fs
[root@lgh ~]# ls /usr/src/kernels/3.10.0-514.16.1.el7.x86_64/fs/
9p befs cifs devpts exofs f2fs gfs2 hppfs jffs2 logfs nfs_common ntfs proc ramfs sysv
adfs bfs coda dlm exportfs fat hfs hugetlbfs jfs Makefile nfsd ocfs2 pstore reiserfs ubifs
affs btrfs configfs ecryptfs ext2 freevxfs hfsplus isofs Kconfig minix nilfs2 omfs qnx4 romfs udf
afs cachefiles cramfs efivarfs ext3 fscache hostfs jbd Kconfig.binfmt ncpfs nls openpromfs qnx6 squashfs ufs
autofs4 ceph debugfs efs ext4 fuse hpfs jbd2 lockd nfs notify overlayfs quota sysfs xfs
#硬盤設備識別
MBR,全稱Master Boot Record,可譯為硬盤主引導記錄,占據硬盤0磁道的第一個扇區。MBR中,包括用來載入操作系統的可執行代碼,實際上,此可執行代碼就是MBR中前446個字節的boot loader程序(引導加載程序),而在boot loader程序之后的64個(16×4)字節的空間,就是存儲的分區表(Partition table)相關信息。如圖1所示。
在分區表(Partition table)中,主要存儲的值息包括分區號(Partition id)、分區的起始磁柱和分區的磁柱數量。所以 Linux 操作系統在初始化時就可以根據分區表中以上 3 種信息來識別硬盤設備。其中,常見的分區號如下:
0x5(或 0xf):可擴展分區(Extended partition)。
0x82:Linux 交換區(Swap partition)。
0x83:普通 Linux 分區(Linux partition)。
0x8e:Linux 邏輯卷管理分區(Linux LVM partition)。
0xfd:Linux 的 RAID 分區(Linux RAID auto partition)
由於 MBR 留給分區表的磁盤空間只有 64 個字節,而每個分區表的大小為 16 個字節,所以在一個硬盤上最多可以划分出 4 個主分區。如果想要在一個硬盤上划分出 4 個以上的分區時,可以通過在硬盤上先划分出一個可擴展分區的方法來增加額外的分區。
基本命令
##df
df 命令,用於顯示 Linux 系統中各文件系統的硬盤使用情況,包括文件系統所在硬盤分區的總容量、已使用的容量、剩余容量等。
df 命令主要是從各文件系統的 Super block 中讀取數據
格式:df [選項] [目錄或文件名]
-a 顯示所有文件系統信息,包括系統特有的 /proc、/sysfs 等文件系統;
-m 以 MB 為單位顯示容量;
-k 以 KB 為單位顯示容量,默認以 KB 為單位;
-h 使用人們習慣的 KB、MB 或 GB 等單位自行顯示容量;
-T 顯示該分區的文件系統名稱;
-i 不用硬盤容量顯示,而是以含有 inode 的數量來顯示
#du
du 是統計目錄或文件所占磁盤空間大小的命令
格式:du [選項] [目錄或文件名]
-a:顯示每個子文件的磁盤占用量。默認只統計子目錄的磁盤占用量
-h:使用習慣單位顯示磁盤占用量,如 KB、MB 或 GB 等;
-s:統計總磁盤占用量,而不列出子目錄和子文件的磁盤占用量
--max-depth=1 :用於顯示子目錄的大小(常用,用來查找哪些子目錄占用資源多)
[root@lgh zabbix]# ll
total 4
-rw-r--r-- 1 zabbix zabbix 0 Sep 28 2018 output.txt
drwxrwxr-x 2 zabbix zabbix 4096 Jun 18 11:44 script
[root@lgh zabbix]# du -h --max-depth=1
124K ./script
4.0K ./.ssh
160K .
#du和df比較
df命令是從文件系統的角度考慮的,通過文件系統中未分配的空間來確定文件系統中已經分配的空間大小。
du 命令是面向文件的,只會計算文件或目錄占用的磁盤空間。也就是說,df 命令統計的分區更准確,是真正的空閑空間。
#mount
用於掛載磁盤
掛載指的是將硬件設備的文件系統和 Linux 系統中的文件系統,通過指定目錄(作為掛載點)進行關聯。而要將文件系統掛載到 Linux 系統上
#格式:mount [選項]
-l :單純使用 mount 命令,會顯示出系統中已掛載的設備信息,使用 -l 選項,會額外顯示出卷標名稱
-a :該選項的含義是自動檢查 /etc/fstab 文件中有無疏漏被掛載的設備文件,如果有,則進行自動掛載操作
-t :系統類型:指定欲掛載的文件系統類型。Linux 常見的支持類型有 EXT2、EXT3、EXT4、iso9660(光盤格式)、vfat、reiserfs 等。如果不指定具體類型,掛載時 Linux 會自動檢測。
-L :卷標名:除了使用設備文件名(例如 /dev/hdc6)之外,還可以利用文件系統的卷標名稱進行掛載。
-n :在默認情況下,系統會將實際掛載的情況實時寫入 /etc/mtab 文件中,但在某些場景下(例如單人維護模式),為了避免出現問題,會刻意不寫入,此時就需要使用這個選項;
-o :特殊選項,可以指定掛載的額外選項,比如讀寫權限、同步/異步等,如果不指定,則使用默認值(defaults定義默認值,相當於 rw、suid、dev、exec、auto、nouser、async 這 7 個選項。)
rw/ro:是否對掛載的文件系統擁有讀寫權限,rw 為默認值,表示擁有讀寫權限;ro 表示只讀權限。
async/sync:此文件系統是否使用同步寫入(sync)或異步(async)的內存機制,默認為異步 async。
dev/nodev:是否允許從該文件系統的 block 文件中提取數據,為了保證數據安裝,默認是 nodev。
auto/noauto:是否允許此文件系統被以 mount -a 的方式進行自動掛載,默認是 auto。
suid/nosuid:設定文件系統是否擁有 SetUID 和 SetGID 權限,默認是擁有。
exec/noexec:設定在文件系統中是否允許執行可執行文件,默認是允許。
user/nouser:設定此文件系統是否允許讓普通用戶使用 mount 執行實現掛載,默認是不允許(nouser),僅有 root 可以。
defaults:定義默認值,相當於 rw、suid、dev、exec、auto、nouser、async 這 7 個選項。
remount:重新掛載已掛載的文件系統,一般用於指定修改特殊權限。
#建立掛載點目錄
[root@lgh ~]# mkdir /mnt/disk1
#掛載分區
[root@lgh ~]# mount /dev/sdb1 /mnt/disk1、
#掛載光盤
[root@lgh ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/ #-t iso9660可以省略,系統會自動檢測
#掛載u盤
fdisk -l #查看U盤的設備文件名
mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/
#掛載光盤
[root@lgh ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/ #-t iso9660可以省略,系統會自動檢測
#掛載u盤
fdisk -l #查看U盤的設備文件名
mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/
##開機啟動配置自動掛載
通過/etc/fstab文件來配置
[root@lgh zabbix]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed May 30 08:01:26 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rootvg-rootlv / ext4 defaults 1 1
UUID=35073a22-8611-4c98-a165-5abee7db9d0a /boot ext4 defaults 1 2
/dev/mapper/rootvg-homelv /home ext4 defaults 1 2
/dev/mapper/rootvg-swaplv swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
#####################
tmpfs、devpts、sysfs 和 proc 這幾行,它們分別是與共享內存、終端窗口、設備信息和內核參數相關聯的特殊設備。(可忽略)
在 fstab 文件中,每行數據都分為了 6 個字段,它們的含義分別是:
1、用來掛載每個文件系統的分區設備文件名或 UUID(用於指代設備名);
2、掛載點;
3、文件系統的類型;
4、各種掛載參數;
5、指定分區是否被 dump 備份,0 代表不備份,1 代表備份,2 代表不定期備份。
6、指定分區是否被 fsck 檢測;0 代表不檢測,其他數字代表檢測的優先級,1 的優先級比 2 高。所以先檢測 1 的分區,再檢測 2 的分區。一般分區的優先級是 1,其他分區的優先級是 2
UUID 即通用唯一標識符,是一個 128 位比特的數字,可以理解為就是硬盤的 ID,UUID 由系統自動生成和管理。
#umount
#格式:umount 設備文件名或掛載點
如果要卸載某硬件設備,在執行 umount 命令之前,用戶須退出掛載目錄。
#fsck
檢測和修復文件系統,注意:只有身為 root 用戶且文件系統出現問題時才會使用,當一個受損文件系統中包含了非常有價值的數據時,務必首先進行備份!使用 fsck 命令修改某文件系統時,這個文件系統對應的磁盤分區一定要處於卸載狀態。在正常狀況下使用 fsck 命令,很可能損壞系統。
#格式:sck [選項] 分區設備文件名
-a:自動修復文件系統,沒有任何提示信息。
-r:采取互動的修復模式,在修改文件前會進行詢問,讓用戶得以確認並決定處理方式。
-A:按照 /etc/fstab 配置文件的內容,檢查文件內羅列的全部文件系統。
-t:文件系統類型 指定要檢查的文件系統類型。
-C:顯示檢查分區的進度條。
-f:強制檢測,一般 fsck 命令如果沒有發現分區有問題,則是不會檢測的。如果強制檢測,那么不管是否發現問題,都會檢測。
-y:自動修復,和 -a 作用一致,不過有些文件系統只支持 -y
#dumpe2fs
可以使用 dumpe2fs 命令來查看文件系統的詳細信息
dumpe2fs [-h] 文件名 # 例如dumpe2fs /dev/mapper/VolGroup-LogVol01 -h
-h 選項的含義是僅列出 superblock(超級塊)的數據信息
使用 dumpe2fs 命令可以查詢到非常多的信息,以上信息大致可分為 2 部分。前半部分顯示的是超級塊的信息,包括文件系統名稱、已使用以及未使用的 inode 和 block 的數量、每個 block 和 inode 的大小,文件系統的掛載時間等。
另外,Linux 文件系統(EXT 系列)在格式化的時候,會分為多個區塊群組(block group),每 個區塊群組都有獨立的 inode/block/superblock 系統。此命令輸出結果的后半部分,就是每個區塊群組的詳細信息(如 Group0、Group1)
#fdisk
fdisk 命令較為常用分區命令,但不支持大於 2TB 的分區,大於2TB用parted命令
fdisk -l #列出系統分區
fdisk <磁盤設備> #對磁盤進行分區
[root@lgh3 ~]# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors #硬盤文件名和硬盤大小
Units = sectors of 1 * 512 = 512 bytes #每個柱面的大小
Sector size (logical/physical): 512 bytes / 512 bytes#每個扇區的大小
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a3b98
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 62914559 30407680 8e Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x3a265abd
Device Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 8e Linux LVM
/dev/sdb2 10487808 20973567 5242880 8e Linux LVM
/dev/sdb3 20973568 31459327 5242880 8e Linux LVM #7列
Disk /dev/mapper/centos-root: 27.9 GB, 27913093120 bytes, 54517760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 3221 MB, 3221225472 bytes, 6291456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/scvg-lamplv: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
信息的下半部分是分區的信息,共7列,含義如下
Device:分區的設備文件名。
Boot:是否為啟動引導分區,在這里/dev/sda1為啟動引導分區。
Start:起始柱面,代表分區從哪里開始。
End:終止柱面,代表分區到哪里結束。
Blocks:分區的大小,單位是KB。
id:分區內文件系統的ID。在fdisk命令中,可以使用"i"查看。
System:分區內安裝的系統是什么。
#fdisk創建分區之命令詳解
[root@lgh3 ~]# fdisk /dev/sdb #對/dev/sdb分區 Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): m Command action a toggle a bootable flag #設置可引導標記 b edit bsd disklabel #編輯 bsd 磁盤標簽 c toggle the dos compatibility flag #設置 DOS 操作系統兼容標記 d delete a partition #刪除一個分區 g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types #顯示已知的文件系統類型。82 為 Linux swap 分區,83 為 Linux 分區 m print this menu #顯示幫助菜單 n add a new partition #新建分區 o create a new empty DOS partition table #建立空白 DOS 分區表 p print the partition table #顯示分區列表 q quit without saving changes #不保存退出 s create a new empty Sun disklabel #新建空白 SUN 磁盤標簽 t change a partition's system id #改變一個分區的系統 ID u change display/entry units #改變顯示記錄單位 v verify the partition table #驗證分區表 w write table to disk and exit #保存退出 x extra functionality (experts only) #附加功能 Command (m for help): q
#fdisk創建主分區和邏輯分區
建立主分區的過程就是這樣的:"fdisk 硬盤名 -> n(新建)->p(建立主分區) -> 1(指定分區號) -> 回車(默認從 1 柱面開始建立分區)-> +2G(指定分區大小)" -> w保存退出
創建邏輯分區也是同樣的步驟,但是一個磁盤最多建立四個主分區,或者3個主分區+一個擴展分區,然后可以在擴展分區的基礎上創建邏輯分區,如下我已經建立了主分區和一個擴展分區:
接下來我們可以下擴展分區的基礎上創建邏輯分區。
#fdisk創建邏輯分區
要求重新啟動,才能格式化,可是重新啟動很浪費時間。如果不想重新啟動,則可以使用 partprobe 命令
#partprobe
#parted
parted 命令是可以在命令行直接分區和格式化的,不過 parted 交互模式才是更加常用的命令方式,進入交互模式的方法如下:
parted <硬盤設備文件名>
#################交互命令#######################
check NUMBER #做一次簡單的文件系統檢測 cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER #復制文件系統到另一個分區 help [COMMAND] #顯示所有的命令幫助 mklabel,mktable LABEL-TYPE #創建新的磁盤卷標(分區表) mkfs NUMBER FS-TYPE #在分區上建立文件系統 mkpart PART-TYPE [FS-TYPE] START END #創建一個分區 mkpartfs PART-TYPE FS-TYPE START END #創建分區,並建立文件系統 move NUMBER START END #移動分區 name NUMBER NAME #給分區命名 print [devices|free|list,all|NUMBER] #顯示分區表、活動設備、空閑空間、所有分區 quit #退出 rescue START END #修復丟失的分區 resize NUMBER START END #修改分區大小 rm NUMBER #刪除分區 select DEVICE #選擇需要編輯的設備 set NUMBER FLAG STATE #改變分區標記 toggle [NUMBER [FLAG]] #切換分區表的狀態 unit UNIT #設置默認的單位 Version #顯示版本
#mkfs
分區完成后,如果不格式化寫入文件系統,則是不能正常使用的。這時就需要使用 mkfs 命令對硬盤分區進行格式化。
mkfs [-t 文件系統格式] 分區設備文件名
mkfs -t ext4 /dev/sdb2
#mke2fs
mke2fs [選項] 分區設備文件名
-t 文件系統 #指定格式化成哪個文件系統, 如 ext2、ext3、ext4;
-b 字節 #指定 block 的大小;
-i 字節 #指定"字節 inode "的比例,也就是多少字節分配一個 inode;
-j #建立帶有 ext3 日志功能的文件系統;
-L 卷標名 #給文件系統設置卷標名,就不使用 e2label 命令設定了;
mke2fs -t ext4 -b 2048 /dev/sdb2
swap分區
swap 分區通常被稱為交換分區,這是一塊特殊的硬盤空間,即當實際內存不夠用的時候,操作系統會從內存中取出一部分暫時不用的數據,放在交換分區中,從而為當前運行的程序騰出足夠的內存空間。swap 分區容量應大於物理內存大小,建議是內存的兩倍,但不超過2GB。
建立新的swap分區,只需要執行以下幾個步驟。
1、分區:不管是fdisk命令還是parted命令,都需要先區。
2、格式化:格式化命令稍有不同,使用mkswap命令把分區格式化成swap分區。
3、使用swap分區
創建分區,假設我們已經創建好了分區
格式化:
mkswap /dev/sdb2
然后使用free命令查看
#swapon和swapoff
加載和取消交換分區
LVM
LVM 是Logical Volume Manager的簡稱,譯為中文就是邏輯卷管理。它是Linux下對硬盤分區的一種管理機制。提供了動態地管理存儲LVM 最大的好處就是可以隨時調整分區的大小,分區中的現有數據不會丟失,並且不需要卸載分區、停止服務。
LVM 允許我們在邏輯卷在線的狀態下將其復制到另一設備上,此成功被稱為快照功能。快照允許我們在復制的同時,保證運行關鍵任務的 Web 服務器或數據庫服務繼續工作。
LVM 是在硬盤分區之上建立一個邏輯層,這個邏輯層讓多個硬盤或分區看起來像一塊邏輯硬盤,然后將這塊邏輯硬盤分成邏輯卷之后使用,從而大大提高了分區的靈活性。我們把真實的物理硬盤或分區稱作物理卷(PV);由多個物理卷組成一塊大的邏輯硬盤,叫作卷組(VG);將卷組划分成多個可以使用的分區,叫作邏輯卷(LV)。而在 LVM 中最小的存儲單位不再是 block,而是物理擴展塊(Physical Extend,PE)。我們通過下圖看這些概念之間的聯系。
物理卷(Physical Volume,PV):就是真正的物理硬盤或分區。
卷組(Volume Group,VG):將多個物理卷合起來就組成了卷組。組成同一個卷組的物理卷可以是同一塊硬盤的不同分區,也可以是不同硬盤上的不同分區。我們可以把卷組想象為一塊邏輯硬盤。
邏輯卷(Logical Volume,LV):卷組是一塊邏輯硬盤,硬盤必須分區之后才能使用,我們把這個分區稱作邏輯卷。邏輯卷可以被格式化和寫入數據。我們可以把邏輯卷想象為分區。
物理擴展(Physical Extend,PE):PE 是用來保存數據的最小單元,我們的數據實際上都是寫入PE當中的。PE的大小是可以配置的,默認是4MB。
也就是說,我們在建立LVM的時候,需要按照以下步驟來進行:
1、把物理硬盤分成分區,當然也可以是整塊物理硬盤;
2、把物理分區建立為物理卷(PV),也可以直接把整塊硬盤都建立為物理卷。
3、把物理卷整合為卷組(VG),卷組就已經可以動態地調整大小了,可以把物理分區加入卷組,也可以把物理分區從卷組中刪除。
4、把卷組再划分為邏輯卷(LV),當然邏輯卷也是可以直接調整大小的。我們說邏輯卷可以想象為分區,所以也需要格式化和掛載。
1、創建分區,fdisk就好,注意:Linux 默認的分區 ID 83,而要改成 LVM 的 ID 8e(使用fdisk t交互)
創建結果:
partprobe #記得重新讀取分區表,否則重啟系統
2、創建物理卷:pvcreate
pvcreate [設備文件名]
pvcreate /dev/sdb5
pvcreate /dev/sdb6
pvcreate /dev/sdb7
查看物理卷:pvscan或者display
刪除物理卷:pvremove
pvremove /dev/sdb7 (這里不演示)
注意:在刪除物理卷時,物理卷必須不屬於任何卷組,也就是需要先將物理卷從卷組中刪除,再刪除物理卷。其實所有的刪除就是把創建過程反過來,建立時不能少某個步驟,刪除時也同樣不能跳過某一步直接刪除。
3、創建卷組
vgcreate [-s PE 大小] 卷組名 物理卷名
[-s PE 大小] 選項的含義是指定 PE 的大小,單位可以是 MB、GB、TB 等。如果不寫,則默認 PE 大小是 4MB。這里的卷組名指的就是要創建的卷組的名稱,而物理卷名則指的是希望添加到此卷組的所有硬盤區分或者整個硬盤
vgcreate -s 8MB scvg1 /dev/sdb5 /dev/sdb6 /dev/sdb7
#激活
vgchange -a y 卷組名 #激活卷組
vgchange -a y 卷組名 #停用卷組
#查看vgscan或者vgdisplay
#擴容
vgextend scvg /dev/sdb7
#縮小
vgreduce scvg /dev/sdb7
#刪除
vgremove scvg
4、建立邏輯卷
lvcreate [選項] [-n 邏輯卷名] 卷組名
-L 容量:指定邏輯卷大小,單位為 MB、GB、TB 等;
-l 個數:按照 PE 個數指定邏輯卷大小,這個參數需要換算容量,太麻煩;
-n 邏輯卷名:指定邏輯卷名;
lvcreate -L 3G -n lamplv scvg1 #在scvg1卷組中建立一個3GB大小的lamplv邏輯卷
建立完邏輯卷,還要在格式化和掛載之后才能正常使用。格式化和掛載命令與操作普通分區時是一樣的
邏輯卷的設備文件名是"/dev/卷組名/邏輯卷名",如邏輯卷 lamplv 的設備文件名就是"/dev/scvg/lamplv"
mkfs -t ext4 /dev/scvg1/lamplv
mkdir /disklvm
mount /dev/scvg1/lamplv /disklvm/
#查看
lvscan
lvdisplay
#調整大小
#調整大小
lvresize [選項] 邏輯卷的設備文件名
-L 容量:安裝容量調整大小,單位為 KB、GB、TB 等。使用 + 増加空間,- 代表減少空間。如果直接寫容量,則代表設定邏輯卷大小為指定大小;
-l 個數:按照 PE 個數調整邏輯卷大小;
lvresize -L 4G /dev/scvg1/lamplv #增加到4G
lvresize -L +1G /dev/scvg1/lamplv #增加到4G
resize2fs [選項] [設備文件名] [調整的大小]
-f:強制調整;
設備文件名:指定調整哪個分區的大小;
調整的大小:指定把分區調整到多大,要加 M、G 等單位。如果不加大小,則會使用整個分區;
resize2fs /dev/scvg1/lamplv
#刪除
lvremove 邏輯卷的設備文件名
先要卸載:然后刪除
umount /dev/scvg1/lamplv
lvremove /dev/scvg1/lamplv