怎樣獲得做網站的客戶信息發(fā)布平臺推廣有哪些
在介紹海量文件存儲之前,需要先介紹一下常見的系統(tǒng)里面文件是如何存儲的
文件inode
在linux下,每個文件或者目錄,都會分配一個inode(index node),它不存儲具體的文件內容,而是記錄該文件的基礎信息。每個inode大小一半是100-200kb(畫重點,下面會用)。inode下會記錄:
- 文件大小、類型;
- 權限信息,比如所屬組,用戶,訪問控制;
- 文件的操作時間;
- 具體數據在磁盤的位置;
文件系統(tǒng)初始化的時候,磁盤空間一般都會分倆部分。一部分就是存儲inode,一部分是真正的存儲文件內容。需要注意的系統(tǒng)的inode數量是有上限的,即系統(tǒng)最多可以存儲多少個文件。有可能磁盤空間還有很多,但inode已經被用完;那此時系統(tǒng)無法再分配新的inode,你也依舊無法再存儲新的文件。查看文件占用多少inode,和系統(tǒng)還有多少inode可以用如下倆個命令:
#某一文件inode占用
[root@why /]# stat my_file
File: my_file
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: xx Inode: 17 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-03-26 11:30:27
Modify: 2024-03-26 11:30:27
Change: 2024-03-26 11:30:27#系統(tǒng)inode使用個數情況,注意是個數。
[root@why /]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
tmpfs 203330 100 203230 1% /dev/shm
tmpfs 203330 100 203230 1% /run
tmpfs 203330 200 203130 1% /sys/fs/cgroup#當使用率100%,那系統(tǒng)則無法再新曾文件。
#
海量文件存儲
海量文件的元數據管理
海量文件存儲就是數億數十億上百億的文件存儲,在如今互聯(lián)網上,海量文件基本是個常態(tài)。圖片、視頻、商品等,很容易達到這個量級。在這個量級下,當前單機系統(tǒng)存儲,是肯定存不下的。比如一個100億的文件,先不考慮inode數量,光inode的存儲大概就得1個TB,再加上具體的文件內容,很容易就超出單機系統(tǒng)了。這是海量文件要解的第一個問題,就是海量文件的元數據管理。
海量文件下如何高速支撐文件讀取
假如存儲支撐了這么多的元數據,比如單獨搞到機器存儲元數據,1TB其實壓力還是可以的;或者多找?guī)着_機器分布式存儲機器。此時會引入第二個問題,海量的文件下如何快速訪問文件。對于一次文件讀取是要先加載inode,找到真實文件存儲位置再去讀具體文件。一般系統(tǒng)為了加速文件訪問,會把inode緩存在系統(tǒng)里(vfscache:https://www.science.unitn.it/~fiorella/guidelinux/tlk/node110.html)。如果這么大量的inode,很難緩存住的,海量文件下如何高速支撐文件讀取。
ceph存儲系統(tǒng)
對于海量文件業(yè)務場景,當前行業(yè)一般都會采用對象存儲組件。比如騰訊云的cos,其他云廠商的對象存儲,還有開源的ceph。
對于ceph來說,常見的塊存儲,文件存儲和對象存儲三種業(yè)務場景,都可以很好的支持。
整體架構
直接搬運自官方
- 客戶端:ceph自己的客戶端。
- 監(jiān)視器:Ceph監(jiān)視器(Ceph-mon)維護集群狀態(tài)的映射,包括監(jiān)視器自身,下邊提到的管理器、OSD、MDS和CRUSH。為了容災設計,通常至少需要三個監(jiān)視器。
- 管理器:Ceph Manager守護進程(Ceph-mgr)負責跟蹤運行時指標和Ceph集群的當前狀態(tài),包括存儲利用率、當前性能指標和系統(tǒng)負載。
- Ceph OSD:對象存儲守護程序(Ceph OSD,cosd)存儲數據,處理數據復制、恢復、再平衡,并通過檢查其他Ceph OSD守護程序的心跳來向Ceph監(jiān)視器和管理器提供一些監(jiān)控信息。通常至少需要三個Ceph OSD來實現(xiàn)高可用。
- MDSs:Ceph元數據服務器(MDS,Ceph-MDS)存儲Ceph文件系統(tǒng)的元數據。Ceph元數據服務器允許CephFS用戶運行基本命令(如ls、find等),而不會給Ceph存儲集群帶來負擔。
繼續(xù)補充中…