1. 程式人生 > >SCSI技術應用+udev配置+nfs文件系統,Multipath多路徑

SCSI技術應用+udev配置+nfs文件系統,Multipath多路徑

info 裝包 客戶機 基於 val 圖形 令行 exp reat

一、基礎概念
塊級別:提供塊設備(磁盤)
文件級別:提供共享文件夾
DAS:直連式存儲。本地磁盤
NAS:網絡附加存儲。本質上就是共享文件夾
SAN:存儲區域網絡。
FC SAN:基於光纖的存儲區域網絡

二、配置iSCSI
1、準備三臺虛機
vh01.tedu.cn 192.168.4.1 存儲服務器
Vh02.tedu.cn 192.168.4.2 mysql1
Vh03.tedu.cn 192.168.4.3 mysql2
[root@room8pc16 nsd1802]# clone-auto7
2、初始化三臺虛擬機:ip地址、主機名、selinux、防火墻、yum
配置IP地址的方式可以使用nmtui

TUI:Text User Interface 文本用戶界面

GUI:Graphical User Interface 圖形用戶界面
CLI:Command Line Interface 命令行界面

3、為客戶端提供存儲,需要給存儲提供個名字。這個名字推薦使用iqn名稱
iqn = iqn.時間.域名的反寫.字符串:子字符串
如iqn.2018-06.cn.tedu.nsd1802:teacher
如果為全國200多同學都提供存儲,就需要有200多不一樣的名字。
4、在vh01上安裝存儲端軟件包
[root@vh01 ~]# yum install -y targetcli.noarch
5、為存儲端準備硬盤。虛擬機可以在不關機的情況下,直接加硬盤。
6、創建vdb1作為共享存儲的遠程磁盤

[root@vh01 ~]# parted /dev/vdb
(parted) mklabel gpt
創建一個主分區,起始位置是1M,結束位置是整個硬盤的10%容量部分
(parted) mkpart primary 1M 10%
(parted) mkpart primary 10% 20%
(parted) print 查看
(parted) quit
[root@vh01 ~]# lsblk
7、配置target存儲
[root@vh01 ~]# targetcli
創建後端存儲
/> /backstores/block create formysql /dev/vdb1
創建IQN對象
/> /iscsi create iqn.2018-06.cn.tedu.nsd1802
向IQN對象中添加存儲vdb1
/> ls
/> /iscsi/iqn.2018-06.cn.tedu.nsd1802/tpg1/luns create /backstores/block/formysql
授權客戶端訪問,如客戶端iqn名字是iqn.2018-06.cn.tedu.vh02
/> /iscsi/iqn.2018-06.cn.tedu.nsd1802/tpg1/acls create iqn.2018-06.cn.tedu.vh02
綁定地址(可以省略,因為默認已配置好)
/> /iscsi/iqn.2018-06.cn.tedu.nsd1802/tpg1/portals/ create 0.0.0.0
存盤
/> saveconfig
/> exit
8、啟動服務
[root@vh01 ~]# systemctl start target
[root@vh01 ~]# systemctl enable target

三、配置iSCSI客戶端
1、安裝軟件包
[root@vh02 ~]# yum install iscsi-initiator-utils
2、修改客戶端的iqn名稱
[root@vh02 ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2018-06.cn.tedu.vh02
3、發現服務端
[root@vh02 ~]# man iscsiadm 查看幫助
[root@vh02 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.1 --discover
此時,可以發現存儲的iqn名稱,但是執行lsblk是看不到新磁盤的。
4、登陸target。可以通過man幫助中看到的命令執行,也可以執行以下操作
[root@vh02 ~]# systemctl restart iscsi
[root@vh02 ~]# lsblk 出現新硬盤

四、使用iSCSI磁盤
1、分區、格式化
[root@vh02 ~]# parted /dev/sda
(parted) mklabel gpt
(parted) mkpart primary 1M 100%
(parted) quit
[root@vh02 ~]# mkfs.ext4 /dev/sda1
2、安裝mariadb
[root@vh02 ~]# yum install -y mariadb-server
3、掛載再啟服務
[root@vh02 ~]# mount /dev/sda1 /var/lib/mysql/
[root@vh02 ~]# chown mysql.mysql /var/lib/mysql/
[root@vh02 ~]# systemctl start mariadb

五、測試
1、創建數據庫,並寫入數據
[root@vh02 ~]# mysql -uroot
MariaDB [(none)]> CREATE DATABASE nsd1802 DEFAULT CHAR SET utf8;
MariaDB [(none)]> USE nsd1802;
MariaDB [nsd1802]> CREATE TABLE students(name varchar(20));
MariaDB [nsd1802]> INSERT INTO students VALUES ("李洋");
MariaDB [nsd1802]> SELECT FROM students;
2、停止mariadb服務,卸載sda1(模擬vh02宕機了)
一定要將共享存儲卸載,不能vh02和vh03同時掛載共享存儲。因ext4/xfs是單節點文件系統,如果多個節點同時掛載,就會損壞文件系統,使得數據丟失。
3、在vh03上掛載共享存儲,安裝數據庫,讓它為客戶機提供服務。
[root@vh02 ~]# shutdown -h now
[root@vh03 ~]# yum install -y iscsi-initiator-utils
[root@vh01 ~]# targetcli
/> /iscsi/iqn.2018-06.cn.tedu.nsd1802/tpg1/acls/ create iqn.2018-06.cn.tedu.vh03
/> saveconfig
[root@vh03 ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2018-06.cn.tedu.vh03
[root@vh03 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.1 --discover
[root@vh03 ~]# systemctl restart iscsi
[root@vh03 ~]# yum install -y mariadb-server
[root@vh03 ~]# mount /dev/sda1 /var/lib/mysql/
[root@vh03 ~]# systemctl start mariadb
[root@vh03 ~]# mysql
MariaDB [(none)]> use nsd1802;
MariaDB [nsd1802]> select
from students;

Udev:動態管理設備文件的方法
1、Linux中一切皆文件。
2、Udev管理設備文件。如,主機連接U盤出現新的文件(sdb),移除U盤,磁盤文件消失。
3、硬件文件的信息寫入到了/sys目錄下,這個目錄與proc類似。
4、我們用udev可以為設備改名,或執行自定義操作。
(1)在/etc/udev/rules.d目錄下創建規則文件
(2)接入新設備,如果滿足規則,就會按管理員的規則應用
(3)規則文件名:數字-名字.rules
5、規則文件中,管理員指定硬件滿足或不滿足哪些條件,就執行什麽操作
6、實例:U盤接入主機,起名為udisk
(1)找到U盤在/sys目錄中的說明路徑
[root@room8pc16 ~]# udevadm info --query=path --name=/dev/sdb1
/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/host5/target5:0:0/5:0:0:0/block/sdb/sdb1
(2)根據上一步的路徑,查詢U盤的硬件信息
[root@room8pc16 ~]# udevadm info --query=all --attribute-walk --path=/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/host5/target5:0:0/5:0:0:0/block/sdb/sdb1
出現的內容非常多,只需要找到跟U盤相關的內容即可,如DRIVERS=="usb-storage"
(3)編寫規則文件
[root@room8pc16 ~]# vim /etc/udev/rules.d/90-udisk.rules
ACTION=="add", KERNEL=="sd[a-z]*", DRIVERS=="usb-storage",
SYMLINK+="udisk%n"
將設備連到主機,ACTION(行為)就是add,KERNEL的意思是沒有人為幹預內核給它起的名。SYMLINIK是創建快捷方式,+=是額外增加。%n是分區號
(4)重新接入U盤即可

NFS:網絡文件系統,用於Linux間共享。
一、實現只讀共享
1、配置vh01為服務器
(1)裝包
[root@vh01 ~]# yum install -y nfs-utils
(2)創建共享目錄
[root@vh01 ~]# mkdir -pv /nfsroot/nfsro
[root@vh01 ~]# cp /etc/hosts /nfsroot/nfsro/
(3)在配置文件中聲明共享目錄
[root@vh01 ~]# vim /etc/exports
/nfsroot/nfsro *(ro)
(4)啟動服務
[root@vh01 ~]# systemctl restart nfs
2、客戶端使用共享
(1)查看
[root@vh03 ~]# showmount -e 192.168.4.1
(2)掛載
[root@vh03 ~]# mount 192.168.4.1:/nfsroot/nfsro /mnt/sharero
[root@vh03 ~]# cat /mnt/sharero/hosts

二、創建讀寫共享
1、配置vh01為服務器
(1)服務器上創建共享目錄
[root@vh01 ~]# mkdir -m 777 /nfsroot/nfsrw
不管是NFS還是SAMBA,還是FTP,只要是讀寫,必須設置本地權限和配置文件的權限
(2)聲明讀寫目錄
/nfsroot/nfsrw 192.168.4.*(rw,sync) ->sync表示同步讀寫
(3)重新輸出共享目錄
[root@vh01 ~]# exportfs -rv
2、配置vh03為客戶端
[root@vh03 ~]# mount 192.168.4.1:/nfsroot/nfsrw /mnt/sharerw
[root@vh03 ~]# echo ‘hello world‘ > /mnt/sharerw/hi.txt
[root@vh03 ~]# cat /mnt/sharerw/hi.txt

多路徑multipath
一、用途
如果客戶端到服務器存儲只有一條線路,那麽該線路出現故障,存儲就不可用了。可以再加一條線路。這個時候,客戶端就會從兩條線路發現同一存儲設備,會給這個存儲起兩個名字,如sda和sdb。
客戶端無論使用哪個存儲都不合適。我們可以創建一個虛擬磁盤,如mpatha,客戶端掛載mpatha,只要底層不要兩條路徑全部出現故障,mpatha一直可用。原理參考HSRP。
二、配置多路徑
1、在vh01和vh03之間加上192.168.2.0/24網絡
2、在vh03上通過192.168.2.0網絡也發現一次共享
[root@vh03 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.1 --discover
[root@vh03 ~]# systemctl restart iscsi
[root@vh03 ~]# lsblk 此時本地有了sda和sdb
3、安裝多路徑軟件包
[root@vh03 ~]# yum install -y device-mapper-multipath
4、sda和sdb是同一設備,他們的wwid就是相同的
獲得磁盤的wwid:
[root@vh03 ~]# /lib/udev/scsi_id --whitelisted --device=/dev/sda
3600140589282e00db104fc29d84334a8
5、生成多路徑配置文件
[root@vh03 ~]# mpathconf --user_friendly_names n
6、在配置文件裏聲明獲得wwid的方法,並且聲明WWID是3600140589282e00db104fc29d84334a8的設備就是mpatha
[root@vh03 ~]# vim /etc/multipath.conf
defaults {
user_friendly_names no
find_multipaths yes
}
multipaths {
multipath {
wwid "3600140589282e00db104fc29d84334a8"
alias "mpatha"
}
}
7、啟動多路徑服務,就可以在/dev/mapper下看到mpatha設備了
[root@vh03 ~]# systemctl start multipathd
[root@vh03 ~]# systemctl enable multipathd

SCSI技術應用+udev配置+nfs文件系統,Multipath多路徑