塊存儲客戶端-九游会j9娱乐平台
① 求 分布式對象存儲 原理 架構及go語言實現 pdf
分布式存儲架構由三個部分組成:客戶端、元數據伺服器和數據伺服器。客戶端負責發送讀寫請求,緩存文件元數據和文件數據。元數據伺服器負責管理元數據和處理客戶端的請求,是整個系統的核心組件。數據伺服器負責存放文件數據,保證數據的可用性和完整性。該架構的好處是性能和容量能夠同時拓展,系統規模具有很強的伸縮性。
對象存儲最常用的方案,就是多台伺服器內置大容量硬碟,再裝上對象存儲軟體,然後再額外搞幾台服務作為管理節點,安裝上對象存儲管理軟體。管理節點可以管理其他伺服器對外提供讀寫訪問功能。
之所以出現了對象存儲這種東西,是為了克服塊存儲與文件存儲各自的缺點,發揚它倆各自的優點。簡單來說塊存儲讀寫快,不利於共享,文件存儲讀寫慢,利於共享。能否弄一個讀寫快,利 於共享的出來呢。於是就有了對象存儲。
② 對象存儲、文件存儲和塊存儲的區別是什麼
對象存儲、文件存儲和塊存儲的區別如下:
1、速度不同
塊存儲:低延遲(10ms),熱點突出;
文件存儲:不同技術各有不同;
對象存儲:100ms-1s,冷數據;
2、可分步性不同
塊存儲:異地不現實;
文件存儲:可分布式,但有瓶頸;
對象存儲:分步並發能力高;
3、文件大小不同
塊存儲:大小都可以,熱點突出;
文件存儲:適合大文件;
對象存儲:適合各種大小;
4、介面不同
塊存儲:driver,kernel mole ;
文件存儲:posix;
對象存儲:restful api ;
5、典型技術不同
塊存儲:san;
文件存儲: hdfs,gfs;
對象存儲:swift,amazon s3;
6、適合場景不同
塊存儲:銀行;
文件存儲:數據中心;
對象存儲:網路媒體文件存儲。
(2)塊存儲客戶端擴展閱讀:
對象存儲、文件存儲和塊存儲的聯系:
通常來講,磁碟陣列都是基於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),構建存儲系統,每個對象存儲設備具備一定的職能,能夠自動管理其上的數據分布。
對象儲存結構組成部分(對象、對象存儲設備、元數據伺服器、對象存儲系統的客戶端)
③ 塊存儲、文件存儲、對象存儲這三者的本質差別是什麼
一、概念及區別
針對不同的應用場景,選擇的分布式存儲方案也會不同,因此有了對象存儲、塊存儲、文件系統存儲。這三者的主要區別在於它們的存儲介面:
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特點來對應即可。至於冷熱、快慢、大小文件而言更接近於業務。但是因為存儲系統是通用化實現,通常來說,需要盡量滿足各種需求,而介面定義已經一定意義上就砍去了一些需求,如對象存儲會以冷存儲更多,大文件為主。
④ 常用的各類存儲
塊存儲: 指在一個raid(獨立磁碟冗餘陣列)集中,一個控制器加入一組磁碟驅動器,然後提供固定大小的raid塊作為lun(邏輯單元號)的卷,簡單理解硬碟就是塊存儲。
常見的塊存儲
提供了文件共享的文件存儲服務,普通的文件存儲可以同時支持上千個雲主機客戶端同時共享訪問,提供高吞吐量。
對象存儲 :
無目錄層次結構、無數據格式限制,可容納海量數據且支持 http/https 協議訪問的分布式存儲服務。
使用場景 :
適合非結構化文件,如圖片和音視頻等數據的海量存儲
各種終端設備、web網站程序、移動應用可以直接向oss寫入或讀取數據。oss支持流式寫入和文件寫入兩種方式
阿里雲的對象存儲的分類 :
標准類型
低頻訪問類型
歸檔存儲類型
(雲廠商都提供對象存儲)
下表來自阿里雲:
註: ecs 指的的雲主機。
如果是自己搭建的nas,那麼他的吞吐取決約你的磁碟的類型和raid類型, 一般是百mbps,而不是gbps.
⑤ 對象存儲、塊存儲、文件存儲分別是什麼有什麼區別
你可以把塊理解成整個硬碟,文件理解成硬碟中的文件,對象理解成很多台伺服器中的很多塊硬碟。
⑥ ceph 塊存儲rbd的使用,使用普通戶創建和掛載rbd
ceph@ceph-deploy:~/ceph-cluster$ ceph osd pool create rbd1-data 32 32
pool 'rbd1-data' created
ceph@ceph-deploy:~/ceph-cluster$ ceph osd pool ls
device_health_metrics
mypool
.rgw.root
default.rgw.log
default.rgw.control
default.rgw.meta
myrbd1
cephfs-metadata
cephfs-data
rbd1-data
在存儲池啟用rbd:
ceph@ceph-deploy:~/ceph-cluster$ ceph osd pool application enable rbd1-data rbd
enabled application 'rbd' on pool 'rbd1-data'
初始化存儲池:
ceph@ceph-deploy:~/ceph-cluster$ rbd pool init -p rbd1-data
創建存儲池映像文件:
映像文件的管理都是rbd命令來執行,rbd可對映像執行創建,查看,刪除,以及創建快照,克隆映像,刪除快照,查看快照,快照回滾等管理操作
ceph@ceph-deploy:~/ceph-cluster$ rbd create data-img1 --size 3g --pool rbd1-data --image-format 2 --image-feature layering
ceph@ceph-deploy:~/ceph-cluster$ rbd create data-img2 --size 5g --pool rbd1-data --image-format 2 --image-feature layering
查看存儲池映像文件
ceph@ceph-deploy:~/ceph-cluster$ rbd list --pool rbd1-data
data-img1
data-img2
列出映像更多信息
ceph@ceph-deploy:~/ceph-cluster$ rbd list --pool rbd1-data -l
name size parent fmt prot lock
data-img1 3 gib 2
data-img2 5 gib 2
ceph@ceph-deploy:~/ceph-cluster$ rbd --image data-img1 --pool rbd1-data info
rbd image 'data-img1':
size 3 gib in 768 objects
order 22 (4 mib objects)
snapshot_count: 0
id: 3ab91c6a62f5
block_name_prefix: rbd_data.3ab91c6a62f5
format: 2
features: layering
op_features:
flags:
create_timestamp: thu sep 2 06:48:11 2021
access_timestamp: thu sep 2 06:48:11 2021
modify_timestamp: thu sep 2 06:48:11 2021
ceph@ceph-deploy:~/ceph-cluster$ rbd --image data-img1 --pool rbd1-data info --format json --pretty-format
{
"name": "data-img1",
"id": "3ab91c6a62f5",
"size": 3221225472,
"objects": 768,
"order": 22,
"object_size": 4194304,
"snapshot_count": 0,
"block_name_prefix": "rbd_data.3ab91c6a62f5",
"format": 2,
"features": [
"layering"
],
"op_features": [],
"flags": [],
"create_timestamp": "thu sep 2 06:48:11 2021",
"access_timestamp": "thu sep 2 06:48:11 2021",
"modify_timestamp": "thu sep 2 06:48:11 2021"
}
鏡像(映像)特性的啟用和禁用
特性包括:
layering支持分層快照特性 默認開啟
striping條帶化
exclusive-lock:支持獨占鎖 默認開啟
object-map 支持對象映射,加速數據導入導出及已用空間特性統計等 默認開啟
fast-diff 快速計算對象和快找數據差異對比 默認開啟
deep-flatten 支持快照扁平化操作 默認開啟
journaling 是否記錄日誌
開啟:
ceph@ceph-deploy:~/ceph-cluster$ rbd feature enable object-map --pool rbd1-data --image data-img1
ceph@ceph-deploy:~/ceph-cluster$ rbd feature enable fast-diff --pool rbd1-data --image data-img1
ceph@ceph-deploy:~/ceph-cluster$ rbd feature enable exclusive-lock --pool rbd1-data --image data-img1
禁止:
ceph@ceph-deploy:~/ceph-cluster$ rbd feature disable object-map --pool rbd1-data --image data-img1
ceph@ceph-deploy:~/ceph-cluster$ rbd feature disable fast-diff --pool rbd1-data --image data-img1
ceph@ceph-deploy:~/ceph-cluster$ rbd feature disable exclusive-lock --pool rbd1-data --image data-img1
客戶端使用塊設備:
首先要安裝ceph-comman,配置授權
[root@ceph-client1 ceph_data]# yum install -y http://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch/ceph-release-1-1.el7.noarch.rpm
[root@ceph-client1 ceph_data]# yum install ceph-common -y
授權,
ceph@ceph-deploy:/etc/ceph$ sudo -i
root@ceph-deploy:~# cd /etc/ceph/
root@ceph-deploy:/etc/ceph# scp ceph.conf ceph.client.admin.keyring [email protected]:/etc/ceph
ubuntu系統:
root@ceph-client2:/var/lib/ceph# apt install -y ceph-common
root@ceph-deploy:/etc/ceph# sudo scp ceph.conf ceph.client.admin.keyring [email protected]:/tmp
[email protected]'s password:
ceph.conf 100% 270 117.7kb/s 00:00
ceph.client.admin.keyring
root@ceph-client2:/var/lib/ceph# cd /etc/ceph/
root@ceph-client2:/etc/ceph# cp /tmp/ceph.c* /etc/ceph/
root@ceph-client2:/etc/ceph# ll /etc/ceph/
total 20
drwxr-xr-x 2 root root 4096 aug 26 07:58 ./
drwxr-xr-x 84 root root 4096 aug 26 07:49 ../
-rw------- 1 root root 151 sep 2 07:24 ceph.client.admin.keyring
-rw-r--r-- 1 root root 270 sep 2 07:24 ceph.conf
-rw-r--r-- 1 root root 92 jul 8 07:17 rbdmap
-rw------- 1 root root 0 aug 26 07:58 tmpmhfvz7
客戶端映射鏡像
root@ceph-client2:/etc/ceph# rbd -p rbd1-data map data-img1
rbd: sysfs write failed
rbd image feature set mismatch. you can disable features unsupported by the kernel with "rbd feature disable rbd1-data/data-img1 object-map fast-diff".
in some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (6) no such device or address
root@ceph-client2:/etc/ceph# rbd feature disable rbd1-data/data-img1 object-map fast-diff
root@ceph-client2:/etc/ceph# rbd -p rbd1-data map data-img1
/dev/rbd0
root@ceph-client2:/etc/ceph# rbd -p rbd1-data map data-img2
格式化塊設備admin映射映像文件
查看塊設備
root@ceph-client2:/etc/ceph# lsblk
name maj:min rm size ro type mountpoint
sda 8:0 0 20g 0 disk
└─sda1 8:1 0 20g 0 part /
sr0 11:0 1 1024m 0 rom
rbd0 252:0 0 3g 0 disk
rbd1 252:16 0 5g 0 disk
root@ceph-client2:/etc/ceph# mkfs.ext4 /dev/rbd1
mke2fs 1.44.1 (24-mar-2018)
discarding device blocks: done
creating filesystem with 1310720 4k blocks and 327680 inodes
filesystem uuid: 168b99e6-a3d7-4dc6-9c69-76ce8b42f636
superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
allocating group tables: done
writing inode tables: done
creating journal (16384 blocks): done
writing superblocks and filesystem accounting information: done
掛在掛設備
root@ceph-client2:/etc/ceph# mkdir /data/data1 -p
root@ceph-client2:/etc/ceph# mount /dev/rbd1 /data/data1/
驗證寫入數據:
root@ceph-client2:/etc/ceph# cd /data/data1/
root@ceph-client2:/data/data1# cp /var/log/ . -r
root@ceph-client2:/data/data1# ceph df
--- raw storage ---
class size avail used raw used %raw used
hdd 220 gib 213 gib 7.4 gib 7.4 gib 3.37
total 220 gib 213 gib 7.4 gib 7.4 gib 3.37
--- pools ---
pool id pgs stored objects used %used max avail
device_health_metrics 1 1 0 b 0 0 b 0 66 gib
mypool 2 32 1.2 mib 1 3.5 mib 0 66 gib
.rgw.root 3 32 1.3 kib 4 48 kib 0 66 gib
default.rgw.log 4 32 3.6 kib 209 408 kib 0 66 gib
default.rgw.control 5 32 0 b 8 0 b 0 66 gib
default.rgw.meta 6 8 0 b 0 0 b 0 66 gib
myrbd1 7 64 829 mib 223 2.4 gib 1.20 66 gib
cephfs-metadata 8 32 563 kib 23 1.7 mib 0 66 gib
cephfs-data 9 64 455 mib 129 1.3 gib 0.66 66 gib
rbd1-data 10 32 124 mib 51 373 mib 0.18 66 gib
創建普通用戶並授權
root@ceph-deploy:/etc/ceph# ceph auth add client.huahualin mon "allow rw" osd "allow rwx pool=rbd1-data"
added key for client.huahualin
root@ceph-deploy:/etc/ceph# ceph-authtool --create-keyring ceph.client.huahualin.keyring
creating ceph.client.huahualin.keyring
root@ceph-deploy:/etc/ceph# ceph auth get client.huahualin -o ceph.client.huahualin.keyring
exported keyring for client.huahualin
使用普通用戶創建rbd
root@ceph-deploy:/etc/ceph# scp ceph.conf ceph.client.huahualin.keyring [email protected]:/etc/ceph/
普通用戶映射鏡像
[root@ceph-client1 ~]# rbd --user huahualin --pool rbd1-data map data-img2
/dev/rbd0
使用普通用戶掛載rbd
[root@ceph-client1 ~]# mkfs.ext4 /dev/rbd0
[root@ceph-client1 ~]# fdisk -l /dev/rbd0
[root@ceph-client1 ~]# mkdir /data
[root@ceph-client1 ~]# mount /dev/rbd0 /data
[root@ceph-client1 ~]# df -th
filesystem type size used avail use% mounted on
devtmpfs devtmpfs 475m 0 475m 0% /dev
tmpfs tmpfs 487m 0 487m 0% /dev/shm
tmpfs tmpfs 487m 7.7m 479m 2% /run
tmpfs tmpfs 487m 0 487m 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 37g 1.7g 36g 5% /
/dev/sda1 xfs 1014m 138m 877m 14% /boot
tmpfs tmpfs 98m 0 98m 0% /run/user/0
192.168.241.12:6789:/ ceph 67g 456m 67g 1% /ceph_data
/dev/rbd0 ext4 4.8g 20m 4.6g 1% /data
掛載rbd後會自動載入模塊libceph.ko
[root@ceph-client1 ~]# lsmod |grep ceph
ceph 363016 1
libceph 306750 2 rbd,ceph
dns_resolver 13140 1 libceph
libcrc32c 12644 4 xfs,libceph,nf_nat,nf_conntrack
[root@ceph-client1 ~]# modinfo libceph
filename: /lib/moles/3.10.0-1160.el7.x86_64/kernel/net/ceph/libceph.ko.xz
license: gpl
description: ceph core library
author: patience warnick <[email protected]>
author: yehuda sadeh <[email protected]>
author: sage weil <[email protected]>
retpoline: y
rhelversion: 7.9
srcversion: d4abb648ae8130ecf90aa3f
depends: libcrc32c,dns_resolver
intree: y
vermagic: 3.10.0-1160.el7.x86_64 smp mod_unload modversions
signer: centos linux kernel signing key
sig_key: e1:fd:b0:e2:a7:e8:61:a1:d1:ca:80:a2:3d:cf:0d:ba:3a:a4:ad:f5
sig_hashalgo: sha256
如果鏡像空間不夠用了,我們可以做鏡像空間的拉伸,一般不建議減小
查看rdb1-data存儲池的鏡像
[root@ceph-client1 ~]# rbd ls -p rbd1-data -l
name size parent fmt prot lock
data-img1 3 gib 2
data-img2 5 gib 2
比如data-img2空間不夠了,需要拉伸,將data-img2擴展到8g
[root@ceph-client1 ~]# rbd resize --pool rbd1-data --image data-img2 --size 8g
resizing image: 100% complete...done.
可以通過fdisk -l查看鏡像空間大小,但是通過df -h就看不到
[root@ceph-client1 ~]# lsblk
name maj:min rm size ro type mountpoint
sda 8:0 0 40g 0 disk
├─sda1 8:1 0 1g 0 part /boot
└─sda2 8:2 0 39g 0 part
├─centos-root 253:0 0 37g 0 lvm /
└─centos-swap 253:1 0 2g 0 lvm [swap]
sr0 11:0 1 1024m 0 rom
rbd0 252:0 0 8g 0 disk /data
[root@ceph-client1 ~]# fdisk -l /dev/rbd0
disk /dev/rbd0: 8589 mb, 8589934592 bytes, 16777216 sectors
units = sectors of 1 * 512 = 512 bytes
sector size (logical/physical): 512 bytes / 512 bytes
i/o size (minimum/optimal): 4194304 bytes / 4194304 bytes
將掛載設置開機啟動
[root@ceph-client1 ~]# vi /etc/rc.d/rc.local
rbd --user huahualin --pool rbd1-data map data-img2
mount /dev/rbd0 /data
[root@ceph-client1 ~]# chmod a x /etc/rc.d/rc.local
[root@ceph-client1 ~]# reboot
⑦ 對象存儲、文件存儲和塊存儲有什麼區別
對象存儲、文件存儲和塊存儲區別為:存儲設備不同、特點不同、缺點不同。
一、存儲設備不同
1、對象存儲:對象存儲的對應存儲設備為swift,鍵值存儲。
2、文件存儲:文件存儲的對應存儲設備為ftp、nfs伺服器。
3、塊存儲:塊存儲的對應存儲設備為cinder,硬碟。
二、特點不同
1、對象存儲:對象存儲的特點是具備塊存儲的高速以及文件存儲的共享等特性。
2、文件存儲:文件存儲的特點是一個大文件夾,大家都可以獲取文件。
3、塊存儲:塊存儲的特點是分區、格式化後,可以使用,與平常主機內置硬碟的方式完全無異。
三、缺點不同
1、對象存儲:對象存儲的缺點是不兼容多種模式並行。
2、文件存儲:文件存儲的缺點是傳輸速率低。
3、塊存儲:塊存儲的缺點是不能共享數據。
⑧ linux裡面ceph是什麼
linux裡面ceph
ceph是一個可靠地、自動重均衡、自動恢復的分布式存儲系統,根據場景劃分可以將ceph分為三大塊,分別是對象存儲、塊設備存儲和文件系統服務。在虛擬化領域里,比較常用到的是ceph的塊設備存儲,比如在openstack項目里,ceph的塊設備存儲可以對接openstack的cinder後端存儲、glance的鏡像存儲和虛擬機的數據存儲,比較直觀的是ceph集群可以提供一個raw格式的塊存儲來作為虛擬機實例的硬碟。
ceph相比其它存儲的優勢點在於它不單單是存儲,同時還充分利用了存儲節點上的計算能力,在存儲每一個數據時,都會通過計算得出該數據存儲的位置,盡量將數據分布均衡,同時由於ceph的良好設計,採用了crush演算法、hash環等方法,使得它不存在傳統的單點故障的問題,且隨著規模的擴大性能並不會受到影響。