講一講磁盤相關的東西
GPT是GUID磁碟分割表(GUID Partition Table)的縮寫
含義“全局唯一標識磁盤分區表”,是一個實體硬盤的分區表的結構佈局的標準
GPT磁盤模式,自糾錯能力強,一塊磁盤上主分區數量不受(4個的)限制,支持大於2T的總容量及大於2T的分區(幾乎沒有上限,最大支持到128個分區,分區大小支持到256TB)。XP系統無法識別GPT磁盤,Win7、Win8可以任意讀寫,但無法安裝操作系統。GPT磁盤只有(也必須是)在使用支持FEI的主板後纔可以安裝Win8。
GPT磁盤的保留分區(隱藏分區)又稱爲FEI保留分區,可以防止將該磁盤掛接到XP系統中被誤認爲是未格式化的磁盤而格式化,導致數據丟失。該保留分區在將硬盤初始化(或轉化)爲GPT模式時自動創建,大小隨硬盤總容量而定。
擴展資料:
在分區數量上,GPT會爲每一個分區分配一個全局唯一的標識符,理論上GPT支持無限個磁盤分區,不過在Windows系統上由於系統的限制,最多隻能支持128個磁盤分區,基本可以滿足所有用戶的存儲需求。
在每一個分區上,這個標識符是一個隨機生成的字符串,可以保證爲地球上的每一個GPT分區都分配完全唯一的標識符。
而在安全性方面,GPT分區表也進行了全方位改進。在早期的MBR磁盤上,分區和啓動信息是保存在一起的。如果這部分數據被覆蓋或破壞,事情就麻煩了。
相對的,GPT在整個磁盤上保存多個這部分信息的副本,因此它更爲健壯,並可以恢復被破壞的這部分信息。GPT還爲這些信息保存了循環冗餘校驗碼(CRC)以保證其完整和正確——如果數據被破壞,GPT會發覺這些破壞,並從磁盤上的其他地方進行恢復。
與普遍使用的主引導記錄(MBR)分區方案相比
GPT分區方案的優點如下:
1、支持2TB以上的大硬盤。
2、每個磁盤的分區個數幾乎沒有限制(Windows系統最多隻允許劃分128個分區)。
3、分區大小幾乎沒有限制,因爲它用64位的整數表示扇區號。
4、分區表自帶備份,在磁盤的首尾部分分別保存了一份相同的分區表,其中一份被破壞後,可以通過另一份恢復。
5、每個分區可以有一個名稱(不同於卷標)。
磁盤和文件系統管理
文件系統管理工具:
創建文件系統的工具
mkfs
mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat, ...
檢測及修復文件系統的工具
fsck
fsck.ext2, fsck.ext3, ...
查看其屬性的工具
dumpe2fs, tune2fs
調整文件系統特性:
tune2fs
內核級文件系統的組成部分:
文件系統驅動:由內核提供
文件系統箮理工具:由用戶空間的應用程序提供
ext系列文件系統的管理工具:
mkfs.ext2, mkfs.ext3, mkfs.ext4
mkfs -t ext2 = mkfs.ext2
ext系列文件系統專用管理工具:mke2fs
mke2fs [OPTIONS] device
-t {ext2|ext3|ext4}:指明要創建的文件系統類型
mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4
-b {1024|2048|4096}:指明文件系統的塊大小;
-L LABEL:指明卷標;
-j:創建有日誌功能的文件系統ext3;
mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 = mkfs.ext3
-i #:bytes-per-inode,指明inode與字節的比率;即每多少字節創建一個Indode;
-N #:直接指明要給此文件系統創建的inode的數量;
-m #:指定預留的空間,百分比;
-O [^]FEATURE:以指定的特性創建目標文件系統;
e2label命令:卷標的查看與設定
查看:e2label device
設定:e2label device LABEL
tune2fs命令:查看或修改ext系列文件系統的某些屬性
adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems;
注意:塊大小創建後不可修改;
tune2fs [OPTIONS] device
-l:查看超級塊的內容;
修改指定文件系統的屬性:
-j:ext2 --> ext3;
-L LABEL:修改卷標;
-m #:調整預留空間百分比;
-O [^]FEATHER:開啓或關閉某種特性;
-o [^]mount_options:開啓或關閉某種默認掛載選項
acl
^acl
dumpe2fs命令:顯示ext系列文件系統的屬性信息
dumpe2fs [-h] device
用於實現文件系統檢測的工具
因進程意外中止或系統崩潰等 原因導致定稿操作非正常終止時,可能會造成文件損壞;此時,應該檢測並修復文件系統; 建議,離線進行;
ext系列文件系統的專用工具:
e2fsck : check a Linux ext2/ext3/ext4 file system
e2fsck [OPTIONS] device
-y:對所有問題自動回答爲yes;
-f:即使文件系統處於clean狀態,也要強制進行檢測;
fsck:check and repair a Linux file system
-t fstype:指明文件系統類型;
fsck -t ext4 = fsck.ext4
-a:無須交互而自動修復所有錯誤;
-r:交互式修復;
CentOS 6如何使用xfs文件系統:
# yum -y ×××tall xfsprogs
事先:
# cd /etc/yum.repos.d/
# wget http://172.16.0.1/centos6.7.repo
#mv CentOS-Base.repo CentOS-Base.repo.bak
創建:mkfs.xfs
檢測:fsck.xfs
blkid命令:
blkid device
blkid -L LABEL:根據LABEL定位設備
blkid -U UUID:根據UUID定位設備
swap文件系統:
Linux上的交換分區必須使用獨立的文件系統;
且文件系統的System ID必須爲82;
創建swap設備:mkswap命令
mkswap [OPTIONS] device
-L LABEL:指明卷標
-f:強制
Windows無法識別Linux的文件系統; 因此,存儲設備需要兩種系統之間交叉使用時,應該使用windows和Linux同時支持的文件系統:fat32(vfat);
根文件系統這外的其它文件系統要想能夠被訪問,都必須通過“關聯”至根文件系統上的某個目錄來實現,此關聯操作即爲“掛載”;此目錄即爲“掛載點”;
掛載點:mount_point,用於作爲另一個文件系統的訪問入口;
(1) 事先存在;
(2) 應該使用未被或不會被其它進程使用到的目錄;
(3) 掛載點下原有的文件將會被隱藏;
mount命令:
mount [-nrw] [-t vfstype] [-o options] device dir
命令選項:
-r:readonly,只讀掛載;
-w:read and write, 讀寫掛載;
-n:默認情況下,設備掛載或卸載的操作會同步更新至/etc/mtab文件中;-n用於禁止此特性;
-t vfstype:指明要掛載的設備上的文件系統的類型;多數情況下可省略,此時mount會通過blkid來判斷要掛載的設備的文件系統類型;
-L LABEL:掛載時以卷標的方式指明設備;
mount -L LABEL dir
-U UUID:掛載時以UUID的方式指明設備;
mount -U UUID dir
-o options:掛載選項
sync/async:同步/異步操作;
atime/noatime:文件或目錄在被訪問時是否更新其訪問時間戳;
diratime/nodiratime:目錄在被訪問時是否更新其訪問時間戳;
remount:重新掛載;
acl:支持使用facl功能;
# mount -o acl device dir
# tune2fs -o acl device
ro:只讀
rw:讀寫
dev/nodev:此設備上是否允許創建設備文件;
exec/noexec:是否允許運行此設備上的程序文件;
auto/noauto:
user/nouser:是否允許普通用戶掛載此文件系統;
suid/nosuid:是否允許程序文件上的suid和sgid特殊權限生效;
defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.
一個使用技巧:
可以實現將目錄綁定至另一個目錄上,作爲其臨時訪問入口;
mount --bind 源目錄 目標目錄
查看當前系統所有已掛載的設備:
# mount
#cat /etc/mtab
#cat /proc/mounts
掛載光盤:
mount -r /dev/cdrom mount_point
光盤設備文件:/dev/cdrom, /dev/dvd
掛載U盤:
事先識別U盤的設備文件;
掛載本地的迴環設備:
# mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT
umount命令:
umount device|dir
注意:正在被進程訪問到的掛載點無法被卸載;
查看被哪個或哪些進程所佔用:
# lsof MOUNT_POINT
#fuser -v MOUNT_POINT
終止所有正在訪問某掛載點的進程:
fuser -km MOUNT_POINT
交換分區的啓用和禁用:
創建交換分區的命令:mkswap
啓用:swapon
swapon [OPTION] [DEVICE]
-a:定義在/etc/fstab文件中的所有swap設備;
禁用:swapoff
swapoff DEVICE
設定除根文件系統以外的其它文件系統能夠開機時自動掛載:/etc/fstab文件
每行定義一個要掛載的文件系統及相關屬性:
6個字段:
(1) 要掛載的設備:
設備文件;
LABEL
UUID
僞文件系統:如sysfs, proc, tmpfs等
(2) 掛載點
swap類型的設備的掛載點爲swap;
(3) 文件系統類型;
(4) 掛載選項
defaults:使用默認掛載選項;
如果要同時指明多個掛載選項,彼此間以事情分隔;
defaults,acl,noatime,noexec
(5) 轉儲頻率
0:從不備份;
1:每天備份;
2:每隔一天備份;
(6) 自檢次序
0:不自檢;
1:首先自檢,通常只能是根文件系統可用1;
2:次級自檢
...
mount -a:可自動掛載定義在此文件中的所支持自動掛載的設備;
兩個命令:df和du
df命令:
df [OPTION]... [FILE]...
-l:僅顯示本地文件的相關信息;
-h:human-readable
-i:顯示inode的使用狀態而非blocks
du命令:
du [OPTION]... [FILE]...
-s: sumary
-h: human-readable
練習1:
1、創建一個10G的分區,並格式化爲ext4文件系統;
(1) block大小爲2048;預留空間爲2%,卷標爲MYDATA;
(2) 掛載至/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳;
(3) 可開機自動掛載;
[root@localhost ~]# fdisk /dev/sdb
Select (default p): e
分區號 (1-4,默認 1):1
命令(輸入 m 獲取幫助):n
Select (default p): l
添加邏輯分區 5
起始 扇區 (4096-209715199,默認爲 4096):
將使用默認值 4096
Last 扇區, +扇區 or +size{K,M,G} (4096-209715199,默認爲 209715199):+10G
分區 5 已設置爲 Linux 類型,大小設爲 10 GiB
[root@localhost ~]# cat /proc/partitions,查看是否有分區顯示,如果未顯示
[root@localhost ~]# partx -a /dev/sdb 多刷新2次,就可以顯示了
[root@localhost ~]# mke2fs -t ext4 -b 2048 -m 20 -L MYDATA /dev/sdb5
[root@localhost ~]# tune2fs -l /dev/sdb5 查看文件系統狀態
tune2fs 1.42.9 (28-Dec-2013)
Setting reserved blocks percentage to 20% (1048576 blocks)
[root@localhost ~]# tune2fs -l /dev/sdb5
tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: MYDATA (卷標)
Last mounted on: <not available>
Filesystem UUID: 6f185e68-e442-4981-8805-af0b79766ed1
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 655360
Block count: 5242880
Reserved block count: 1048576 (20%)
Free blocks: 5121266
Free inodes: 655349
First block: 0
Block size: 2048 (塊大小)
Fragment size: 2048
Group descriptor size: 64
Reserved GDT blocks: 512
Blocks per group: 16384
Fragments per group: 16384
Inodes per group: 2048
Inode blocks per group: 256
Flex block group size: 16
Filesystem created: Fri Jun 14 04:03:58 2019
Last mount time: n/a
Last write time: Fri Jun 14 04:09:14 2019
Mount count: 0
Maximum mount count: -1
Last checked: Fri Jun 14 04:03:58 2019
Check interval: 0 (<none>)
Lifetime writes: 65 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: 4737d9b8-439b-4e7f-bf38-b76f4a53ab25
Journal backup: inode blocks
[root@localhost ~]# blkid /dev/sdb5 查看文件系統類型
/dev/sdb5: LABEL="MYDATA" UUID="6f185e68-e442-4981-8805-af0b79766ed1" TYPE="ext4"
[root@localhost ~]# mkdir /mydata
[root@localhost ~]# mount /dev/sdb5 -o noexec,noatime /mydata
[root@localhost ~]# mount
/dev/sdb5 on /mydata type ext4 (rw,noexec,noatime,seclabel,data=ordered)
[root@localhost ~]# vim /etc/fstab 修改開機啓動掛載
加入一行:
/dev/sdb5 /mydata ext4 defaults,noexec,noatime 0 0
:wq
保存,umount /mydata現在,然後mount -a 重新掛載,mount查看掛載狀態
2.創建一個大小爲1G的swap分區,並啓動。
[root@localhost ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 1 extended, 3 free)
l logical (numbered from 5)
Select (default p): l
添加邏輯分區 6
起始 扇區 (20977664-209715199,默認爲 20977664):
將使用默認值 20977664
Last 扇區, +扇區 or +size{K,M,G} (20977664-209715199,默認爲 209715199):+1G
分區 6 已設置爲 Linux 類型,大小設爲 1 GiB
命令(輸入 m 獲取幫助):t
分區號 (1,5,6,默認 6):6
Hex 代碼(輸入 L 列出所有代碼):82
已將分區“Linux”的類型更改爲“Linux swap / Solaris”
命令(輸入 m 獲取幫助):w
[root@localhost ~]# cat /proc/partitions 查看是否讀出新分區,如果未讀出,partx -a /dev/sdb 多執行幾次讀取磁盤信息
[root@localhost ~]# mkswap /dev/sdb6
正在設置交換空間版本 1,大小 = 1048572 KiB
無標籤,UUID=17e846d5-6e86-45f8-bbfc-0293275bd9c2
[root@localhost ~]# swapon /dev/sdb6
[root@localhost ~]# swapon -s 查看是否啓用
文件名 類型 大小 已用 權限
/dev/dm-1 partition 4063228 0 -2
/dev/sdb6 partition 1048572 0 -3
bash腳本編程
腳本文件格式:
第一行,頂格:#!/bin/bash
註釋信息:#
代碼註釋:
縮進,適度添加空白行;
語言:編程語法格式,庫,算法和數據結構
編程思想:
問題空間 --> 解空間
變量:
局部變量
本地變量
環境變量
位置參數變量
特殊變量
數據類型:字符型、數值型
弱類型:字符型
算術運算:
+, -, *, /, %, **
let VAR=expression
VAR=$[expression]
VAR=$((expression))
VAR=$(expr argu1 argu2 argu3)
注意:有些時候乘法符號需要轉義;
增強型賦值:
變量做某種算術運算後回存至此變量中;
let i=$i+#
let i+=#
+=,-=,*=, /=, %=
自增:
VAR=$[$VAR+1]
let VAR+=1
let VAR++
自減:
VAR=$[$VAR-1]
let VAR-=1
let VAR--
文件測試:
存在性測試
-a FILE
-e FILE
文件的存在性測試,存在則爲真,否則則爲假;
存在性及類型測試
-b FILE:是否存在並且爲 塊設備 文件;
-c FILE:是否存在並且爲 字符設備 文件;
-d FILE:是否存在並且爲 目錄文件;
-f FILE:是否存在並且爲 普通文件;
-h FILE或 -L FILE:是否存在並且爲 符號鏈接文件;
-p FILE:是否存在且爲 命名管道文件;
-S FILE:是否存在且爲 套接字文件;
文件權限測試:
-r FILE:是否存在並且 對當前用戶可讀;
-w FILE:是否存在並且 對當前用戶可寫;
-x FILE:是否存在並且 對當前用戶可執行;
特殊權限測試:
-u FILE:是否存在並且 擁有suid權限;
-g FILE:是否存在並且 擁有sgid權限;
-k FILE:是否存在並且 擁有sticky權限;
文件是否有內容:
-s FILE:是否有內容;
時間戳:
-N FILE:文件自從上一次讀操作後是否被修改過;
從屬關係測試:
-O FILE:當前用戶是否爲文件的屬主;
-G FILE:當前用戶是否屬於文件的屬組;
雙目測試:
FILE1 -ef FILE2:FILE1與FILE2是否指向同一個文件系統的相同inode的硬鏈接;
FILE1 -nt FILE2:FILE1是否新於FILE2;
FILE1 -ot FILE2:FILE1是否舊於FILE2;
組合測試條件:
邏輯運算:
第一種方式:
COMMAND1 && COMMAND2
COMMAND1 || COMMAND2
! COMMAND
[ -O FILE ] && [ -r FILE ]
第二種方式:
EXPRESSION1 -a EXPRESSION2
EXPRESSION1 -o EXPRESSION2
! EXPRESSION
[ -O FILE -a -x FILE ]
腳本的狀態返回值:
默認是腳本中執行的最後一條件命令的狀態返回值;
自定義狀態退出狀態碼:
exit [n]:n爲自己指定的狀態碼;
注意:shell進程遇到exit時,即會終止,因此,整個腳本執行即爲結束;
向腳本傳遞參數:
位置參數變量
myscript.sh argu1 argu2
引用方式:
$1, $2, ..., ${10}, ${11}, ...
輪替:
shift [n]:位置參數輪替;
特殊變量:
$0:腳本文件路徑本身;
$#:腳本參數的個數;
$*:所有參數
$@:所有參數
過程式編程語言的代碼執行順序:
順序執行:逐條運行;
選擇執行:
代碼有一個分支:條件滿足時纔會執行;
兩個或以上的分支:只會執行其中一個滿足條件的分支;
循環執行:
代碼片斷(循環體)要執行0、1或多個來回;
選擇執行:
單分支的if語句:
if 測試條件
then
代碼分支
fi
雙分支的if語句:
if 測試條件; then
條件爲真時執行的分支
else
條件爲假時執行的分支
fi
練習1:
編寫腳本計算/etc/passwd文件中第十個用戶和第二十個用戶id號 之和
#!/bin/bash
#
id1=$(cat /etc/passwd | head -10 | tail -1 | cut -d: -f3)
echo "第十個用戶的uid爲:$id1"
id2=$(cat /etc/passwd | head -20 | tail -1 | cut -d: -f3)
echo "第二十個用戶的uid爲:$id2"
idsum=$[$id1+$id2]
echo "兩個用戶的uid號之和爲:$idsum"
練習2:
將當前主機名保存至hostName變量中,主機名如果爲空,或者未localhost.localdomain,則將設置爲www.magedu.com
#!/bin/bash
#
hostName=$(hostname)
echo "現在的主機名爲$hostName"
if [ -z "$hostName" -o "$hostName" == "localhost.localdomain" ];then
hostname www.magedu.com
echo "主機名變動爲:$(hostname)"
else
echo "主機名無變動"
exit 2
fi
注意事項:-z判斷值是否爲空,空則真,$命令需要括號引用,例$(hostname),$自定義變量引用不需要+括號。判斷時需要用空格隔開。
練習3:編寫腳本,通過命令參數傳輸一個用戶名,判斷id號是偶數還是奇數。
#!/bin/bash
#
if [ $# -lt 1 ];then
echo "請輸入用戶名"
exit 2;
fi
id1=$(id -u $1)
echo "$1的uid爲$id1"
if [ $[$id1%2] -eq 1 ];then
echo "$1的uid是奇數"
else
echo "$1的uid是偶數"
fi
注意事項:做算法需要用[ ]括起來引用其中的值 ,-eq是數值之間判斷是否等於,==是判斷字符是否相同
什麼是LVM
LVM是Logical Volume Manager的簡寫。其是Linux環境下對磁盤分區進行管理的一種機制。LVM由Heinz Mauelshagen在Linux 2.4內核上實現。其主要作用是在不損壞磁盤數據的情況下對磁盤空間進行增加,縮減。LVM的做法是將幾塊物理硬盤通過軟件的方式組合成一塊空間相對大的Volume Group,簡稱VG,然後將這塊大磁盤通過Physical Extend組成可以使用的分區Logical Volume,簡稱LV。將LV格式化之後掛載既能使用
LVM的幾個名詞介紹
PV:Physical Volume,物理卷
PE:Physical Extend,物理塊
VG:Volume Group,卷組
LV:Logical Volume,邏輯卷
LVM常用命令介紹
PV常用命令:
pvcreate [device]:創建PV
pvs:顯示pv的簡要信息
pvdisplay /dev/sd[abcd]#:顯示PV的詳細信息。如果不指定設備,則顯示所有PV詳細信息
pvremove /dev/sd[abcd]#:刪除PV
VG常用命令:
vgcreate [–s #[mMgGtT]] VG_NAME PhysicalDevicePath…:創建VG
-s:指定PE的大小,PE默認大小是4MB
vgs [VG_NAME]:顯示簡要VG信息
vgdisplay [VG_NAME]:顯示指定VG的詳細信息,不指定VG則默認顯示全部VG的詳細信息
LV常用命令
lvcreate –L [+]#[mMgGtT] –n LV_NAME VG_NAME:創建LV
-L:指定LV的大小
-n:指定LV的名字
lvs [LV_NAME]:顯示制指定v的簡要信息,不指定lv默認顯示全部lv的簡要信息
lvdisplay [LV_NAME]:顯示指定lv的詳細信息,不指定lv默認顯示全部lv的詳細信息
lvextend -L [+]#[mMgGtT] LV_NAME:擴展LV到指定大小
lvreduce -L [+]#[mMgGtT] LV_NAME:縮減LV到指定大小
lvremove /dev/VG_NAME/LV_NAME::刪除LV
LV的抽象表示
示例:LV的創建,擴展和縮減。此處以一塊120G的硬盤爲例,其設備文件是/dev/sda
LV的創建
1. 使用fdisk內建命令創建分區。注意,分區完畢後要將分區文件的System ID 改爲8e: Linux LVM。此處以/dev/sda5, /dev/sda6,/dev/sda7作爲LVM示例
[root@localhost ~]# fdisk -l /dev/sda
Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectorsUnits = sectors of 1 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000c744bDevice Boot Start End Blocks Id System/dev/sda1 2048 1026047 512000 83 Linux/dev/sda2 1026048 89120767 44047360 8e Linux LVM/dev/sda3 89120768 110092287 10485760 83 Linux/dev/sda4 110092288 251658239 70782976 5 Extended/dev/sda5 110094336 120580095 5242880 8e Linux LVM/dev/sda6 120582144 141553663 10485760 8e Linux LVM/dev/sda7 141555712 173012991 15728640 8e Linux LVM
2. 創建pv
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 42.00g 4.00m
[root@localhost ~]# pvcreate /dev/{sda5,sda6,sda7}
Physical volume "/dev/sda5" successfully created
Physical volume "/dev/sda6" successfully created
Physical volume "/dev/sda7" successfully created
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 42.00g 4.00m
/dev/sda5 lvm2 --- 10.00g 10.00g
/dev/sda6 lvm2 --- 10.00g 10.00g
/dev/sda7 lvm2 --- 5.00g 5.00g
- 創建VG,指定PE大小爲16MB
[root@localhost ~]# vgcreate -s 16M myvg /dev/sda5 /dev/sda6 /dev/sda7
Volume group "myvg" successfully created
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- 42.00g 4.00m
myvg 3 0 0 wz--n- 24.95g 24.95g
[root@localhost ~]# vgdisplay myvg
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 24.95 GiB
PE Size 16.00 MiB
Total PE 1597
Alloc PE / Size 0 / 0
Free PE / Size 1597 / 24.95 GiB
VG UUID b2OW0g-eCXR-0oxI-Z8Ft-Jemk-zXON-fnpSb1
4. 創建LV
[root@localhost ~]# lvcreate -L 10G -n mylv myvg
WARNING: ext4 signature detected on /dev/myvg/mylv at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/myvg/mylv.
Logical volume "mylv" created.
[root@localhost ~]# lvdisplay /dev/myvg/mylv
--- Logical volume ---
LV Path /dev/myvg/mylv
LV Name mylv
VG Name myvg
LV UUID 669CDR-JifV-bCou-1QfU-q7VH-0b07-orShqW
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2016-09-07 14:33:17 +0800
LV Status available
open 0
LV Size 10.00 GiB
Current LE 640
Segments 2
Allocation inherit
Read ahead sectors auto
-
currently set to 8192
Block device 253:2- 格式化LV文件系統
[root@localhost ~]# mke2fs -t ext3 /dev/myvg/mylv
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@localhost ~]# blkid /dev/myvg/mylv
/dev/myvg/mylv: UUID="4eb1b6ce-3777-4c69-9be1-522ca486d936" SEC_TYPE="ext2" TYPE="ext3"
- Mount LV並測試
[root@localhost ~]# mount /dev/myvg/mylv /test_lv/
[root@localhost ~]# cp /var/log/*.log /test_lv/
[root@localhost ~]# ls /test_lv
boot.log lost+found wpa_supplicant.log Xorg.0.log
[root@localhost ~]# umount /testlv
umount: /testlv: mountpoint not found
[root@localhost ~]# umount /dev/myvg/mylv
[root@localhost ~]# mount /dev/myvg//mylv /users
[root@localhost ~]# ls /users
boot.log lost+found wpa_supplicant.log Xorg.0.log
LVM的擴展
1. 擴展LV
[root@localhost ~]# lvextend -L 15G /dev/myvg/mylv
Size of logical volume myvg/mylv changed from 10.00 GiB (640 extents) to 15.00 GiB (960 extents).
Logical volume mylv successfully resized.
2. 擴展文件系統,填充LV的空間
[root@localhost ~]# resize2fs /dev/myvg/mylv 15G
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/myvg/mylv is mounted on /users; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/myvg/mylv is now 3932160 blocks long.
[root@localhost ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 20G 3.7G 17G 19% /
devtmpfs 480M 0 480M 0% /dev
tmpfs 495M 152K 495M 1% /dev/shm
tmpfs 495M 7.2M 488M 2% /run
tmpfs 495M 0 495M 0% /sys/fs/cgroup
/dev/mapper/centos-home 20G 36M 20G 1% /home
/dev/sda1 497M 159M 339M 32% /boot
tmpfs 99M 12K 99M 1% /run/user/1000
/dev/sr0 4.1G 4.1G 0 100% /run/media/max/CentOS 7 x86_64
/dev/mapper/myvg-mylv 15G 26M 14G 1% /users
Lvm的縮減:先縮減文件空間,再縮減物理空間
1. 卸載LV
[root@localhost ~]# umount /dev/myvg/mylv
2. 強制檢測文件系統
[root@localhost ~]# e2fsck -f /dev/myvg/mylv
e2fsck 1.42.9 (28-Dec-2013)
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/myvg/mylv: 14/983040 files (7.1% non-contiguous), 100917/3932160 blocks
3. 縮減文件系統空間到7G
[root@localhost ~]# resize2fs /dev/myvg/mylv 7G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/myvg/mylv to 1835008 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 1835008 blocks long.
4. 縮減LV空間至7G
[root@localhost ~]# lvs /dev/myvg/mylv
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 15.00g
[root@localhost ~]# lvreduce -L 7G mylv
Path required for Logical Volume "mylv".
Please provide a volume group name
Run `lvreduce --help' for more information.
[root@localhost ~]# lvreduce -L 7G /dev/myvg/mylv
WARNING: Reducing active logical volume to 7.00 GiB
[root@localhost ~]# lvs /dev/myvg/mylv
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 7.00g
5. 掛載並測試
[root@localhost ~]# mount /dev/myvg/mylv /users
[root@localhost ~]# ls /users
boot.log lost+found wpa_supplicant.log Xorg.0.log
[root@localhost ~]# cat /users/Xorg.0.log
[ 30.065]
X.Org X Server 1.17.2
注意事項:增加空間可以直接在掛載的情況下直接增加,縮減需要先卸載,再e2fsck -f強制檢測文件系統文件,然後resize2fs縮減文件系統,再縮減磁盤空間。然後掛載,方可使用。