分类 Linux 下的文章

基本

MB 是在会话层(session layer)和表示层(presentation layer)以及小部分应用层(application layer)的协议。SMB使用了NetBIOS的应用程序接口 (Application Program Interface,简称API),一般端口使用为139,445。

SMB协议

  • SMB(服务信息模块)协议是一个高层协议、它提供了在网络上的不同计算机之间共享文
    件,打印机和不同通信资料的手段
  • SMB使用NetBIOS API实现面向连接的协议,该协议为Window是客户程序和服务提供了一个
    通过虚链路按照请求——响应方式进行通信的机制
  • SMB的工作原理就是让NetBIOS与SMB协议运行在TCP/IP上,并且使用NetBIOS的名字解释
    器让Linux机器可以在Windows的网络邻居中被看到,从而在Windows的网络邻居中被看到,从而和Windows9x/NT/200X进行相互沟通,共享文件和打印机

CIFS:

  • 通用网际文件系统是微软服务器消息块协议(SMB)的增强版
  • 提供计算机用户在企业内部网和因特网上共享文件的标准方法
  • CIFS在TCP/IP运行,利用英特网上的全球域名服务系统(DNS)增强其可扩展性,同时为因
    特网上普遍存在的慢速拨号连接优化

NetBIOS协议

  • NetBIOS是Network Basic Input/Output System的简称,网络基本输入输出协议。协议,一般指能用于局域网通信的一套API,是由IBM公司开发的。主要作用,通过NetBIOS协议获得计算机名称,然后把计算机名称解析为对应的IP地址

    配置及概念

相关配置

/etc/sysconfig/samba:用于设置守护进程的启动参数。 
/etc/samba/smb.conf:主配置文件。 
/etc/samba/smbusers:用于映射Linux用户和Windows用户。 
/etc/samba/lmhosts:用于设置NetBIOS名字与IP地址的对应关系表。
/etc/pam.d/samba:Samba的PAM配置文件 
/etc/rc.d/init.d/smb:Samba的INIT启动脚本

相关工具

服务端工具: 
  /usr/bin/smbpasswd:用于设置Samba用户账号及口令 
  /usr/bin/testparm:用于检测配置文件的正确性 
  /usr/bin/smbstatus:用于查找网络中的Samba服务器 

客户端工具: 
  /usr/bin/findsmb:用于查找网络中的Samba服务器 
  /usr/bin/smbclient:Linux下的Samba客户端 
  /usr/bin/smbget:基于SMB/CIFS的类似于wget的下载工具 
  /usr/bin/smbtar:类似于tar的归档工具,用于将SMB/CIFS的共享打包备份到Linux主机

安全等级

Samba安全等级: 
  User:由本地Samba服务器负责账户验证,使用smbpasswd 设置账号(默认的安全等级) 
  Domain:账户验证账户及口令的工作由其他的Windows,或Samba域控制器负责,需要使用“password server”指令指定验证服务器 
  Ads:验证账户及口令的工作由支持Kerberos验证的Windows活动目录服务器负责。需要使用“realm”指令指定Kerberos领域 
  Share:匿名共享 
  
Samba账户及口令数据库 
1.Samba使用的账户文件/数据库是与系统账户文件分离的 
2.当设置了user的安全等级后(默认),将由本地系统对问Samba共享资源的用户进行认证 
3.用.tdb格式的口令数据库,初始情况下口令数据库文件并不存在 
4.为了创建Samba的口令数据库文件,管理员可以在添加Samba账户的同时创建它 
5.管理员可以使用smbpasswd命令配置Samba账号并设置其口令

主配置文件

avatar

实验

通过用户名设置共享目录

共享销售部 /xsb 这个目录,只有知道用户名和密码的同时可以看这个共享,在/xsb目录中存放销售部重
要的数据。需要将security设置为user级别,这样可以启用samba身份验证机制,然后在共享目录 /xsb
下设置valid user 字段,配置只允许销售部员工能访问这个共享目录


[root@server1 ~]# vim /etc/samba/smb.conf 
[global]
    workgroup = SAMBA 
    security = user 
    passdb backend = smbpasswd
    smb passwd file = /etc/samba/smbpasswd
    # passdb backend = tdbsam

[root@server1 ~]# systemctl restart smb.service
重启后,会自动生成/etc/samba/smbpasswd文件

添加用户和组,该用户禁止登录,不生成登录目录

[root@server1 ~]# groupadd xsb
[root@server1 ~]# useradd -g xsb -M -s /sbin/nologin xsb001
[root@server1 ~]# useradd -g xsb -M -s /sbin/nologin xsb002
[root@server1 ~]# useradd jsb001

添加对应的samba账户

[root@server1 ~]# smbpasswd -a xsb001
New SMB password:
Retype new SMB password:
Added user xsb001.
[root@server1 ~]# smbpasswd -a xsb002
New SMB password:
Retype new SMB password:
Added user xsb002.

修改配置文件,重启服务

[root@server1 ~]# mkdir /xsb [root@server1 ~]# cp /etc/hosts /xsb [root@server1 ~]# vim /etc/samba/smb.conf 
[xsb] 
    comment = Xsb Data 
    path = /xsb 
    valid user = xsb01,xsb02


[root@server1 ~]# systemctl restart smb.service
[root@server1 ~]# systemctl restart nmb.service
#nmb是做ip与主机名映射用的

检查139和445

[root@server1 ~]# ss -tanl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN      0      50                *:139                           *:*
LISTEN      0      128               *:22                            *:*
LISTEN      0      100       127.0.0.1:25                            *:*
LISTEN      0      50                *:445                           *:*
LISTEN      0      50               :::139                          :::*
LISTEN      0      128              :::22                           :::*
LISTEN      0      100             ::1:25                           :::*
LISTEN      0      50               :::445                          :::*

验证

linux

[root@server1 ~]# yum install samba-client -y


[root@server1 ~]# smbclient -L //192.168.226.148/xsb -U xsb001
Enter SAMBA\xsb001's password:

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        xsb             Disk      Xsb Data
        IPC$            IPC       IPC Service (Samba 4.10.16)
        xsb001          Disk      Home Directories
Reconnecting with SMB1 for workgroup listing.

windows

win+r 输入\\ip

dos窗口用net user * /delete可以清空用户缓存信息

avatar

巨慢无比....一时半会儿不出来别急

挂载

[root@server1 ~]# mkdir /xsbdata
[root@server1 ~]# yum install cifs-utils -y
vim auth.smb

username=某用户
password=某用户smb密码

vim /etc/fstab
//ip/xsb /xsbdata cifs defaults,credentials=/root/auth.smb 0 0

[root@server1 ~]# mount -a
[root@server1 ~]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root 17811456 1267400 16544056    8% /
devtmpfs                  485792       0   485792    0% /dev
tmpfs                     497960       0   497960    0% /dev/shm
tmpfs                     497960    7852   490108    2% /run
tmpfs                     497960       0   497960    0% /sys/fs/cgroup
/dev/sda1                1038336  135376   902960   14% /boot
tmpfs                      99596       0    99596    0% /run/user/0
//192.168.226.148/xsb   17811456 1267400 16544056    8% /xsbdata

不同账户访问不同目录

创建三个无家目录不能登陆的用户

[root@server1 ~]# useradd -s /sbin/nologin -r smb1
[root@server1 ~]# useradd -s /sbin/nologin -r smb2
[root@server1 ~]# useradd -s /sbin/nologin -r smb3
[root@server1 ~]# smbpasswd -a smb1
New SMB password:
Retype new SMB password:
Added user smb1.
[root@server1 ~]# smbpasswd -a smb2
New SMB password:
Retype new SMB password:
Added user smb2.
[root@server1 ~]# smbpasswd -a smb3
New SMB password:
Retype new SMB password:
Added user smb3.

查看smb账号

[root@server1 ~]# pdbedit -L
xsb001:1000:
xsb002:1001:
smb1:997:
smb2:996:
smb3:995:

修改配置文件

[root@server1 ~]# vim /etc/samba/smb.conf
在workgroup下加一行
config file= /etc/samba/conf.d/%U 说明:%U表示用户名 

[share] #共享文件夹在最后添加 
Path=/data/dir #指定分享文件夹的路径 
Read only= NO #不仅仅是只读 
Guest ok = yes 
write list=@admin 

创建目录,对smb1和smb2创建单独的配置文件


[root@server1 ~]# mkdir /data
[root@server1 ~]# mkdir /data/dir
[root@server1 ~]# mkdir /data/dir1
[root@server1 ~]# mkdir /data/dir2
[root@server1 ~]# mkdir /data/dir/share.txt
[root@server1 ~]# mkdir /data/dir1/smb1.txt
[root@server1 ~]# mkdir /data/dir2/smb2.txt


[root@server1 ~]# mkdir /etc/samba/conf.d

[root@server1 ~]# vim /etc/samba/conf.d/smb1
[share] 
Path=/data/dir1
Read only= NO 等价于writable = yes 
Create mask=0644

[root@server1 conf.d]# vim /etc/samba/conf.d/smb2
[share] 
path=/data/dir2

[root@server1 conf.d]# systemctl restart smb nmb

在客户机上测试

[root@server2 ~]# yum -y install samba-client samba-common cifs-rtils samba

[root@server2 ~]# smbclient //192.168.226.148/share -U smb1%123
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue Jan 18 15:41:33 2022
  ..                                  D        0  Tue Jan 18 15:41:15 2022
  smb1.txt                            D        0  Tue Jan 18 15:41:33 2022

                17811456 blocks of size 1024. 16543616 blocks available
smb: \> exit
[root@server2 ~]# smbclient //192.168.226.148/share -U smb2%123
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue Jan 18 15:41:38 2022
  ..                                  D        0  Tue Jan 18 15:41:15 2022
  smb2.txt                            D        0  Tue Jan 18 15:41:38 2022

                17811456 blocks of size 1024. 16543616 blocks available
smb: \> exit
[root@server2 ~]# smbclient //192.168.226.148/share -U smb3%123
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue Jan 18 15:41:24 2022
  ..                                  D        0  Tue Jan 18 15:41:15 2022
  share.txt                           D        0  Tue Jan 18 15:41:24 2022

                17811456 blocks of size 1024. 16543596 blocks available
smb: \> exit

基础

NFS,网络文件系统,允许网络中的计算机之间通过网络共享资源,当将NFS主机分享的目录挂载到本地时,本地可以读写NFS服务器上的文件。

nfs本身没有网络传输的功能,而是基于远程过程调用协议实现

RPC:远程过程调用,当两台异地服务器AB,A想要调用B上应用提供的函数,由于不在同一个内存空间,不能直接调用,而是要通过网络来表达调用的语义和传达调用的数据。他可为遵从RPC协议应用层协议提供端口注册功能,工作于会话层,使用111端口来监听客户端的请求

  • 基于RPC的服务在启动时向portmapper注册端口
  • 客户端联系服务端portmapper询问端口号
  • portmapper告诉客户端端口号
  • 客户端访问该端口
  • 服务端响应请求

avatar

实验

挂载

关防火墙和selinux
webserver端安装web服务

yum install httpd -y
systemctl start httpd

NAS端

yum install -y nfs-utils
mkdir /webdata
vim /webdata/index.html

vim /etc/exports
/webdata ip/24(rw)

systemctl start nfs-server.service
systemctl enable nfs-server.service

web端查看共享

yum install -y nfs-untils
showmount -e ip

web挂载

mount -t nfs ip:/webdata /var/www/html
df

在浏览器测试访问即可

自动挂载

服务器


[root@server1 ~]# mkdir /data
[root@server1 ~]# useradd -d /data/user user
[root@server1 ~]# id user
uid=1000(user) gid=1000(user) 组=1000(user)
[root@server1 ~]# yum install -y nfs-utils.x86_64


[root@server1 ~]# vim /etc/exports.d/test.exports
/data/user  *(rw,anonuid=1000,anongid=1000,all_squash)


[root@server1 ~]# systemctl restart nfs-server.service
[root@server1 ~]# cd /data/user/
[root@server1 user]# touch 123

客户端

[root@server1 ~]# yum install nfs-utils.x86_64

[root@server1 ~]# showmount -e 192.168.226.148
Export list for 192.168.226.148:
/data/user *
[root@server1 ~]# mkdir /data
[root@server1 ~]# mount -t nfs 192.168.226.148:/data/user /data
[root@server1 ~]# df -Th
文件系统                   类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root    xfs        17G  1.2G   16G    7% /
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/sda1                  xfs      1014M  133M  882M   14% /boot
tmpfs                      tmpfs      98M     0   98M    0% /run/user/0
192.168.226.148:/data/user nfs4       17G  1.2G   16G    7% /data
[root@server1 ~]# umount /data
[root@server1 ~]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root 17811456 1232320 16579136    7% /
devtmpfs                  485792       0   485792    0% /dev
tmpfs                     497960       0   497960    0% /dev/shm
tmpfs                     497960    7816   490144    2% /run
tmpfs                     497960       0   497960    0% /sys/fs/cgroup
/dev/sda1                1038336  135376   902960   14% /boot
tmpfs                      99596       0    99596    0% /run/user/0
[root@server1 ~]# yum install autofs


[root@server1 ~]# vim /etc/auto.master
/data /etc/auto.home

[root@server1 ~]# vim /etc/auto.home
*  -fstype=nfs 192.168.226.148:/data/user


[root@server1 ~]# systemctl restart autofs
[root@server1 ~]# useradd -d /data/user -u 1000 user
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
[root@server1 ~]# ls /data/
user
[root@server1 ~]# su - user
[user@server1 ~]$ ls
123

rpm

常用指令

-a:查询所有安装包
‐f:查询指定的文件由哪个程序包安装生成
-h, --hash   软件包安装的时候列出哈希标记 
‐i:information
-v, --verbose    提供更多的详细信息输出
‐l:查看指定的程序文件安装后生成的所有文件
安装RPMs
rpm -ivh packagename
升级RPMs
rpm -Uvh packagename
移除RPMS
rpm -ev packagename
查看指定包是否安装
rpm -q 包名
rpm -qa | grep 包名
查找指定包安装的文件
rpm -ql 包名
查询包的info
rpm -qi 包名

源码包

  1. ./configure [--]

    1. 指定安装路径,例如 --prefix=/usr/local/nginx
    2. 启用或禁用某些功能,例如 --enable-ssl 、 --disable-filter 、 --with- http_ssl_module
    3. 和其他软件关联,例如 --with-pcre
    4. 检查安装环境
  2. make,可以用-j用多颗cpu编译
  3. make install

yum

基于rpm包管理,能够从指定服务器自动下载rpm包并安装,自动解决依赖关系

常用指令

查看可用仓库

yum repolist #查看默认的源
yum clean all #清空缓存及其他文件
yum makecache #重建缓存

软件包安装

yum -y install 包名/本地包名/url #-y是默认确认的意思,可以不加
yum -y reinstall 包名
yum update 包名 #不加包名就是更新所有软件
yum list #列出所有可安装的软件清单
yum list/info 包名 #查询包是否群在
yum remove 包名#删除
yum search 指令名 #查找软件包
yum grouplist #安装环境,如图形桌面等

历史

yum history #查看历史记录
yum history info id #列出某次详细详细
yum history undo id #撤销某次更改

国内yum源:

163:http://mirrors.163.com/.help/centos.html
中科大:https://mirrors.ustc.edu.cn/help/centos.html
阿里:https://developer.aliyun.com/mirror/
清华:https://mirror.tuna.tsinghua.edu.cn/help/centos/

实验

yum换源

查看默认源

[root@server1 ~]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.njupt.edu.cn
 * extras: mirrors.cn99.com
 * updates: mirrors.cn99.com
源标识                                  源名称                                   状态
!base/7/x86_64                          CentOS-7 - Base                          10,072
!extras/7/x86_64                        CentOS-7 - Extras                           500
!updates/7/x86_64                       CentOS-7 - Updates                        3,252

下载对应源的CentOS-Base.repo,最后再生成缓存

[root@server1 yum.repos.d]# yum makecache
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
base                                                            | 3.6 kB  00:00:00
extras                                                          | 2.9 kB  00:00:00
updates                                                         | 2.9 kB  00:00:00
(1/7): extras/7/x86_64/other_db                                 | 145 kB  00:00:01
(2/7): extras/7/x86_64/filelists_db                             | 259 kB  00:00:01
(3/7): base/7/x86_64/other_db                                   | 2.6 MB  00:00:05
(4/7): base/7/x86_64/filelists_db                               | 7.2 MB  00:00:08
(5/7): updates/7/x86_64/filelists_db                            | 7.0 MB  00:00:09
(6/7): updates/7/x86_64/other_db                                | 918 kB  00:00:00
(7/7): updates/7/x86_64/primary_db                              |  13 MB  00:00:09
元数据缓存已建立

通过ftp提供update源

配置防火墙、关selinux、准备FTP

 firewall-cmd --permanent --add-service=ftp
 firewall-cmd --reload 12

 setenforce 0
 sed -i "s/=enforcing/=disabled/g" /etc/sysconfig/selinux 12

 yum -y install vsftpd
 systemctl start vsftpd
 sysemctl enable vsftpd
#开启yum缓存
vim /etc/yum.conf
keepcache=1

yum update -y

mkdir /var/ftp/update

find /var/cache/yum/x86_64/7/ -iname "*.rpm" |xargs -i  cp {} /var/ftp/update/

yum -y install createrepo
#创建软件仓库
createrepo /var/ftp/update

avatar
avatar

RAID

基础概念

RAID0

无冗余,至少需要两块
avatar

RAID1

使用两块磁盘呈现完全镜像,拥有容错能力,成本高
avatar

RAID5

校验数据分布在整列的所有磁盘上,有扩展性,当一块磁盘损坏时,可以根据别的同一条带上的其他数据块和对应的校验数据来重建损坏的数据,是较常见的数据保护方案
avatar

RAID10&RAID01

avatar

实验

avatar

RAID10

添加四块磁盘
avatar

安装mdadm

[root@server1 ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: partition table exists on /dev/sdb
mdadm: partition table exists on /dev/sdb but will be lost or
       meaningless after creating array
mdadm: partition table exists on /dev/sdc
mdadm: partition table exists on /dev/sdc but will be lost or
       meaningless after creating array
mdadm: partition table exists on /dev/sdd
mdadm: partition table exists on /dev/sdd but will be lost or
       meaningless after creating array
mdadm: partition table exists on /dev/sde
mdadm: partition table exists on /dev/sde but will be lost or
       meaningless after creating array
mdadm: size set to 20954112K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.


# 格式化
mkfs.ext4 /dev/md0

#挂载

[root@server1 ~]# mkdir /raid10
[root@server1 ~]# mount /dev/md0 /raid10/
[root@server1 ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        17G  1.2G   16G    7% /
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/sda1               xfs      1014M  133M  882M   14% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/md0                ext4       40G   49M   38G    1% /raid10

# 查看挂载信息,写入文件永久挂载
[root@server1 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Fri Jan 14 15:10:31 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Fri Jan 14 15:13:28 2022
             State : clean
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : server1:0  (local to host server1)
              UUID : 3d044cfd:cfce3ec6:bd588e7a:3ef0a55e
            Events : 27

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde


echo "/dev/md0 /rain10 ext4 defaults 0 0" >> /etc/fstab

损坏及修复

# 模拟损坏
[root@server1 ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@server1 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Fri Jan 14 15:10:31 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Fri Jan 14 15:17:27 2022
             State : clean, degraded
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : server1:0  (local to host server1)
              UUID : 3d044cfd:cfce3ec6:bd588e7a:3ef0a55e
            Events : 29

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde

       0       8       16        -      faulty   /dev/sdb


# 假装坏哩,买了新的盘关机换好后重启,然后我们把更换的盘重新挂载上去

[root@server1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE   MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part   /boot
└─sda2            8:2    0   19G  0 part
  ├─centos-root 253:0    0   17G  0 lvm    /
  └─centos-swap 253:1    0    2G  0 lvm    [SWAP]
sdb               8:16   0   20G  0 disk
sdc               8:32   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /rain10
sdd               8:48   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /rain10
sde               8:64   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /rain10
sr0              11:0    1  918M  0 rom
[root@server1 ~]# umount /dev/md0
[root@server1 ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@server1 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Fri Jan 14 15:10:31 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Fri Jan 14 15:23:16 2022
             State : clean, degraded, recovering
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 16% complete

              Name : server1:0  (local to host server1)
              UUID : 3d044cfd:cfce3ec6:bd588e7a:3ef0a55e
            Events : 39

    Number   Major   Minor   RaidDevice State
       4       8       16        0      spare rebuilding   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde

raid5+备份

创建RAID5至少要三块硬盘,外加一块备份硬盘,一共4块

[root@server1 ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

[root@server1 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Sun Jan 16 08:57:35 2022
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sun Jan 16 08:58:34 2022
             State : clean, degraded, recovering
    Active Devices : 2
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 2

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 61% complete

              Name : server1:0  (local to host server1)
              UUID : 181d0cf3:6dbae3e6:d6ab8f42:2653f86c
            Events : 10

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      spare rebuilding   /dev/sdd

       3       8       64        -      spare   /dev/sde

[root@server1 ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477056 blocks
523852 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2157969408
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

# 注意我此处用的是临时挂载,长期用fstab
[root@server1 ~]# mkdir /mnt/raid5
[root@server1 ~]# mount /dev/md0 /mnt/raid5/

模拟坏了一块的情形

[root@server1 ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@server1 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Sun Jan 16 08:57:35 2022
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sun Jan 16 09:02:57 2022
             State : clean, degraded, recovering
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 24% complete

              Name : server1:0  (local to host server1)
              UUID : 181d0cf3:6dbae3e6:d6ab8f42:2653f86c
            Events : 25

    Number   Major   Minor   RaidDevice State
       3       8       64        0      spare rebuilding   /dev/sde
       1       8       32        1      active sync   /dev/sdc
       4       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty   /dev/sdb

LVM

avatar

avatar

物理卷:物理磁盘\分区\磁盘整列

卷组:由物理卷构成,一个卷组可以包含多个物理卷,并且创建后依然可以向其中添加物理卷

逻辑卷:在卷组上利用空闲资源建立起来的卷组,是一种虚拟磁盘

案例

创建逻辑卷、扩容逻辑卷、缩容逻辑卷、拍快照再恢复快照、删除逻辑卷

创建

添加两块硬盘,让他支持LVM技术

[root@server1 ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
[root@server1 ~]# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.

把两块硬盘打包成一个卷组,或者使用分区也行,但是不能格式化

[root@server1 ~]# vgcreate vg1 /dev/sdb /dev/sdc
  Volume group "vg1" successfully created
[root@server1 ~]# vgdisplay
  --- Volume group ---
  VG Name               centos
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <19.00 GiB
  PE Size               4.00 MiB
  Total PE              4863
  Alloc PE / Size       4863 / <19.00 GiB
  Free  PE / Size       0 / 0
  VG UUID               zyNdps-Jtez-2bvl-LvtC-8EKc-GN8U-a5hEPd

  --- Volume group ---
  VG Name               vg1
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               39.99 GiB
  PE Size               4.00 MiB
  Total PE              10238
  Alloc PE / Size       0 / 0
  Free  PE / Size       10238 / 39.99 GiB
  VG UUID               EYo89p-6UU4-vnMZ-mPYa-uh6h-tatV-NCK50L

切割逻辑卷设备

切割时有两种选择:

  1. -L,以容量为单位,如-L 100M
  2. -l,以基本单元个数为单位,一个基本单元默认4M
[root@server1 ~]# lvcreate -n v1 -L 150M vg1
  Rounding up size to full physical extent 152.00 MiB
  Logical volume "v1" created.
[root@server1 ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                EcfqJv-Y3c0-ZWpI-D51M-CrsE-zyll-p0QA9R
  LV Write Access        read/write
  LV Creation host, time localhost, 2022-01-12 10:04:09 +0800
  LV Status              available
  # open                 2
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                LF6tdh-zsUY-iWK3-I1FB-DKkS-Xu4S-hdc4st
  LV Write Access        read/write
  LV Creation host, time localhost, 2022-01-12 10:04:10 +0800
  LV Status              available
  # open                 1
  LV Size                <17.00 GiB
  Current LE             4351
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/vg1/v1
  LV Name                v1
  VG Name                vg1
  LV UUID                11j9V3-Ho6W-cmrr-23EM-PWJh-Qww5-adyf2u
  LV Write Access        read/write
  LV Creation host, time server1, 2022-01-14 18:38:46 +0800
  LV Status              available
  # open                 0
  LV Size                152.00 MiB
  Current LE             38
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

格式化逻辑卷,挂载

[root@server1 ~]# mkfs.ext4 /dev/vg
vg1/         vga_arbiter
[root@server1 ~]# mkfs.ext4 /dev/vg1/v1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
38912 inodes, 155648 blocks
7782 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33816576
19 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

[root@server1 mnt]# mount /dev/vg1/v1 v_1
[root@server1 mnt]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        17G  1.2G   16G    7% /
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/sda1               xfs      1014M  133M  882M   14% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/vg1-v1      ext4      144M  1.6M  132M    2% /mnt/v_1

扩容

Linux e2fsck命令用于检查使用 Linux ext2 档案系统的 partition 是否正常工作。

-f强制检查

resize2fs:调整没有挂载的ext系列文件系统的大小

#卸载,扩容
umount /dev/vg1/v1
[root@server1 mnt]# lvextend -L 300M /dev/vg1/v1
  Size of logical volume vg1/v1 changed from 152.00 MiB (38 extents) to 300.00 MiB (75 extents).
  Logical volume vg1/v1 successfully resized.

#检查完整性,调整文件系统大小
[root@server1 mnt]# e2fsck -f /dev/vg1/v1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/v1: 11/38912 files (0.0% non-contiguous), 10567/155648 blocks
[root@server1 mnt]# resize2fs /dev/vg1/v1
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/v1 to 307200 (1k) blocks.
The filesystem on /dev/vg1/v1 is now 307200 blocks long.

#重新挂载

[root@server1 mnt]# mount /dev/vg1/v1 /
bin/   dev/   home/  lib64/ mnt/   proc/  run/   srv/   tmp/   var/
boot/  etc/   lib/   media/ opt/   root/  sbin/  sys/   usr/
[root@server1 mnt]# mount /dev/vg1/v1 v_1
[root@server1 mnt]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        17G  1.2G   16G    7% /
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/sda1               xfs      1014M  133M  882M   14% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/vg1-v1      ext4      287M  2.1M  266M    1% /mnt/v_1

缩小

[root@server1 mnt]# umount /dev/vg1/v1
[root@server1 mnt]# e2fsck -f /dev/vg1/v1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/v1: 11/77824 files (0.0% non-contiguous), 15987/307200 blocks
[root@server1 mnt]# resize2fs /dev/vg1/v1 150M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/v1 to 153600 (1k) blocks.
The filesystem on /dev/vg1/v1 is now 153600 blocks long.

[root@server1 mnt]# lvreduce -L 150M /dev/vg1/v1
  Rounding size to boundary between physical extents: 152.00 MiB.
  WARNING: Reducing active logical volume to 152.00 MiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/v1? [y/n]: y
  Size of logical volume vg1/v1 changed from 300.00 MiB (75 extents) to 152.00 MiB (38 extents).
  Logical volume vg1/v1 successfully resized.
[root@server1 mnt]# mount /dev/vg1/v1 v_1
[root@server1 mnt]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        17G  1.2G   16G    7% /
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/sda1               xfs      1014M  133M  882M   14% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/vg1-v1      ext4      142M  1.6M  130M    2% /mnt/v_1

快照

写个文件作对比

[root@server1 mnt]# echo "hello world" >> v_1/1.txt
[root@server1 mnt]# ls -l v_1/
总用量 14
-rw-r--r--. 1 root root    12 1月  14 19:33 1.txt
drwx------. 2 root root 12288 1月  14 18:40 lost+found

-s创建快照

[root@server1 mnt]# lvcreate -L 150M -s -n KZ1 /dev/vg1/v1
  Rounding up size to full physical extent 152.00 MiB
  Logical volume "KZ1" created.
[root@server1 mnt]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                EcfqJv-Y3c0-ZWpI-D51M-CrsE-zyll-p0QA9R
  LV Write Access        read/write
  LV Creation host, time localhost, 2022-01-12 10:04:09 +0800
  LV Status              available
  # open                 2
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                LF6tdh-zsUY-iWK3-I1FB-DKkS-Xu4S-hdc4st
  LV Write Access        read/write
  LV Creation host, time localhost, 2022-01-12 10:04:10 +0800
  LV Status              available
  # open                 1
  LV Size                <17.00 GiB
  Current LE             4351
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

  --- Logical volume ---
  LV Path                /dev/vg1/v1
  LV Name                v1
  VG Name                vg1
  LV UUID                11j9V3-Ho6W-cmrr-23EM-PWJh-Qww5-adyf2u
  LV Write Access        read/write
  LV Creation host, time server1, 2022-01-14 18:38:46 +0800
  LV snapshot status     source of
                         KZ1 [active]
  LV Status              available
  # open                 1
  LV Size                152.00 MiB
  Current LE             38
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

  --- Logical volume ---
  LV Path                /dev/vg1/KZ1
  LV Name                KZ1
  VG Name                vg1
  LV UUID                XYTTPp-WpPS-F9Hq-qqzD-xUPJ-adpa-kkug2S
  LV Write Access        read/write
  LV Creation host, time server1, 2022-01-14 19:45:49 +0800
  LV snapshot status     active destination for v1
  LV Status              available
  # open                 0
  LV Size                152.00 MiB
  Current LE             38
  COW-table size         152.00 MiB
  COW-table LE           38
  Allocated to snapshot  0.01%
  Snapshot chunk size    4.00 KiB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:5

写入个大文件,发现快照卷的存储空间占用率上升了

[root@server1 mnt]# dd if=/dev/zero of=v_1/t1  count=1 bs=100M
记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,2.14811 秒,48.8 MB/秒
[root@server1 mnt]# lvdisplay

  --- Logical volume ---
  LV Path                /dev/vg1/KZ1
  LV Name                KZ1
  VG Name                vg1
  LV UUID                XYTTPp-WpPS-F9Hq-qqzD-xUPJ-adpa-kkug2S
  LV Write Access        read/write
  LV Creation host, time server1, 2022-01-14 19:45:49 +0800
  LV snapshot status     active destination for v1
  LV Status              available
  # open                 0
  LV Size                152.00 MiB
  Current LE             38
  COW-table size         152.00 MiB
  COW-table LE           38
  Allocated to snapshot  66.08%
  Snapshot chunk size    4.00 KiB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:5

恢复快照后,快照卷会自动删除,查看目录发现已经恢复原样

[root@server1 mnt]# umount /dev/vg1/v1
[root@server1 mnt]# lvconvert --merge /dev/vg1/KZ1
  Merging of volume vg1/KZ1 started.
  vg1/v1: Merged: 82.16%
  vg1/v1: Merged: 100.00%
[root@server1 mnt]# mount /dev/vg1/v1
[root@server1 mnt]# mount /dev/vg1/v1 v_1/
[root@server1 mnt]# ls v_1/
1.txt  lost+found

为何对原逻辑卷进行修改后快照占有会上升?因为这里采用的是写实拷贝技术,系统在创建快照的时候并不会直接把目标给复制一份,而是先放一个空的,也就是我们一开始看到快照占有非常小的原因,当数据发生修改时,快照才会记录修改部分的原始数据,当恢复快照时,系统会把快照和目标没有修改的部分相结合,得到目标拍摄快照时的状态

删除逻辑卷

[root@server1 mnt]# umount /dev/vg1/v1
[root@server1 mnt]# lvremove /dev/vg1/v1
Do you really want to remove active logical volume vg1/v1? [y/n]: y
  Logical volume "v1" successfully removed
[root@server1 mnt]# vgremove vg1
  Volume group "vg1" successfully removed
[root@server1 mnt]# pvremove /dev/sdb /dev/sdc
  Labels on physical volume "/dev/sdb" successfully wiped.
  Labels on physical volume "/dev/sdc" successfully wiped.

基础概念

一台服务器有多块硬盘,在/dev下,sd开头为物理设备,vd开头为虚拟设备,以[a..z]来命名不同设备,以[1..]命名不同分区,如sda,sdb1,sdb2,IDE设备则是以hd开头

硬盘的分区分为两种:基本分区和扩展分区,要么4基本分区,要么3基本分区+1扩展,扩展分区必须进行再分区才能使用

常用文件系统:ext4:ext3改进版,支持的存储容量高达1EB,且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高了读写效率。

当硬盘被格式化后,linux会创建一个硬盘地图superblock,记录文件系统的整体信息,包括inode/block的总量、使用量、剩余量、文件系统的格式与相关信息

inode:记录文件属性,一个文件使用一个inode,默认128字节,一个block占4B
block:用于存储数据

swap分区是通过在硬盘中预先划分一定空间,吧内存中暂不常使用的数据临时放在硬盘中,以腾出空间给别的更活跃的程序使用的技术

分区管理命令

lsblk:列出分区

[root@server1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    2G  0 disk
└─sdb1            8:17   0  500M  0 part /mnt/sdb1
sr0              11:0    1  918M  0 rom

df

-h:易读
-T:显示文件系统类型
[root@server1 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        17G  1.2G   16G    7% /
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/sda1               xfs      1014M  133M  882M   14% /boot
/dev/sdb1               ext4      477M  2.3M  445M    1% /mnt/sdb1
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0

fdisk:分区管理工具

fdisk 磁盘名
命令(输入 m 获取帮助):m
命令操作
   d   删除分区信息
   l   列出可用分区类型
   m   帮助
   n   添加分区
   p   打印分区信息
   q   不保存退出
   t   改变分区类型
   w   保存退出

fdisk只是暂时性的,需要保存才会写入

mkfs:建立文件系统

mkfs.系统 分区名

mount/umount:临时挂载、卸载

mount 磁盘 挂载点
-a:挂载所有/etc/fstab中定义的文件系统
-t:指定文件系统类型

umount 磁盘

/etc/fstab:永久挂载

/dev/device   mountpoint   type   rules   0   order

设备 挂载点 文件系统 规则 dump系统备份工具,0表示不备份 fsck检查顺序0不检查

规则:

    auto 开机自动挂载
    default 按照大多数永久文件系统的缺省值设置挂载定义
    noauto 开机不自动挂载
    nouser 只有超级用户可以挂载
    ro 按只读权限挂载
    rw 按可读可写权限挂载
    user 任何用户都可以挂载

挂载磁盘步骤

  1. 添加磁盘
  2. fdisk
  3. mkfs
  4. mount或者fstab

案例

永久挂载案例

添加磁盘,发现/dev下多了sdb

fdisk /dev/sdb
n
+500
p发现多了sdb1分区
w保存

mkfs.ext4 /dev/sdb1

blkid /dev/sdb1

vim /etc/fstab

UUID="8b838620-0b0d-4f78-b192-ed60958e7df6" /mnt/sdb1 ext4 defaults 0 0

重启后挂在依然存在
avatar

swap

[root@server1 ~]# umount /dev/sdb1
[root@server1 ~]# vim /etc/fstab #删除原本的挂载信息
[root@server1 ~]# mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old ext4 signature.
正在设置交换空间版本 1,大小 = 511996 KiB
无标签,UUID=f59a3855-f407-4e0c-a0b8-5b9d8fcf9ff2
[root@server1 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           972M         98M        730M        7.6M        143M        710M
Swap:          2.0G          0B        2.0G
[root@server1 ~]# swapon /dev/sdb1
[root@server1 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           972M         99M        729M        7.6M        143M        710M
Swap:          2.5G          0B        2.5G


vim /etc/fstab


/dev/sdb1 swap swap defaults 0 0

重启后再用free -h查看,发现多出的0.5g还在

vim /etc/fstab #删除刚才加入的那行
swapoff /dev/sdb1
再次查看已经成功卸载

磁盘容量配额

avatar

[root@server1 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (1026048-4194303,默认为 1026048):
将使用默认值 1026048
Last 扇区, +扇区 or +size{K,M,G} (1026048-4194303,默认为 4194303):+1G
分区 2 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc6750702

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     1026047      512000   83  Linux
/dev/sdb2         1026048     3123199     1048576   83  Linux

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。

# 准备好盘

partprobe #重新读取分区表

[root@server1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    2G  0 disk
├─sdb1            8:17   0  500M  0 part [SWAP]
└─sdb2            8:18   0    1G  0 part
sr0              11:0    1  918M  0 rom

# 格式化

[root@server1 ~]# mkfs.ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

# 创建挂载点

[root@server1 ~]# cd /mnt
[root@server1 mnt]# ll
总用量 0
drwxr-xr-x. 2 root root 6 1月  14 10:29 sdb1
[root@server1 mnt]# mkdir tmp
[root@server1 mnt]# mount /dev/sdb2 /mnt/tmp
[root@server1 mnt]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        17G  1.2G   16G    7% /
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/sda1               xfs      1014M  133M  882M   14% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/sdb2               ext4      976M  2.6M  907M    1% /mnt/tmp

# 创建组和指定家目录的用户
[root@server1 mnt]# groupadd usergrp
[root@server1 mnt]# useradd -g usergrp -b /mnt/tmp/ user1
useradd: cannot set SELinux context for home directory /mnt/tmp//user1
[root@server1 mnt]# ^C
[root@server1 mnt]# setenforce 0
[root@server1 mnt]# userdel -r user1
userdel: user1 邮件池 (/var/spool/mail/user1) 未找到
userdel:未找到 user1 的主目录“/mnt/tmp//user1”
[root@server1 mnt]# useradd -g usergrp -b /mnt/tmp/ user1
[root@server1 mnt]# useradd -g usergrp -b /mnt/tmp/ user2

# 查看挂载点是否支持quota,不支持重新挂载

[root@server1 mnt]# mount | grep tmp
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=485792k,nr_inodes=121448,mode=755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=99596k,mode=700)
/dev/sdb2 on /mnt/tmp type ext4 (rw,relatime,seclabel,data=ordered)
[root@server1 mnt]# mount -o remount,usrquota,grpquota /mnt/tmp/
[root@server1 mnt]# mount | grep tmp
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=485792k,nr_inodes=121448,mode=755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=99596k,mode=700)
/dev/sdb2 on /mnt/tmp type ext4 (rw,relatime,seclabel,quota,usrquota,grpquota,data=ordered)

# 确保开机自启quota

[root@server1 mnt]# tail -n 1 /etc/mtab >> /etc/fstab

#安装quota

yum install quota -y

# cd到对应目录

#开启

quotacheck -avug
quotaon -avug

# 配置
edquota -u user1
edquota -p user1 -u user2#复制配置

avatar

#修改宽限时间
[root@server1 tmp]# edquota -t

#查看限制情况
[root@server1 tmp]# repquota -as
*** Report for user quotas on device /dev/sdb2
Block grace time: 7days; Inode grace time: 7days
                        Space limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --     20K      0K      0K              2     0     0
user1     --     16K    245M    293M              4     0     0
user2     --     16K      0K      0K              4     0     0




## 测试

[root@server1 tmp]# passwd user1
更改用户 user1 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@server1 tmp]# su user1
[user1@server1 tmp]$ cd
[user1@server1 user1]$ dd if=/dev/zero of=test1 bs=10M count=20
记录了20+0 的读入
记录了20+0 的写出
209715200字节(210 MB)已复制,1.43965 秒,146 MB/秒
[user1@server1 user1]$ ll
总用量 204800
-rw-r--r--. 1 user1 usergrp 209715200 1月  14 12:57 test1
[user1@server1 user1]$ ll -h
总用量 200M
-rw-r--r--. 1 user1 usergrp 200M 1月  14 12:57 test1
[user1@server1 user1]$ dd if=/dev/zero of=test2 bs=10M count=20
sdb2: warning, user block quota exceeded.
sdb2: write failed, user block limit reached.
dd: 写入"test2" 出错: 超出磁盘限额
记录了10+0 的读入
记录了9+0 的写出
97468416字节(97 MB)已复制,0.970785 秒,100 MB/秒