① linux分區格式有哪些
1、Ext2:是GNU/Linux系統中標準的文件系統。這是Linux中使用最多的一種文件系統,它是專門為Linux設計的,擁有極快的速度和極小的CPU佔用率,既可以用於標準的塊設備,也被應用在軟盤等移動存儲設備上。
2、Ext3:Ext3是一種日誌文件系統,最大的特點是:它會將整個磁碟的寫入動作完整的記錄在磁碟的某個區域上,以便有需要時回溯追蹤。當在某個過程中斷時,系統可以根據這些記錄直接回溯並重整中斷的部分,重整速度相當快。
3、Linux Swap:它是Linux中一種專門用於交換分區的Swap文件系統。Linux是使用這一整個分區作為交換空間,一般這個Swap格式的交換分區是主內存的2倍,在內存不夠時,Linux會將部分數據寫到交換分區上。
4、VFAT:也叫作長文件名系統,這是一個與Windows系統兼容的Linux文件系統,支持長文件名,可以作為Windows與Linux交換文件的分區。
② linux如何擴展主分區
這里以Red hat AS4 為例。當磁碟分區發現不夠用時,能想道的第一個做法就是增加分區大小。但是一般Linux如果沒有採用邏輯卷管理,則動態增加分區大小很困難,一個能想道的辦法就是,備份分區文件系統數據,刪除分區,然後再重新創建分區,恢復備份的文件系統,這個做法比較玄,可能刪除分區後導致系統無法啟動。
第二個做法就是,創建一個新的邏輯分區(當然必須有未使用的磁碟空間能分配),將文件系統從老分區拷貝到新分區,然後修改fstab,使用新分區/文件系統替換老的分區/文件系統
第三種做法是,創建一個新的邏輯分區,將新的邏輯分區格式化ext3(或其他類型)的文件系統,mount到磁碟空間不夠的文件系統,就跟原來的分區/文件系統一樣的使用。
這里採用的是第三種方式:
sdb為第二個SCSI硬碟。
[root@hdp0 hadoop]# /sbin/fdisk /dev/sdb
The number of cylinders for this disk is set to 8942.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/sdb: 73.5 GB, 73557090304 bytes
255 heads, 63 sectors/track, 8942 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 130 1044193+ 83 Linux
/dev/sdb2 131 391 2096482+ 82 Linux swap
/dev/sdb3 392 521 1044225 83 Linux
/dev/sdb4 522 8942 67641682+ 5 Extended
/dev/sdb5 522 586 522081 83 Linux
/dev/sdb6 587 651 522081 83 Linux
/dev/sdb7 652 1173 4192933+ 83 Linux
可以看出sdb1,2,3為主分區,sdb4為擴展分區。後面的sdb5,6,7則為邏輯分區。柱面編號(Start,End)是連續的,sdb7隻用道了1173,而從擴展分區看最大到8942,也就是說,還有7769個柱面是空閑的,一個柱面大小為8225280,約為8M大小。還剩7769*8225280bytes,約62G未使用。
新增加一個邏輯分區(註:若涉及到主分區和擴展分區,實際情況可能比這個復雜,這里4個主分區(包括擴展分區)都分過了,所以只能分邏輯分區)
Command (m for help): n
First cylinder (1174-8942, default 1174):
Using default value 1174
增加大小為10G
Last cylinder or +size or +sizeM or +sizeK (1174-8942, default 8942): +10240M
增加後看一下,多了一個邏輯分區/dev/sdb8
Command (m for help): p
Disk /dev/sdb: 73.5 GB, 73557090304 bytes
255 heads, 63 sectors/track, 8942 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 130 1044193+ 83 Linux
/dev/sdb2 131 391 2096482+ 82 Linux swap
/dev/sdb3 392 521 1044225 83 Linux
/dev/sdb4 522 8942 67641682+ 5 Extended
/dev/sdb5 522 586 522081 83 Linux
/dev/sdb6 587 651 522081 83 Linux
/dev/sdb7 652 1173 4192933+ 83 Linux
/dev/sdb8 1174 2419 10008463+ 83 Linux
可以看到,增加了一個sdb8的分區,柱面號從1174到2419.
寫入分區表,執行分區操作
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 設備或資源忙.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
分區完後,是看不到文件系統的
[root@hdp0 hadoop]# df -m
Filesystem 1M-塊 已用 可用 已用% 掛載點
/dev/sdb1 1004 582 372 62% /
none 1014 0 1014 0% /dev/shm
/dev/sdb3 1004 807 147 85% /home
/dev/sdb5 494 11 458 3% /opt
/dev/sdb7 4031 3272 554 86% /usr
/dev/sdb6 494 87 382 19% /var
重啟機器
reboot
格式化文件系統
[root@hdp0 hadoop]#/sbin/mkfs.ext3 /dev/sdb8
mount文件系統,/home/develop 為/home下一目錄
[root@hdp0 hadoop]#mount /dev/sdb8 /home/develop
查看文件系統,可以看到新建立的分區/文件系統已經掛載上,能夠使用了。
[root@hdp0 hadoop]# df -m
Filesystem 1M-塊 已用 可用 已用% 掛載點
/dev/sdb1 1004 582 372 62% /
none 1014 0 1014 0% /dev/shm
/dev/sdb3 1004 807 147 85% /home
/dev/sdb5 494 11 458 3% /opt
/dev/sdb7 4031 3272 554 86% /usr
/dev/sdb6 494 87 382 19% /var
/dev/sdb8 9621 54 9079 1% /home/develop
③ Linux 格式化硬碟方法教程
我們使用Linux過程中,和Windows也一樣。使用硬碟的時候,出現了問題,需要對硬碟進行格式化。那 Linux 如何格式化硬碟呢?下面就和大家說一下 Linux 格式化硬碟的方法和步驟。
步驟如下:
1、硬碟的介面類型
硬碟的介面一般分為兩種,一種是IDE並行介面,一種是SATA串列介面, 在 Linux 上面IDE介面的硬碟被識別為/dev/hd[a-z]這樣的設備,其中hdc表示光碟機設備,這是因為主板上面一般有兩個IDE插槽,一個IDE插槽可以接兩個硬碟,而光碟機是接著IDE的第二個插槽上面的第一個介面上面。其他諸如SCSI,SAS,SATA,USB等介面的設備在linux識別為/dev/sd[a-z]。
2、 Linux 硬碟的分區
磁碟的分區分為: primary(主分區)、extended(擴展分區)、Logical (邏輯分區)且主分區加上擴展分區的個數小於等於4個。且擴展分區最多隻有一個,擴展分區是不能直接在裡面寫入數據的,擴展分區裡面新建邏輯分區才能讀寫數據。如果看見一個硬碟有很多分區,則其實是在擴展分區裡面新建的邏輯分區。
主分區從 sdb1--sdb4
邏輯分區是從 sdb5--sdbN
如果所示linux硬碟分區之間的關系
第一種情況為:四個主分區
第二種情況為:三個主分區+一個擴展分區(擴展分區裡麵包括邏輯分區)
4、使linux內核識別分區信息
cat /proc/partitions 查看內核識別的分區信息
[root@Redhat5 ~]# cat /proc/partitions
major minor #blocks name
8 0 125829120 sda
8 1 104391 sda1
8 2 41945715 sda2
8 3 1052257 sda3
253 0 30703616 dm-0
253 1 5111808 dm-1
讓內核重新讀取硬體分區表有兩個命令
partprobe /dev/sda ------》 redhat 5.x ,redhat 6.x需要重啟
partx -a /dev/sda5 /dev/sda-------》redhat 6.x
內核載入分區信息之後再查看
[root@Redhat5 ~]# cat /proc/partitions
major minor #blocks name
8 0 125829120 sda
8 1 104391 sda1
8 2 41945715 sda2
8 3 1052257 sda3
8 4 0 sda4
8 5 1959898 sda5
8 6 3911796 sda6
253 0 30703616 dm-0
253 1 5111808 dm-1
5、格式化分區
格式化分區的命令
mkfs -t fstype /dev/part -t選擇格式化的類型,然後是那個分區
mkfs.ext2 /dev/part 格式化為ext2的類型,然後是接那個分區
mkfs.ext3 /dev/part 格式化為ext3的類型,然後是接那個分區
mkfs.ext4 /dev/part 格式化為ext4的類型,然後是接那個分區
mke2fs 比之前幾個更加強大的格式化分區的命令
這幾個命令之間相關的關系
mkfs -t ext4 = mkfs.ext4 = mke2fs -t ext4
mkfs -t ext3 = mkfs.ext3 = mke2fs -j = mke2fs -t ext3
mkfs -t ext2 = mkfs.ext2 = mke2fs = mke2fs -t ext2
mke2fs (man mke2fs):創建文件類型---》/etc/mke2fs.conf 配置文件
-t:文件類型
-j:相當於 ext3
-b:指定塊大小{1024”2048|4096byte},塊大小取決cpu對內存頁框大小的支持,x86系統默認頁
大小是4096,4k
-L: label 設定卷標
-m: #預留給管理使用的塊所佔的比率 一般用在分區很大的時候,#為數字
mke2fs -t ext3 /dev/sda5 #把分區格式為ext3格式的
mke2fs -t ext3 -b 2048 /dev/sda5 # 把分區的塊改成2048位元組,一般用於系統中小文件很多的情況
mke2fs -t ext3 -m 3 /dev/sda5 #把分區預留的空間改為所佔總空間的3%,默認為5%,因為當某個分區足夠大的時候,可以減少空間
mke2fs -t ext3 -L DATE /dev/sda5 #把分區的卷標設置為DATE
tune2fs 命令可以查看分區的詳細信息,mke2fs 與 tune2fs的關系和useradd與usermod的關系很類似。mke2fs支持的參數tune2fs大多數都支持,詳情請man tune2fs查看相關的幫助。
option
-l: 顯示文件系統超級塊信息;
-L label:重新設定卷標;
-m #: 調整預留給管理使用的塊所佔據總體空間的比例;
-r #: 調整預留給管理使用的塊個數;
-o:設定掛載默認選項
-O: 設定文件系統默認特性
-E: 調整文件系統的擴展屬性
tune2fs不支持-b參數改變塊的大小。
tune2fs -l /dev/sda5 可以詳細查看分區的信息
[root@Redhat5 ~]# tune2fs -l /dev/sda5 | grep “^Block size” //顯示sda5分區塊的大小
Block size: 4096
[root@Redhat5 ~]# tune2fs -l /dev/sda5 | grep “^Reserved” //顯示sda5預留空間
Reserved block count: 24498
Reserved GDT blocks: 119
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
tune2fs -L DATE /dev/sda5 #修改卷標
tune2fs -m 3 /dev/sda5 #修改預留給管理使用的塊所佔據總體空間的比例
e2label:顯示或設定卷標
e2label /dev/sda5 MYDATE
blkid :顯示設備的UUID及文件系統類型,及卷標
6、掛載
mount 掛載------》顯示的是/etc/mtab文件裡面的內容
mount [-t fstype] DEVICE MOUNT_POINT
命令 設備 掛載點
mount [-t fstype] LABEL=“卷標” MOUNT_POINT --》e2label查看標簽
mount [-t fstype] UUID=“UUID” MOUNT_POINT ----》blkid可以查看UUID
options:
-o:用於指定掛著選項,常用的掛著選項,選項有很多用逗號隔開
ro:只讀掛載
rw:讀寫掛載(默認)
noatime:關閉更新訪問時間
auto:是否能夠由“mount -a”掛載
defaults:相當於rw, suid, dev, exec, auto, nouser, async.
sync:同步
async:非同步
noexec:不容易設備中的二進制直接運行
remount:重新掛載
loop:本地回環設備: 掛載系統已經存在的鏡像
-t:
-v:verbose 顯示詳細信息
-n:掛載文件系統時,不更新/etc/mtab文件
-r:只讀掛載相當於“-o ro”
掛載的幾種方式
顯示系統已經掛載的文件
掛載分區sda5到/mnt/sda5目錄下
[root@Redhat5 ~]# mkdir /mnt/sda5 #創建一個掛載目錄
[root@Redhat5 ~]# mount /dev/sda5 /mnt/sda5/ #把分區掛載到新建的目錄裡面
[root@Redhat5 ~]# mount “ grep ”/dev/sda5“ #查看分區是否掛載
/dev/sda5 on /mnt/sda5 type ext3 (rw) #顯示分區已經掛載
[root@Redhat5 ~]# umount /dev/sda5 #卸載分區
[root@Redhat5 ~]#mount | grep ”/dev/sda5“ #發現分區已經被卸載
[root@Redhat5 ~]# blkid #顯示設備的UUID及文件系統類型,及卷標
/dev/mapper/vol0-home: UUID=”d1aeef77-bb47-4718-a91c-d4870b536440“ TYPE=”ext3“
/dev/sda3: LABEL=”SWAP-sda3“ TYPE=”swap“
/dev/sda1: LABEL=”/boot“ UUID=”5e5eaaac-cc56-42da-81eb-9adebff0fa2e“ TYPE=”ext3“
/dev/vol0/root: UUID=”4302a528-e88e-43d3-b3cc-1c2b29cda656“ TYPE=”ext3“
/dev/sda5: LABEL=”DATE“ UUID=”8f4f9b53-0bf0-4ce9-9665-bd4c7ae9ce59“ TYPE=”ext3“
[root@Redhat5 ~]# mount LABEL=”DATE“ /mnt/sda5/ #可以查到到分區5的標簽為DATE,通
過掛載標簽來掛載分區
[root@Redhat5 ~]# mount | grep ”/dev/sda5“ #查看分區是否掛載
/dev/sda5 on /mnt/sda5 type ext3 (rw)
[root@Redhat5 ~]# umount /dev/sda5 #卸載分區
[root@Redhat5 ~]#mount | grep ”/dev/sda5“
[root@Redhat5 ~]# mount UUID=”8f4f9b53-0bf0-4ce9-9665-bd4c7ae9ce59“ /mnt/sda5/
#通過掛載UUID來掛載分區
[root@Redhat5 ~]#mount | grep ”/dev/sda5“
/dev/sda5 on /mnt/sda5 type ext3 (rw)
用mount命令掛載的文件在系統開機的時候是不能自動掛載的,想要系統開機就掛載寫到配置文件即可/etc/fstab
echo ”LABEL=DATE /mnt/sde5 ext3 defaults 0 0“ 》》 /etc/fstab
/etc/fstab文件的格式
[root@Redhat5 ~]# cat /etc/fstab
/dev/vol0/root / ext3 defaults 1 1
/dev/vol0/home /home ext3 defaults 1 2
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
欄位以空格分隔
1、掛載的設備:設備文件、卷標、UUID
2、掛載點: 與跟相關聯的目錄
3、文件系統類型:ext3,ext4
4、掛載選項:defaults表示使用默認選項,多個選項彼此間逗號分隔
5、轉儲頻率:0:從不備份、1:每日備份、2:每隔一日備份
6、自檢次序:0:不檢測、1:第一個檢測,一般只能為根文件系統第一個檢測 2 。。.9
補充:系統常用維護技巧
1,在 “開始” 菜單中選擇 “控制面板” 選項,打開 “控制面板” 窗口,單擊 “管理工具” 鏈接
2,在打開的 “管理工具” 窗口中雙擊 “事件查看器” 圖標
3, 接著會打開 “事件查看器” 窗口
4,在右側窗格中的樹狀目錄中選擇需要查看的日誌類型,如 “事件查看器本地--Win日誌--系統日誌,在接著在中間的 “系統” 列表中即查看到關於系統的事件日誌
5,雙擊日誌名稱,可以打開 “事件屬性” 對話框,切換到 “常規” 選項卡,可以查看該日誌的常規描述信息
6,切換到 “詳細信息” 選項卡,可以查看該日誌的詳細信息
7,打開 “控制面板” 窗口,單擊 “操作中心” 鏈接,打開 “操作中心” 窗口,展開 “維護” 區域
8,單擊 “查看可靠性歷史記錄” 鏈接,打開 “可靠性監視程序” 主界面,如圖所示, 用戶可以選擇按天或者按周為時間單位來查看系統的穩定性曲線表,如果系統近日沒出過什麼狀況, 那麼按周來查看會比較合適。觀察圖中的曲線可以發現,在某段時間內,系統遇到些問題,可靠性指數曲線呈下降的趨勢,並且在這段時間系統遇到了三次問題和一次警告,在下方的列表中可以查看詳細的問題信息。
相關閱讀:系統故障導致死機怎麼解決
1、病毒原因造成電腦頻繁死機
由於此類原因造成該故障的現象比較常見,當計算機感染病毒後,主要表現在以下幾個方面:
①系統啟動時間延長;
②系統啟動時自動啟動一些不必要的程序;
③無故死機
④屏幕上出現一些亂碼。
其表現形式層出不窮,由於篇幅原因就介紹到此,在此需要一並提出的是,倘若因為病毒損壞了一些系統文件,導致系統工作不穩定,我們可以在安全模式下用系統文件檢查器對系統文件予以修復。
2、由於某些元件熱穩定性不良造成此類故障(具體表現在CPU、電源、內存條、主板)
對此,我們可以讓電腦運行一段時間,待其死機後,再用手觸摸以上各部件,倘若溫度太高則說明該部件可能存在問題,我們可用替換法來診斷。值得注意的是在安裝CPU風扇時最好能塗一些散熱硅脂,但我在某些組裝的電腦上卻是很難見其蹤影,實踐證明,硅脂能降低溫度5—10度左右,特別是P Ⅲ 的電腦上,倘若不塗散熱硅脂,計算機根本就不能正常工作,曾遇到過一次此類現象。該機主要配置如下:磐英815EP主板、PⅢ733CPU、133外頻的128M內存條,當該機組裝完後,頻繁死機,連Windows系統都不能正常安裝,但是更換賽揚533的CPU後,故障排除,懷疑主板或CPU有問題,但更換同型號的主板、CPU後該故障也不能解決。後來由於發現其溫度太高,在CPU上塗了一些散熱硅脂,故障完全解決。實踐證明在賽揚533以上的CPU上必須要塗散熱硅脂,否則極有可能引起死機故障。
3、由於各部件接觸不良導致計算機頻繁死機
此類現象比較常見,特別是在購買一段時間的電腦上。由於各部件大多是靠金手指與主板接觸,經過一段時間後其金手指部位會出現氧化現象,在拔下各卡後會發現金手指部位已經泛黃,此時,我們可用橡皮擦來回擦拭其泛黃處來予以清潔。
4、由於硬體之間不兼容造成電腦頻繁死機
此類現象常見於顯卡與其它部件不兼容或內存條與主板不兼容,例如SIS的顯卡,當然其它設備也有可能發生不兼容現象,對此可以將其它不必要的設備如Modem、音效卡等設備拆下後予以判斷。
5、軟體沖突或損壞引起死機
此類故障,一般都會發生在同一點,對此可將該軟體卸掉來予以解決。
④ Linux裡面什麼是ext2fs
EXT2FS第二代擴展文件系統(英語:second extended filesystem,縮寫為 ext2),是LINUX內核所用的文件系統。它開始由Rémy Card設計,用以代替ext,於1993年1月加入linux核心支持之中。ext2 的經典實現為LINUX內核中的ext2fs文件系統驅動,最大可支持2TB的文件系統,至linux核心2.6版時,擴展到可支持32TB。其他的實現包括GNU Hurd,Mac OS X(第3方),Darwin(第3方),BSD。ext2為數個LINUX發行版的默認文件系統,如Debian、Red Hat Linux等 。
簡介
其單一文件大小與文件系統本身的容量上限與文件系統本身的簇大小有關,在一般常見的 x86電腦系統中,簇最大為 4KB, 則單一文件大小上限為 2048GB, 而文件系統的容量上限為 16384GB。
但由於目前核心 2.4 所能使用的單一分割區最大隻有 2048GB,實際上能使用的文件系統容量最多也只有 2048GB。
至於Ext3文件系統,它屬於一種日誌文件系統,是對ext2系統的擴展。它兼容ext2,並且從ext2轉換成ext3並不復雜。
Ext2文件系統具有以下一般特點:
1、當創建Ext2文件系統時,系統管理員可以根據預期的文件平均長度來選擇最佳的塊大小(從1024B——4096B)。例如,當文件的平均長度小於幾千位元組時,塊的大小為1024B是最佳的,因為這會產生較少的內部碎片——也就是文件長度與存放塊的磁碟分區有較少的不匹配。另一方面,大的塊對於 大於幾千位元組的文件通常比較合合適,因為這樣的磁碟傳送較少,因而減輕了系統的開銷[1]。
2、當創建Ext2文件系統時,系統管理員可以根據在給定大小的分區上預計存放的文件數來選擇給該分區分配多少個索引節點。這可以有效地利用磁碟的空間。
3、文件系統把磁碟塊分為組。每組包含存放在相鄰磁軌上的數據塊和索引節點。正是這種結構,使得可以用較少的磁碟平均尋道時間對存放在一個單獨塊組中的文件並行訪問。
4、在磁碟數據塊被實際使用之前,文件系統就把這些塊預分配給普通文件。因此當文件的大小增加時,因為物理上相鄰的幾個塊已被保留,這就減少了文件的碎片。
5、支持快速符號鏈接。如果符號鏈接表示一個短路徑名(小於或等於60個字元),就把它存放在索引節點中而不用通過由一個數據塊進行轉換。
Ext2還包含了一些使它既健壯又靈活的特點:
1、文件更新策略的謹慎實現將系統崩潰的影響減到最少。我們只舉一個例子來體現這個優點:例如,當給文件創建一個硬鏈接時,首先增加磁碟索引節點中 的硬鏈接計數器,然後把這個新的名字加到合適的目錄中。在這種方式下,如果在更新索引節點後而改變這個目錄之前出現一個硬體故障,這樣即使索引節點的計數 器產生錯誤,但目錄是一致的。因此,盡管刪除文件時無法自動收迴文件的數據塊,但並不導致災難性的後果。如果這種處理的順序相反(更新索引節點前改變目 錄),同樣的硬體故障將會導致危險的不一致,刪除原始的硬鏈接就會從磁碟刪除它的數據塊,但新的目錄項將指向一個不存在的索引節點。如果那個索引節點號以 後又被另外的文件所使用,那麼向這個舊目錄的寫操作將毀壞這個新的文件。
2、在啟動時支持對文件系統的狀態進行自動的一致性檢查。這種檢查是由外部程序e2fsck完成的,這個外部程序不僅可以在系統崩潰之後被激活,也 可以在一個預定義的文件系統安裝數(每次安裝操作之後對計數器加1)之後被激活,或者在自從最近檢查以來所花的預定義時間之後被激活。
3、支持不可變(immutable)的文件(不能修改、刪除和更名)和僅追加(append-only)的文件(只能把數據追加在文件尾)。
4、既與Unix System V Release 4(SVR4)相兼容,也與新文件的用戶組ID的BSD語義相兼容。在SVR4中,新文件採用創建它的進程的用戶組ID;而在BSD中,新文件繼承包含它 的目錄的用戶組ID。Ext2包含一個安裝選項,由你指定採用哪種語義。
即使Ext2文件系統是如此成熟、穩定的程序,也還要考慮引入另外幾個負面特性。目前,一些負面特性已新的文件系統或外部補丁避免了。另外一些還僅僅處於計劃階段,但在一些情況下,已經在Ext2的索引節點中為這些特性引入新的欄位。最重要的一些特點如下:
塊片(block fragmentation)
系統管理員對磁碟的訪問通常選擇較大的塊,因為計算機應用程序常常處理大文件。因此,在大塊上存放小文件就會浪費很多磁碟空間。這個問題可以通過把幾個文件存放在同一塊的不同片上來解決。
這些新的選項(創建一個文件時必須指定)將允許用戶透明地在磁碟上存放壓縮和(或)加密的文件版本。
邏輯刪除
一個undelete選項將允許用戶在必要時很容易恢復以前已刪除的文件內容。
日誌
日誌避免文件系統在被突然卸載(例如,作為系統崩潰的後果)時對其自動進行的耗時檢查。
實際上,這些特點沒有一個正式地包含在Ext2文件系統中。有人可能說Ext2是這種成功的犧牲品;直到幾年前,它仍然是大多數Linux發布公司採用的首選文件系統,每天有成千上萬的用戶在使用它,這些用戶會對用其他文件系統來代替Ext2的任何企圖產生質疑。
Ext2中缺少的最突出的功能就是日誌,日誌是高可用伺服器必需的功能。為了平順過渡,日誌沒有引入到Ext2文件系統;但是,我們在後面 「Ext3文件系統」中會討論,完全與Ext2兼容的一種新文件系統已經創建,這種文件系統提供了日誌。不真正需要日誌的用戶可以繼續使用良好而老式的Ext2文件系統,而其他用戶可能採用這種新的文件系統。現在發行的大部分系統採用Ext3作為標準的文件系統。
Linux支持多種不同類型的文件系統:網路文件系統NFS,磁碟文件系統Extfs,特殊文件系統proc、tmpfs等。
Ext2fs文件系統基本概念
Inode
Ext2fs中,每個文件都用如下圖所示的inode結構來描述,用戶空間操作的對象是文件路徑和名稱,系統kernel把路徑名稱解析成inode,通過inode號來訪問它代表的文件。
Mode:包含兩個數據,文件類型(普通文件/目錄/字元設備/塊設備/符號鏈接/管道)和用戶訪問許可權信息(0660)。
Ownerinfo:文件屬組信息。
Size:文件長度,單位是byte。
Timestamps:文件訪問和修改的時間戳。
Linkscount:這個項在上圖中沒有體現,它記錄了這個inode存在多少個鏈接,創建新文件時,其inode的linkscount應該為1,文件被刪除後,這個inode的linkscount就變為0。
DataBlocks:指向真實的文件數據塊,因為大文件可能會分配很多的block,直接在inode中保存所有的數據塊指針將會比較困難,也會浪費掉很多空間,畢竟系統中大文件的數量是佔少數的,所以設計了間接塊指針(Indirectblocks)和二級塊指針(Doubleblocks)來指向真實數據塊。
實際上還應該包含了inode號。
目錄
在Ext2fs中,目錄被看做一種特殊文件,也用一個inode來描述,目錄的datablock中保存了目錄下的所有內容,每條內容叫做一個entry,結構如下:
每條entry都保存了inode號、entry的長度、文件名長度、文件類型,並且都是4位元組對齊。
特別地,每個目錄下有兩個特殊的子目錄,'.'和'..',分別代表當前目錄和上一級目錄,這兩個目錄文件其實是硬鏈接。其中'..'有一個重要的作用:FSchecker(可以把文件系統umount後手動執行e2fsck看看)在檢查文件系統的時候,就會使用』..『來檢查目錄是否可以追溯到掛載根目錄,如果檢查失敗,目錄便會被鏈接到掛載根目錄下面的lost+found。
鏈接
為了方便系統內文件共享,Linux支持了兩種基本的鏈接文件:硬鏈接和軟鏈接(也叫符號鏈接)。
硬鏈接並不是一個獨立的文件,不佔用inode,只是在目錄下創建了一條entry,其中inode號保存的是目標文件的inode號,訪問硬鏈接時,文件系統通過inode將訪問操作重定向到目標文件,實現了文件共享,所以硬鏈接就是多個文件名直接指向同一個inode,用stat命令也能看到其inode號就是目標文件的inode號,它的特點:
不能跨文件系統。
目標文件必須先存在(inode存在且linkcount不為0)。
只能對普通文件創建硬鏈接,目錄不行。
刪除一個硬鏈接文件並不影響其他有相同inode號的文件。
軟鏈接是一個獨立的文件,擁有自己的inode,其數據塊存放的是目標文件的名稱,訪問軟鏈接時,kernel先訪問軟鏈接的內容,拿到目標文件名,並重新啟動路徑解析,獲取到目標文件inode號再向文件系統發起訪問。軟鏈接的特點:
可以跨文件系統。
文件和目錄都可以。
可對不存在的文件或目標創建軟鏈接。
軟鏈接有自己文件屬性和許可權。
創建軟鏈接時,鏈接計數i_nlink不會增加;
刪除軟鏈接並不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱為死鏈接(即danglinglink,若被指向路徑文件被重新創建,死鏈接可恢復為正常的軟鏈接)。
軟鏈接的目標文件也可以是軟鏈接,其解析過程是遞歸的。
注意:軟鏈接創建時目標文件的路徑指向使用絕對路徑比較好,使用相對路徑創建的軟鏈接被移動後該軟鏈接文件將成為一個死鏈接,因為鏈接數據塊中記錄的也是相對路徑指向。
下面這個圖清晰描述了硬鏈接和軟連接之間的區別:
Ext2fs基本結構
在創建文件系統的時候,Ext2fs將設備(磁碟或者分區)劃分成1K、2K或者4K的block,然後通過Blockgroup來管理,Ext2fs/Ext3fs/Ext4fs的結構差不多(Ext2fs主要是少了日誌功能相關的內容),大致如下圖所示:
SuperBlock
SuperBlock是文件系統最重要的數據,它從設備開始位置偏移1024位元組的地方開始存儲,佔用1個block。如果block的大小是1KB,那麼SuperBlock就存放在block-1。如果block的大小是4KB,那Superblock就存放在block-0。
在Ext2fs的第一個版本(reverson0),每個BlockGroup都會存儲一份SuperBlock的一份副本,因為對空間浪費比較嚴重,後來的版本就只在部分BlockGroup(0、1、3、5、7、9這幾個group)中保留了SuperBlock的副本,在這幾個Group,和SuperBlock一起備份的還有GroupDescriptor。當然,如果沒有這么多Group,副本數量自然更少,在後面的demo中也可以看出來。其中Group-0中的SuperBlock叫作PrimarySuperBlock,文件系統被mount時,VFS讀取的也正是這份。
SuperBlock裡面的具體數據包括:
inode和block的總數,以及還有多少未分配。
每個BlockGroup有多少個inode和block。
文件系統唯一身份標識符(UUID),每個設備上的文件系統UUID都不一樣。
...
GDT
GroupDescriptorTable,GDT在文件系統中的layout緊跟Superblock後面,是文件系統第二關鍵的數據,它主要用於存放所有BlockGroup的信息:
Ext2fs為GDT預留了一部分空間,用於文件系統擴容。
通過冗餘提高了文件系統可靠性:在多個group中保存了關鍵數據的冗餘副本,包括superblock、GDT,當這些關鍵數據損壞的時候,很容易從這些冗餘副本中恢復。
提升性能:分成group後,inodetable和datablock之間的」距離「變近了,在執行I/O時,可能會減少磁頭定址的時間。
註:實際上inodesize,每個group中的block數等參數都可以在創建文件系統的時候指定,具體命令參數參考manpage。
Ext2fs的性能優化
為了提升I/O性能,Ext2fs內核代碼也做了很多設計,其中有兩個關鍵的技術:
提前讀:當必須讀取一個塊時,內核代碼在幾個連續的塊上請求I/O。通過這種方式,它試圖確保要讀取的下一個塊已經載入到緩沖區緩存中。提前讀通常在文件的連續讀取期間執行,Ext2fs將它們擴展到目錄讀取,可以是顯式讀取(readdir(2)調用),也可以是隱式讀取(namei內核目錄查找)。
預分配:在將數據寫入文件時,Ext2fs在分配新塊時預先分配最多8個相鄰塊。具體預分配多少個塊取決於blocksize:blocksize=1KB,每次預分配2個block;blocksize=2KB,每次預分配4個block;blocksize=4KB,每次預分配8個block。當然,對於用touch創建的空文件是不會預分配block的。即使在非常滿的文件系統上,預分配命中率也只有75%左右。這種預分配在負載較大的情況下可以獲得良好的寫性能,同時它還允許將連續的塊分配給文件,從而加快未來的順序讀取。
下面是Ext2fs、Ext3fs和Ext4fs的一個簡單對比:
只有Ext2fs的Filesystemstate是notclean,Ext3fs和Ext4fs都是clean,Ext2fs剛被以讀寫模式mount時,這個state被設置成notclean,umount或者以只讀模式mount時,state被設置成clean,啟動時文件系統根據這個狀態來決定是否要執行檢查。
Ext3fs/Ext4fs的Superblock中多了關於日誌功能的信息。
Ext4fs的每個group多了校驗和(checksum)數據。
⑤ linux磁碟分區的硬碟的分區
要掌握硬碟的分區,需要掌握MBR、擴展分區、邏輯分區的概念。
一個是放置該硬碟的信息區,稱之為主引導記錄(MBR,Main Boot Record),一個是實際文件數據放置的地方.其中,MBR是整個硬碟最重要的區域,一旦MBR物理實體損壞時,則該硬碟就差不多報廢了,一般來說,MBR有512個位元組,且可以分為兩個部分。
(1)第一部分有446個位元組,用於存放引導代碼,即bootloader。
(2)第二部分有64個位元組,用於存放磁碟分區表.其中,每個分區的信息需要用16個位元組來記錄。因此,一個硬碟最多可以有4個分區,這4個分區稱之為主分區和擴展分區(extended)。
註:通常所說的硬碟分區就是指修改磁碟分區表,它定義了第n個磁碟塊是從第x個柱面到第y個柱面.因此,當系統要讀取第n個磁碟塊時,就是去讀硬碟上第x個柱面到第y個柱面的信息。
由於擴展分區只能有一個,所以這4個分區可以是4個主分區或者3個主分區加1個擴展分區,如下所示:
P + P + P + P
P + P + P + E
重點說明的是,擴展分區不能直接使用,還需要將其劃分為邏輯分區才行,這樣就產生了一個問題,既然擴展分區不能直接使用,但為什麼還要劃分出一定的空間來給擴展分區呢?這是因為,如果用戶想要將硬碟劃分為5個分區的話,那該如何?此時,就需要擴展分區來幫忙了。
由於MBR僅能保存4個分區的數據信息,如果超過4個,系統允許在額外的硬碟空間存放另一份磁碟分區信息,這就是擴展分區.若將硬碟分成3P+E,則E實際上是告訴系統,磁碟分區表在另外的那份分區表,即擴展分區其實是指向正確的額外分區表.本身擴展分區不能直接使用,還需要額外將擴展分區分成邏輯分區才能使用,因此,用戶通過擴展分區就可以使用5個以上的分區了。
Attention!!!
(1)實際上,不建議用戶將硬碟分為4個主分區,這是因為,假如一個20GB的硬碟,若4個主分區占據了15GB的空間,則剩下的5GB空間完全不能使用,因為已經沒有多餘的分區表可以記錄這些空間了。
(2)考慮到磁碟的連續性,一般建議將擴展分區放在最後面的柱面內。
(3)理論上允許一個硬碟只有1個主分區,其它空間都分配給擴展分區。
⑥ linux文件系統類型
Linux系統核心支持十多種文件系統類型:jfs,ReiserFS,ext,ext2,ext3,iso9660,xfs,minx,msdos,umsdos,Vfat,NTFS,Hpfs,Nfs,smb,sysv,proc等.Linux最早引入的文件系統類型是MINIX。
MINIX文件系統由MINIX操作系統定義,有一定的局限性,如文件名最長14個字元,文件最長64M位元組。第一個專門為Linux設計的文件系統是EXT(ExtendedFileSystem),但目前流行最廣的是EXT4。
⑦ 在linux操作系統中,系統類型是extended 和 swap有什麼區別啊
一個硬碟上一般最多有4個主分區,擴展分區一般是主分區表上的最後一個分區,邏輯分區都是在擴展分區上建立的。
swap是一種文件系統類型,用於保存內存中放不下的數據,如果內存夠大一般是不會用到swap分區的,但是最好還是分一個swap分區,因為某一些軟體需要使用。
swap可以建立在主分區上,也可以建立在邏輯分區上。