歡迎您光臨本站 註冊首頁

Linux下的文件系統以及磁碟操作

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

在文件系統方面,Linux可以算得上操作系統中的 “瑞士軍刀”.Linux 支持許多種文件系統,從日誌型文件系統到集群文件系統和加密文件系統,而“什麼是文件系統”?文件系統是對一個存儲設備上的數據和元數據進行組織的機制.
常見的文件系統:ext2、ext3、ext4、xfs、jfs、reiserfs、iso9660、swap、VFAT、

VFS等
例如:EXT2 XFS JFS REISERF3等都是單個文件系統使用
說到文件系統,就要說一下硬碟,硬碟出廠后的第一次格式化叫做低級格式化,其作用主要是為了創建磁軌,同一個編號的磁軌形成一個柱面,分區時則是按照柱面進行分區,從外到里從低到高進行劃分.每一個分區可以獨立的創建一個文件系統.
Linux 以一組通用對象的角度看待所有文件系統.這些對象是超級塊(superblock)、inode、dentry 和文件.超級塊在每個文件系統的根上,超級塊描述和維護文件系統的狀態.文件系統中管理的每個對象(文件或目錄)在 Linux 中表示為一個 inode.

inode 包含管理文件系統中的對象所需的所有元數據(包括可以在對象上執行的操作).另一組結構稱為 dentry,它們用來實現名稱和 inode 之間的映射,有一個目錄緩存用來保存最近使用的 dentry.dentry 還維護目錄和文件之間的關係,從而支持在文件系統中移動.最后,VFS 文件表示一個打開的文件;註:inode:用於存放許可權,屬主屬組,大小,類型,磁碟塊的指向;目錄:每一個目錄需要一個inode,存放文件名;點陣圖:索引inode 非為0/1;磁碟塊點陣圖:標誌磁碟塊有沒有被使用.
和文件系統有聯繫的命令:
1、ln:
格式:ln [options] SRC DST 默認創建的是硬鏈接(不能跨分區),從文件系統的實現上來說,硬鏈接其實就是將一個文件的的的inode號多次利用,具有不同的指針,只要結點的連接數不是0,文件就一直存在,不管你刪除的是源文件還是連接的文件.


常用參數:-s:創建軟連接,是一個獨立的文件,使用了一個新的inode號,引用的路徑,可以為目錄創建,並且可以跨分區.
因此在對某些文件進行複製,剪切和刪除時其實質分別是:複製:將存有的數據所在的磁碟塊進行複製一份,並使用新的inode號,建立相應的映射,而剪切則不動數據塊,只是將inode號中的文件路徑映射修改了,這就是為什麼有時候我們在同一個分區上移動一個很大的文件時,也能迅速完成的原因,而刪除則是將inode號標識為0,清除其信息,然後將磁碟塊標識為未使用,當有新的數據存入時就將原來的數據覆蓋,由此當誤刪了一些數據時只要還未向原有位置寫入新的數據時,那些被誤刪的數據均是可以找回的,像一些軟體上的粉碎功能則是想原文件數據存儲的位置重新寫入01代碼,從而達到刪除原數據的目的.
2、文件管理
(1).du:用於估算目錄和文件的使用量
參數:
-h:單位換算,使大小以M單位顯示
-s:顯示目錄以及目錄中所有文件的大小
例如:#du -sh /etc

(2).df:用於顯示當前系統磁碟的使用情況
-h:單位換算
-i:顯示inode的使用情況
例如:#df -ih

(3).fdisk:磁碟管理
-l:列出當前系統的每一個磁碟及其當前分區的情況
例如:#fdisk -l

(4).壓縮工具gzip/bzip2/zip/compress/xz/7z
[1]gzip:壓縮文件-->gunzip:解壓文件
例如:#gzip FILENAME
#gunzip FILEMAME
參數:
-d:解壓縮
-c:gzip -c messages > messages.gz 壓縮后保留源文件
-t:測試壓縮文件壓縮以後是否完整
-#:(1-9)指定壓縮比,默認是6.
zcat:在不解壓的情況下查看文件


[3]zip:可以壓縮目錄
格式:zip [選項] 壓縮后的文件名.zip 需要壓縮的文件
例如:#zip message.zip message
例如:#zip myfilezip.zip message inittab 壓縮多個文件
unzip:解壓縮

[4]tar:文件的歸檔工具
tar tarfile.tar 文件或目錄
-c:創建歸檔
-x:展開歸檔
-f:歸檔後文件名
-t:不展開查看歸檔中的文件
-v:顯示整個歸檔回展開的過程
-z:在創建直接壓縮 gzip
-j:在創建直接壓縮 bzip2
-C:指定展開之後存放路徑
例如:#tar -cf mytar.tar message inittab 創建歸檔
例如:#tar -xf mytar.tar
例如:#tar -tf mytar.tar
例如:#tar -zcf
例如:#tar -zxf
例如:#tar xf mytar.tar.gz -C /tmp/test

3、分區:在硬碟的0扇區0磁軌存放的是MBR其大小是512個位元組,其中前446哥位元組是引導扇區俗稱“BootLoader”,存放的是系統啟動的引導,其中的64個位元組是FAT分區列表,每16個位元組可以引導一個主分區,而這就是我們通常所說的一塊硬碟,只能創建最多4個主分區,或者3主一擴展,剩下的2哥位元組是封裝碼佔用.
當分區表出現錯誤或者被破壞的時候,就無法正常進入系統,要對系統的分區表進行備份.
命令:
sfdisk:保存備份分區表信息
-d:#sfdisk -d /dev/sdb > /root/sdb.part.bak 將某個磁碟的分區表保存
#sfdisk /dev/sdb < /root/sdb.part.bak

Linux識別磁碟設備規則:IDE或者ATA設備被識別為hd;SATA、SCSI、USB等設備被識別為sd; 多塊磁碟設備時用a,b,c等字母加以區別,形如:/dev/hda /dev/hdb /dev/sda /dev/sdb

創建分區:fdisk /dev/sda
其中的子命令:
w:保存修改並退出


p:顯示磁碟列表
n:添加一個新的分區
d:刪除一個分區
q:放棄修改並退出
在分區創建完成之後,並不是立即生效,需要使用命令:
partprobe /dev/sda 通知內核重新掃描磁碟sda信息,后若不跟磁碟名,則會掃描所有的磁碟

4、格式化:這次的格式化被稱為高級格式化
在linux下任何的磁碟或分區沒有進行格式化是不能使用的
mkfs -t TYPE DEVICE
例如:#mkfs -t ext3 /dev/sdb1
-L:指定卷標
例如:#e2label /dev/sdb1顯示其卷標
例如:#e2label /dev/sdb1 HELLO 設置卷標

mke2fs /dev/sdb2
-j:把對應的磁碟分區創建為ext3類型
-L:指定卷標
-b:指定塊大小{1024|2048|4096}
-c:創建文件系統時是否要檢查磁碟是否有壞道
-i:指定一個比例,每多少個位元組使用一個inode號{128默認|256}
-N:直接指定inode的個數
-m:指定預留給管理員的磁碟百分比

5、掛載
在Linux下任何一個存儲設備想要被訪問,必須將這個設備與根下的一個目錄相關聯起來,作為一個訪問介面,而這個過程叫做掛載,去除關聯關係就叫做卸載.
格式:mount 設備 掛載點
例如#mount 顯示當前所有已經掛載的文件系統
#mount /dev/cdrom /media 將dev下的cdrom磁碟掛載到media
參數格式:mount [-t fstype] [option] 設備 掛載點
-a:掛載所有的文件系統 /etc/fstab #mount -a
-n:掛載時不更新/etc/mtab文件
-r:只讀掛載
-w:讀寫掛載
-L label:指定卷標進行掛載
-U:指定uuid進行掛載
-o:明確指定掛載選項
async:非同步寫入
atime:當訪問時自動更新時間
auto:可以自動掛載


exec:允許具有執行許可權的文件執行
nouser:禁止普通用戶掛載此設備
remount:重新掛載(某個屬性沒打開,需要打開時使用此項)
ro:只讀
rw:只寫
例如:#mount -o ro /dev/sdb1 /mnt 以只讀方式將dev下的sdb1分區掛載到/mnt
例如:#mount -o remount,rw /mnt
loop:掛載一個本地設備
例如:#mount -o loop rhci.iso /mnt 掛載一個iso

6、umount:設備卸載
umount 掛載點/掛載的設備
例如:#umount /dev/sdb2
blkid DEV:查看設備的文件類型

7、檢查文件系統
(1).fsck檢查文件系統的不一致(具體檢查inode與文件不一致)
參數:-t FILETYPE:指定檢測的文件系統的類型
例如:#fsck -e ext3
efsck:用來專門檢測ext類的文件系統
參數:-f:強行進行檢測
-p:自動修復文件系統的不一致
-B:指定磁碟塊的大小

(2).dumpe2fs:詳細的顯示ext2 ext3文件系統的信息
參數:-f:即使文件系統不一致也要詳細顯示其信息
-h:只顯示超級塊的詳細信息
例如:#dumpe2fs /dev/sda
tune2fs:修改ext類的文件系統的屬性
參數:-j:將ext2文件類型升級為ext3(不影響磁碟上的數據)
-m:修改保留給root用戶的磁碟塊與inode的百分比
-r:直接指定塊的個數
-L:設定卷標
-l:顯示超級快的信息
-c:修改每隔多少次掛載後進行自檢
-i:設定每隔多少天進行一次自檢,默認單位是天
-u:指定使用者
-o:指定默認的掛載功能

(3).交換分區swap(必須是一個獨立的分區,其作用相當與windows中的虛擬內存,當物理內存即將用完或者不夠使用時才會使用到交換分區)


free -m:以M為單位顯示內存信息
格式化:mkswap
參數:-L:指定卷標
啟用交換分區:swapon DEV
關閉交換分區:swapoff DEV
啟動全部:swapon -a
檢查其狀態:swapon -s

(4).創建一個本地迴環文件,也可以理解為複製,可以說是直接複製磁碟塊
格式:dd if=FILE of=FILE bs=NU count=NU
if=FILE:要複製的文件
of=FILE:目標
bs:一次複製的單位多大,默認單位位元組
count:複製多少個塊
#dd if=/etc/issue of=/tmp/abc
#dd if=/dev/sda of=/root/mbr.bak bs=512 count=1 備份mbr Mater Boot Record
#dd if=/dev/zero of=/var/swapfile bs=1M count=1 建一個1M本地迴環文件

/dev/null
/dev/zero 用於初始化一個分區

(5)./ect/fstab 開機自動掛載的文件系統
6個欄位:
DEV-name | DEV-label | DEV-uuid
掛載點:
文件系統類型:
掛載選項(defaults);
轉儲頻率:備份{0,1,2}{從不備份,一天一次,兩天一次}
自檢次序:{0,1,2}{從不,第一,第二},第一隻能為根

本文出自 「向陽草●米奇」 博客,請務必保留此出處http://grass51.blog.51cto.com/4356355/785156


[火星人 ] Linux下的文件系統以及磁碟操作已經有601次圍觀

http://coctec.com/docs/linux/show-post-47186.html