5.1 根文件系統(tǒng)
專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)白朗免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。眾所周知,在一塊新的硬盤中安裝系統(tǒng)前必須要先分區(qū)并且格式化,然后才能裝系統(tǒng)。
對(duì)于windows來(lái)說(shuō),分區(qū)完成以后,每個(gè)分區(qū)都是一個(gè)獨(dú)立的文件系統(tǒng)。也就意味著C盤和D盤是毫無(wú)關(guān)系的。訪問時(shí)也是各自獨(dú)立的。
對(duì)于linux來(lái)說(shuō),所有的文件在linux主機(jī)上,若想使其能夠被訪問到,站在邏輯結(jié)構(gòu)視角上看,它必須從一個(gè)稱為根文件系統(tǒng)的位置開始,但是并不是說(shuō)所有文件必須從根開始就不需要分區(qū)了,并非如此。為了能夠?qū)崿F(xiàn)多個(gè)文件系統(tǒng)獨(dú)立管理必須要進(jìn)行分區(qū)。但是任何一個(gè)分區(qū)在分區(qū)完以后,不可以被獨(dú)立訪問,而是只能夠與現(xiàn)有的根一起被訪問。
當(dāng)內(nèi)核被啟動(dòng)加載完成以后,其不提供任何多余的可供用戶訪問的文件,同時(shí)其也不是可供用戶直接使用的有用的進(jìn)程。所以內(nèi)核必須要能夠啟動(dòng)很多外部命令,包括shell程序、各種GUI或者CLI接口等等。而這些命令通常一般都是放在某一分區(qū)之上。但是系統(tǒng)中有那么多分區(qū),內(nèi)核應(yīng)該識(shí)別哪一個(gè)呢?為了避免這種選擇上的困難,一般來(lái)說(shuō),無(wú)論分成多少個(gè)分區(qū),一定有一個(gè)作為系統(tǒng)盤的分區(qū)存在,而這個(gè)系統(tǒng)盤分區(qū)通常是內(nèi)核啟動(dòng)完以后第一個(gè)要加載的分區(qū)。
如上圖所示,假設(shè)A分區(qū)是系統(tǒng)盤分區(qū),內(nèi)核認(rèn)為A分區(qū)是其必須第一個(gè)要加載的分區(qū),于是當(dāng)內(nèi)核啟動(dòng)完以后,為了能夠幫助啟動(dòng)各種外圍的其他程序,內(nèi)核會(huì)自行在自己的工作空間中設(shè)置一個(gè)路徑,把它稱作根。然后把A(系統(tǒng)盤)分區(qū)上的所有內(nèi)容直接關(guān)聯(lián)到根上。這也就意味著,如果要通過根路徑來(lái)訪問的任何文件其實(shí)都是在A分區(qū)上的文件。
對(duì)于Linux來(lái)說(shuō),內(nèi)核所能識(shí)別的第一個(gè)且必須第一個(gè)加載的文件系統(tǒng)就稱作根文件系統(tǒng)(rootfs)。
一旦A分區(qū)被內(nèi)核認(rèn)為是第一個(gè)要加載的分區(qū),那么B分區(qū)、C分區(qū)、D分區(qū)如何被訪問到?在windows中,A分區(qū)、B分區(qū)、C分區(qū)、D分區(qū)都是獨(dú)立的,想訪問哪個(gè)分區(qū)就直接去訪問。而在linux中,除A(系統(tǒng)盤)分區(qū)以外的任何分區(qū)要想被訪問到,必須與現(xiàn)有的根文件系統(tǒng)建立關(guān)聯(lián)關(guān)系。
5.2 常見的文件系統(tǒng)
常見的文件系統(tǒng)有以下這些:
Linux文件系統(tǒng):ext2、ext3、ext4、xfs、btrfs、reiserfs、jfs、swap
swap:交換分區(qū)
iso9660:光盤文件系統(tǒng)
ext4:centos6主流的文件系統(tǒng)
btrfs:centos7自帶的文件系統(tǒng)
xfs:centos7上推薦使用的文件系統(tǒng)
Windows文件系統(tǒng):fat32、ntfs
Unix文件系統(tǒng):FFS、UFS、JFS2
網(wǎng)絡(luò)文件系統(tǒng):NFS、CIFS
集群文件系統(tǒng):GFS2、OCFS2
分布式文件系統(tǒng):ceph、moosefs、mogilefs、Glusterfs、Lustre
根據(jù)其是否支持“Journal”功能又分為以下2種文件系統(tǒng):
日志型文件系統(tǒng):ext3、ext4、xfs、...
日志型文件系統(tǒng)存儲(chǔ)時(shí)先在日志區(qū)寫元數(shù)據(jù),如果發(fā)生斷電,可以通過日志進(jìn)行恢復(fù)
非日志型文件系統(tǒng):ext2、vfat
非日志型文件系統(tǒng)存儲(chǔ)時(shí)直接在元數(shù)據(jù)區(qū)寫元數(shù)據(jù),一旦斷電,沒寫完的數(shù)據(jù)將損壞且無(wú)法恢復(fù)
文件系統(tǒng)的組成部分:
內(nèi)核中的模塊:ext4、xfs、vfat等;
用戶空間的管理工具:mkfs.ext4、mkfs.xfs、mkfs.vfat等
從上面的信息就可以看出來(lái),Linux支持眾多的文件系統(tǒng),而每一個(gè)文件系統(tǒng)的調(diào)用接口又是不一樣的,這對(duì)程序員來(lái)說(shuō)就頭疼了,如此多的文件系統(tǒng),若想針對(duì)某文件系統(tǒng)進(jìn)行編程,就必須了解眾多文件系統(tǒng)的調(diào)用接口,這樣一來(lái)就使得編程的難度大大增加。而事實(shí)上,程序員面對(duì)的并不是ext2等這類文件系統(tǒng) ,而是虛擬文件系統(tǒng)(VFS)。VFS把所有文件系統(tǒng)不同的各種調(diào)用機(jī)制統(tǒng)一在同一個(gè)調(diào)用接口上了。所以程序員不管系統(tǒng)被格式化成什么格式的,只要支持VFS,就可以直接調(diào)用VFS接口,由VFS去轉(zhuǎn)換成對(duì)特定類型的文件系統(tǒng)接口的調(diào)用。Linux眾多的文件系統(tǒng)中,只要遵循POSIX文件系統(tǒng)規(guī)范的一般都能夠被VFS所兼容。
/proc/filesystems:當(dāng)前內(nèi)核支持的文件系統(tǒng)類型有哪些
文件前面沒有nodev的表示是正在使用的文件系統(tǒng)
文件系統(tǒng)的配置文件/etc/fstab:
OS在初始時(shí),會(huì)自動(dòng)掛載此文件中定義的每個(gè)文件系統(tǒng)。這個(gè)文件的內(nèi)容格式為:
要掛載的設(shè)備 掛載點(diǎn) 文件系統(tǒng)類型 掛載選項(xiàng) 轉(zhuǎn)儲(chǔ)頻率 文件系統(tǒng)檢測(cè)次序(只有根可以為1)
要掛載的設(shè)備可以有以下幾類:
設(shè)備文件:/dev/sda5
卷標(biāo):LABEL=""
UUID:UUID=""
偽文件系統(tǒng)名稱:proc、sysfs、devtmpfs、configfs
掛載點(diǎn)的要求:
a) 此目錄沒有被其它進(jìn)程使用
b) 目錄必須事先存在
c) 目錄中原有的文件將會(huì)暫時(shí)隱藏,卸載后可見
轉(zhuǎn)儲(chǔ)頻率:每多少天做一次完全備份,0表示不備份,1表示每天備份,2表示每2天備份1次
注意:swap分區(qū)的掛載點(diǎn)和文件系統(tǒng)類型都是swap。如果要讓文件系統(tǒng)自動(dòng)掛載的同時(shí)啟用某功能,比如要啟用acl功能,只需要在掛載選項(xiàng)defaults后面加上,acl即可,如defaults,acl
5.3 ext文件系統(tǒng)的布局結(jié)構(gòu)
5.3.1 數(shù)據(jù)區(qū)布局結(jié)構(gòu)
任何一個(gè)文件系統(tǒng)都由數(shù)據(jù)和元數(shù)據(jù)組成,這里以ext系統(tǒng)文件系統(tǒng)為例。
如上圖,數(shù)據(jù)區(qū)(數(shù)據(jù)空間)會(huì)被劃分為一個(gè)個(gè)的塊組,而每個(gè)塊組當(dāng)中又包含了超級(jí)塊、塊組描述符(GDT)、塊位圖(block bitmap)、Inode位圖(inode bitmap)、Inode表(inode table)和數(shù)據(jù)塊(data blocks)。
每個(gè)塊組有多少個(gè)塊取決于塊的大小,為了方便定位塊組中的塊于是定義了一個(gè)超級(jí)塊
超級(jí)塊可以有多個(gè)備份,其內(nèi)容如下:
當(dāng)前文件系統(tǒng)類型;
當(dāng)前文件系統(tǒng)包含多少個(gè)inode;
當(dāng)前文件系統(tǒng)共有多少個(gè)塊;
當(dāng)前文件系統(tǒng)每個(gè)塊的大??;
空閑磁盤塊、引用磁盤塊、空閑inode、引用inode
使用tune2fs -l /dev/sda1命令可以看/dev/sda1的超級(jí)塊信息。
塊組描述符表(GDT)可以有多個(gè)備份,其內(nèi)容如下:
當(dāng)前系統(tǒng)一共有多少個(gè)塊組
每個(gè)塊組從第幾個(gè)塊開始到第幾個(gè)塊結(jié)束
使用dumpe2fs /dev/sda1命令不僅可以看到/dev/sda1文件系統(tǒng)的超級(jí)塊信息,還可以看到塊組描述符的信息。
5.3.2 元數(shù)據(jù)區(qū)
元數(shù)據(jù)區(qū)包含以下內(nèi)容:
Inode表(存儲(chǔ)inode)
Inode bitmap(索引位圖)
Block bitmap(塊位圖)
能夠存儲(chǔ)單個(gè)文件所有屬性信息并以特定格式組織的存儲(chǔ)空間就稱為Inode。
Inode就是索引節(jié)點(diǎn)(Index node)。Inode包含以下內(nèi)容:
文件/目錄的大小;
時(shí)間戳;
權(quán)限;
屬主、屬組;
地址指針:文件使用了哪些塊存儲(chǔ)數(shù)據(jù),用指針指向?qū)?yīng)的數(shù)據(jù)塊的編號(hào)
直接指針(直接指向數(shù)據(jù)塊)
間接指針(指向另一個(gè)位置,另外一片連續(xù)的區(qū)域,象擴(kuò)展分區(qū)一樣)
三級(jí)指針
訪問任何一個(gè)文件都要先找到其對(duì)應(yīng)的inode,通過inode知道該文件的數(shù)據(jù)存儲(chǔ)在哪些塊中,然后找到對(duì)應(yīng)的塊。
硬盤中的大多數(shù)塊必須有其編號(hào),并能夠被inode引用,才可以正常使用。
為了實(shí)現(xiàn)inode的快速存儲(chǔ),元數(shù)據(jù)區(qū)在格式化完成以后就已經(jīng)把inode整個(gè)區(qū)間分好了,每個(gè)inode塊的大小是固定的,只不過這些inode是空閑的,沒被使用的。
假設(shè)一個(gè)文件系統(tǒng)有100萬(wàn)個(gè)inode,那么如何區(qū)分inode是否空閑呢?
我們假設(shè)每一個(gè)inode的前面有一個(gè)標(biāo)志位,1表示已經(jīng)使用,0表示空閑。當(dāng)要使用時(shí)就必須全局掃描,找到第一個(gè)空閑的inode,然后把要存儲(chǔ)inode信息填充其中。
再假設(shè)數(shù)據(jù)區(qū)的每一個(gè)block塊的前面也有一個(gè)標(biāo)志位,1表示已經(jīng)使用,0表示空閑。當(dāng)要使用時(shí)也必須全局掃描,找到第一個(gè)空閑的block塊,然后把數(shù)據(jù)填充其中并建立與對(duì)應(yīng)inode的映射關(guān)系。
假設(shè)一個(gè)文件很大,可能需要多個(gè)block塊存儲(chǔ)其數(shù)據(jù),就必須為其分配多個(gè)連續(xù)的空閑塊來(lái)存儲(chǔ),并將已使用的block的標(biāo)志位設(shè)為1;
假設(shè)一個(gè)文件很小,可能1個(gè)block塊就可以存儲(chǔ)其數(shù)據(jù),就把其余多余的block標(biāo)志位設(shè)為0
5.3.4 位圖索引
想一個(gè)問題,如果硬盤有100G,為了找一個(gè)空閑塊就要全盤掃描一遍,這樣的方式太低效了,為了解決這個(gè)問題于是就有了二級(jí)索引。
由于inode的量很大,從中找一個(gè)空閑的inode會(huì)很慢,這時(shí)候可以找一個(gè)連續(xù)的存儲(chǔ)空間,對(duì)inode做一個(gè)對(duì)位標(biāo)識(shí)索引,第0位對(duì)應(yīng)編號(hào)為0的inode編號(hào),第1位對(duì)應(yīng)編號(hào)為1的inode編號(hào),以此類推。有N個(gè)二進(jìn)制位,如果這個(gè)位為1表示這個(gè)對(duì)應(yīng)的inode已被使用,這個(gè)位為0表示其對(duì)應(yīng)的Inode空閑。當(dāng)要?jiǎng)?chuàng)建inode時(shí),就不用再全盤掃描了,只需要掃描這個(gè)二級(jí)索引(對(duì)位標(biāo)識(shí)索引),如此一來(lái),效率就大大提高了。而這個(gè)二級(jí)索引就是inode位圖索引(inode bitmap)。數(shù)據(jù)區(qū)以同樣的原理就有了塊位圖(block bitmap)
inode bitmap:對(duì)位標(biāo)識(shí)每個(gè)inode空閑與否的狀態(tài)信息
如果整盤進(jìn)行管理,假設(shè)整盤有100萬(wàn)個(gè)塊,100萬(wàn)個(gè)塊掃描一遍也挺耗時(shí)間的。所以無(wú)論是inode位圖還是block位圖,都不是全文件系統(tǒng)管理的,而是塊組管理的。
5.3.5 文件訪問過程
a) 查索引節(jié)點(diǎn)(Inode)
b) 在索引節(jié)點(diǎn)中找到磁盤塊的編號(hào)
c) 在數(shù)據(jù)區(qū)找到對(duì)應(yīng)的磁盤塊
5.3.6 目錄
文件訪問時(shí)要先查inode,但是inode表中包含很多的inode,如何確定文件對(duì)應(yīng)的Inode是哪個(gè)呢?這就是目錄的作用。
目錄也是一個(gè)文件,存在數(shù)據(jù)區(qū)的一個(gè)塊中,目錄實(shí)質(zhì)上就是一個(gè)路徑映射。
目錄中存儲(chǔ)著以下內(nèi)容:
a) 一級(jí)目錄下所有的文件名列表
b) 一級(jí)目錄下所有文件對(duì)應(yīng)的inode編號(hào)
5.3.7 文件創(chuàng)建
a) 在元數(shù)據(jù)區(qū)找一個(gè)空閑的inode塊存儲(chǔ)inode信息
b) 在數(shù)據(jù)區(qū)找一個(gè)或一些空閑的block塊,并將其與inode建立映射關(guān)系
c) 把數(shù)據(jù)填充至這些block塊中
d) 把標(biāo)志位設(shè)為1(正在使用中的狀態(tài))
5.3.8 硬鏈接
多個(gè)文件指向同一個(gè)inode,稱之為硬鏈接。這些文件名稱可相同也可不同,不能鏈接不同文件系統(tǒng)的文件。
硬鏈接特點(diǎn):
a) 只能對(duì)文件創(chuàng)建,不能應(yīng)用于目錄;
b) 不能跨文件系統(tǒng);
c) 創(chuàng)建硬鏈接會(huì)增加文件被鏈接的次數(shù)
5.3.9 軟鏈接
軟鏈接又叫符號(hào)鏈接,這個(gè)文件包含了另一個(gè)文件的路徑名??梢允侨我馕募蚰夸?,可以鏈接不同文件系統(tǒng)的文件。
軟鏈接特點(diǎn):
a) 可應(yīng)用于目錄;
b) 可以跨文件系統(tǒng);
c) 不會(huì)增加被鏈接文件的鏈接次數(shù);
d) 其大小為指定的路徑所包含的字符個(gè)數(shù)
創(chuàng)建軟鏈接:
ln [-s -v] SRC DEST
5.4 btrfs文件系統(tǒng)
5.4.1 btrfs文件系統(tǒng)介紹
btrfs文件系統(tǒng)自centos7后開始支持。
Btrfs(B-tree,Butter FS,Better FS),遵循GPL規(guī)范,由Oracle自2007年開始研發(fā)。
Btrfs文件系統(tǒng)的核心特性:
a) 支持寫時(shí)復(fù)制機(jī)制(CoW):復(fù)制、更新及替換指針,而非傳統(tǒng)的“就地”更新
假設(shè)要修改一個(gè)文件,寫時(shí)復(fù)制機(jī)制就是先把這個(gè)文件復(fù)制一個(gè)副本出來(lái),然后對(duì)這個(gè)副本進(jìn)行修改,修改完以后將文件名的指針由指向原文件改為指向這個(gè)副本。
如此一來(lái),原文件還在內(nèi)存中,若副本修改有誤還可以通過恢復(fù)指針指向的方法還原成原文件
b) 多物理卷支持
btrfs可由多個(gè)底層物理卷組成,支持RAID,以聯(lián)機(jī)“添加”、“移除”、“修改”
c) 支持?jǐn)?shù)據(jù)及元數(shù)據(jù)校驗(yàn)碼機(jī)制(CheckSum)
存儲(chǔ)文件時(shí),會(huì)將元數(shù)據(jù)的校驗(yàn)碼和數(shù)據(jù)的校驗(yàn)碼通過文件某些屬性擴(kuò)展給保存下來(lái)。因此文件讀取時(shí)可以很方便、快速的去檢測(cè)文件是否受損,一旦受損還會(huì)自動(dòng)嘗試進(jìn)行修復(fù)
d) 支持子卷(sub_volume,相當(dāng)于ext系列文件系統(tǒng)的lvm/lvm2)
可以將多個(gè)底層的物理設(shè)備(硬盤)組織成btrfs文件系統(tǒng),這個(gè)btrfs文件系統(tǒng)可以直接掛載使用,也可以在內(nèi)部創(chuàng)建子卷(就像在VG中創(chuàng)建LV一樣)
e) 支持快照(快照是子卷的一個(gè)非完全副本,基于CoW機(jī)制實(shí)現(xiàn)的另外一個(gè)存儲(chǔ)空間剛開始為0的一個(gè)卷)
btrfs文件系統(tǒng)直接支持快照,而ext3/ext4要想支持快照必須使用lvm2來(lái)實(shí)現(xiàn)
可以針對(duì)單個(gè)文件做快照,也可以針對(duì)卷做快照
還支持對(duì)做好的快照再做一次快照,做累積性快照。類似于實(shí)現(xiàn)增量備份
f) 支持透明壓縮機(jī)制
當(dāng)要存儲(chǔ)一個(gè)很大的文件,但又想節(jié)約空間的時(shí)候,可以把任何數(shù)據(jù)流發(fā)往btrfs文件系統(tǒng)時(shí),自動(dòng)能夠通過占據(jù)CPU時(shí)鐘周期完成數(shù)據(jù)壓縮以后存放,對(duì)用戶來(lái)說(shuō)這個(gè)過程是透明的。在讀取這些壓縮后存放的文件時(shí),能夠自動(dòng)解壓縮。
有一個(gè)缺陷:壓縮和解壓縮會(huì)占據(jù)更多的時(shí)鐘周期
Btrfs主要設(shè)計(jì)目標(biāo)是取代Linux早期一直使用的ext3、ext4,但事實(shí)上在ext3、ext4的缺陷暴露之后,在centos6上就提供了另外一種可用的文件系統(tǒng)(xfs)。
5.4.2 btrfs文件系統(tǒng)的實(shí)現(xiàn)
mkfs.btrfs:創(chuàng)建btrfs文件系統(tǒng)
-L|--label <name>:指定卷標(biāo)
-m|--metadata <profile>:指明元數(shù)據(jù)如何存放
Valid values are raid0,raid1,raid5,raid6,raid10,single or dup
-d|--data <type>:指明數(shù)據(jù)如何存放
Valid values are raid0,raid1,raid5,raid6,raid10 or single
-O|--features <feature1>[,<feature2>...]:在格式化時(shí)直接開啟指定的功能
A list of filesystem features turned on at mkfs time.Not all features are supported by old kernels.
To see all features run
mkfs.btrfs -O list-all
常用的btrfs文件系統(tǒng)的命令:
btrfs:管理btrfs文件系統(tǒng)
btrfs filesystem show [--mounted|--all-devices|<uuid>] #顯示btrfs文件系統(tǒng)信息 btrfs filesystem sync <path> #強(qiáng)制把指定btrfs文件系統(tǒng)緩存在內(nèi)存中的數(shù)據(jù)同步到硬盤中 btrfs filesystem df <path> [<path>...] #查看已掛載的btrfs文件系統(tǒng)空間使用率 btrfs filesystem defragment [options] <file>|<dir> [<file>|<dir>...] #消除磁盤碎片 btrfs filesystem resize [devid:][+/-]<size>[gkm]|[devid:]max <path> #修改文件系統(tǒng)大小 btrfs filesystem label [<device>|<mount_point>] [<newlabel>] #顯示或更新btrfs文件系統(tǒng)卷標(biāo)
掛載btrfs文件系統(tǒng):
mount -t btrfs /dev/sdb MOUNT_POINT #/dev/sdb這個(gè)位置只要是btrfs文件系統(tǒng)的底層物理卷之一,隨便寫哪個(gè)物理卷名均可
透明壓縮機(jī)制:
mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
btrfs-convert:實(shí)現(xiàn)無(wú)損地將ext系列的文件系統(tǒng)動(dòng)態(tài)轉(zhuǎn)換成btrfs文件系統(tǒng)或?qū)trfs文件系統(tǒng)降級(jí)為ext系列的文件系統(tǒng)
btrfsck:實(shí)現(xiàn)文件系統(tǒng)的檢測(cè)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
本文題目:第五章文件系統(tǒng)-創(chuàng)新互聯(lián)
本文地址:http://jinyejixie.com/article38/dijipp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、定制開發(fā)、網(wǎng)站內(nèi)鏈、手機(jī)網(wǎng)站建設(shè)、微信小程序、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容