本章Blog相關Linux知識點node
Linux文件系統中的文件是數據的集合,文件系統不只包含着文件中的數據並且還有文件系統的結構,全部Linux 系統中的文件、目錄、軟鏈接及文件保護信息等都存儲在其中。按照名稱進行存取。linux
磁盤:磁道,扇區 ,柱面 ,固定角速度 ,平均尋道時間centos
MBR :master boot recoard 主引導記錄 (512字節),存放bootloader (引導加載器 446字節)+ 磁盤分區 (64字節)api
一塊磁盤最多分爲4個主分區 ,或者3主分區1擴展分區 ,磁盤在Centos 系統中表示爲/dev
數組
磁盤接口分爲:IDE , SCSI ,SATA ,SAS ,USB ,Centos 系統表示爲/dev/sd[a-z][1-n] ,其中[1-4]表明了主分區 ,[5+]表明了邏輯分區
緩存
光盤 : /dev/cdrom /dev/sr0 /dev/dvd [-t iso9600]
網絡
ID:對應默認的文件系統 ,節點(Inode號)
異步
Inode 存放文件屬性:Inode號,文件的時間戳,數組 ,權限 ,文件存放位置。async
磁盤塊(block) 1K ,2K ,4Kide
元數據區 、數據區 、日誌區
文件系統檢測和修復的過程
遍歷全部磁盤文件
日誌文件分區,保留元數據(寫操做,大小 ,修改),若數據保存完成,把元數據轉移到Inode 分區 ,若發生斷電 ,文件檢測日誌區便可。檢測掃描日誌分區日誌文件便可 ,加速系統檢測
系統檢測機制
超級塊(super block)存放塊組分配信息 ,整個分區的元數據
創建(Inode)位圖 ,塊位圖 便於查看空閒Inode 號及 空閒磁盤塊
VFS:virtual file system 虛擬文件系統
基本文件系統:ext2 ,ext3 ,ext4 ,xfs ,JFS, Vfat ,NTFS
交換分區:swap
集羣文件系統:GFS2 ,OCFS2
網絡文件系統:NFS ,smbfs
光盤文件系統:ISO9600
文件系統根/ (文件系統的訪問入口)在內核中 ,但根/ 中的文件在磁盤上 ,內核也是保存到磁盤中
/bin ,/sbin 存放Centos 系統的可執行程序
/lib ,/lib64 存放Centos 系統的庫文件
/etc 存放系統的配置文件
/boot 存放系統的系統引導文件,如內核 ,bootloader ,grub 等
/home 用戶的家目錄
/root 管理員家目錄
/dev 設備文件存放目錄
/media ,/mnt 專用掛載位置,一般用來掛載便攜式或存儲設備
/misc /opt 備用目錄,一般用來安裝第三方文件
/proc /sys 僞文件系統 ,如內核參數的映射及配置外圍設備的參數
/tmp 臨時文件系統
/var 頻繁發生變化的文件目錄
磁盤分區及文件系統管理
[root@study ~]# fdisk -l /dev/sd[a-z] 查看分區
[root@study ~]# fdisk /dev/sda 建立磁盤分區
d :刪除分區
n :新建分區
p :列出已有分區
t :調整分區ID
l :列出內核支持的分區類型
w :存盤並退出
q :不保存退出
m :獲取幫助
centos 5 :# parprobe 內核重讀磁盤
Centos 6 :# partx -a 或 # kpartx -l ; 執行kpartx -l /dev/sda 再執行kpartx -af /dev/sda 再執行 partx -a /dev/sda
# mke2fs 建立文件系統
-t fstype /dev/somdevice 指定文件類型後,對磁盤進行格式化
-j 至關於-t ext3 ,專門建立ext3文件
-L label 指定卷標名稱
-b {1024/2048/4096} 指定塊大小
-i # #個字節預留一個inode
-I # 指定Inode 大小
-N # 直接指定預留多少個Inode
-m 預留管理空間的百分比
-O 指定分區特性
例:#mke2fs -b 2048 -m 2 -t ext3 /dev/sdb1 對磁盤/dev/sdb1 建立ext3格式文件系統,並指定管理空間百分比爲2% ,塊大小爲2048字節
# e2label /dev/device 查看卷標
# e2label /dev/device label 指定磁盤卷標 ,至關於 #mke2fs -L /dev/device
建立ext4 文件系統 方式: mkfs -t ext4 =mke2fs -t ext4 =mkfs.ext4
建立ext3文件系統方式: mkfs -t ext3 =mke2fs -t ext3 =mkfs.ext3 =mke2fs -j
mke2fs配置文件: /etc/mke2fs.conf , /proc/meminfo (內存信息列表), /proc/cpuinfo (cpu信息列表),/proc/partitions (磁盤信息列表),/proc/mounts (掛載信息), /etc/fstab (磁盤掛載配置文件)
# blkid /dev/somedevice 查看磁盤設備信息,UUID 、type 及Label
# dumpe2fs -h /dev/somedevice 查看並顯示磁盤超級快信息
# tune2fs 調整磁盤屬性信息(塊大小不可變)
-l /dev/somedevice 查看超級塊中的詳細 ,至關於 dumpe2fs -h
-L label 設定卷標
-m 調整預留管理員百分比
-j 若是原來的文件系統文ext2 ,則提高爲ext3
-o [^]mount-options[,...] 設定其默認掛載選項
-O [^]feature[,...] 調整分區特性
# tune2fs -o mount-option 設備 ,例 #tune2fs -o acl /dev/sda1 增長acl 功能 # tune2fs -O ^dir_index /dev/sda7
# tune2fs -o ^mount-option 設備 ,如 #tune2fs -o ^acl /dev/sda1 取消acl 功能 # tune2fs -O dir_index /dev/sda7
# fsck 修復並檢測
-t fstype /dev/somedevice 以fstype類型檢測磁盤
-a 自動修復錯誤
-r 交互修復錯誤
# e2fsck 修復並檢測
-f 強制檢測
-y 對問題自動回答爲yes
例# e2fsck -f -y /dev/sda7 修復並檢測/dev/sda7 磁盤
磁盤交換分區
建立交換分區步驟 :
一、經過# fdisk /dev/sda 新建磁盤 /dev/sda7 ,調整磁盤爲swap 類型
二、內核加載磁盤列表,再執行kpartx -af /dev/sda 再執行 partx -a /dev/sda
三、建立分區爲swap文件系統並啓動swap 分區
# mkswap 建立交換分區文件系統
-l label 設置卷標
-f label 強制建立
# swapon /dev/somedevice 啓用swap 分區
-a 啓用全部的swap 分區選項
-p # ,指定優先級
# swapoff /dev/somedevice 啓用swap 分區
-a 啓用全部的swap 分區選項
交換分區:
linux使用內存機制:/proc/sys/vm/swapiness
多大爲好: 物理內存2G - 4G ,使用swap 爲4G
物理內存小於2G ,使用 2* 內存
物理內存大於8G ,使用swap 爲4G
查看內存空間使用狀態:
# cat /proc/meminfo
# free -m (表明MB) -g(表明GB) # free -g
[root@study ~]# free -m
total used free shared buffers cached
Mem: 1861 341 1520 0 89 132
-/+ buffers/cache: 118 1742
Swap: 3999 0 3999
Buffers (緩衝) 表明加速寫操做
Cached (緩存) 表明加速讀操做
舉例:分配/dev/sda7 分區空間爲2G ,並將其配置爲swap分區
[root@Study ~]# free -m 查看系統內存使用 total used free shared buffers cached Mem: 4231 187 4043 0 4 45 -/+ buffers/cache: 137 4094 Swap: 4095 0 4095 [root@Study ~]# fdisk /dev/sda 磁盤分區,並修改分區類型 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n First cylinder (10122-16579, default 10122): Using default value 10122 Last cylinder, +cylinders or +size{K,M,G} (10122-16579, default 16579): +2G Command (m for help): t Partition number (1-7): 7 Hex code (type L to list codes): 82 Changed system type of partition 7 to 82 (Linux swap / Solaris) Command (m for help): p Disk /dev/sda: 136.4 GB, 136365211648 bytes 255 heads, 63 sectors/track, 16578 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: 0x00083797 Device Boot Start End Blocks Id System /dev/sda1 * 1 39 307200 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 39 1951 15360000 83 Linux /dev/sda3 1951 2473 4194304 82 Linux swap / Solaris /dev/sda4 2473 16579 113306624 5 Extended /dev/sda5 2474 10122 61440000 8e Linux LVM /dev/sda6 2473 2473 1813 83 Linux /dev/sda7 10122 10383 2096840 82 Linux swap / Solaris Partition table entries are not in disk order Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. [root@Study ~]# kpartx -af /dev/sda7 內核重讀磁盤信息 [root@Study ~]# partx -a /dev/sda7 [root@Study ~]# cat /proc/partitions major minor #blocks name 8 0 133169152 sda 8 1 307200 sda1 8 2 15360000 sda2 8 3 4194304 sda3 8 4 1 sda4 8 5 61440000 sda5 8 6 1813 sda6 8 7 2096840 sda7 [root@Study ~]# mkswap -f /dev/sda7 建立swap文件系統 Setting up swapspace version 1, size = 2096836 KiB no label, UUID=42b4b29c-c002-4e6e-83f1-9b6107ce3dbe [root@Study ~]# swapon /dev/sda7 啓動swap 分區 [root@Study ~]# free -m 對比以前的free選項,發現swap分區增長了2G total used free shared buffers cached Mem: 4231 188 4042 0 4 45 -/+ buffers/cache: 138 4092 Swap: 6143 0 6143 [root@Study ~]# swapoff /dev/sda7 關閉swap分區 [root@Study ~]# free -m total used free shared buffers cached Mem: 4231 187 4043 0 4 45 -/+ buffers/cache: 137 4093 Swap: 4095 0 4095
磁盤掛載
# hdparm 獲取或設置 SATA/IDE 硬盤屬性信息
-I /dev/sda 查看磁盤信息
-i /dev/sda
-g /dev/sda 顯示磁盤佈局信息
-t 查看buffered disk 讀取速度(硬盤讀寫)
-T 查看緩存讀寫速度
掛載類命令,mount ,unmount ;
掛載方式:手動掛載,按需掛載 ,開機自動掛載;若掛載點存有數據,從新掛載後則原始數據將被隱藏
掛載:
一、選擇空閒路徑
二、事先目錄要存在
卸載:
一、空閒時能夠卸載
# mount [options] [-t fstype] [-o options] 設備 掛載點
[options] :命令的選項
[-o options] :掛載時啓動分區特性
#mount [options]:
直接# mount,顯示當前系統全部已被掛載的分區
-a 自動掛載全部(/etc/fstab 文件中)支持自動掛載的設備
-t fstype 指定文件系統ext類型
-r 只讀掛載
-w 讀寫掛載
-L label 以卷標指定掛載設備 或 LABLE=「MYDATA」
-U UUID 以UUID指定掛載設備
-n 不更新/etc/mtab 文件
--bind 把目錄掛載到目錄段 例 #mount --bind /usr/ /mnt
-o [ options ]
async 異步I/O ,提升磁盤性能
sync 同步I/O
noatime /atime 是否更新文件訪問時間戳 ,建議noatime
diratime /nodiratime 是否更新目錄訪問時間戳
exec /noexec 是否容許執行二進制文件
_netdev 網絡啓用以前,避免掛載網絡文件
remount 從新掛載 ,例 # mount -o remount,rw / 從新以讀寫方式掛載/ 根
acl 啓動acl
defaults : rw ,suid ,dev ,exec ,auto ,nouser ,async ,relatime
掛載光盤:
# mount -t iso9660 /dev/cdrom /mnt
查看佔用掛載的設備進程
# fuser 查看被掛載設備使用的進程
-v 顯示進程正在訪問的路徑 。例:# fuser -v /mnt
-km 剔除訪問該掛載設備的用戶
# df [OPTION]... [DEVICE]…查看磁盤空間使用狀態報告
-h human-read
-i Inode 使用
-P Posix
# du 評估文件佔用磁盤空間狀況 (與ls 相比較)
-sh 目錄共佔用磁盤的大小
[root@study ~]# cat /etc/fstab 顯示文件系統掛載表
UUID=29e0a74e-d489-42bb-a1ac-6c29927293e3 /boot ext4 defaults 1 2
/etc/fstab 文件中定義的文件系統掛載表選項:
一、掛載設備名(格式能夠是:設備文件名;LABEL="label" ;UUID=「uuid」)
二、掛載點 (swap 分區掛載點爲swap)
三、類型 ( 文件類型 ,ext3 ,ext4 等)
四、Defaults (掛載選項,多個選項鍵使用逗號分隔,如 defaults,acl )
五、存儲頻率 (0表明從不備份 ,1表明每日備份 ,2表明每2日備份)
六、自檢次序(0表明不自檢;1表示首先自檢,一般只能被/ 使用;2表明1自檢後自檢)
若要實現分區或磁盤自啓動 ,添加以上選項到/etc/fstab 中便可 例: /dev/sda7 swap swap defaults 0 0 實現開機啓動/dev/sda7 交換分區
dd複製命令與連接文件
# dd 文件複製命令(數據塊級別複製,而copy 命令,須要使用文件系統)
# dd [OPERAND]...
bs=BYTES 字節數
count=N 數量N
if=file 輸入目錄
of=file 輸出目錄
例:# dd if=/etc/issue of=/tmp/issue.dd 複製/etc/issue 文件爲 /tmp/issue.dd
例:# dd if=/dev/sda of=/dev/sdb 複製/dev/sda 中的文件到目錄/dev/sdb 中
例:# dd if=/dev/cdrom of=/tmp/linux.iso 或 cat /dev/cdrom > /tmp/linux.iso 製做磁盤鏡像
例:# dd if=/dev/sda of=/tmp/myfile bs=512 count=1 複製MBR (包括bootloder 和分區表)
例:# dd if=/dev/zero of=/dev/sdb bs=446 count=1 (刪除bootloader ,但未損壞分區表)
例:# dd if =/dev/zero of=/swapfile bs=1M count=100 建立文件分區,把文件模擬成設備
目錄是一種路徑映射文件,目錄的磁盤塊存放的是全部文件名及inode號
Dentry 目錄項 ,把目錄項緩存到內存中, 叫slab
文件刪除rm :告訴Inode位圖此文件Inode 號爲空 ,告訴塊位圖把數據塊放置在還沒有使用塊位圖列表中 ,下次分配直接覆蓋原有數據便可
文件複製cp :元數據區新建Inode 號,數據區並複製數據到新的數據塊。
文件移動mv:同一文件系統 ,在目標先創建目錄項 ,指定名稱 ,Inode 號指向原文件Inode 號 ,在原始路徑中目錄項移除原始文件項便可。跨分區,先複製Inode 和數據塊 ,在刪除原始數據塊
硬連接:
#ln -sv SRC LINKFILE
特性:一、不能跨分區;不能對目錄建立硬連接 ;硬連接會改變文件被連接的次數;刪除硬連接,原始文件存在,除連接次數變爲0外 ;源文件域連接文件指向的同一個Inode
符號連接:
# ln -lv SRC LINKFILE
特性:符號連接能夠跨分區,能夠對目錄建立符號連接 ;符號連接文件與源文件不是同一個Inode ;符號連接不會改變被鏈接次數 ;同一文件路徑的路徑指向 ;不佔用磁盤數據塊
壓縮及歸檔命令
zip 既能歸檔,又能壓縮 ,unzip=zip -d 解壓
後綴.zip ,壓縮過程當中保留源文件 例:# zip /tmp/boo.zip /boot/*
gzip :壓縮文件 ,gunzip =gzip -d 解壓
後綴.gz
-c 將壓縮結果送往標準輸出 ,能夠和使用重定向將其保存爲壓縮文件,從而保留源文件 例:#gzip -c messages
bzip2 :壓縮 文件 ,bunzip2 =bzip2 -d 解壓
後綴.bz2
-k 保留原文件及壓縮文件
xz :壓縮文件 ,unxz =xz -d 解壓 ,xzcat 不解壓直接查看
後綴.xz
-k :保留原文件及壓縮文件
-# 指定壓縮比 ,範圍1-9
歸檔工具:
tar [options] -f file.tar file1
-cf :建立歸檔# tar -cf boot.tar /boot/ 直接對目錄進行歸檔
-xf :展開歸檔 # tar -xf boot.tar.bz2 直接展開進行歸檔
-tf :不展開而直接查看被歸檔的文件
歸檔,解壓
-zcf ;-zxf :.gz
-jcf ,-jxf :.bz2
-Jcf ,-Jxf :.xz
[root@Study ~]# ls anaconda-ks.cfg boot install.log install.log.syslog messages [root@Study ~]# zip boot.zip /boot/ 歸檔壓縮/boot 目錄爲boot.zip文件 adding: boot/ (stored 0%) [root@Study ~]# unzip boot.zip Archive: boot.zip creating: boot/ [root@Study ~]# gzip messages [root@Study ~]# ls anaconda-ks.cfg boot boot.zip install.log install.log.syslog messages.gz [root@Study ~]# gunzip messages.gz [root@Study ~]# ls anaconda-ks.cfg boot boot.zip install.log install.log.syslog messages [root@Study ~]# bzip2 messages [root@Study ~]# ls anaconda-ks.cfg boot boot.zip install.log install.log.syslog messages.bz2 [root@Study ~]# bunzip2 messages.bz2 [root@Study ~]# ls anaconda-ks.cfg boot boot.zip install.log install.log.syslog messages [root@Study ~]# xz messages [root@Study ~]# ls anaconda-ks.cfg boot boot.zip install.log install.log.syslog messages.xz [root@Study ~]# unxz messages.xz [root@Study ~]# ls anaconda-ks.cfg boot boot.zip install.log install.log.syslog messages [root@Study ~]# tar -zcf boot.tar.gz ./boot [root@Study ~]# ls anaconda-ks.cfg boot boot.tar.gz boot.zip install.log install.log.syslog messages [root@Study ~]# tar -zxf boot.tar.gz [root@Study ~]# ls anaconda-ks.cfg boot.tar.gz etc.tar.gz install.log.syslog boot boot.zip install.log messages [root@Study ~]# tar -jcf boot.tar.bz2 ./boot [root@Study ~]# ls anaconda-ks.cfg boot.tar.bz2 boot.zip install.log messages boot boot.tar.gz etc.tar.gz install.log.syslog [root@Study ~]# tar -jxf boot.tar.bz2 [root@Study ~]# ls anaconda-ks.cfg boot.tar.bz2 boot.zip install.log messages boot boot.tar.gz etc.tar.gz install.log.syslog [root@Study ~]# tar -Jcf boot.tar.xz ./boot [root@Study ~]# ls anaconda-ks.cfg boot.tar.bz2 boot.tar.xz etc.tar.gz install.log.syslog boot boot.tar.gz boot.zip install.log messages [root@Study ~]# tar -Jxf boot.tar.xz [root@Study ~]# ls anaconda-ks.cfg boot.tar.bz2 boot.tar.xz etc.tar.gz install.log.syslog boot boot.tar.gz boot.zip install.log messages
本章blog知識點彙總
文件系統
磁盤管理命令: fdisk ,mke2fs ,e2label ,blkid ,dumpe2fs ,tune2fs ,e2fsck
交換分區命令:mkswap ,swapon ,swapoff ,free
磁盤掛載命令: mount , fuser ,df ,du ,
dd複製命令與連接: dd , ln
壓縮歸檔命令: zip ,gunzip ,gzip ,gunzip ,bzip2 ,bunzip2 ,xz ,unxz ,xzcat ,tar -jcf|-Jcf|-zcf