Linux的磁盤管理node
(很重要請注意高能預警)linux
硬盤:幾個盤片,雙面,磁性顆粒,windows
處理速率不一樣步:藉助於一箇中間層 centos
文件系統(FileSystem)
能夠實現對磁盤行的文件進行讀寫
文件系統其實就是一個特殊軟件,是直接安裝到硬盤上的緩存
硬盤分類
機械硬盤:
盤片組,磁頭,磁頭臂
馬達、空氣過濾片
固態硬盤
相似與內存的結構安全
機械硬盤簡介
磁道(Track):磁盤旋轉時候的同心圓,磁道編號從外向內,從0開始編號。
扇區(Sector):將每一個磁道分割成等大小的空間,每一個扇區大小都是512字節
柱面(Cylinder):不一樣盤片的相同扇區。磁盤分區的時候,是以柱面爲單位進行分區的。網絡
尋道時間:
移動磁道到目標磁道
旋轉磁盤
PS:外側磁道的讀寫性能,優於內側磁道,因此係統通常安裝在C盤 (C盤靠外)
保存分區信息
0號扇區:MBR:Master(main) Boot Record,主引導記錄,512字節
第一部分:前446字節,存放程序bootloader,做用完成系統的開機啓動
第二部分:中間64字節,Disk Patration Table,磁盤分區表,做用是記錄磁盤分區
16字節標識一個分區,64字節可標識4個分區
第三部分:最後的2字節,Magic Number,標記當前MBR是否生效架構
分區類型
主分區
擴展分區app
分區結構
所有都是主分區:一、二、三、4主
主+擴展分區:1主+1擴展 2主+1擴展 3主+1擴展
擴展分區只能有一個
擴展分區必須製做成邏輯分區才能使用
邏輯分區能夠有無限多個異步
設備文件
linux 一切皆爲文件
設備文件:物理設備在系統中的映射
塊設備文件 :支持隨機讀寫的設備,硬盤
字符設備文件 :支持線性讀寫,鍵盤
設備文件的默認位置: /dev
設備文件的設備號 :
主設備號(major number):標識設備類型(相同類型的設備,主設備號相同)
次設備好(ninor number):標識相同類型的不一樣設備
接口
IDE:並行的傳輸接口
SATA:串行的傳輸接口 (串行的速度快於並行)
SCSI:並行接口,企業使用,Small Computer System Interface
SAS:串行接口,性能好(串行的SCSI)
USB接口:
usb1.0
usb2.0
usb3.0
CentOS 6.x硬盤識別
/dev/sd#
#=12345...
/dev/sda1
/dev/sda2
Centos 5.x
IDE
/dev/hdx
SATA
/dev/sdx
接口都是控制芯片
網卡適配器 :獨立核心功能是轉換數據格式
usb控制器 :集成的
linux的磁盤對應的設備文件的命名
磁盤對應的設備文件依次/dev/sda sdb sdc .....
磁盤分區對應的設備文件
第一個主分區:/dev/sd#1
第二個主分區:/dev/sd#2
第三個主分區:/dev/sd#3
第四個主分區:/dev/sd#4
擴展分區
第一個邏輯分區:/dev/sd#5
【邏輯分區的編號是從5開始的】
fdisk命令
做用:查看或者修改磁盤的分區
格式:fdisk [選項] [設備文件]
選項:
-l:列舉系統中的所有磁盤以及磁盤分區
(centos6中,默認將邏輯卷也識別爲一個磁盤)
例子:只查看物理磁盤的分區
fdisk -l /dev/sd[a-z]
例子:只查看sda分區
fdisk -l /dev/sda
fdisk -l返回結果解析
Disk /dev/sda: 42.9 GB, 42949672960 bytes
設備文件名稱 空間 空間
255 heads, 63 sectors/track, 5221 cylinders
虛擬磁頭數 平均每磁道上的扇區數 柱面數
Units = cylinders of 16065 * 512 = 8225280 bytes
每一個存儲單元的大小
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008cfb6
磁盤標識符【在磁盤數量多的狀況下,很是有用】
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
分區的設備文件 標識系統分區 起始柱面 結束柱面 磁盤塊大小 分區類型 系統類型
/dev/sda2 64 5222 41430016 8e Linux LVM
注意:直接輸fdisk+磁盤,若是不使用任何選項,那麼就是對磁盤進行分區操做
分區操做實例
fdisk /dev/sdc
分區操做命令 (標示註釋的是能用的到的)
a:toggle a bootable flag
b:edit bsd disklabel
c:toggle the dos compatibility flag
d:delete a partition 刪除分區
l:list known partition types 列舉分區類型
m:print this menu 打印幫助
n:add a new partition 新建分區
o:create a new empty DOS partition table
p:print the partition table 打印分區信息
q:quit without saving changes 退出
s:create a new empty Sun disklabel
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)
主+擴展<=4
分區之後的磁盤,須要安裝文件系統才能使用
爲何分區?
方便檢索磁盤上的文件
不是必須分區。
注意:若是一個磁盤已經分區而且在使用,那麼在對磁盤進行分區操做可能會出現系統沒法識別該分區,此時須要讓內核從新讀取MBR中的分區表。系統識別的分區信息記錄在/proc/partitions文件中,partx命令和kpartx命令可讓內核從新讀取分區信息。例如#partx –a /dev/sdb
分區必須安裝軟件才能實現文件的讀寫操做
--文件系統
常見文件系統
NTFS
FAT32
EXT系列
vfs:Virtual File System 虛擬文件系統
做用:將底層的各類各樣的文件系統抽象成一個同一個文件系統,這樣能夠極大的簡化上層應用在使用文件系統時候的複雜度。
linux文件系統詳解
1、基本文件系統
一、ext系列文件系統
ext2 ext3 ext4
centos6 默認使用ext4
二、Reiserfs
處理和保存小文件的處理很是優秀
三、xfs
對大文件處理性能很是好。
文件大小無上限。
四、JFS,日誌文件系統
IBM所開發
五、vfat,其實就是windows下的fat32
六、NTFS,linux到目前爲止,對NTFS支持很差
(若是必須使用NTFS,那麼建議只用NTFS來讀數據,不要執行寫操做)
2、集羣文件系統
一、GFS2:Global File System 2 (全局文件文件系統)
由redhat所研發
二、OCFS2:Oracle Cluster File System 2
由Oracle所研發
3、網絡文件系統
一、NFS:
二、smbfs
三、windows磁盤映射
4、光盤文件系統
一、iso9660
5、分佈式文件系統
略
PS:磁盤分區也是文件,要使用磁盤分區須要將磁盤掛載到系統的一個目錄中,這個目錄就是該分區的訪問入口。
mke2fs命令 (make ext2 file system)
做用:安裝ex2文件系統
格式:mke2fs [選項] 分區設備文件
選項:-t ext3或ext4
【linux中一切皆文件,磁盤分區也是文件,要使用磁盤分區,須要將磁盤掛載到系統的一個目錄中,這樣,這個目錄就是該分區的訪問入口】
PS:有的時候作實驗對磁盤進行重複的格式化-掛載的時候,可能出現報錯信息,包括掛載的時候提示已經掛載了,格式化的時候提示is apparently in use by the system; will not make a filesystem here!,具體錯誤信息以下
[root@localhost /]# mount /dev/sda1 /media/
mount: /dev/sda1 already mounted or /media/ busy
[root@localhost /]# mke2fs -t ext4 /dev/sda1
mke2fs 1.41.12 (17-May-2010)
/dev/sda1 is apparently in use by the system; will not make a filesystem here!
能夠嘗試使用dmset
dmsetup manages logical devices that use the device-mapper driver. Devices are created by loading a table that specifies a target for each sector (512 bytes) in the logical device.
具體解決步驟以下
#首先檢查dm中記錄信息
[root@localhost /]# dmsetup status
VolGroup-lv_swap: 0 4063232 linear
VolGroup-lv_root: 0 36847616 linear
sda3: 0 1044225 linear
sda1: 0 2120517 linear
#移除sda1和3
[root@localhost /]# dmsetup remove sda1
[root@localhost /]# dmsetup remove sda3
#此時的系統就一切正常了
[root@localhost /]# mke2fs -t ext4 /dev/sda1
ext系列文件系統的(物理)構成
block:磁盤塊,磁盤存儲數據的最小單元(默認4kb)
block bitmap:塊位圖,做用是實現快速檢索出空閒的磁盤塊
inode list:inode 列表,這是存放inode 的空間
inode:index inode,索引節點,索引節點其實也是一個小的磁盤空間,一個inode用來存放一個文件,在inode中存放內包括(大小、屬主屬組、時間戳、鏈接數、文件所在的磁盤快的編號),可是在inode中,沒有文件名。
inode bitmap:inode位圖,快速從inode列表中找出一個空閒的inode
磁盤塊是用來存儲文件中的數據的
通常文件:磁盤塊上所存儲的就是文件中的內容
目錄:所存放的是該目錄下文件名稱列表
打開文件(找到文件) 以打開cat /var/log/message 爲例
一、找到根(根是自引用)
二、從根所在的磁盤塊表中,找出var所在的inode編號
三、根據var所在的inode編號,就能夠找到var所在的磁盤塊
四、由於var是目錄,因此var所在的磁盤塊中存放的是一張表,在表中記錄了log所在的inode
五、根據log的inode編號,能夠找到log目錄所在的磁盤塊
六、從log的磁盤塊的表中能夠找到message文件所在的inode編號
七、從message的inode中,能夠找到該文件的磁盤塊,最終讀取出文件
新建文件 以在/etc/下新建文件zx.txt,大小是10K,爲例
一、掃描inode bitmap,檢索出一個空閒的inode 。假設找出的1號inode
二、找出目錄etc所在的磁盤塊,在該磁盤塊的表中添加一個條目,內容是 zx.txt-->1
【到此爲止,就能夠在磁盤上看到該文件,可是文件沒法打開】
三、掃描block bitmap,找出3個空閒磁盤塊,而後就能夠向磁盤塊中寫入數據。
ext系列文件文件系統的重要特性
在向磁盤寫入文件的時候,會提早鎖定一個連續的空間
若是後期發現空間不夠,那麼再鎖定一個連續空間
若是發現空間有剩餘,那麼釋放剩餘部分
【避免磁盤碎片產生】
刪除文件 以在/etc/zx.txt爲例
一、找到etc目錄所在的磁盤,將表中的索引刪除
【此時從磁盤上,就看不到該文件了】
二、將1號inode對應的inode bitmap置爲零
三、將zx.txt所佔用的磁盤塊對應的block bitmap置爲0
複製文件 以在/etc/zx.txt複製到home下爲例
一、先找出一個空閒inode (假設是6)
二、找到home所在的磁盤塊,在磁盤塊的表中添加一個記錄 zx.txt -->6
三、找出空閒磁盤塊
四、將原文件磁盤塊上的數據依次複製到新找出的磁盤塊上
剪切文件 以在/etc/zx.txt剪切到home下爲例
一、找到etc所在的磁盤塊,將磁盤塊的表中的zx.txt的索引記錄剪切下來
二、找到home所在的磁盤塊,在磁盤塊的表中粘貼前面所剪切的索引記錄
塊組(Block Group)
每一個塊組中,有獨立的inode,位圖
超級塊(super block)
記錄包括
一、塊組的數量
二、各個塊中的磁盤數量、空閒數量、使用數量
三、各個塊組中的inode數量,空閒數量,使用數量
塊組描述表(GDT)
記錄各個塊組的範圍
BOOT BLOCK
引導塊
安裝雙系統的時候,第二個系統的引導程序安裝在bootblock中
PS:下面畫個圖說明下。。。不過畫的有點難看。。。將就看吧
ext系列
ext2
能夠自動檢測出不完整的文件並刪除,可是速度很是慢
ext3:日誌文件系統(journal File System)
在磁盤上建立一個日誌空間,在建立文件的時候,先將文件的名稱寫入到日誌空間,若是文件正常寫入成功,那麼從日誌空間刪除文件名稱。
若是在寫入過程發生宕機等故障,那麼文件名會保留在日誌空間中,下次啓動的時候,系統會掃描日誌空間,將日誌空間中的文件刪除。
[root@node2 ~]# mke2fs /dev/sdc1
mke2fs 1.41.12 (17-May-2010)
Filesystem label= 標籤(卷標) *
OS type: Linux 操做系統類型
Block size=4096 (log=2) 磁盤塊的大小,默認是4K **
Fragment size=4096 (log=2) 偏移大小
Stride=0 blocks, Stripe width=0 blocks
197600 inodes, 789185 blocks inode和磁盤塊的總量 **
39459 blocks (5.00%) reserved for the super user 給管理員用戶預留的磁盤空間大小 ***
First data block=0 起始磁盤塊編號
Maximum filesystem blocks=809500672
25 block groups
32768 blocks per group, 32768 fragments per group
7904 inodes per group
Superblock backups stored on blocks: 超級塊的備份所在的磁盤塊編號 ***
32768, 98304, 163840, 229376, 294912
Writing inode tables: done done表示inode表寫入成功寫入成功
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
注意:若是是建立ext3文件系統,會多一個信息
Creating journal (16384 blocks): done
表示建立日誌空間成功
建立文件系統命令
mke2fs命令
做用:是建立文件系統
配置文件:/etc/mke2fs.conf (用來控制默認參數)
格式:mke2fs [options] /dev/sd#n
選項:
-t {ext2|ext3|ext4}:指定新建的文件系統類型
-j:同 -t ext3,做用建立ext3 文件系統
-L ###:指定分區的卷標
-b {1024|2048|4096}:設定磁盤塊大小
-g #:指定每一個塊組多少個磁盤塊
-G #:塊組的總數
-i bytes-per-inode:指定inode和字節的比例,默認是16384字節對應一個磁盤塊
-I inode-size:
-U UUID:指定一個文件系統的UUID。 (一般用在磁盤數量較多的狀況)
-N number-of-inodes:指定文件系統中的inode總數
-m #:指定保留空間的大小
e2label命令
做用:查看、修改卷標
格式:e2label device [newlabel]
例子:
[root@node2 ~]# e2label /dev/sdc1 myGame <<<<<< 修改卷標
[root@node2 ~]# e2label /dev/sdc1 <<<<<< 查看卷標
myGame
blkid命令
做用:查看磁盤的id信息和文件系統類型
格式:blikd DEVICE
[root@node2 ~]# blkid /dev/sdc1
/dev/sdc1: LABEL="myGame" UUID="129c8699-9809-4e15-98a1-d232e87fceca" SEC_TYPE="ext2" 【TYPE="ext3"】
設備文件 卷標 惟一標識 安全類型 文件系統類型
dumpe2fs命令
做用:顯示文件系統的分區信息
選項:
-h:顯示超級塊信息
[root@node2 ~]# dumpe2fs -h /dev/sdc1
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: myGame 卷標名稱
Last mounted on: <not available> 最近一次的掛載點
Filesystem UUID: 129c8699-9809-4e15-98a1-d232e87fceca
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic) ???????????????
Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags: signed_directory_hash
Default mount options: (none)
Filesystem state: clean 文件系統的狀態
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 197600 【這部份內容平時就應該常常關注的】
Block count: 789185
Reserved block count: 39459
Free blocks: 759214
Free inodes: 197589
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 192
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 7904
Inode blocks per group: 494
Filesystem created: Wed Mar 16 16:40:22 2016
Last mount time: n/a
Last write time: Wed Mar 16 17:10:07 2016
Mount count: 0
Maximum mount count: 21
Last checked: Wed Mar 16 16:40:22 2016 上一次檢查文件系統時間
Check interval: 15552000 (6 months)
Next check after: Mon Sep 12 16:40:22 2016
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: 93c9bb64-26f5-48b2-b338-454f3474327f
Journal backup: inode blocks
Journal features: (none)
Journal size: 64M
Journal length: 16384
Journal sequence: 0x00000001
Journal start: 0
注意:以上內容,必須可以大部分能夠讀懂
tune2fs命令
做用:查看、修改文件系統的屬性
可修改:
預留空間、卷標
不可修改:
磁盤塊
選項:
-l:查看超級塊信息,相似於 dumpe2fs -h
-L ###:修改分區的卷標,相似於 e2label DEVICE [newLabel]
-m #:修改文件系統的保留空間百分比
-j:將ext2文件系統升級爲ext3。(內部數據不受影響)
fsck命令
做用:檢查、修復文件系統的命令
選項:
-t fstype DEVICE: 檢查指定的文件系統
-a:自動修復文件系統
-r:交互式修復
e2fsck命令
做用:修改文件系統
選項:
-y:檢查過程當中,若是須要用戶輸入Y,則自動輸入。
-f:強制執行檢查操做
虛擬內存
每一個程序都使用一個獨立的虛擬機內存空間,這個內存空間是物理內存的映射
x86架構的主機中,每一個程序都認爲本身獨享4G的內存空間,而且認爲當前主機中,只有本身一個程序。
交換分區(swap)
在windows中稱爲虛擬內存
指的是在硬盤上規劃處一個組成方式相似於內存的空間,當內存空間不足時,將內存中閒置數據暫時移動到交換分鐘
實現的效果就是能夠實現內存的過載使用。
注意:
儘可能不要使用swap
若是發現swap使用頻繁,那麼就說明須要添加內存了
free命令
做用:顯示當前內存的使用狀況
格式:free [options]
選項:
-m:以MB爲單位顯示
-g:以GB爲單位顯示
[root@node2 ~]# free -m
total used free shared buffers cached
Mem: 1869 290 1578 0 50 92
-/+ buffers/cache: 146 1722 <<<<<<真實內存空間的使用和空閒狀況
Swap: 1983 0 1983
緩衝:存放元數據,inode中的數據
緩存: 存放數據
注意:只有緩存和緩衝中的數據能夠清空,其餘數據不能清空
僞文件相關
/proc/partitions:記錄系統中的分區信息
/proc/meminfo:內存的使用狀況
/proc/cpuinfo:記錄系統中的CPU的詳細信息
dd命令
做用:從底層逐字節複製文件。
格式:dd if=原文件 of=目的文件 [bs=xK|M|G count=n]
例子:將/etc/passwd複製到home下叫作a.txt
dd if=/etc/passwd of=/home/a.txt
例子:將/etc/passwd的前10K的內容複製到home下
dd if=/etc/passwd of=/home/a.txt bs=1K count=10
dd if=/etc/passwd of=/home/a.txt bs=10K count=1
例子:備份sda的MBR
dd if=/dev/sda of=/home/mbr.bak bs=512 count=1
例子:實現硬盤對考(將sda上的數據所有複製到sdb上)
dd if=/dev/sda of=/dev/sdb
新建交換分區的流程
1、新建一個分區
分區格式id必須是 82
2、安裝swap文件系統
# mkswap -f /dev/sdc2
mkswap命令
做用:建立swap文件系統
格式:swap [-f -L 卷標] DEVICE
3、激活swap分區
# swapon /dev/sdc2
swapon命令
做用:激活交換分區
swapoff命令
做用:關閉交換分區
特殊場景:磁盤無剩餘空間(沒法再分區),可是分區中還有大量剩餘空間,此狀況下新建交換分區,能夠用 【磁盤鏡像文件】 來實現
磁盤鏡像文件:就是用一個文件,來模擬當中磁盤來使用。
1、如何建立鏡像文件
一、dd命令
二、特殊設備文件
/dev/zero--泡泡機
案例:在tmp下建立一個1G的文件disk.img
# dd if=/dev/zero of=/tmp/disk.img bs=1M count=1024
2、將新建的鏡像文件當作磁盤來建立交換分區
一、建立文件系統
# mkswap -f /tmp/disk.img
二、激活
# swapon /tmp/disk.img
/etc/fstab詳解
做用:實現開機自動掛載外部設備或者自動激活交換分區
註釋
[root@node2 ~]# cat /etc/fstab
/dev/mapper/vg_zxf-lv_root / ext4 defaults 1 1
UUID=265f1a54-7f15-46 /boot ext4 defaults 1 2
/dev/mapper/vg_zxf-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
設備文件名稱 掛載點 文件系統類型 掛載選項 轉儲頻率 檢查次序
/dev/sdc1 /mnt ext3 defaults 0 0
注意:交換分區的自動激活稍有特殊
交換分區到底多大?
物理內存2-4G,swap4G
物理內存<2G,swap=物理內存*2
物理內存>8G,swap=4G
mount命令
做用:掛載外部設備到linux系統
格式:mount [options] [-t fstype] [-o option] 設備名稱 掛載點
用法1:直接執行mount,能夠查看當前已經掛載的所有設備
options
-a:重讀/etc/fstab,將其中的所有內容從新掛載
-L label:以卷標的方式進行掛載
-U UUID:以UUDI的方式進行掛載
-n:在掛載外部設備的時候,不將掛載信息寫入/etc/mtab中
-t fstype:在掛載設備時候,必須指定文件系統類型。
(在指定muont命令時候,會自動調用blkid來獲取文件系統類型)
-r:只讀
-rw:讀寫
-o options
sync:同步寫入
優勢:安全
缺點:致使系統性能變差
async:異步寫入
優勢:性能好
缺點:容易丟失數據
atime:自動更新時間戳
noatime:不自動更新時間戳
diratime:
nodiratime:對目錄而言,不自動更新訪問時間戳
defaults:
exec:
noexec:禁止分區中的可執行程序自動運行
owner:容許普通用戶掛載該文件系統 【一般不能使用此選項】
remount:從新掛載分區,在進行從新掛載的時候,能夠指定額外的選項
remount,rw 從新掛載可讀寫
remount,rw,async,noatime,........
ro:只讀文件系統
rw:讀寫文件系統
acl:啓動acl功能
掛載命令:mount
卸載命令:umount
fuser命令
做用:查看指定的目錄被哪一個進程或者用戶所使用
格式:fuser [選項] 目錄
選項:
-v:顯示目錄正被哪一個進程所使用
-k:殺死正在訪問某個文件進程/用戶
若是是對掛載點進行操做,須要結合-m
-m:是專用於掛載點的選項
df命令
做用:檢查分區的使用狀況
格式:df [-h]
PS:ls –ldh /mnt查看目錄所在的磁盤塊中的數據大小(不能看目錄大小)
du命令
做用:查看目錄的大小
選項:
-h:
-s:僅僅顯示目標的大小
組合:
du -sh DIR
tree命令
做用:顯示目錄以及子目錄名稱
選項:
-L n:顯示N級目錄
連接
硬連接:
兩個inode指向相同的磁盤塊
特色:
硬連接和原始文件互爲備份(修改一個文件,另外一個隨着改變)
刪除原始文件,連接文件能夠正常使用
【其實硬連接和原始文件就是同一個文件】
每作一個硬連接,鏈接數加1
軟連接
【同windows中的快捷方式】
給原始文件建立一個快捷方式
特色:
軟連接中,存放的是指向原始文件的路徑
軟連接閃爍表示連接文件被損壞
原始文件被刪除,軟鏈接文件沒法訪問
軟連接文件的權限是777,用戶真正的權限要參考原始文件
注意:
硬連接:
只能對文件建立,不能對目錄建立
目錄的鏈接數默認是2
硬連接不能跨文件系統
軟連接:
可做用於目錄
能夠跨分區
大小是所指向的原始文件的路徑的字符個數
linux文件壓縮
一、gzip命令
後綴:.gz
格式:gzip file1 file2 ....
選項:
-d:解壓縮
-#:指定壓縮比,1-9
gzip -7 passwd
-c:將壓縮結果輸出到標準輸出(一般用來保留原始文件)
例子:壓縮passwd,要求保留原始文件
# gzip -c passwd > passwd.gz
解壓縮
gunzip命令
zcat命令在不解壓的狀況下,查看壓縮包中的內容
二、bzip2命令
後綴:.bz2
格式: 同上
選項:
-d:解壓縮
-#:指定壓縮比,1-9
gzip -7 passwd
-k:保留原始文件
解壓縮
bunzip2
bzcat在不解壓的狀況下,查看壓縮包中的內容
三、xz命令
後綴:xz
格式:同上
選項:
-d:解壓縮
-#:指定壓縮比,1-9
gzip -7 passwd
-k:保留原始文件
解壓
unxz
注意:以上三個,只能壓縮文件,不能壓縮目錄
四、zip命令
後綴:.zip
特色:壓縮比低,可是能夠壓縮目錄,並且壓縮不刪除原文件
【zip壓縮文件,在windows和linux都支持】
格式:zip [選項] xxx.zip file1 file2 .......
選項:
-r:遞歸,壓縮目錄以及子目錄中的所有文件。【壓縮目錄時候,一般要使用】
解壓命令
unzip
compress:壓縮
decompress:解壓縮
uncompress: 解壓縮
archive:歸檔
將多個文件或目錄合併成一個文件,文件大小不變或稍微變大。
歸檔的命令tar
後綴:.tar
格式:tar [選項] -f xxxx.tar file1 file2......
選項:
-f xxxx.tar:指定歸檔文件的文件名
-c:建立歸檔
-x:展開歸檔
--xattrs:在建立歸檔的時候保留文件的擴展屬性等。
-t:在不展開歸檔的狀況下,查看其中的內容
-p:在建立歸檔的時候保留文件的權限和屬性不變
--exclude=FILE:在建立歸檔的時候不對某個文件進行歸檔
-j:調用bzip2進行壓縮和解壓縮
-z:調用gzip進行壓縮和解壓縮
-J:調用xz進行壓縮和解壓縮
-v:顯示過程信息
-C
例子:對home目錄建立歸檔,歸檔文件名是a.tar
# tar -cf a.tar /home
例子:展開歸檔
# tar -xf a.tar
例子:將a.tar使用gzip進行壓縮
# gzip -c a.tar > a.tar.gz
例子:將a.tar使用xz進行壓縮
# xz -k a.tar
例子:將a.tar.gz解壓縮並展開歸檔
# gzip -d a.tar.gz ==>a.tar
# tar -xf a.tar ==>a
例子:將etc init.d home歸檔壓縮成all.tar.gz
# tar -zcvf all.tar.gz etc/ init.d/ home/
例子:將etc init.d home歸檔壓縮成all.tar.bz2
# tar -jcvf all.tar.bz2 etc/ init.d/ home/
注意:在建立或者展開歸檔的時候,能夠不指定壓縮方式
若是不指定,那麼系統自動根據文件後綴來選擇壓縮或解壓縮方式
例子:將all.tar.gz展開
# tar -zxvf all.tar.gz
也能夠
# tar -xvf all.tar.gz
PS:在建立或展開壓縮的時候,不建議指定方式,讓系統本身選擇。
ln命令
做用:建立軟\硬連接
格式:ln [-s] 原始文件 目的文件
選項:
-s:建立軟連接
RAID整列
Redundant Ayyays of Inexpensive Disk 廉價冗餘磁盤陣列
Redundant Ayyays of Independent Disk 獨立冗餘磁盤陣列
RAID
將多個物理磁盤組合成邏輯磁盤提供給用戶,並提高總體讀寫性能。
RAID級別
(級別僅僅表示磁盤的組織方式不一樣)
0:條帶
讀寫提高:讀、寫
冗餘能力:無
磁盤數量:>=2
磁盤使用率:100%
1:鏡像
讀寫提高:無
冗餘能力:有
磁盤數量:>=2
磁盤使用率:50%
3:校驗碼
讀寫提高:讀、寫
冗餘能力:有
最多損壞磁盤:1個
磁盤數量:>=3
磁盤使用率:(n-1)/n
【使用固定的磁盤存放校驗碼】
5:校驗碼
讀寫提高:讀、寫
冗餘能力:有
最多損壞磁盤:1個
磁盤數量:>=3
磁盤使用率:(n-1)/n
【多個磁盤輪流存放校驗碼】
10:
讀寫提高:讀、寫
冗餘能力:有
磁盤數量:>=4
磁盤使用率:50%
01:
讀寫提高:讀、寫
冗餘能力:有
磁盤數量:>=4
磁盤使用率:50%
50:
讀寫提高:讀、寫
冗餘能力:有
磁盤數量:>=6
磁盤使用率:(n-2)/n
jobd
讀寫提高:無
冗餘能力:無
磁盤數量:不限制
磁盤使用率:100%
【經過jobd能夠將多個物理磁盤的空間整合成一個邏輯磁盤】
RAID的實現
硬RAID
集成
獨立
軟RAID
使用CPU模擬生成一個RAID控制器
會致使CPU更爲繁忙
要藉助於MD模塊
md模塊
multi disk
做用:將多個物理磁盤整合成邏輯磁盤
命令實現
mdadm
特色:模式化的命令
一、建立模式
做用:建立陣列
選項: -C
模式中的子選項:
-l #:指定陣列的級別
-n #:指定建立陣列所使用的磁盤數量
-a {yes|no}:yes,表示自動建立須要的設備文件
【陣列的設備文件是/dev/md#】
-c #:指定所切割的數據塊的大小,默認是512K,修改必須是512的整數倍
【chunk】
-x #:指定空閒(保留)磁盤的個數
二、管理模式
操做
添加:--add -a
刪除:--del -d
三、監控模式
選項:-F
四、增加模式
選項:-G
五、裝配模式
選項:-A
【若是不指定,那麼默認就是管理模式】
案例1:建立一個2G的raid0
【既可使用磁盤,也能夠用分區來實現,此案例用分區實現】
一、建立兩個1G的分區
注意:
一、分區類型必須修改成fd
二、不能在分區上安裝文件系統
二、建立raid0
格式:mkadm -C /dev/DeviceName -a yes -l LEVEL -n 磁盤數量 磁盤1 磁盤2 ....
# mdadm -c /dev/md0 -a yes -l 0 -n 2 /dev/sdc{1,2}
三、查看當前系統中的raid信息
# cat /proc/mdstat
四、在raid0上安裝文件系統
# mke2fs /dev/md0
五、掛載
# mkdir /myraid0
# mount /dev/md0 /myraid0
案例2:刪除raid0
一、查看raid0的基本信息
[root@test mkraid0]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdc2[1] sdc1[0]
2119680 blocks super 1.2 512k chunks
二、卸載此raid0
# umount /dev/md0
三、中止此RAID0
# mdadm -S /dev/md0
四、清除此raid的超級塊中的數據
# mdadm --zero-superblock /dev/sdc1 /dev/sdc2
案例3:建立一個10G的raid1
【使用物理磁盤來實現,每一個物理磁盤大小是10G】
一、使用sdb和sdc建立raid1
# mdadm -C /dev/md9 -a yes -l 1 -n 2 /dev/sdc /dev/sdb
【軟raid不能當作啓動分區來使用】
二、檢查raid1的同步狀況
# cat /proc/mdstat
三、檢查raid的詳細信息
# mdadm -D /dev/md9
/dev/md9:
Version : 1.2
Creation Time : Wed Mar 23 17:23:44 2016
Raid Level : raid1
Array Size : 10477440 (9.99 GiB 10.73 GB)
Used Dev Size : 10477440 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Wed Mar 23 17:24:37 2016
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : node2.openstack.com:9 (local to host node2.openstack.com)
UUID : 766ecba3:768f11af:590df855:a3cfdc8f
Events : 17
Number Major Minor RaidDevice State
0 8 32 0 active sync /dev/sdc
1 8 16 1 active sync /dev/sdb
四、安裝文件系統
# mke2fs /dev/md9
五、掛載
# mount /dev/md9 /mnt
六、模擬raid1中一個磁盤損壞的狀況【模擬sdb損壞】
# mdadm /dev/md9 --fail /dev/sdb
建議:此時檢查md9的詳細信息
方式:mdadm -D /dev/md9
七、修復raid1
(1)向raid1添加新磁盤
# mdadm /dev/md9 -a /dev/sdd
建議:此時檢查md9的詳細信息
方式:mdadm -D /dev/md9
八、刪除sdb
# mdadm /dev/md9 -r /dev/sdb
陣列的中止和啓動
一、中止
# mdadm -S /dev/md9
二、中止後再次啓動raid
# mdadm -A /dev/md9 /dev/sdc /dev/sdd
mdadm -D --scan
能夠顯示系統中的raid陣列以及所使用的磁盤信息(uuid)
mdadm的配置文件,記錄系統raid信息,能夠用來實現快速啓動raid陣列
/etc/mdadm.conf
【此文件默認不存在】
用重定向的方式,能夠將系統的陣列信息保存到mdadm.conf中
mdadm -D --scan > /etc/mdadm.conf
之後再啓動陣列,直接用陣列設備文件就能夠,以下
#mdadm -A /dev/md9
lvm
DM:Device Mapper 設備映射
對比MD和DM
MD:將多個物理磁盤整合成一個邏輯磁盤
DM:將一個或多個物理磁盤整合成一個或多個邏輯磁盤
DM的功能
LVM2-->動態磁盤
快照
多路徑
DM的核心原理
重要名詞
物理卷:Physical Volume PV,能夠理解物理卷就是物理磁盤
卷組:Volume Group VG,將全部物理磁盤的存儲能力抽象成一個大的存儲空間
邏輯卷:Logical Volume LV,從卷組中取出一部分存儲空間構成一個分區
物理盤區:Physical Extend PE,只有將物理磁盤加入到卷組之後,纔有PE的概念。
PE能夠理解爲物理卷中的一個一個存儲單元。【只有進入卷組纔是PE,不然不是】
邏輯盤區:Logical Extend LE.
其實pe和le是相同的東西,只是在卷組中叫作PE,在邏輯卷中叫作LE
動態磁盤的相關操做
第一類:管理物理卷的命令(pv)
建立:pvcreate
刪除:pvremove
掃描:pvscan
查看:pvs,pvdisplay
移動pv上的數據:pvmove
(一般用在要卸載的磁盤上)
第二類:管理卷組的命令(vg)
建立:vgcreate
-s #K|M|G|T|E:指定PE的大小,默認是4M
刪除:vgremove
掃描:vgscan
查看:vgs,vgdisplay
擴大:vgextend (其實就是向卷組中添加新的物理卷)
縮小:vgreduce
第三類:管理邏輯卷的命令(lv)
建立:lvcreate
-n xx:指定邏輯卷的名稱
-L #K|M|G|T|E:指定邏輯卷的大小 (其實就是指定分區的大小)
刪除:lvremove
掃描:lvscan
顯示:lvs,lvdisplay
擴大:lvextend
縮小:lvreduce
sdf 3 ,sdg 5 ,sdj 10 ,sdi 15, sdh 20
案例1:將以上硬盤作成邏輯卷
一、建立邏輯卷
# pvcreate /dev/sdf /dev/sdi......
二、查看當前系統中的邏輯卷
# pvs
# pvscan
# pvdisplay
例子2:前面的基礎上,建立卷組
格式:
一、加入卷組
# vgcreate myvg001 /dev/sd{f,h,i}
二、查看
# vgs
# vgdisplay
# vgscan
案例3:將前面卷組中的sdh從卷組中刪除
一、移走sdh上的數據【必須執行】
# pvmove /dev/sdh
二、從vg中剔除sdh
# vgreduce myvg001 /dev/sdh
三、新建另外一個卷組,名稱爲newvg,PE爲8M
# vgcraete newvg -s 8M /dev/sd{g,h}
案例4:向newvg添加一個新的物理卷
# vgextend newvg /dev/sdj
案例5:在前面的基礎上,建立一個500M的邏輯卷,名稱是mylv
# lvcreate -n mylv -L 500M newvg
# lvs
# lvdisplay
邏輯卷的設備文件名稱
/dev/卷組名/邏輯卷名 (只是連接)
/dev/mapper/卷組名-邏輯卷名
案例6:使用此邏輯卷
一、安裝文件系統
# mke2fs /dev/newvg/mylv
二、掛載
# mount /dev/newvg/mylv /media
調整邏輯卷的大小
擴大物理邊界的命令
lvextend
-L [+]#:
-L +5G: 在原來的基礎上擴大5G的空間
-L 5G:擴展到5G
擴大(調整)邏輯邊界命令
resize2fs
格式:resize2fs lv的設備文件 NG
選項:
-p:將所有剩餘的卷組都分給邏輯卷
resize2fs /dev/newvg/mylv 100G 將邏輯分區調整爲100G
resize2fs -p /dev/newvg/mylv 有多少給多少
縮小邏輯分區
resize2fs
縮小物理分區
lvreduce [-]
案例7:將前面的500M的邏輯卷擴展到800M
一、檢查卷組的剩餘空間
# vgs
二、調整物理邊界
# lvextend -L 800M /dev/mapper/newvg-mylv
三、調整邏輯編輯
# umount /dev/mapper/newvg-mylv
# e2fsck -f /dev/mapper/newvg-mylv
# resize2fs /dev/mapper/newvg-mylv 800M
# mount /dev/mapper/newvg-mylv /media
PS:調大空間操做, 必須先卸載所掛載的邏輯卷 ,在系統異常的狀況下,須要檢查邏輯卷的文件文件
案例8:將前面的邏輯捲縮減爲400M
一、確認磁盤使用狀況
# df -h
二、卸載邏輯卷
# umount /dev/mapper/newvg-mylv
三、檢查文件系統
# e2fsck -f /dev/mapper/newvg-mylv
四、縮減邏輯邊界
# resize2fs /dev/mapper/newvg-mylv 400M
五、縮減物理邊界
# lvreduce -L 400M /dev/mapper/newvg-mylv
六、從新掛載
快照卷
能夠對系統中的重要文件進行保護。
注意:
一、新的快照卷當中是空
二、一旦出現快照卷滿了,那麼快照卷自動自毀
三、快照卷中的文件是隻讀狀態的
建立快照卷的命令
lvcreate
-s:建立快照卷的專用選項
-p r|w:設置快照卷中的文件的屬性 【默認是隻讀】
建立快照卷的命令格式:
例子:建立一個100M的快照卷,快照卷的名稱是myss,這個快照卷是針對/dev/mapper/newvg-mylv
# lvcreate -s -L 100M -n myss -p r /dev/mapper/newvg-mylv
Author by:瀟湘雨錯