第十四章、磁盤及文件系統管理詳解

第十四章、磁盤及文件系統管理詳解


08_03_磁盤及文件系統管理詳解之一

 

磁盤管理:

        

機械式硬盤:

         U盤、光盤、軟盤、硬件、磁帶

        

此處查看PPT: Linux入門.ppt (search: 文件系統)

補充磁盤分區、文件系統、inode,VFS等相關知識後繼續。


分區以柱面爲單位進行劃分。

inode: index node, 保存了文件的信息,大小,屬主,屬組,時間等。

spacer.gif


inode位圖,塊位圖



1. ln [-s -v] SRC DEST

 

硬鏈接:

         1、只能對文件創建,不能應用於目錄;

         2、不能跨文件系統;

         3、創建硬鏈接會增加文件被鏈接的次數;

        

符號鏈接:

         1、可應用於目錄;

         2、可以跨文件系統;

         3、不會增加被鏈接文件的鏈接次數;

         4、其大小爲指定的路徑所包含的字符個數;

 

2. du: 顯示路徑下所有目錄佔用磁盤大小

         -s: 路徑佔用磁盤大小

         -h: human readable

        

3. df: 顯示整個磁盤分區使用情況

        -i: 顯示inode信息替代塊信息

        -P: posix輸出格式(文件名太長不換行)

 

       

08_04_磁盤及文件系統管理詳解之二

 

設備文件:

         b: 按塊爲單位,隨機訪問的設備;如硬盤

         c:按字符爲單位,線性設備;如鍵盤

        


ls -l /dev

         主設備號(major number)

                   標識設備類型

         次設備號(minor number)

                   標識同一種類型中不同設備


設備文件作爲設備的訪問入口。


tty 命令可以查看對應設備文件

[root@CentOS tmp]# tty

/dev/pts/2

echo "hello" >> /dev/pts/1


mknod

mknod [OPTION]... NAME TYPE [MAJOR MINOR]

         -m MODE

        

硬盤設備的設備文件名:

IDE, ATA:hd

SATA:sd

SCSI: sd

USB: sd

         a,b,c,...來區別同一種類型下的不同設備

        

IDE:

         第一個IDE口:主、從

                   /dev/hda, /dev/hdb

         第二個IDE口:主、從

                   /dev/hdc, /dev/hdd

 

sda, sdb, sdc, ...

 

hda分區:

         hda1: 第一個主分區

         hda2:

         hda3:

         hda4:

         hda5: 第一個邏輯分區

        

Linux支持的文件系統

    傳統:ext2, ext3, ext4, reiserfs, xfs, jfs

    光盤:iso9660

    集羣文件系統:GFS2, OCFS2

    網絡文件系統: NFS, CIFS


低級格式化:將空白的磁盤劃分出柱面和磁道,再將磁道劃分爲若干個扇區等

高級格式化:創建文件系統

        

VFS:virtual file system

一個分區就是一個獨立的文件系統,可以單獨格式化


查看當前系統識別了幾塊硬盤:

fdisk -l [/dev/to/some_device_file]

 

管理磁盤分區:

fdisk /device/path

         p: 顯示當前硬件的分區,包括沒保存的改動

         n: 創建新分區

                   e: 擴展分區

                   p: 主分區

                   l: 邏輯分區

         d: 刪除一個分區

         w: 保存退出

         q: 不保存退出

         t: 修改分區類型

                   L:

         l: 顯示所支持的所有類型

        

partprobe: 讓內核重讀分區表,cat /proc/partations 中查看分區表,  

    partprobe [/dev/sda/] 


partx: Redhat6.0中類似partprobe的命令       



09_01_磁盤及文件系統管理詳解之三 

 

查看Linux入門.ppt(search: 超級塊),補充塊組、超級塊等相關知識。


wKiom1WwtEWwEFJ3AADREdkMIp4608.jpg



超級塊(Super Block)

        描述整個分區的文件系統信息,例如塊大小、文件系統版本號、上次mount的時間等等

        超級塊在每個塊組的開頭都有一份拷貝


塊組描述符表(GDT,Group Descriptor Table)

        由很多塊組描述符組成,整個分區分成多少個塊組就對應有多少個塊組描述符

        每個塊組描述符(Group Descriptor)存儲一個塊組的描述信息,例如在這個塊組中從哪裏開始是inode表,從哪裏開始是數據塊,空閒的inode和數據塊還有多少個等等

        和超級塊類似,塊組描述符表在每個塊組的開頭也都有一份拷貝,這些信息是非常重要的,一旦超級塊意外損壞就會丟失整個分區的數據,一旦塊組描述符意外損壞就會丟失整個塊組的數據,因此它們都有多份拷貝


塊位圖(Block Bitmap)

        塊位圖就是用來描述整個塊組中哪些塊已用哪些塊空閒的,它本身佔一個塊,其中的每個bit代表本塊組中的一個塊,這個bit爲1表示該塊已用,這個bit爲0表示該塊空閒可用

        與此相聯繫的另一個問題是:在格式化一個分區時究竟會劃出多少個塊組呢?主要的限制在於塊位圖本身必須只佔一個塊


inode位圖(inode Bitmap)

        和塊位圖類似,本身佔一個塊,其中每個bit表示一個inode是否空閒可用


inode表(inode Table)

        一個文件除了數據需要存儲之外,一些描述信息也需要存儲,例如文件類型(常規、目錄、符號鏈接等),權限,文件大小,創建/修改/訪問時間等,也就是ls -l命令看到的那些信息,這些信息存在inode中而不是數據塊中

        每個文件都有一個inode,一個塊組中的所有inode組成了inode表

        inode表佔多少個塊在格式化時就要決定並寫入塊組描述符中

        mke2fs格式化工具的默認策略是一個塊組有多少個8KB就分配多少個inode


數據塊(Data Block)

        對於常規文件,文件的數據存儲在數據塊中

        對於目錄,該目錄下的所有文件名和目錄名存儲在數據塊中,文件名保存在它所在目錄的數據塊中

            除文件名之外,ls -l命令看到的其它信息都保存在該文件的inode中

            目錄也是一種文件,是一種特殊類型的文件

        對於符號鏈接,如果目標路徑名較短則直接保存在inode中以便更快地查找,如果目標路徑名較長則分配一個數據塊來保存

        設備文件、FIFO和socket等特殊文件沒有數據塊,設備文件的主設備號和次設備號保存在inode中



inode table格式: 

spacer.gifwKiom1WwtGGhXPm7AAEfcqP0fnc835.jpg



ext3比ext2多一個日誌區,存入元數據區的inode,先放入日誌區,文件寫完成後移動到元數據區


09_02_磁盤及文件系統管理詳解之四

 

文件系統管理

格式化:重新創建文件系統會損壞原有文件

 

創建分區

1. fdisk /dev/sda

2. n -> e -> 4 -> <Enter> -> <Enter>  創建一個擴展分區,使用MBR第四個位置,從開頭到結尾(使用所有剩餘的空間)

3. n -> +5G  創建一個5G的邏輯分區

4. w  保存退出

5. partprobe /dev/sda 讓內核識別新建分區,cat /proc/partitions 


mkfs: make file system,創建文件系統

         -t FSTYPE:指定文件系統類型


cat /proc/filesystems : 查看當前內核所支持文件系統類型

文件系統類型:

         ext2

         ext3:比ext2多一個journal區

         vfat: fat32

        

mkfs其實會調用其他的程序

mkfs -t ext2 = mkfs.ext2

mkfs -t ext3 = mkfs.ext3

 

專門管理ext系列文件系統:

1. mke2fs

         -j: 創建ext3類型文件系統

         -b BLOCK_SIZE: 指定塊大小,默認爲4096;可用取值爲1024、2048或4096;

         -L LABEL:指定分區卷標;

         -m #: 指定預留給超級用戶的塊數百分比

         -i #: 用於指定爲多少字節的空間創建一個inode,默認爲8192;這裏給出的數值應該爲塊大小的2^n倍;

         -N #: 指定inode個數;

         -F: 強制創建文件系統;

         -E: 用戶指定額外文件系統屬性;

 

2. blkid: 查詢或查看磁盤設備的相關屬性

         UUID:通用唯一識別碼 (Universally Unique Identifier)

         TYPE:文件系統類型

         LABEL: 卷標

        

3. e2label: 用於查看或定義卷標

         e2label 設備文件卷標: 設定卷標

        

4. tune2fs: 調整文件系統的相關屬性

         -j: 不損害原有數據,將ext2升級爲ext3;

         -L LABEL: 設定或修改卷標;

         -m #: 調整預留百分比;

         -r #: 指定預留塊數;

         -o: 設定默認掛載選項;

                   acl

         -c #:指定掛載次數達到#次之後進行自檢,0或-1表關閉此功能;

         -i #: 每掛載使用多少天后進行自檢;0或-1表示關閉此功能;

         -l: 顯示超級塊中的信息;

        

5. dumpe2fs: 顯示文件屬性信息

         -h: 只顯示超級塊中的信息

        

6. fsck: 檢查並修復Linux文件系統

         -t FSTYPE: 指定文件系統類型

         -a: 自動修復

        

7. e2fsck: 專用於修復ext2/ext3文件系統

         -f: 強制檢查;

         -p: 自動修復;

        

 

一個文件系統想要使用必須掛載到根文件系統

掛載:將新的文件系統關聯至當前根文件系統

卸載:將某文件系統與當前根文件系統的關聯關係預以移除;

 

8. mount:掛載

mount 設備 掛載點

         設備:

                   設備文件:/dev/sda5

                   卷標:LABEL=“”

                   UUID: UUID=“”

         掛載點:目錄

                   要求:

                            1、此目錄沒有被其它進程使用;

                            2、目錄得事先存在;

                            3、目錄中的原有的文件將會暫時隱藏;

 

新掛載的文件系統下會出現

新建的文件系統: lost+found 目錄


mount: 顯示當前系統已經掛載的設備及掛載點

mount [options] [-o options] DEVICE MOUNT_POINT

         -a: 表示掛載/etc/fstab文件中定義的所有文件系統

         -n: 默認情況下,mount命令每掛載一個設備,都會把掛載的設備信息保存至/etc/mtab文件;使用-n選項意味着掛載設備時,不把信息寫入此文件;

         -t FSTYPE: 指定正在掛載設備上的文件系統的類型;不使用此選項時,mount會調用blkid命令獲取對應文件系統的類型;

         -r: 只讀掛載,掛載光盤時常用此選項

         -w: 讀寫掛載

         -o: 指定額外的掛載選項,也即指定文件系統啓用的屬性;

                   remount: 重新掛載當前文件系統

                   ro: 掛載爲只讀

                   rw: 讀寫掛載

e.g: mount -o remount,ro /dev/sda5

掛載完成後,要通過掛載點訪問對應文件系統上的文件;

 

9. umount: 卸載某文件系統

         umount 設備

         umount 掛載點                

            -l: 強制卸載

 

         卸載注意事項:

                   掛載的設備沒有進程使用;




練習:

1、創建一個2G的分區,文件系統爲ext2,卷標爲DATA,塊大小爲1024,預留管理空間爲磁盤分區的8%;掛載至/backup目錄,要求使用卷標進行掛載,且在掛載時啓動此文件系統上的acl功能;

# mke2fs -L DATA -b 1024 -m 8  /dev/sda7

 

# mount -o acl LABEL=DATA /backup

或分兩步:

# tune2fs -o acl /dev/sda7

# mount LABEL=DATA /backup

 

2、將此文件系統的超級塊中的信息中包含了block和inode的行保存至/tmp/partition.txt中;

# tune2fs -l | egrep -i  "block|inode" >> /tmp/partition.txt 

# dumpe2fs -h | egrep -i  "block|inode" >> /tmp/partition.txt 


3、複製/etc目錄中的所有文件至此文件系統;而後調整此文件系統類型爲ext3,要求不能損壞已經複製而來的文件;

# cp -r /etc/*  /backup

# tune2fs    -j /dev/sda7


4、調整其預留百分比爲3%;

# tune2fs -m 3 -L DATA /dev/sda7


5、以重新掛載的方式掛載此文件系統爲不更新訪問時間戳,並驗正其效果;

# stat /backup/inittab

# cat /backup/inittab

# stat

 

# mount -o remount,noatime /backup

# cat

# stat

 

6、對此文件系統強行做一次檢測;

e2fsck -f /dev/sda7


7、刪除複製而來的所有文件,並將此文件系統重新掛載爲同步(sync);而後再次複製/etc目錄中的所有文件至此掛載點,體驗其性能變化;

# rm -rf /backup/*

# mount -o remount,sync /backup

# cp -r /etc/* /backup

 

 

09_03_磁盤及文件系統管理詳解之五


swap分區: 類似windows的虛擬內存

page out = swap in

page in = swap out


free: 查看當前系統上物理內存和交換分區的使用情況 

         -m: MB爲單位顯示

# free -m
             total       used       free     shared    buffers     cached
Mem:           490        394         95          0        142        101
-/+ buffers/cache:        149        340
Swap:         1023          0       1023


-/+ buffers/cache:        149(減去buffers+cached)         340(加上buffers+cached)

buffer: 存放元數據

cache: 存放數據

 

創建交換分區: mkswap, swapon


1. fdisk /dev/sda

2. n -> <Enter> -> +1G 創建一個新分區,大小1G

3. t -> 8 -> L -> 82    調整分區類型爲82(Linux swap),L查看可用分區類型

4. w

5. mkswap /dev/sda8  創建交換分區文件系統

         -L LABEL


6. swapon /dev/sda8  啓用交換分區

         -a:啓用所有的定義在/etc/fstab文件中的交換設備

    swapoff /dev/sda8 關閉交換分區

 

 

迴環設備:使用軟件來模擬實現硬件



loopback, 使用軟件來模擬實現硬件

如果磁盤已經沒有空間可以創建新的分區,可以創建一個鏡像文件,當作一塊硬盤來用。

 

dd命令:

         if=數據來源

         of=數據存儲目標

         bs=# :block size,以多大爲單位,如1M

         count=#:計數

         seek=#: 創建數據文件時,跳過的空間大小;   

            dd if=/dev/zero of=/root/tmp seek=1023 bs=1M count=1

            表示跳過1023個bs,複製1個bs,ls查看文件大小爲1G,du -sh 查看文件實際只有1M


dd不以文件爲單位,而直接複製文件流,可以實現只複製一部分文件。


e.g: 

dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1  備份磁盤MBR

dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1  恢復MBR

 

使用文件創建swap分區:

1. dd if=/dev/zero of=/var/swapfile bs=1M count=1024  創建一個1G的文件

2. mkswap /var/swapfile

3. swapon /var/swapfile

 

cat /dev/cdrom > /root/rhel5.iso 把光盤製作成ISO鏡像


/dev/null :數據黑洞,吞噬一切數據

/dev/zero:數據泡泡,產生無限0

        

mount命令,可以掛載iso鏡像;

mount DEVICE MOUNT_POINT

         -o loop: 掛載本地迴環設備

 

文件系統的配置文件/etc/fstab

         OS在初始時,會自動掛載此文件中定義的每個文件系統


如果只是使用命令:mount /dev/sda5 /mnt/test,重啓後掛載的文件就不存在了

    

/etc/fstab 格式:    

要掛載的設備         掛載點              文件系統類型                   掛載選項                   轉儲頻率(每多少天做一次完全備份)           文件系統檢測次序(只有根可以爲1)                

/dev/sda5                  /mnt/test                   ext3          defaults             0 0

 

mount -a:掛載/etc/fstab文件中定義的所有文件系統

 

 

fuser: 查看正在使用文件或套接字文件的進程

         -v: 查看某文件上正在運行的進程

         -k: kill 

         -m: mount

        

         fuser -km MOUNT_POINT:終止正在訪問此掛載點的所有進程

        

練習:

1、創建一個5G的分區,文件系統爲ext3,卷標爲MYDATA,塊大小爲1024,預留管理空間爲磁盤分區的3%,要求開機後可以自動掛載至/data目錄,並且自動掛載的設備要使用卷標進行引用;

# fdisk /dev/sdb

   n -> p -> <Enter> -> +5G -> w

# mke2fs -j -L MYDATA -b 1024 -m 3

# mkdir /data

# vi /etc/fstab加一行

LABEL='MYDATA'        /data        ext3        default         0 0


2、創建一個本地迴環文件/var/swaptemp/swapfile來用於swap,要求大小爲512MB,卷標爲SWAP-FILE,且開機自動啓用此交換設備;

# mkdir /var/swaptemp

# dd if=/dev/zero of=/var/swaptemp/swapfile bs=1M count=512

# mkswap -L SWAP-FILE /var/swaptemp/swapfile

# vi /etc/fstab

/var/swaptemp/swapfile       swap                  swap                  defaults             0 0


3、上述第一問,如何讓其自動掛載的同時啓用ACL功能;

#vi /etc/fstab

LABEL='MYDATA'              /data                  ext3          defaults,acl      0 0




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章