Linux學習命令彙總六——磁盤分區,磁盤掛載,文件系統管理,壓縮及歸檔命令

本章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

相關文章
相關標籤/搜索