MogileFS簡單搭建和使用
簡介
MogileFS是一個開源的分散式檔案儲存系統,由LiveJournal旗下的Danga Interactive公司開發。Danga團隊開發了包括 Memcached、MogileFS、Perlbal 等多個知名的開源專案。
MogileFS組成:
- server:主要包括mogilefsd和mogstored兩個應用程式。mogilefsd實現的是tracker,它通過資料庫來儲存元資料資訊,包括站點domain、class、host等;mogstored是儲存節點(store node),它其實是個WebDAV服務,預設監聽在7500埠,接受客戶端的檔案儲存請求。在MogileFS安裝完後,要執行mogadm工具將所有的store node註冊到mogilefsd的資料庫裡,mogilefsd會對這些節點進行管理和監控。
- utils(工具集):主要是MogileFS的一些管理工具,例如mogadm等。
- 客戶端API:MogileFS的客戶端API很多,例如Perl、PHP、Java、Python等,用這個模組可以編寫客戶端程式,實現檔案的備份管理功能等。
儲存節點
-
儲存主機(節點)
這個是 MogileFS 儲存檔案存放在這些機器上,也是 mogstored 節點,也叫 Storage Server,一臺儲存主要都要啟動一個 mogstored 服務.擴容就是增加這些機器. -
裝置(device)
一個儲存節點,可以有多個 device, 就是用來存放檔案的目錄(例如掛載的目錄),每個裝置都有一個裝置id,需要在 mogstored 的配置檔案中的 docroot 配置的專案 指定的目錄下面建立相應的裝置的目錄,目錄名為\ $docroot/dev$id,裝置是不能刪除的.只能將其裝置的狀態的值置為dead,當一個裝置 dead 之後,就真的 dead了,裡面的資料也無法恢復了,且這個dead了的裝置的 id 也不能再用. -
Domain域
- 一個MogileFS可以有多個Domain
- 用來存放不同檔案(大小,型別)同一個Domain內key必須唯一
- 不同Domain內,key可以相同
- Class
- 檔案屬性管理
- 定位檔案儲存在不同裝置上的份數定位檔案儲存在不同裝置上的份數
流程
(這裡的trackers可以有多個.這裡只是為了搭建簡單)
客戶端訪問檔案大致流程
- 客戶端去詢問Tracker,訪問的檔案的位置。
- Tracker查詢資料庫,並告訴客戶端它請求訪問的檔案的位置
- 客戶端去對應的儲存節點獲取檔案
安裝
第一步:資料庫節點安裝MariaDB資料庫
資料庫節點安裝MariaDB資料庫
yum install mariadb mariadb-server -y
啟動資料庫
systemctl start mariadb
第二步:tracker和storage節點安裝Mogilefs
tracker和storage節點都執行下面命令
yum groupinstall "Development Tools" -y #開發工具包組
yum -y install make gcc gcc-devel unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes openssl openssl-devel perl-IO-Socket-*
然後執行下面的命令,第一次進入會找附近的映象等,直接一直回車就可以了
perl -MCPAN -e shell
等到下面這個頁面
執行命令,開始正式安裝MogileFS和相關的依賴包
install App::cpanminus
install Danga::Socket
install IO::AIO
install Perlbal
install MogileFS::Client
install MogileFS::Utils
install MogileFS::Server
第三步:資料庫節點建立相關使用者和配置資料庫
進入資料庫建立使用者
MariaDB [(none)]> grant all on mogilefs.* to 'moguser'@'192.168.253.%' identified by 'mogpass';
初始化mogilefs相關資料庫
mogdbsetup --dbhost=192.168.253.158 --dbport=3306 --dbname=mogilefs --dbuser=moguser --dbpass=mogpass
進入資料庫,檢視相關表資訊
第四步:配置tracker節點並啟動服務
[[email protected] ~]# cat /etc/mogilefsd.conf
# Enable daemon mode to work in background and use syslog
daemonize = 1 #是否守護程序啟動,1為是
# Where to store the pid of the daemon (must be the same in the init script)
pidfile = /tmp/mogilefsd.pid #pid檔案路徑
# Database connection information
db_dsn = DBI:mysql:mogilefs:host=192.168.253.158 #資料庫地址
db_user = moguser #連線資料庫的使用者
db_pass = mogpass #連線資料庫的密碼
# IP:PORT to listen on for mogilefs client requests
listen = 192.168.253.158:7001 #監聽的地址
# Optional, if you don't define the port above.
conf_port = 7001
# Number of query workers to start by default.
query_jobs = 10
# Number of delete workers to start by default.
delete_jobs = 1
# Number of replicate workers to start by default.
replicate_jobs = 5
# Number of reaper workers to start by default.
# (you don't usually need to increase this)
reaper_jobs = 1
# Number of fsck workers to start by default.
# (these can cause a lot of load when fsck'ing)
#fsck_jobs = 1
# Minimum amount of space to reserve in megabytes
# default: 100
# Consider setting this to be larger than the largest file you
# would normally be uploading.
#min_free_space = 200
# Number of seconds to wait for a storage node to respond.
# default: 2
# Keep this low, so busy storage nodes are quickly ignored.
#node_timeout = 2
# Number of seconds to wait to connect to a storage node.
# default: 2
# Keep this low so overloaded nodes get skipped.
#conn_timeout = 2
# Allow replication to use the secondary node get port,
# if you have apache or similar configured for GET's
#repl_use_get_port = 1
建立使用者
useradd -M mogile #建立使用者
啟動服務
[[email protected] ~]# su mogile #因為不能用root啟動這個服務所以需要切換使用者
bash-4.2$ mogilefsd -c /etc/mogilefsd.conf #手動啟動服務
第五步:配置storage 節點
[[email protected] ~]# cat /etc/mogstored.conf
maxconns = 10000
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /mogilefs/data #存放資料的目錄
建立相關目錄
useradd -M mogile #建立使用者
mkdir -pv /mogilefs/data/dev1 (158目錄為dev1,168目錄為dev2,128目錄為dev3)
chown -R mogile:mogile /mogilefs
啟動服務
mogstored -config /etc/mogstored.conf -d
到此tracker和儲存節點都安裝好了接下來就是管理的了。
storage 節點管理
tracker新增儲存主機(storage 節點)
現在加入“儲存節點”到 trackers 中.告訴註冊自己到 trackers.相當於為每個主機加入 MogileFS 的儲存系統
mogadm --trackers=192.168.253.158:7001 host add 192.168.253.158 --ip=192.168.253.158 --port=7500 --status=alive
mogadm --trackers=192.168.253.158:7001 host add 192.168.253.168 --ip=192.168.253.168 --port=7500 --status=alive
mogadm --trackers=192.168.253.158:7001 host add 192.168.253.128 --ip=192.168.253.128 --port=7500 --status=alive
檢視儲存主機(storage 節點)列表
mogadm --trackers=192.168.253.158:7001 host list
檢查trackers和儲存節點
mogadm --trackers=192.168.253.158:7001 check
新增儲存裝置
格式:mogadm device add <storage_node_name> ID
檢查我們加入的"裝置"資訊,這裡的ID和主機/mogilefs/data/devID這個目錄有關
mogadm --trackers=192.168.253.158:7001 device add 192.168.253.158 1
mogadm --trackers=192.168.253.158:7001 device add 192.168.253.168 2
mogadm --trackers=192.168.253.158:7001 device add 192.168.253.128 3
檢視儲存裝置
mogadm --trackers=192.168.253.158:7001 device list
域和類的管理
域的管理命令
mogadm domain add <domain> 新增
mogadm domain delete <domain> 刪除
mogadm domain list 檢視
建立3個域,分別是domain1,domain2,domain3
mogadm --trackers=192.168.253.158:7001 domain add domain1
mogadm --trackers=192.168.253.158:7001 domain add domain2
mogadm --trackers=192.168.253.158:7001 domain add domain3
檢視域
mogadm --trackers=192.168.253.158:7001 domain list
刪除域
mogadm --trackers=192.168.253.158:7001 domain delete domain1
類管理命令
mogadm class add <domain> <class> [opts] 新增
<class> Name of class to add.
<domain> Domain to add class to.
--hashtype=s Hash algorithm string ('MD5', 'NONE').
--mindevcount=i Minimum number of replicas.
--replpolicy=s Replication policy string.
mogadm class delete <domain> <class> 刪除
mogadm class list 檢視
mogadm class modify <domain> <class> [opts] 修改
建立類
mogadm --trackers=192.168.253.158:7001 class add domain2 class1 --mindevcount=2
mogadm --trackers=192.168.253.158:7001 class add domain2 class2 --hashtype=MD5 --mindevcount=3
檢視類
mogadm --trackers=192.168.253.158:7001 class list
檔案管理
上傳檔案
格式: mogupload --trackers=host --domain=foo --key=’/hello.jpg’ --file=’./hello.jpg’
#將本地的/etc/fstab檔案上傳到domain2域中。key為/fstab
mogupload --trackers=192.168.253.158:7001 --domain=domain2 --key='/fstab' --file='/etc/fstab'
檢視檔案資訊
格式:mogfileinfo --trackers=host --domain=foo --key=’/hello.jpg’
mogfileinfo --trackers=192.168.253.158:7001 --domain=domain2 --key='/fstab'
這裡可以看到一個url我們可以用瀏覽器訪問
可以看到這個就是我們上傳的檔案,所以MogileFS儲存的檔案也可以利用http協議
刪除檔案
格式:mogdelete --trackers=host --domain=foo --key=’/hello.jpg’
mogdelete --trackers=192.168.253.158:7001 --domain=domain2 --key='/fstab'
列出所有檔案的key
格式:moglistkeys --trackers=host --domain=foo --key_prefix=‘bar/’
列出指定的fid檔案
格式:moglistfids --trackers=host --fromfid=123 --count=5000