硬盘分区
/boot 500M ext4格式
/boot/efi 200M vfat格式
PV
VG: LV1swap(两倍内存) LV2root(根目录ext4格式50G够了)LV3data(数据目录xfs格式)
系统装完以后先yum –y update 更新一下
如果setfacl显示不支持的操作那么需要让硬盘支持acl,mount -o remount,acl /XXXX
使用ACL必须要在目录下挂载,具体查询网站编辑磁盘文件即可
注意主备机从域内get到的用户ID是否一样
备份事宜要做好
修改网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 #网卡名字
TYPE=Ethernet #网络类型 以太网
UUID=b8dbc778-11f7-43e0-9e5c-4341845b5b0a #UUID 做到系统中独一无二
ONBOOT=yes #再开机或重启网卡的时候是否启动网卡
NM_CONTROLLED=yes #是否受network程序管理
BOOTPROTO=none #网卡获取IP地址的方式a.dhcp自动获取IP地址b.none固定的IP地址c.static 固定的IP地址
HWADDR=00:50:56:AF:3D:78 #硬件地址 MAC地址
IPADDR=192.168.58.5 #IP地址
PREFIX=24 #NETMASK与PREFIX的作用一样,都是配置子网掩码,只是PREFIX更简洁,两个都存在时,PREFIX优先起作用
GATEWAY=192.168.58.1 #网关
DNS1=192.168.58.201 #DNS地址
DEFROUTE=yes # yes -- 将该接口设置为默认路由。no -- 不要将该接口设置为默认路由。
USERCTL=no #普通用户能否控制网卡
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
yum -y update 更新系统
使用smb服务必须关闭防火墙iptables and selinux
Centos7防火墙:
Systemctl status firewall //查看防火墙状态
Systemctl stop firewall //暂时关闭防火墙
Systemctl disable firewall //禁止开机启动
Redhate6 防火墙
临时关闭、启动:
service iptables stop /start
service ip6tables stop /start
永久关闭、启动:
chkconfig --level 2345 iptables off /on
chkconfig --level 2345 ip6tables off/on
常用命令: smbpasswd –a 用户 (新建,在非域环境必须与系统用户相同)
Smbpasswd –d 用户(禁用)
Smbpasswd –x 用户(删除)
pdbedit –a username:新建Samba账户。
pdbedit –x username:删除Samba账户。
pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit –Lv:列出Samba用户列表的详细信息。
pdbedit –c “[D]” –u username:暂停该Samba用户的账号。
pdbedit –c “[]” –u username:恢复该Samba用户的账号。
Winbind参数说明
winbind separator。在域中,Windows 用户名包含一个用户名和一个域名,在它们之间有一个分隔符。此选项设置该字符。默认是反斜杠(\),加号(+)是常见的替代分隔符。
winbind cache time。Winbind 缓存指定时间段的身份验证数据,默认设置为 300 秒(5 分钟)。在测试 Winbind 配置时您可能想要降低此值。
template shell。使用此选项设置用户的默认 shell。默认值是 /bin/false,这适用于不支持 shell 访问的系统;但是,如果您想让用户能够从本地登录或者通过 Secure Shell (SSH) 等服务器登录,则应该将此选项设置为 /bin/bash 或其他一些合法的 Linux shell。
template homedir。您必须为用户设置默认主目录。您通常会使用一个或多个 Samba 变量,比如用户名的 %U 和域名的 %D。此参数的默认值是 /home/%D/%U。
winbind enum users。此 Boolean 选项启用或禁用某些系统调用的支持,支持程序枚举用户。默认值是 Yes,但是将它设置为 No 可改进性能,也会避免一些程序(比如 finger)的古怪行为。
winbind enum groups。此选项的工作方式与 winbind enum users 非常类似,但它适用于组而不是用户。
winbind use default domain。如果您将此选项设置为 Yes,Winbind 会删除大多数操作的用户名的域组件,这通常是想要的效果,因为它会缩写用户名—例如,将 MYDOMAIN\rexx 缩写为 rexx。如果网络包含多个域,则使用默认值 No 很有意义。
idmap uid。您应该使用此选项指定一组 UID,使用短划线作为 (-) 分隔符,如 10000-20000 所示。确保您使用的范围与您系统上使用的本地定义的 UID 不重叠。
idmap gid。此选项和 idmap uid 一样,但它设置一组 GID。
安装samba服务
yum install samba #yum安装samba 及依赖包
yum install krb5* #yum安装krb5及依赖包
yum install pam_krb5 #yum 安装pam_krb5及依赖包
配置smb,修改smb配置文件 /etc/samba/smb.conf
[global]
workgroup = DERASTORAGE
password server = test.abc.com
realm = ABC.COM
security = ads
template shell = /sbin/nologin
winbind use default domain = true
winbind offline logon = false
idmap config * : range = 16777216-33554431
server string = Samba Server Version %v
netbios name = samba4
log file = /var/log/samba/log.%m
max log size = 50
passdb backend = tdbsam
winbind enum users = yes
winbind enum groups = yes
[share]
path = /share/Personal
browseable = yes
valid users = @"abc\domain users"
writable = yes
create mask = 0770
directory mask = 0770
hide unreadable = yes
详细说明:
[global]
workgroup = ABC #设定 Samba Server 所要加入的工作组或者域,不加.com
password server = test.abc.com #域控服务器名称
realm = ABC.COM #域名
security = ads #结合域的时候就用这个;以下三种安全级别用在Standalone Server Options部分,其中user级别也用于Domain Controller Options部分。 (1)share:访问Samba服务器共享资源时不需要输入用户名和密码,属于匿名访问。 (2)user:访问Samba服务器共享资源时需要输入用户名和密码,认证用户来源为Samba服务器本机。 (3)server:访问Samba服务器共享资源时需要输入用户名和密码,认证用户来源为另一台Samba服务器或Windows服务器。 以下两种安全级别用在Domain Members Options部分: (4)domain:Samba服务器在一个基于Windows NT平台的Windows域中,访问共享资源需要输入用户名和密码,认证用户来源为Windows域。 (5)ads:Samba服务器在一个基于Windows 200X平台的Windows活动目录中,访问共享资源需要输入用户名和密码,认证用户来源为Windows活动目录。
template shell = /sbin/nologin #
winbind use default domain = true
winbind offline logon = false
idmap config * : range = 16777216-33554431 #这个很重要,没有的话不会同步域用户,这是制定UID和GID
server string = Samba Server Version %v #设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。
netbios name = samba4 #设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了。
log file = /var/log/samba/log.%m #定义Samba日志文件的位置及名称。默认为每一个与服务器连接的客户端定义一个单独的日志文件。
max log size = 50 #设置最大的日志文件大小,单位为KB。
passdb backend = tdbsam # smbpasswd、tdbsam、ldapsam、mysql。默认为tdbsam,一般不用修改,除非想使用老版本Samba服务器的smbpasswd文件方式或其它方式。
winbind enum users = yes
winbind enum groups = yes
[share]
path = /share/Personal #共享目录路径
browseable = yes
valid users = @"abc\domain users"
writable = yes
create mask = 0770 #用户创建的文件具有完全控制权限
directory mask = 0770
hide unreadable = yes #隐藏不具有权限的目录
加入域:(注意如果AD更改了组名称,centos不会更改,必须要在AD中将windows2000以前版本的组名一起更改以后centos才会同步)
1.Tool install:
yum install krb5-libs krb5-devel pam_krb5 krb5-workstation krb5-auth-dialog
yum install samba-winbind samba samba-common samba-client samba-winbind-clients
2. vi /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = ABC.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
ABC.COM = {
kdc = test.abc.com:88
admin_server = test.abc.com:749
default_domain = ABC.COM
}
[domain_realm]
.derastorage.com = ABC.COM
derastorage.com = ABC.COM
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
3. vi /etc/nsswitch.conf
#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Valid entries include:
#
# nisplus Use NIS+ (NIS version 3)
# nis Use NIS (NIS version 2), also called YP
# dns Use DNS (Domain Name Service)
# files Use the local files
# db Use the local database (.db) files
# compat Use NIS on compat mode
# hesiod Use Hesiod for user lookups
# [NOTFOUND=return] Stop searching if not found so far
#
# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd: db files nisplus nis
#shadow: db files nisplus nis
#group: db files nisplus nis
passwd: files winbind nis
shadow: files winbind nis
group: files winbind nis
#hosts: db files nisplus nis dns
hosts: files dns
# Example - obey only what nisplus tells us...
#services: nisplus [NOTFOUND=return] files
#networks: nisplus [NOTFOUND=return] files
#protocols: nisplus [NOTFOUND=return] files
#rpc: nisplus [NOTFOUND=return] files
#ethers: nisplus [NOTFOUND=return] files
#netmasks: nisplus [NOTFOUND=return] files
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files
netgroup: files
publickey: nisplus
automount: files
aliases: files nisplus
4. vi /etc/resolv.conf
# Generated by NetworkManager
#domain abc.com
#search abc.com
nameserver 192.168.58.201
5. vi /etc/hosts
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.58.5 samba4.abc.com samba4
6. vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=samba3
NTPSERVERARGS=iburst
7. vi /etc/nsswitch.conf
#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Valid entries include:
#
# nisplus Use NIS+ (NIS version 3)
# nis Use NIS (NIS version 2), also called YP
# dns Use DNS (Domain Name Service)
# files Use the local files
# db Use the local database (.db) files
# compat Use NIS on compat mode
# hesiod Use Hesiod for user lookups
# [NOTFOUND=return] Stop searching if not found so far
#
# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd: db files nisplus nis
#shadow: db files nisplus nis
#group: db files nisplus nis
passwd: files winbind nis
shadow: files winbind nis
group: files winbind nis
8.加入域
setenforce 0
ntpdate -u 192.168.58.201
net ads join -U administrator(域服务器用户密码)
9.启用winbind
Service winbind start
10.验证
wbinfo -t //查看与AD主机是否己建立信任关系
wbinfo -g //显示AD的组信息
getent passwd //显示本地和域中可登录用户
getent group //显示本地和域中的组
net ads info //查询AD域基本资料
net getdomainsid //查询AD域ID号码
注:退出域的命令是:net ads leave -U administrator
注意:如果时钟不与域控同步将不能同步到域用户和组
ntpdate –u dc.domain.com
vi /etc/crontab
45 11 * * * root ntpdate -u 192.168.58.201 (每天11点5自动与域控同步)
看加入域配置文档,这里还要修改smb的配置文件并加入winbind服务器的配置,否则域用户不能同步
测试ntlm_auth --username=ucdisk01
Getent passwd | grep 1677 (查看域用户同步)
Getent group | grep 1877 (查看域组同步)
创建用户文件 cp -a /etc/skel/. /home/ucdisk01 13. su ucdisk01
安装 Keepalived
yum -y install keepalived
配置文件/etc/keepalived/keepalived
keepalived基础配置可以检测网口和keepalived的服务状态进行切换服务器,添加vrrp的bash脚本后可以检测smb服务的状态来进行切换
cp keepalived.conf /etc/keepalived/keepalived.conf.bak备份原keepalived.conf文件
mkdir /home/keepalived/
vi change_backup.sh #创建change_backup.sh脚本
#!/bin/bash
echo "samba1 smb server stop" | mail -s "samba1 smb server stop" xxx@xxx.com
service keepalived stop
exit
chmod +x change_backup.sh #添加脚本可执行权限
vi check_running
#!/bin/bash
smbclient -N -L //服务器IP地址 | grep 共享文件夹 > /dev/null 2>&1
if [[ $? -eq 0 ]]; then
echo 0 > /home/1.txt
exit 0
else
count=`cat /home/1.txt`
sum=$[$count+1]
echo $sum > /home/1.txt
if [[ $sum -ge 3 ]]; then
exit 1
fi
fi
####注意参数和{符号之间有空格
chmod +x check_running #添加脚本可执行权限
server 1 keepalived.conf
vrrp_script check_local {
script “脚本存放路径/脚本名(*.sh)”
interval 5
weight -90
}
global_defs {
router_id server1 ####服务器1的名称####
}
vrrp_instance VI_1 {
state MASTER ####服务器1为主要####
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
Virtual_ipaddress {
192.168.183.190(虚拟IP)
}
Track_script {
脚本名称,无需路径
}
}
Server 2 keepalived.conf
global_defs {
notification_email {
xxx@xxx.com
}
router_id samba1 ####服务器2的名称####
}
vrrp_instance VI_1 {
state BACKUP ####服务器2为备份####
interface bond0
dont_track_primary
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 123qwe123
}
virtual_ipaddress {
192.168.100.111/24(虚拟IP)
}
}
安装inotify
inotify 配合 rsync 使用,先配置ssh免密码登陆
ssh-keygen -t rsa 一路回车
生成 /root/.ssh 目录
在母机上,进入/root/.ssh目录,找到id_rsa.pub该文件,这个文件就是刚才执行ssh-keygen所生成的公钥key文件。
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.1 把本地公钥发送到对端服务器,ssh 192.168.1.1 测试登陆
(注意:从新安装了backup机后,ssh不能再用以前的了,需要删除master上/root/.ssh/known_hosts文件)
tar -zvxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
yum -y install gcc (centos不安装gcc就安装不了inotify)
./configure --prefix=/usr/local/inotify
make
make install
etc/sysctl.conf配置(主服务器配置就好了)
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
fs.inotify.max_user_instances = 99999999
fs.inotify.max_user_watches = 99999999
fs.inotify.max_queued_events = 99999999
修改完配置文件后sysctl -p 立即刷新内核
检测文件增改删的脚本(脚本执行如果有问题,可能是需要在vi里设置文件格式set fileformat=unix)
#!/bin/bash
cd /share
/usr/local/inotify/bin/inotifywait --format '%Xe %w%f' -mrq -e modify,create,delete,attrib,close_write,move /share/ | while read file
do
INO_EVENT=$(echo $file | awk '{print $1}')
INO_FILE=$(echo $file | awk '{print $2}')
echo $INO_EVENT
echo $INO_FILE
if [[ $INO_EVENT = 'CREATE' ]] || [[ $INO_EVENT = 'MODIFY' ]] || [[ $INO_EVENT = 'CLOSE_WRITEI' ]] || [[ $INO_EVENT = 'MOVED_TO' ]]
then
rsync -Aa --delete $INO_FILE root@192.168.183.157:$INO_FILE 1>/dev/null 2>&1
fi
if [[ $INO_EVENT = 'DELETE' ]] || [[ $INO_EVENT = 'MOVED_FROM' ]] || [[ $INO_EVENT = 'ATTRIB' ]] || [[ $INO_EVENT = 'DELETEXISDIR' ]] || [[ $INO_EVENT = 'CREATEXISDIR' ]]
then
INO_FILES=`echo $INO_FILE | awk -F/ 'OFS="/"{$NF="";print}'`
rsync -Aa --delete $INO_FILES root@192.168.183.157:$INO_FILES 1>/dev/null 2>&1
fi
done
脚本的执行
sh /usr/local/inotify/inotify_start.sh 1>/dev/null 2>&1 &
脚本可以在xshell中复制另外一个ssh后用sh /usr/local/inotify/inotify_start.sh查看增改删的状态,如果不小心脚本执行了很多次,那么会产生很多进程去监控文件增改删,可以使用ps –aux删除进程然后在启动一个
注意: 1 当master的同步命令重启后消失,需要每次重启都手动开启,但是这并不会影响同步,因为当sh check_local.sh后master会自动将重启到现在的所有修改都同步到backup,这个非常好
2 如果master宕机,那么数据会写入backup,这样的话backup并没有inotify,所以明显backup的数据会比master多,这样就需要手动复制文件到master去同步数据,同步完毕后在启动master的keepalived,然后在启动check_local.sh
配置完smb,winbind,keepalived后不要忘了开机自启动
chkconfig –level 2345 smb on
IN_ACCESS:文件被访问
IN_MODIFY:文件被修改
IN_ATTRIB,文件属性被修改
IN_CLOSE_WRITE,以可写方式打开的文件被关闭
IN_CLOSE_NOWRITE,以不可写方式打开的文件被关闭
IN_OPEN,文件被打开
IN_MOVED_FROM,文件被移出监控的目录
IN_MOVED_TO,文件被移入监控着的目录
IN_CREATE,在监控的目录中新建文件或子目录
IN_DELETE,文件或目录被删除
IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己
IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己
利用rysnc备份文件到备份服务器
#!/bin/bash
dir_name=$(date "+%Y-%m-%d") 当前时间点创建文件夹
del_dirname=$(date -d "2 days ago" "+%Y-%m-%d") 多少天之前的文件夹
rsync -Aa --progress -e ssh /share/* root@192.168.183.157:/backup/$dir_name/ 同步本地文件到其他服务器(使用了ssh方式,如果挂载到本地就更方便了)
rsync --delete -d -e ssh /backup/delete/ root@192.168.183.157:/backup/$del_dirname (删除多少天之前的文件,其实是用本地的空文件夹与目的端文件夹做比较清空目标的文件夹)
echo "已经清空" $del_dirname "目录" >> /backup/backupsmb.txt (将每次执行清空的文件夹重定向到日志文件)
挂载远端windows共享服务器
mount –t cifs //1.1.1.1/share /mnt/share –o username=administrator
使用rsync做差异备份
!!!!!!!!!!!!!!!!!!!所有写的脚本一定要添加执行权限!!!!!!!!!!!!!!!
rsync -Aa --progress --delete /a/ root@192.168.183.157:/a
#以下是一条命令,注意不是两条,比较a目录与对端目录a,然后将差异重定向到rsync命令指定的目录中,在比较其他目录,这样就实现了差异备份到其他目录
rsync --dry-run -rcn --out-format="%n" /a/ root@192.168.183.157:/a |grep -v "/$"|xargs -I{} rsync -R /a/./{} root@192.168.183.157:/b
#以上是一条命令,注意不是两条,在得瑞的实际项目中,-c这个参数不能用,用了卡死
完整备份
#!/bin/bash
allback=$(date "+%Y-%m-%d完整备份")
rsync --Aa --delete /share/ /mnt/bak/backup_all/ 1>/dev/null 2>&1
echo $allback"完成" >> /backup_all_qunhui/backupsharetoqunhui.log
增量备份
#!/bin/bash
increasingback=$(date "+%Y-%m-%d增量备份")
rsync --dry-run -r --out-format="%n" /share/ /mnt/bak/backup_all/ | grep -v "/$" | xargs -I{} rsync -R /share/./{} /mnt/bak/increasing/$increasingback/ 1>/dev/null 2>&1
echo $increasingback"完成" >> /backup_all_qunhui/backupsharetoqunhui.log
删除增量
#!/bin/bash
find /mnt/bak/increasing/ -name `date -d "30 days ago" "+%Y-%m-%d"增量备份` -exec rm -rf {} \; 1>/dev/null 2>&1
LVM缩减现有分区,将缩减容量挂载到新分区(缩减data(/home)到root的LV中,以下仅针对EXT4分区之间)
Umount /home 卸载即将缩减的分区
Fuser –m /home (系统繁忙无法卸载/home分区使用如下命令,可以查看进程ID)
Kill -9 home的进程ID
E2fsck -f /dev/mapper/vg_lvm-data (运行)
Resize2fs –p /dev/mapper/vg_lvm-data 5G 将data缩减到5G
Mount /home 挂载/home目录
Df –h 查看挂载状态
lvreduce -L 5G /dev/mapper/vg_lvm-data 将/home的lv缩减到5G并把剩余容量放回公共区域
vgdisplay 查看Free PE / Size剩余容量
lvextend -L +4.00G /dev/mapper/vg_lvm-root 像增长LV添加可用容量
resize2fs -p /dev/mapper/vg_lvm-root 重设增长LV的容量
df –h 查看新容量
所遇到的问题
1、在卸载/home目录的时候失败
可先执行如下fuser –m 命令,然后再umount即可:
[root@CentOS-78 /]# fuser -m /home
[root@CentOS-78 /]#
2、设定完lv_home的大小,再次mount该分区时,发现用df命令无法看到给分区,此时只要在mount一次即可
3、在设定lv_root的大小时,不要把Free PE / Size的空间全部都用上,这很可能会出现Free PE空间不足的现象,建议保留一点Free PE的空间
特别注意的是:
resize2fs命令 针对的是ext2、ext3、ext4文件系统
xfs_growfs命令 针对的是xfs文件系统
------------------------------------------------------------------------------------------
1)ext2/ext3/ext4文件系统的调整命令是resize2fs(增大和减小都支持)
1 2 3 4 5 | lvextend -L 120G /dev/mapper/centos-home //增大至120G lvextend -L +20G /dev/mapper/centos-home //增加20G lvreduce -L 50G /dev/mapper/centos-home //减小至50G lvreduce -L -8G /dev/mapper/centos-home //减小8G resize2fs /dev/mapper/centos-home //执行调整 |
2)xfs文件系统的调整命令是xfs_growfs(只支持增大)
1 2 3 4 5 6 | lvextend -L 120G /dev/mapper/centos-home //增大至120G lvextend -L +20G /dev/mapper/centos-home //增加20G xfs_growfs /dev/mapper/centos-home //执行调整
就是说:xfs文件系统只支持增大分区空间的情况,不支持减小的情况(切记!!!!!)。 硬要减小的话,只能在减小后将逻辑分区重新通过mkfs.xfs命令重新格式化才能挂载上,这样的话这个逻辑分区上原来的数据就丢失了。如果有重要文件,那就歇菜喽~~~ |
Xfs文件系统缩减与增加
lvreduce -L 2G /dev/mapper/vg_lvm-data 将lvdata减低到2G,空闲出8G
vgs 查看空余空间
lvcreate -L 8G -n /dev/mapper/vg_lvm-aaaa /dev/mapper/vg_lvm 在vg中创建新的lv名字为aaaa,并将8G空间赋予aaaa
然后发现不能挂载/home目录了(home目录是data这个lv)
然后执行了mkfs.xfs /dev/mapper/vg_lvm-data系统提示是xfs文件系统需要使用mkfs.xfs –f /mapper/vg_lvm-data,使用后成功格式化data这个lv,然后挂载/home这个目录成功,但是/home中之前的文件全都没有了
从VG中移除PV,未能完成,该pv挂载在/目录下,重启后/目录损坏
查看想要移除的PV大小
Lvreduce –L -5G /dev/mapper/vg_smb2_LV1 从PV所在的LV上先移除大于PV的空间
Vgreduce vg_smb2 /dev/sdb1 将sdb1从卷组VG移除
Pvremove /dev/sdb1 删除PV
创建lv并命名
- 创建PV pvs pvcreate
- 创建VG vgs vgcreate
- 创建LV lvs lvcreate
- 测试LV捆绑
1.在名为vg_newlvm的卷组中创建15G大小的逻辑卷:
1.[root@centos7 ~]# lvcreate -L 15G vg_newlvm
2.在名为vgnewlvm的卷组中创建大小为2500MB的逻辑卷,并命名为centos7newvol,这样就创建了块设备/dev/vgnewlvm/centos7newvol:
1.[root@centos7 ~]# lvcreate -L 2500-n centos7_newvol vg_newlvm
3.可以使用lvcreate命令的参数-l来指定逻辑卷扩展的大小。也可以使用这个参数以卷组的大小百分比来扩展逻辑卷。这下列的命令创建了centos7newvol卷组的50%大小的逻辑卷vgnewlvm:
1.[root@centos7 ~]# lvcreate -l 50%VG -n centos7_newvol vg_newlvm
4.使用卷组剩下的所有空间创建逻辑卷
1.[root@centos7 ~]# lvcreate --name centos7newvol -l 100%FREE vgnewlvm
新挂硬盘
Fdisk –l 可以查看现有分区
Ll /dev/disk/by-path 可以查看所有硬盘设备
Fdisk /dev/sdb 格式化分区表
fdisk选中/dev/sdb 输入m所有基本选项都出现,输入n新建分区
Command (m for help): n
Command action
e extended
p primary partition (1-4)
有扩展分区和主分区,逻辑分区在扩展分区中建立。注意到括号中的1-4,最多只能建四个主分区(包括扩展分区)。先建一个主分区:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p #建主分区
Partition number (1-4): 1 #分区号为1
First cylinder (1-2610, default 1): #直接回车默认从第一个柱面开始划分
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G #加空间大小,这里有很多种选择:+后面单位可以接M,G,K(记得要大写)表示划分你所加的空间,也可以是柱面数。不管怎样都不能超过该磁盘剩余的空间否则无效。
Command (m for help): p #分好后查看分区信息,刚所做的所有一目了然
格式化硬盘发现没有mkfs中没有xfs
安装yum -y install xfsprogs
转换超过2T的硬盘为GPT格式
# parted /dev/sdb
GNU Parted 1.8.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
将MBR磁盘格式化为GPT
(parted) mkpart primary 0 100
划分一个起始位置为0大小为100M的主分区
(parted) mkpart primary 100 200
划分一个起始位置为100M大小为100M的主分区
(parted) mkpart primary 0 -1
划分所有空间到一个分区,忽略/Ignore/放弃/Cancel? i
(parted) print
打印当前分区
(parted) quit
可能还会用到的一些命令
(parted) mklable msdos
如果要反过来.将GPT磁盘转化为MBR磁盘
在这样分完分区后,还要使用mkfs来进行格式化
分区表设置为GPT后使用mkfs格式化分区
Mkfs.xfs /dev/sdb1
Flashcache rpm安装
rpm安装 具体看网页详细信息
http://elrepo.org/
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
yum install flashcache-utils
yum install kmod-flashcache
格式化两块硬盘sdb1与sdc1
开机自动加载配置模块
vim /etc/sysconfig/modules/flashcache.modules
#! /bin/sh
/sbin/modinfo -F filename flashcache > /dev/null 2>&1
if [ $? -eq 0 ]; then
/sbin/modprobe flashcache
fi
chmod +x /etc/sysconfig/modules/flashcache.modules
手动加载配置模块
modprobe flashcache
查询是否加载成功
lsmod | grep flashcache
删除flashcache模块
rmmod flashcache
创建flashcache
SSD:/dev/sdb1 (实际环境应把固态硬盘做成lvm以便于扩展)
HDD: /dev/sdc1(实际环境应把固态硬盘做成lvm以便于扩展)
将sdb1设置为lvm-cache
将sdc1设置为lvm-data
创建flashcache
Flashcache_create –p back –b 4k cachedev /dev/mapper/vgssd-cache /dev/mapper/vghdd-data
销毁Flashcache
flashcache_destroy /dev/sdc
这种方式删除writeback模式的flashcache时会将SSD上的所有数据删除包括脏数据
建议使用dmsetup命令(device-mapper软件包)删除,会自动将脏数据写入磁盘
dmsetup remove cachedev
挂载flashcache到share目录
Mount /dev/mapper/cachedev /share
开机自动加载已创建的缓存设备及挂载
cd /usr/lib/ocf/resource.d/
ll
cp flashcache /etc/init.d/
chmod +x /etc/init.d/flashcache
编辑flashcache并加入以下内容(特别注意,这个脚本的注释如果不写的话并不能chkconfig启动!!!!)
#!/bin/bash
#
# flashcache Init Script to manage cachedev loads
#
# chkconfig: 345 9 98
# description: Flashcache Management
# Flashcache options
# modify this before using this init script
SSD_DISK= /dev/sdc1
BACKEND_DISK= /dev/sdb1
CACHEDEV_NAME= cachedev
MOUNTPOINT= 挂载路径
FLASHCACHE_NAME= 设置一个flashcache名称
# Just a check, to validate the above params are set
[ -z "$SSD_DISK" ] && exit 10
[ -z "$BACKEND_DISK" ] && exit 11
[ -z "$CACHEDEV_NAME" ] && exit 12
[ -z "$MOUNTPOINT" ] && exit 13
[ -z "$FLASHCACHE_NAME" ] && exit 14
# Source function library.
. /etc/rc.d/init.d/functions
#globals
DMSETUP=`/usr/bin/which dmsetup`
SERVICE=flashcache
FLASHCACHE_LOAD=/sbin/flashcache_load
SUBSYS_LOCK=/var/lock/subsys/$SERVICE
RETVAL=0
start() {
echo "Starting Flashcache..."
#Load the module
/sbin/modprobe flashcache
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "Module Load Error: flashcache. Exited with status - $RETVAL"
exit $RETVAL
fi
#flashcache_load the cachedev
$FLASHCACHE_LOAD $SSD_DISK $CACHEDEV_NAME
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "Failed: flashcache_load $SSD_DISK $CACHEDEV_NAME"
exit $RETVAL;
fi
#mount
if [ -L /dev/mapper/$CACHEDEV_NAME ]; then
/bin/mount /dev/mapper/$CACHEDEV_NAME $MOUNTPOINT
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "Mount Failed: /dev/mapper/$CACHEDEV_NAME to $MOUNTPOINT"
exit $RETVAL
fi
else
echo "Not Found: /dev/mapper/$CACHEDEV_NAME"
exit 1
fi
#lock subsys
touch $SUBSYS_LOCK
}
stop() {
#unmount
/bin/umount $MOUNTPOINT
#check for force flag
FLAG=0
[ "$1" == '--force' ] && FLAG=1
/sbin/sysctl -w dev.flashcache.$FLASHCACHE_NAME.fast_remove=$FLAG
echo "Flushing flashcache: Flushes to $BACKEND_DISK"
$DMSETUP remove $CACHEDEV_NAME
#unlock subsys
rm -f $SUBSYS_LOCK
}
status() {
[ -f $SUBSYS_LOCK ] && echo "Flashcache status: loaded" || echo "Flashcache status: NOT loaded";
$DMSETUP status $CACHEDEV_NAME
exit $?
}
case $1 in
start)
start
;;
stop)
stop
;;
status)
status
;;
forcestop)
stop --force
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0
添加flashcache进入开机启动
Chkconfig --add /etc/init.d/flashcache
Chkconfig flashcache on
监控flashcache
1、flashcache 卷的错误信息报告在/proc/flashcache/<cache name>/flashcache_errors 里
2、flashcache 卷的统计信息报告在 /proc/flashcache/<cache name>/flashcache_stats 里
3、Cache统计信息
可以使用 “dmsetup status cachename”命令来查询cache的统计信息。 “dmsetup table cachename”命令可以dumps出来achce相关的统计信息
4、用flashstat监控cachedev使用情况
1 | cp /root/flashcache-master/utils/flashstat /bin/ |
八、用fio压测sas盘