1.内存命令
# free 内存
free
free -m # 以m为单位
free -g # 以g为单位
# top 整体情况
top
2.磁盘命令
# fdisk 磁盘使⽤率的查看
ll /dev/vda? # 显示当前支持分区的扩展硬盘
fdisk -l # 查看 分区信息
parted -l # 看未分区的硬盘格式
df -h # 硬盘挂载情况
# parted 用于格式容量超大的区,如10T
parted /dev/vda
3.文件系统概念
常⻅⽂件系统
ext4 ⽂件系统
ext4 ⽂件系统基本结构⽐较复杂
xfs⽂件系统
常⻅配置⽂件
/etc/fstab
交换分区
# 增加交换分区的⼤⼩
# swapon
mkswap /dev/vdb1 # 创建交换分区
swapon /dev/vdb1 # 开启
free -m
swapoff /dev/vdb1 # 关闭
free -m
# 自己创建自动文件做交互分区
dd if=/dev/zero bs=4M count=1024 of=/swapfile # 写入测试文件
mkswap /swapfile # 设置交换分区
# 配置
vi /etc/fstab
/swapfile swap swap defaults 0 0 # 设置交换分区
超级块
- 在ext4 的文件头记录了 ext4 的文件数量,大小,所以du才计算这么快
- 每次修改内容都会更新超级快
超级块副本
用于当超级块出问题,用来恢复还原的
i 节点(inode)
记录每一个文件名称 大小 编号,权限信息(文件名记录在父目录的i节点)
ls -l # 查看 文件信息
ls -i # 查看文件的i节点 的编号
touch afile
ls -li afile
echo 123 > afile
ls -li afile # 节点id不变
cp afile bfile
ls -li bfile # afile 和 bfile节点id不一样
mv afile afile2 # afile2 依然不变
# 当再同一个文件系统做mv 移动 速度很快,因为移动的只是 目录i节点的文件名称的关系
vim afile # 修改内容后 id变化,原理vim 会创建临时文件.afile.swp 临时文件保存后再写入新文件
echo 'xx' > afile # 修改内容后 id不变化,所以建议用这种性能更优
rm afile # 删除速度很快,因为只是断开了i节点和文件名的关系,没有数据块
数据块(datablock)
- 实际数据存储在 datablock
- 当内容过大的时候,每一块datablock 会继续穿件连接点,连接下一个数据块,形成火车列的效果
# 符号链接与硬链接
# facl
# 查看权限
getfacl afile
# 设置符号链接用户权限
setfacl -m u:userl:r afile
# 设置符号链接用户组权限
setfacl -m g:groupl:r afile
# 取消权限
setfacl -x u:user1:r afile
ln 链接
把i节点 和 数据块做连接, 不能用在跨域分区
ln afile cfile # 把cfile 也链接到 afile的i节点上
# 72881 -rw-r--r-- 2 root root 4 Mar 2 22:50 afile
# 72881 -rw-r--r-- 2 root root 4 Mar 2 22:50 cfile
ls -l -i afile cfile # 两个文件指向同一个i节点
# ln 软连接/符号连接文件 记录的是另外一个文件的文件地址
ln -s afile cfile # 软连接,生成不一样的i节点
# 72881 -rw-r--r-- 1 root root 4 Mar 2 22:50 afile
# 75060 lrwxrwxrwx 1 root root 5 Mar 2 22:54 cfile -> afile
# 被连接的cfile 设置权限没有意义,都是按原连接afile权限为主
RAID 与软件 RAID 技术
# RAID 的常⻅级别及含义
RAID 0 striping # 条带⽅式,提⾼单盘吞吐率
RAID 1 mirroring # 镜像⽅式,提⾼可靠性
RAID 5 # 有奇偶校验
RAID 10 # 是RAID 1 与 RAID 0 的结合
# 安装
yum install mdadm
# 创建RAID
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/vdb{1,2}
# 删除
mdadm -D /dev/md0
echo DEVICE /dev/vd[a,b]1 >> /etc/mdadm.conf
mdadm -Evs >> /etc/mdadm.conf
mkfs.xfs /dev/md0 # 格式化
du
disk usage
du # 显示当前递归所有文件大小
du -sh # 统计当前文件夹
du -sh * # 统计当前所有子文件夹
# 用于显示目录或文件的大小
echo 'xxx' > bfile
ls -lh bfile # 查看文件大小 统计的是i节点信息
du bfile # 查看实际占用的空间大小 ,统计的是数据块大小
空洞文件
- 如虚拟机创建30g的空洞文件虽然ls -lh 显示是30g ,但实际中间插的是空洞文件
- 用du 显示则很小
# dd 插入连续空间
dd if=/dev/zero bs=4M count=10 of=afile # 按字节把从afile 依次按照4m读取,并重复count次写入bfile , /dev/zero 读出来是无穷多个0 是一个足够大的文件
ls -lh afile # 都是40m 没有空洞
du -h afile # 都是40m 没有空洞
# seek参数 空洞
dd if=/dev/zero bs=4M count=10 seek=20 of=bfile # seek跳过20块 也就是多了 20*4m = 80m
ls -lh bfile # 120m 有空洞
du -h bfile # 40m 没有空洞
⽤户磁盘配额 quota
umount /dev/vdb1 # 如果已经挂载要先卸载
mkfs.xfs /dev/vdb1 -f
mkdir /data
mount -o uquota,gquota /dev/vdb1 /data
chmod 1777 /data
xfs_quota -x -c 'report -ugibh' /data # 查看使用情况
xfs_quota -x -c 'limit -u isoft=5 ihard=10 user1' /data # 限制用户的创建数量等
xfs_quota -x -c "state" /data # 查看状态
# 关闭取消限制
rm -f /etc/projects;rm -f /etc/projid ##删除项目配额相关文件
umount /data ##卸载
vi /etc/fstab ##重新设置成常规的挂载
/dev/sdb3 /data xfs defaults 0 0
4.系统综合状态查询
sar
sar -u 1 10
sar -r 1 10
sar -b 1 10
sar -d 1 10
sar -q 1 10
iftop
使⽤第三⽅命令查看⽹络流量
yum install epel-release
yum install iftop
iftop -P
5.例子
完整分区例子
# 查看磁盘
lsblk
# fdisk分区
fdisk /dev/sdb
# 输入 m n p 1 回车 回车 m w
# 查看分区
lsblk -f
# 格式化
mkfs -t ext4 /dev/sdb1
# 查看分区
lsblk -f
# mount 设备名称 挂载目录
mount /dev/sdb1 /home/new
# 检查是否成功
df -Th
# 永久挂载
# 查看唯一UUID
blkid /dev/sdc1
# 编辑配置
vi /etc/fstab
# 输入下面内容
# UUID/磁盘路径 挂载点 磁盘类型 defaults 0 0
/dev/vdb1 /data ext4 defaults 0 0
# 查看挂载是否正常
mount -a
# 查看挂载是否正常
df -Th
逻辑卷管理 创建例子
## 逻辑卷管理
# 整个流程
fdisk -> dev/sd?? -> pv -> vg1 -> lv1 -> xfs -> mount # 显示挂载
# 安装
yum install lvm2
# 创建逻辑卷
pvcreate /dev/sd[b,c,d]1
#
pvcreate /dev/vdb2
# 查看创建 pv pvdisplay
pvs
# 创建vg
vgcreate myvg /dev/vdb2
# 查看vg 或者 vgdisplay
vgs
# vg扩展
vgextend myvg /dev/vdb3
# 创建lv
lvcreate -L 100M -n mylv myvg
# 查看lv lvdisplay
lvs # 查看 列表
# 扩展lv
lvextend -L 500M /dev/myvg/mylv
# 缩减
lvreduce -L 50M /dev/myvg/mylv
# 检查
mount | grep root
pvs
# 查看挂载文件夹情况
df -Th
# 动态扩展当前vg 组 添加分区
vgextend centos /dev/sdd1
# 卷信息,需要主动刷新超级快的内容 才能统计到最新
xfs_growfs /dev/centos/root
6.FTP 服务
FTP模式
主动模式和被动模式
vsftpd
服务安装和启动
# 安装 与 启动
yum install vsftpd ftp -y
systemctl start vsftpd.service
# 默认 自动创建 ftp 用户做ftp的账号
ftp # 用户名
ftp # 密码
# 自己创建账号
useradd user1 # 创建用户
passwd user1 # 设置密码 12345678
# 登录
ftp localhost
# 输入用户名 ftp
# 输入密码 ftp
# 查看服务器列表
ls # /var/ftp/ 这个是ftp服务器上的文件夹默认地址
# 查看本地列表
!ls #使用
# 如果是 使用 user1 登录
ls # /home/user1/ user1用户的文件夹
# 上传文件
put a.txt
# 下载
get a.txt
# 建议将 selinux 改为 permissive
vi /etc/selinux/config
SELINUX=permissive
# getsebool # 查询SElinux策略
getsebool -a | grep ftpd
# setsebool 设置策略
setsebool -P ftpd_use_nfs 1
服务配置文件
vi /etc/vsftpd/vsftpd.conf
# 需要打开
allow_writeable_chroot=YES # 解决无法登录
# chroot_local_user=YES # 是否指定根文件夹 默认不打开 不然用户可以访问系统文件夹
anonymous_enable=YES
local_enable=YES
write_enable=YES
dirmessage_enable=YES
xferlog_std_format=YES
connect_from_port_20=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# 配置firewall 防火墙
firewall-cmd --add-service ftp # 添加ftp服务
firewall-cmd --list-all # 查看是否生效
# 配置系统自带配置用户
# /etc/vsftpd/vsftpd.conf 设置 userlist_deny=NO/YES 是白名单 还是黑名单
userlist_deny=NO # /etc/vsftpd/ftpusers 上面的名单都不给登录
userlist_deny=YES # 只允许 /etc/vsftpd/user_list 上用户登录
使用虚拟用户
## 使用虚拟用户进行验证
# 新增 vuser用户
useradd vuser -d /data/ftp -s /sbin/nologin
grep vuser /etc/passwd
cd /etc/vsftpd/
vim vuser.temp
u1
123456
u2
123456
u3
123456
# 加载临时文件 生成 db
db_load -T -t hash -f /etc/vsftpd/vuser.temp /etc/vsftpd/vuser.db
ll /etc/vsftpd/vuser.db
chmod 600 /etc/vsftpd/vuser.db
# 默认配置
vi /etc/pam.d/vsftpd
# 自定义配置
vi /etc/pam.d/vsftpd.vuser
# 更新db=/etc/vsftpd/vuser
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
vi /etc/vsftpd/vsftpd.conf
# 更新
guest_enable=YES # 是否允许访客
guest_username=vuser # 新增访客用户
allow_writeable_chroot=YES # 限制用户跳出当前目录
pam_service_name=vsftpd.vuser # 新增vsftpd.vuser
#pam_service_name=vsftpd # 注释原来的 pam_service_name
user_config_dir=/etc/vsftpd/vuserconfig
# 配置自定访客用户的权限 u1
cd /etc/vsftpd/vuserconfig
vi u1
local_root=/data/ftp
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
download_enable=YES
# 重启
systemctl restart vsftpd.service
Samba
支持window 和 linux 连接
## Samba 服务安装
yum install samba cifs-utils -y #cifs-utils必须安装,不然不能mount
## Samba 服务配置文件
vi /etc/samba/smb.conf
[share]
comment = my share
path=/data/share
read only = No
## Samba 用户的设置
# smbpasswd 命令
-a # 添加用户
-x # 删除用户
# pdbedit
-L # 查看用户
## Samba 服务的启动
systemctl start smb.service
### Linux 客户端终端1 访问 #cifs-utils必须安装,不然不能mount
mount -t cifs -o username=user1 //127.0.0.1/user1 /mnt
# 挂载后 本地的 /mnt 和 服务器上的 /home/user1 保持同步
ls /mnt # 本地的
# 等价于
ls /home/user1/ # 服务器的
### Windows 客户端
- 资源管理器访问共享
- 映射网络驱动器
# 例子1
cd /etc/samba
man 5 smb.conf
vi smb.conf
# 创建用户
useradd user1
passwd user1
# smb 设置用户同时设置密码
smbpasswd -a user1 # 输入smb新密码
# 检查
pdbedit -L
# 启动服务
systemctl start smb.service
# 注意挂载的 /mnt 需要提前格式化
mkfs -t ext4 /dev/vdb1
mount /dev/vdb1 /mnt
# 挂载
mount -t cifs -o username=user1 //127.0.0.1/user1 /mnt
# 解绑
umount /mnt
ls /data/share/
NFS
## NFS 服务的配置和启动
# 安装
yum -y install rpcbind nfs-utils -y
systemctl stop firewalld # 关闭防火墙
setenforce 0 # 关闭SELinux
# 配置共享文件夹
vi /etc/exports
/data/share *(rw,sync,all_squash)
# 启动NFS 服务
systemctl start nfs.service
#测试启动是否有效
showmount -e localhost
# linux 客户端使用挂载方式访问
mount -t nfs localhost:/data/share /mnt
touch /mnt/test1 #创建的用户权限是 nfsnobody
# window 客户端使用挂载方式访问
mount 171.35.40.133:/data/share E:
7.完整NAS搭建
- NAS(Network Attached Storage) 网络附属存储
- NAS 支持的协议 NFS、CIFS、FTP
- 保证数据安全方式 磁盘阵列
搭建流程: 先创建RAID ,再创建逻辑卷,最后再按3个ftp服务
yum install mdadm lvm2 -y
# 创建RAID
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/vdb{1,2}
# 输入 yes
# 查看md0配置信息
mdadm --detail --scan --verbose
# md0配置信息 持久化
mdadm --detail --scan --verbose > /etc/mdadm.conf
# 创建 pv
pvcreate /dev/md0
pvs
# 创建 vg
vgcreate vg1 /dev/md0
vgs
# 创建lv
lvcreate -L 3G -n mylv1 vg1
lvs
# 格式化
mkfs.xfs /dev/vg1/mylv1
# 持久化挂载
echo '/dev/vg1/mylv1 /share xfs defaults 0 0' >> /etc/fstab
# 检查
mount | grep share
# 设置 vsftpd
# 创建用户
useradd shareuser -d /share/shareuser
# 设置密码
echo 123456 | passwd --stdin shareuser
# 重启
systemctl restart vsftpd
# 设置 samba
yum install samba cifs-utils -y
# 启动
systemctl start smb.service
# smb密码文件
vi smbpass.tmp
123456
123456
smbpasswd -s -a shareuser < smbpass.tmp
# 查看是否生效
pdbedit -L
vi /etc/samba/smb.conf
# 设置共享路径
[share]
comment = my share
path = /share/shareuser
read only = No
systemctl restart smb.service
# 设置 nfs
yum -y install rpcbind nfs-utils -y
systemctl stop firewalld # 关闭防火墙
setenforce 0 # 关闭SELinux
# 配置共享文件夹
vi /etc/exports
/share/shareuser *(ro) # 添加共享文件夹
# 启动NFS 服务
systemctl start nfs.service
# 设置 share文件夹 额外的facl权限
ls /share/ -l
setfacl -m u:nfsnobody:rwx /share/shareuser
getfacl /share/shareuser
adduser.sh
# 通用配置添加用户配置
vi adduser.sh
pass=123456
# 创建vsftpd 账户信息
useradd $1 -d /share/$1
echo $pass | passwd --stdin $1
# 创建 smb 账户信息
echo $pass > smbpass.tmp
echo $pass >> smbpass.tmp
smbpasswd -s -a shareuser < smbpass.tmp
# 创建 nfs 共享文件夹与权限信息
echo "/share/$1 *(ro)" >> /etc/exports