㈠ linux系統存儲同一份文件的多個數據塊(block)是如何聯繫到一起的,和數據塊號的使用時如何聯系起來的
在linux文件系統中,一般是採用索引式文件系統,這種類型的文件系統在硬碟格式化的時候,會將硬碟上的數據塊分為兩種類型的塊,第一種是保存文件信息的inode塊,第二種就是實際存儲數據的data塊。data塊就是你所說的存放數據的地方,然後都有對應的編號,這些編號都是按照順序以表格的形式存放在inode塊中,。
因此,當你要讀取一個文件的內容時,它會先查找inode塊里信息,判斷你是否有許可權讀取這個文件,許可權判斷通過後,再去查找data塊編號變,然後根據編號表裡的編號依次查找所有的data塊,按順序拼接起來,就是一個完整文件的內容了。
㈡ 塊存儲、文件存儲、對象存儲這三者的本質差別是什麼
一、概念及區別
針對不同的應用場景,選擇的分布式存儲方案也會不同,因此有了對象存儲、塊存儲、文件系統存儲。這三者的主要區別在於它們的存儲介面:
1. 對象存儲:
也就是通常意義的鍵值存儲,其介面就是簡單的GET,PUT,DEL和其他擴展,
2. 塊存儲:
這種介面通常以QEMU Driver或者Kernel Mole的方式存在,這種介面需要實現Linux的BlockDevice的介面或者QEMU提供的BlockDriver介面,如Sheepdog,AWS的EBS,青雲的雲硬碟和阿里雲的盤古系統,還有Ceph的RBD(RBD是Ceph面向塊存儲的介面)
3. 文件存儲:
通常意義是支持POSIX介面,它跟傳統的文件系統如Ext4是一個類型的,但區別在於分布式存儲提供了並行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存儲的介面),但是有時候又會把GFS,HDFS這種非POSIX介面的類文件存儲介面歸入此類。
二、IO特點
按照這三種介面和其應用場景,很容易了解這三種類型的IO特點,括弧里代表了它在非分布式情況下的對應:1. 對象存儲(鍵值資料庫):
介面簡單,一個對象我們可以看成一個文件,只能全寫全讀,通常以大文件為主,要求足夠的IO帶寬。
2. 塊存儲(硬碟):
它的IO特點與傳統的硬碟是一致的,一個硬碟應該是能面向通用需求的,即能應付大文件讀寫,也能處理好小文件讀寫。但是硬碟的特點是容量大,熱點明顯。因此塊存儲主要可以應付熱點問題。另外,塊存儲要求的延遲是最低的。
3. 文件存儲(文件系統):
支持文件存儲的介面的系統設計跟傳統本地文件系統如Ext4這種的特點和難點是一致的,它比塊存儲具有更豐富的介面,需要考慮目錄、文件屬性等支持,實現一個支持並行化的文件存儲應該是最困難的。但像HDFS、GFS這種自己定義標準的系統,可以通過根據實現來定義介面,會容易一點。
因此,這三種介面分別以非分布式情況下的鍵值資料庫、硬碟和文件系統的IO特點來對應即可。至於冷熱、快慢、大小文件而言更接近於業務。但是因為存儲系統是通用化實現,通常來說,需要盡量滿足各種需求,而介面定義已經一定意義上就砍去了一些需求,如對象存儲會以冷存儲更多,大文件為主。
㈢ 雲裡面的通用的塊存儲的系統架構有哪些
雲存儲分三大種類
具體而言,數據塊級雲存儲、文件級雲存儲、對象級雲存儲。
數據塊級雲存儲是指提供高速的直接的數據塊存儲訪問服務。前端的計算節點通過光纖網路訪問協議訪問存儲,獲得高速、穩定、有保障的數據訪問。這種模型源於在關鍵業務系統中久經驗證的存儲區域網SAN模型。
㈣ 同一個文件在硬碟空間上是連續存放的嗎
01 在實際應用中,同一個文件在硬碟空間上,不一定都連續存放在一起。我們在使用計算機的過程中常常要增加、刪除、修改存在硬碟上的文件。有時會使硬碟中的數據塊排列出現空隙,新儲存的文件就會被分開存放在空隙中。
當你打開計算機看電子文檔或者聽音樂的時候,有沒有想過,這些文件在硬碟里是怎麼存放的?
內存條安裝在計算機主板上的內存插槽里
計算機里儲存的普通文件,都是由一組數據塊組成的,這些數據塊的大小都是統一的。在最理想的情況下,計算機將這些文件的數據塊放進硬碟時,每一個文件的數據塊都是一塊接著一塊連續存放的。我們可以將這種文件稱為連續文件。在這種理想狀況下,計算機如果想要在硬碟上找到一個文件的內容,只需要找到該文件的第一個數據塊,然後按照順序往下找到第二個、第三個,直到這個文件的結尾數據塊即可。
然而在實際應用中,同一個文件在硬碟空間上,不一定都連續存放在一起。我們在使用計算機的過程中常常要增加、刪除、修改存在硬碟上的文件。慢慢的,原來存放著文件的硬碟空間就出現了許多空隙,而每個空隙的大小可能相當於幾個數據塊的大小。如果這時候創建了一個比較大的文件,大到硬碟里沒有足夠的連續空間去容納這個文件,那麼這個大文件只能拆成幾部分來填充這些空隙。久而久之,硬碟空間中的文件就可能是由很多零碎的文件段組成的。這種分布得很零碎的文件又被稱為碎片文件。計算機如果想要找到這種碎片文件的內容,所花費的時間可要比找連續的文件多得多了。
頻繁地刪除、修改文件或者硬碟剩餘容量過小,都可能產生碎片文件。雖然少量碎片文件對計算機影響不大,但如果碎片文件過多,還是會使硬碟在讀文件的時候消耗不少時間,導致計算機運行速度變慢。因此將碎片文件恢復成連續的文件還是很有必要的,有些操作系統就提供磁碟碎片整理程序幫助用戶整理碎片文件。磁碟碎片整理就是將可移動的每個文件或文件夾合並集中移動到磁碟上的某個位置,便於每個文件或文件夾占據磁碟驅動器上鄰近的單獨空間,同時通過釋放與合並得到一些可用空間。
㈤ 什麼是數據塊啊
數據塊是一組或按順序連續排列在一起的幾組記錄,是主存儲器與輸入、輸出設備或外存儲器之間進行傳輸的一個數據單位。是數據的物理記錄,與數據的邏輯記錄(邏輯上有聯系,在存儲器上佔有一組鄰接單元的數據單位)之間的對應關系有3種方式:①一個塊即為一個記錄;②一個塊包含若干個邏輯記錄;③一個邏輯記錄佔有幾個塊。數據塊的大小可以是固定的或是可變的,塊與塊之間有間隙。設計數據塊大小,受到多方面因素的影響,包括輸入、輸出效率,存儲空間代價以及計算機應用特點等。
在 text 、ntext 和 image 數據中,數據塊是應用程序和 SQL Server 2000 實例之間一次傳輸的數據單元。該術語還適用於這些數據類型的存儲單元。在磁帶備份文件中,數據塊是物理 I/O 的單元。
㈥ 塊儲存,對象存儲,文件存儲的區別和聯系
通常來講,磁碟陣列都是基於Block塊的存儲,而所有的NAS產品都是文件級存儲。
1. 塊存儲:DAS SAN
a) DAS(Direct Attach Storage): 是直接連接於主機伺服器的一種存儲方式,每台伺服器有獨立的存儲設備,每台主機伺服器的存儲設備無法互通,需要跨主機存取資料室,必須經過相對復雜的設定,若主機分屬不同的操作系統,則更復雜。
應用:單一網路環境下且數據交換量不大,性能要求不高的環境,技術實現較早。
b) SAN(Storage Area Network): 是一種高速(光纖)網路聯接專業主機伺服器的一種存儲方式,此系統會位於主機群的後端,它使用高速I/O聯接方式,如:SCSI,ESCON及Fibre-Channels.特點是,代價高、性能好。但是由於SAN系統的價格較高,且可擴展性較差,已不能滿足成千上萬個CPU規模的系統。
應用:對網速要求高、對數據可靠性和安全性要求高、對數據共享的性能要求高的應用環境中。
2. 文件存儲
通常NAS產品都是文件級存儲。
NAS(Network Attached Storage):是一套網路存儲設備,通常直接連在網路上並提供資料存取服務,一套NAS儲存設備就如同一個提供數據文件服務的系統,特點是性價比高。
它採用NFS或CIFS命令集訪問數據,以文件為傳輸協議,可擴展性好、價格便宜、用戶易管理。目前在集群計算中應用較多的NFS文件系統,但由於NAS的協議開銷高、帶寬低、延遲大,不利於在高性能集群中應用。
3. 對象存儲:
總體上講,對象存儲同時兼具SAN高級直接訪問磁碟特點及NAS的分布式共享特點。
核心是將數據通路(數據讀或寫)和控制通路(元數據)分離,並且基於對象存儲設備(OSD),構建存儲系統,每個對象存儲設備具備一定的職能,能夠自動管理其上的數據分布。
對象儲存結構組成部分(對象、對象存儲設備、元數據伺服器、對象存儲系統的客戶端)
3.1 對象
一個對象實際就是文件的數據和一組屬性信息的組合。
3.2 對象存儲設備(OSD)
OSD具有一定的智能,它有自己的CPU、內存、網路和磁碟系統。
OSD提供三個主要功能:包括數據存儲和安全訪問
(1)數據存儲 (2)智能分布 (3)每個對象元數據的管理
3.3 元數據伺服器(Metadata Server , MDS)
MDS控制Client與OSD對象的交互,主要提供以下幾個功能:
(1) 對象存儲訪問
允許Client直接訪問對象,OSD接收到請求時先驗證該能力,再訪問。
(2) 文件和目錄訪問管理
MDS在存儲系統上構建一個文件結構,限額控制、包括目錄、文件的創建、訪問控制等
(3) Client Cache 一致性
為提高性能,在對象存儲系統設計時通常支持Client的Cache。因此帶來了Cache一致性的問題,當Cache文件發生改變時,將通知Client刷新Cache,以防Cache不一致引發的問題。
對象存儲:
一個文件包含了屬性(術語叫matadata元數據,例如該文件的大小、修改時間、存儲路徑等)以及內容(簡稱數據)。
以往的文件系統,存儲過程將文件按文件系統的最小塊來打散,再寫進硬碟,過程中沒有區分元數據(metadata)和數據。而在每個塊最後才會告知下一個塊的地址,因此只能一個一個讀,速度慢。
而對象存儲則將元數據獨立出來,控制節點叫元數據伺服器(伺服器+對象存儲管理軟體),裡面主要存儲對象的屬性(主要是對象的數據被打散存放到了那幾台分布式伺服器中的信息),而其他負責存儲數據的分布式伺服器叫做OSD,主要負責存儲文件的數據部分。當用戶訪問對象時,會先訪問元數據伺服器,元數據伺服器只負責反饋對象存儲在那些OSD。假設反饋文件A存儲在B,C,D三台OSD,那麼用戶就會再次訪問三台OSD伺服器去讀取數據。
這時三台OSD同時對外傳輸數據,因此傳輸的速度就加快了。OSD伺服器數量越多,這種讀寫速度的提升就越大。
另一方面,對象存儲軟體有專門的文件系統,所以OSD對外又相當於文件伺服器,那麼就不存在文件共享方面的困難了,也解決了文件共享方面的問題。
因此對象存儲的出現,很好的結合了塊存儲與文件存儲的優點。
為什麼還要使用塊存儲和文件存儲:
1.有一類應用是需要存儲直接裸盤映射的,比如資料庫。因為資料庫需要存儲裸盤映射給自己後,再根據自己的資料庫文件系統來對了裸盤進行格式化,因此不能採用其他已經被格式化為某種文件系統的存儲。此類更適合塊存儲。
2.對象存儲的成本比普通的文件存儲還是較高,需要購買專門的對象存儲軟體以及大容量硬碟。如果對數據量要求不是海量,只是為了作文件共享的時候,直接用文件存儲的形式就好了,性價比高。
㈦ 對象存儲、塊存儲、文件存儲分別是什麼有什麼區別
你可以把塊理解成整個硬碟,文件理解成硬碟中的文件,對象理解成很多台伺服器中的很多塊硬碟。
㈧ 數據塊及FCB存儲問題
1:採用連續分配好,連續分配存取速度快,適用於修改較少的文件。2:採用集中存儲好。當搜索fcb時,只要找到fcb存儲的塊後,就可以定位,讀盤次數較少
㈨ oracle資料庫中表、段、區、塊是什麼意思
oracle的邏輯結構包括表空間(tablespace),段(segment),區(extent),數據塊(data block)
oracle資料庫在邏輯上是由多個表間組成的,表空間中存儲的對象叫段,比如數據段,索引段,和回退段。段由區組成,區是磁碟分配的最小單位。段的增大是通過增加區的個數來實現的。每個區的大小是數據塊大小的整數倍,區的大小可以不相同;數據塊是資料庫中最小的I/O單位,同時也是內存數據緩沖區的單位,及數據文件存儲空間單位。塊的大小由參數DB_BLOCK_SIZE設置,其值應設置為操作系統塊大小的整數倍。
表空間
表空間是Oracle資料庫最大的邏輯結構,一個Oracle資料庫在邏輯上由多個表空間組成,一個表空間只隸屬於一個資料庫。Oracle中有一個稱為SYSTEM的表空間,這個表空間是在創建或安裝資料庫時自動創建的。主要用於存儲系統的數據字典,過程,函數,觸發器等;也可以存儲用戶的表,索引等。一個表空間可以有多數據文件,但是一個數據文件只能屬於一個表空間。
一個表空間就是一片磁碟區域,他由一個或者多個磁碟文件組成,一個表空間可以容納許多表、索引或者簇等。每個表空間有一個預制的磁碟區域稱為初始區間(initial extent)用完這個區間後再用下一個,直到用完表空間,這時候需要對表空間進行擴展,增加數據文件或者擴大已經存在的數據文件
段
Oracle中的段可以分成4種類型:數據段、索引段、回滾段、臨時段。
數據段用來存儲用戶的數據,每個表都有一個對應的回滾段,其名稱和數據表的名字相同。索引段用來存儲系統、用戶的索引信息。回滾段用來存儲用戶數據修改前的值,回退段與事務是一對多的關系,一個事務只能使用一個回退段,而一個回退段可存放一個或多個事務的回退數據。臨時段用於order by語句的排序以及一些匯總。
區
區是磁碟空間分配的最小單位。磁碟按區劃分,每次至少分配一個區。區存儲於段中,它由連續的數據塊組成。區的分配過程中,每次至分配5個區。如果所剩的空閑空間不夠5個區,就會出現錯誤:ORA-0。可以通過字典dba_tablespaces查詢表空間中區的信息。可以通過字典user_tables查詢段中區的信息。可以通過字典user_extents查詢區的分配狀況。我們可以通過以下SQL語句分別查詢表空間、段、區中區的分配信息
SQL>select * from dba_tablespaces;
SQL>select table_name, tablespace_name, min_extents, max_extents from user_tables;
SQL>select * from user_extents;
數據塊
數據塊是數據中中最小的數據組織單位與管理單位,是數據文件磁碟存儲空間單位,也是資料庫I/O 的最小單位,數據塊大小由DB_BLOCK_SIZE參數決定,不同的oracle版本DB_BLOCK_SIZE的默認值是不同的。
㈩ 如果進程需要讀取磁碟上的多個連續的數據塊,________數據傳送方式的效率最高。
是D。
最慢:程序直接訪問方式即循環檢測IO方式,是最古老的方式。CPU和IO串列,每讀一個位元組(或字),CPU都需要不斷檢測狀態寄存器的busy標志,當busy=1時,表示IO還沒完成;當busy=0時,表示IO完成。此時讀取一個字的過程才結束,接著讀取下一個字。
次慢:中斷控制方式:循環檢測先進些,IO設備和CPU可以並行工作,只有在開始IO和結束IO時,才需要CPU。但每次只能讀取一個字。
較快:DMA方式:Direct Memory Access,直接存儲器訪問,比中斷先進的地方是每次可以讀取一個塊,而不是一個字。
最快:通道方式:比DMA先進的地方是,每次可以處理多個塊,而不只是一個塊。