磁盤及文件系統管理初步與進階(重點內容)
磁盤分區及文件系統
linux系統管理
磁盤分區及文件系統管理:分區工具
linux磁盤及文件系統管理
整個操作系統的硬件組成部分,最底層是硬件設備,計算能力得以運行的最根本的基礎。 計算機的五大基本部件:cpu,運算器,控制器被整合到一起,由一個硬件部件來提供。 存儲器(主存rom可編址的存儲單元)。主板上有cpu插槽和內存設備,cpu需要與內存設備通信,所以二者之間需要線纜通信,通常稱線纜為前端總線。 多個硬件之間需要通信需要線纜。還有很多io設備,都是用來實現完成數據的輸入輸出。 在終端的io設備中,交互式接口有四個:1、磁盤設備(輔存ram,用來實現持久存儲,因為斷電后內存的數據就消失了) 2、網卡設備(重要的io設備,向外提供設備的基本的輸入輸出口)磁盤設備和網卡設備是io設備中最常見的兩個設備,這兩個io設備既能輸入又能輸出。 交互式接口還有另外兩個設備:1、顯示器。2、鍵盤。這么多io設備需要bas總線連接起來。 cpu的連接機制一并連到北橋(高速),其他高速io設備也連到北橋匯總以后連到cpu上由cpu進行處理。還有其他更慢的io設備連到南橋(慢速),再連到北橋,最后連到cpu上由cpu處理。 cpu要和其他顯卡和硬盤設備打交道,首先cpu需要事先向這個設備發送控制指令,讀請求或者寫請求有cpu的控制器來完成。接著cpu還需要向內存上定位每一個可用的空間。 尋址(地址總線),發控制命令(控制總線),數據存?。〝祿偩€),這三類總線是通過一組線纜實現的————總線機制。在某一時刻只能完成一種功能。每一個io設備都連到南橋或北橋。 將來需要預留空間進行擴展,預留pca槽來實現。主要描述的是硬盤接口,實現數據傳輸的方式不一樣。cup怎樣實現與不同的通信設備進行交互的。 每一種io設備和cpu通信時,需要槽來實現,這個槽叫控制器(翻譯官),作用:把cpu說得通的話翻譯為線纜能夠傳輸的,并且讓io設備控制芯片能夠聽懂的語言。 cpu想讀硬盤里的數據,需要驅動硬盤里的馬達來讀取硬盤里的數據,發控制指令。 了解磁盤的接口,如何識別硬盤設備的
計算的五大設備:
CPU、memory(RAM),各種I/O I/O:Disks,Ehtercard(以太網) Disks:實現持久存儲數據(輔助存儲) 磁盤接口接口類型: IDE(ata):并口總線,133MB/s(并行) SCSI:并口,Ultrascsi320,320MS,UltraSCSI640,640MB/S SATA:串口,6gbps(按序列)速度快 SAS:串口,6gbps USB:3.0串口,480MB/S 并口:同一線纜可以接多塊設備; IDE:兩個,主,從 SCSI: 寬帶:16-1 可以接十五個設備 窄帶:8-1 可以接七個設備 串口:同一線纜只能接一個設備;接多個設備只能提供多個線纜 iops:io per second,測試硬盤速度的,io能力 硬盤:機械硬盤,固態硬盤(可以理解為內部是多個并行存取的優盤);接口都是一樣的 機械硬盤工作原理: 磁道:真空封裝馬達帶動的彈片,磁性彈片,固定的軌道實現數據的存取。彈片上從外到內有很多軌道,叫作磁道。每一個圓的半徑都不一樣,每一個圓存儲的大小都不一樣。磁頭,在磁盤上懸浮一個磁頭,只有幾個微米的間距,讀取磁性材料中所存儲的數據,也能保存。每一個彈片每一面都有一個磁頭,一共四個磁頭,固定在同一個機械臂上。機械臂的轉動來定位磁道,定位完以后,等待磁盤選擇。 第一步,挪動磁頭,定位磁道 第二步,等待數據轉過來。 整塊磁盤讀數據都要這么做 機械硬盤: track:磁道 sector:扇區,512bytes cylinder:柱面,幾個磁頭固定在同一個機械臂上,在某一時刻,不同盤面上的同一個編號的磁道就叫一個柱面。 重點:分區劃分基于柱面:越外層性能越好,速度越快 平均尋道時間: 5400rpm:多少轉每分鐘,臺式機7200rpm,10000rpm,150000rpm。真空封裝的。不能震動。 不能用一個磁道一個磁道存儲,這樣很難對數據進行管理,而且容易浪費空間,所以把每個磁道劃分成扇區。
linux的哲學思想:一切皆文件; 設備類型: 塊(block):隨機訪問,數據交換單位是“塊”; 字符(character):線性訪問,數據交換單位是“字符” 設備文件:FHS /dev 設備文件:作用是將設備關聯至其的驅動程序(任何時候打開這個設備文件,就相當于是打開這個設備的驅動程序);設備的訪問入口; 設備號: major:主設備號,區分設備類型;用于標明設備所需要的驅動程序; minor:次設備號,區分同種類型下的不同的設備;是特定設備的訪問入口; mknod命令:創建設備文件 make block or character special files 創建塊設備或字符設備 mknod [OPTION]... NAME TYPE [MAJOR MINOR] 設備文件 類型 [主或次] 例如:mknod /dev/testdev b 111 1
-m MODE:創建后的設備文件的訪問權限; 調用用來修改系統調用來實現的 設備文件名:ICANN(互聯網名稱分別機構) 磁盤: IDE:/dev/hd[a-z] 設備文件再dev下hd命名 例如:L/dev/hda,/dev/hdb,老式的一般四個盤 SCSI,SATA,USB,SAS:/dev/sd[a-z] 分區: /dev/sda#: /dev/sda1.. 注意:centos 6和7通通將硬盤設備文件標識為/dev/sd[a-z]# 引用設備的方式: 設備文件名 卷標 UUID
磁盤分區:
MBR和GPT MBR:0 sector(0磁道0扇區) Master Boot Record:主引導機構 每一個扇區512bytes分為三部分 446bytes:bootloader,程序,引導啟動操作系統的程序; 64bytes:分區表,每16bytes標識一個分區,一共只能有4個分區; 4主分區 3主1擴展: n邏輯分區 2bytes:當前MBR區域的有效性標識;55AA表示為有效;否則無效 主分區和擴展分區的標識:1-4 邏輯分區:5+ 即使主分區只用了1個,邏輯分區也只能從5開始 四個主分區中拿出一個出來,不用來標識份分區,而用來指向另外一個存儲空間。 當前的分區表,一共只有64bytes,最多只能劃分四個分區。500g的硬盤,一個分區100個,剩下100g就無法使用了。不能被分區,空間就浪費了。所以可以,最后一個主分區用來標識指向磁盤上的某一段空間,把這段空間當做一個新的分區表。里面可以保留很多分區,這個分區就叫做擴展分區,整個剩余的空間都可以劃分給擴展分區,擴展分區不能直接使用,需要邏輯分區。
分區管理命令:fdisk命令(很危險,不要在生產環境上隨便使用)
1、查看磁盤的分區信息: fdisk -l [-u] [device...]:列出指定磁盤設備上的分區情況; 管理磁盤分區表
每一個扇區是512bytpe字節,扇區大小,io大小都是512字節,磁盤標簽是dos,123是主分區,4是擴展分區,boot下面有個*號,是引導分區,意思是操作系統在這個分區上。 start:centos6標識從哪個柱面開始,到哪個柱面結束 centos7顯示是從哪個扇區開始,到哪個扇區結束 block:標識一個扇區上有多少個塊 id:表示類型,linux正常的分區都是83,擴展分區是5,交換分區是82 2、管理分區 fdisk device fdisk提供了一個交互式接口來管理分區,它有許多子命令,分別用于不同的管理功能;所有的操作均在內存中完成,沒有直接同步到磁盤;直到使用w命令保存至磁盤上; 常用命令: n:創建新分區 d:刪除已有分區 t:修改分區類型 l:查看所有已知ID w:保存并退出 q:不保存并退出 m:查看幫助信息 p:顯示現有分區信息
示例:目前只能在邏輯分區里面進行分區操作了
n是新建一個分區
創建一個6分區,邏輯分區的話會自動指定,如果是主分區,我們需要自己指定
d刪除分區
從sda5的end開始算,到sda4的end之間的空間都可以
cat /proc/partitions 這里保存了硬件上的所有分區
注意:在已經分區并且已經掛載其中某個分區的磁盤設備上創建的新分區,內核可能在創建完成后無法直接識別; 查看:cat /proc/partitions 通知內核強制重讀磁盤分區表: centos 5:partprobe[device] centos 6或7:partx,kpartx partx -a [device] kpartex -af[device] 一次不成,可能需要執行兩次或更多 分區創建工具:parted,sfdisk;
注釋:分區創建完以后就可以在分區上創建文件系統了。
創建文件系統:
格式化:低級格式化(分區之前進行,劃分磁道)、高級格式化(分區之后對分區進行,創建文件系統) 元數據區,數據區(文件系統的基本管理法則) 元數據區: 文件元數據:inode(index node)節點,每一個文件的inode格式都是一樣的,但里面的數據不一樣。低級格式化已經把元數據區、多少個inode都劃分好了。只是inode里面是空的,只有創建文件時,里面才會有數據。不同的文件系統的inode大小不一樣。 大小、權限、屬主屬組、時間戳、數據塊指針等等。就不包含文件名,因為文件名是在目錄上存放的 符號鏈接文件:存儲數據指針的空間當中存儲的是真實文件的訪問路徑;不占據磁盤塊 設備文件:存儲數據指針的空間當中存儲的是設備號(major,minor) 找數據的時候,磁盤塊和inode都有索引,0表示磁盤塊空閑,1表示已用。按位索引,稱為bitmap index:位圖索引 數據區:在數據區里劃分成一個個塊,整個空間被劃分成磁盤塊,通過元數據里的數據庫指針,找到對應的數據區,從而才能讀到文件的內容 目前真正的磁盤分區:文件系統,首先先劃分成一個個獨立的邏輯單位,用來分組存放磁盤塊,每一個塊組是一個自治區。,獨立管理數據塊。每一個獨立的塊組,都有一個元數據區。超級塊:對數據塊進行統計一共多少個塊組,每一個塊組從哪開始,到哪結束的一小塊區域。超級塊至關重要。超級塊就是某個塊組。 塊組,首先先劃分塊,然后在眾多塊之間開始切割誰是數據,誰是元數據。眾多塊中有一些是超級塊。每一個塊組內部,有塊組描述符,用來描述這一個組,塊組描述符里表示從哪個塊開始,到哪個塊結束,塊組內部有哪些inode,有多少block,每一個inode中有哪些是已用,哪些未用。位圖索引。而超級塊是用來管理所有組的。
文件元數據索引inode標號,不是inode本身
查看inode里的數據
文件名在目錄上,目錄也是一個文件
以下操作比較獨特
內核啟動完以后就要啟動根,假如要找/var/log/messages下的文件。路徑名怎么映射
通過inode,找到文件,再找inode不停的映射。每次這個找太慢,每次找完以后都會緩存下來。
buffers和cached用來緩存數據和元數據的,二者是分開存放的
VFS:Virtual File Eystem(虛擬文件系統) 當兩個層次之間不銜接時,加一個中間層。程序員,很多文件系統。有一個全能的翻譯官,在二者之間不銜接時加一個中間層,中間層向上所輸出的接口是整潔而統一的,程序員只要調用vfs所調用的接口就可以,這一層就叫做虛擬層。任何兩個系統之間不能銜接時都可以加一個中間層來解決。 linux的文件系統:ext2、ext3、ext4、xfs(centos7),reiserfs,btrfs, 光盤文件系統:iso9660 網絡文件系統:nfs,cifs 集群文件系統:gfs2,ocfs2 內核級分布式文件系統:ceph windows的文件系統:vfat,ntfs 偽文件系統:proc,sysfs,tmpfs,hugepagefs Unix的文件系統:UFS,FFS,JFS 交互文件系統:swap(現代內存系統必有的,虛擬內存系統) 用戶空間的分布式文件系統:mogilefs,moosefs,glusterfs
文件系統管理工具:
創建文件系統工具:創建文件系統會損壞原有的文件系統 mkfs mkfs.ext2(無日志),mkfs.ext3,mkfs.ext4,mkfs.xfs,mkfs.vfat... 檢測及修復文件系統的工具 fsck fsck.ext2,fsck.ext3 查看其屬性的工具 dumpe2fs,tune2fs 調整文件系統特性: tune2fs
鏈接文件:訪問同一個文件不同路徑: 硬鏈接:指向同一個inode的多個文件路徑,硬鏈接和原文件的大小是一樣的 特性: (1)目錄不支持硬鏈接; (2)硬鏈接不能跨文件系統; (3)創建硬鏈接會增加inode引用計數; 創建: ln src(原文件) link_file(鏈接文件)
不能對目錄進行硬鏈接
符號鏈接(軟鏈接):指向一個文件路徑的另一個文件路徑; 簡單理解:元數據該放指針的地方放了另外一個字符串,這個字符串就是查找文件真正指向的路徑。 特性: (1)符號鏈接與文件是兩個人各自獨立的文件,各有自己的inode;對原文件創建符號鏈接不會增加引用計數; (2)支持對目錄創建符號鏈接,可以跨文件系統; (3)刪除符號鏈接文件不影響原文件;但刪除原文件,符號指定的路徑及不存在,此時會變成無效鏈接; 注意:符號鏈接文件的大小是其指定的文件的路徑字符串的字節數; 創建: ln -s src(原文件) link_file(鏈接文件) -v:verbose(顯示過程)
回顧:磁盤、磁盤分區、文件系統
需要外部的存儲設備(輔存),主要指磁盤設備 centos 6,7:/dev/sd[a-z]# 創建刪除管理分區:fdisk(主要),parted,sfdisk 創建文件系統: linux文件系統類型:ext2,ext3,ext4,xfs,reiserfs,iso9660,swap 文件系統的組織結構中的術語: block groups(塊組,內部分為元數據區和數據區),block(磁盤塊),inode table(存放inode),inode bitmap(哪些inode已用,哪些inode未使用),block bitmap(哪些塊可用和不可用),superblock(有哪些塊組)gdt(塊組描述符)
磁盤和文件系統管理
centos6當中 lsb_release:查看發行版本 cat /etc/issue:當前 uname -r :看內核的版本
如何手動調整分區類型: 把新分區弄成swap類型
文件系統管理工具: 創建文件系統工具 mkfs mkfs.ext2(無日志),mkfs.ext3,mkfs.ext4,mkfs.exts,mkfs.vfat... 檢測及修復文件系統的工具 fsck fsck.ext2,fsck.ext3 查看其屬性的工具 dumpe2fs,tune2fs 調整文件系統特性: tune2fs 內核級文件系統的組成部分: 文件系統驅動:由內核提供 文件系統管理工具:由用戶空間的應用程序提供 ext系列文件系統的管理工具: mkfs.ext2(沒有日志),mkfs.ext3,mkfs.ext4(建議使用) 創建方法:mkfs.ext2 分區 提醒:格式化化操作會損壞磁盤上的所有數據,慎重操作 注意:mkfs -t ext2 =mkfs.ext2
查看對應文件系統的tpye,還有一個隨機的UUID
ext系列文件系統專用管理工具:mke2fs mke2fs [option] device -t {ext2|ext3|ext4}:指明要創建的文件系統類型 mkfs.ext4=mkfs -t ext4=mke2fs -t ext4 -b {1024|2048|4096}:指明文件系統的塊大?。?/pre>
-L LABEL:指明卷標;
-j:創建有日志功能的文件系統ext3; mke2fs -j=mke2fs -t ext3=mkfs -t ext3=mkfs.ext3 -i:bytes-per-inode,指明inode與字節的比率;即每多少字節創建一個inode -N #:直接指明要給此文件系統創建的inode的數量; -m #:指定預留的空間,百分比;直接寫數字,百分之三就直接寫3 -O FEATURE:以指定的特性創建目標文件系統 -O [^]FEATURE:取消以指定的特性創建目標文件系統 e2label命令:卷標的查看與設定 查看:e2label device 設定:e2label device LABEL
tune2fs命令:查看或修改ext系列的某些屬性 adjust tunable filesystem paramenters on ext2/ext3/ext4 filesystems; 注意:塊大小創建后不可修改; tune2fs [options] device -l:查看超級塊的內容;
修改指定文件系統的屬性; -j:ext2 -> ext3(升級)
-L LABEL:修改卷標; -m #:調整預留給管理員的空間百分比;
-O [^]FEATHER:開啟或關閉某種特性; 例如:取消日志功能,還有恢復日志功能
-o [^]mount_options:開啟或關閉某種默認掛載選項 acl ^acl dumpe2fs命令:顯示ext系列文件系統的屬性信息 dumpe2fs [-h] decice
用于實現文件系統檢測的工具 因進程意外中止或系統崩潰等,原因導致定稿操作非正常終止時,可能會造成文件損壞;此時,應該檢測并修復文件系統;建議,離線進行 ext系列文件系統檢測的專用工具: e2fsck:check a Linux ext2/ext3/ext4 file system e2fsck [options] device -y:對所有問題自動回答yes; -f:即使文件系統處于clean狀態,也要強制進行檢測;
fsck:check and repair a linux file system -t fstype:指明文件系統類型; fsck -t ext4=fsck.ext4 -a:無需交互而自動修復所有錯誤;(不建議使用) -r:交互式修復 提醒:格式化操作會破壞原有的所有數據,慎重操作 centos 6如何使用xfs文件系統: 聯網的情況下直接輸入:#yum -y intall xfsprogs 在教室里事先: #cd /etc/yum.repos.d/ #wget http://172.16.0.1/centos6.7.repo #mv centos-base.rep 創建:mkfs.xfs 檢測:fsck.xfs blkid命令: blkid device:查看設備信息 blkid -L LABEL:根據LABEL定位設備(根據卷標查找對應的設備) blkid -U UUID:根據UUID定位設備
swap文件系統: linux上的交換分區必須使用獨立的文件系統; 且文件系統的system ID必須為82; 創建swap設備:mkswap命令 mkswap [option] device -L LABEL:指明卷標 -f:強制windows無法識別linux的文件系統:因此,存儲設備需要兩種系統之間交叉使用時,應該使用windows和linux同時支持的文件系統:fat32(vfat); #mkfs.vfat device
要明確理解一個概念:對linux系統來說,硬盤上有四個分區,這四個分區abcd該怎么都能訪問到。只有一個是根,假如a是rootfs結構,這個分區就作為了根。根下的為此使用的mnt,與b分區建立關聯關系。mnt作為其他分區入口的目錄,一定要在前一個系統上,mnt被稱為掛載點。b分區是掛載設備。mnt在a上面,a.txt在b上面。訪問mnt時,自動不在a分區,而是作為b分區的入口,這個過程就叫掛載。盡量從a分區開始掛載。
文件系統的使用:
首先要“掛載”:mount命令和umount命令 掛載主要用到兩個組件,一個是掛載點,一個是要掛載的設備。通常只把設備掛載到哪個掛載點上。通過掛載點,可以訪問被掛載的設備上的文件。每一個文件系統的根,本身就有一個目錄。 根文件系統之外的其它文件系統要想能夠被訪問,都必須通過“關聯”至根文件系統上的某個目錄來實現,此目錄即為所謂的掛載點,這個關聯操作過程即為掛載; 掛載點:mount_point,用于作為另一個文件系統的訪問入口; (1)事先存在; (2)應該使用未被或不會被其他進程使用到的目錄; (3)掛載點下原有的文件將會被隱藏; mount命令:mount會顯示所有已掛載的系統
centos7上除了正常的掛載系統,偽掛載系統,還有很多cgroup系統
基本用法:
掛載后,目錄里本身的文件都會被隱藏。在mnt下新建一個fstab文件,在把掛載點卸載,進/mnt下會發現fstab文件已經沒了,因為這個文件在掛載點的分區上,即sda7上。再掛載上,就會再出現,無論掛載到哪個路徑上。
mount [-nrw] [-t vfstype] [-o options] device dir 命令選項: -r:readonly,只讀掛載;整個文件系統都是只讀的,無法向里面寫文件
-w:read and write:讀寫掛載; -n:默認情況下,設備掛載或卸載的操作會同步更新至/etc/mtab文件中;-n用于禁止此特性 -t vfstype:指明要掛載的設備上的文件系統的類型;多數情況下可省略,此時mount會通過blkid來判斷要掛載的設備的文件系統類型; -L LABEL:掛載時以卷標的方式指明設備; mount -L LABEL dir(要掛載的目錄)
-U UUID :掛載時以UUID的方式指明設備; mount -U UUID dir(要掛載的目錄)
-o options:掛載選項,掛載時文件系統的特性 sync/async:同步/異步操作;一般異步操作好。 atime/noatime:文件或目錄在被訪問時是否更新其訪問時間戳,不更新系統會好很多 diratime/nodiratime:目錄在被訪問時是否更新其訪問時間戳; remount:重新掛載; acl:支持使用facl功能; #mount -o acl device dir #tune2fs -o acl device
ro:指讀 rw:讀寫 dev/nodev:此設備上是否允許創建設備文件; exec/noexec:是否允許運行此設備上的程序文件; auto/noauto: user/nouser:是否允許普通用戶掛載此文件系統; suid/nosuid:是否允許程序文件上的suid和guid特殊權限生效; defaults:Use default options;rw,suid,dev,exec,auto,nouser,async,and relatime 一個使用技巧: 可以實現將目錄綁定至另一個目錄上,作為其臨時訪問入口; mount --bind 源目錄 目標目錄 查看當前系統所有已掛載的設備: #mount #cat /etc/mtab #cat /proc/mounts 掛載光盤: mount -r /dev/cdrom mount_point 光盤設備文件:/dev/cdrom,/dev/dvd 掛載U盤: 事先識別u盤的設備文件;然后在用掛載光盤的方法掛載 掛載本地的回環設備: #mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT umount命令: umount device|dir 注意:正在被進程訪問到的掛載點無法被卸載; 查看被哪個或哪些進程所占用; #lsof MOUNT_POINT #fuser -v MOUNT_POINT 終止所有正在訪問某掛載點的進程; #fuser -km MOUNT_POINT 交互分區的啟用和禁用: 創建交換分區的命令:mkswap 啟用:swapon swapon [option] [DEVICE] -a:定義在/etc/fstab文件中的所有swap設備; 禁用:swapoff swapoff DEVICE
設定除根文件系統以外的其他文件系統能夠開機自動掛載:/etc/fstab文件 每行定義一個要掛載的文件系統及相關屬性; 6個字段: (1)要掛載的設備: 設備文件; LABEL UUID 偽文件系統:如sysfs,proc,tmpfs等 (2)掛載點 swap類型的設備的掛載點為swap; (3)文件系統類型: (4)掛載選項 defaults:默認掛載選項; 如果要同時指明多個掛載選項,彼此間以逗號分隔; default,acl,noatime,noexec (5)轉儲頻率 0:從不備份; 1:每天備份; 2:每隔一天備份; (6)自檢次序 0:不自檢; 1:首先自檢,通常只能是根文件系統可用1; 2:次級自檢 .... mount -a:可自動掛載定義在此文件中的所支持自動掛載的設備;如何設置/etc/sda7開機自動掛載
兩個命令:df和du
df命令: df[option]..[file].. -i:僅顯示本地文件的相關信息; -h:human-readable -l:顯示inode的使用狀態而非blocks du命令: du[option]..[file].. -s:sumary -h:human-readable 換算成人類易讀的單位原創文章,作者:15152188070,如若轉載,請注明出處:http://www.www58058.com/41697