Linux 系统管理 - 内存和磁盘管理

1、查看内存

free -m #MB
free -g #GB
top

2、磁盘分区查看
fdisk -l #/dev/sda /dev/sdb /dev/sdc
ls -l /dev/sd? #多少硬盘
ls -l /dev/sd?? #多少分区

df -h #推荐使用

df,查询文件系统磁盘空间占用情况

# df -h (-h 将空间大小友好化显示)

du,查询某个目录磁盘空间占用情况

# du -h --max-depth=1 (-h 将空间大小友好化显示 --max-depth=1 最大深度为1,即统计当前目录占用总空间,不需将子文件夹内容显示出来)

du /etc/passwd #实际占用空间大小
ls -lh /etc/passwd #预分配空间大小

#du和ls -lh的区别演示
dd if=afile bs=4M count=10 of=bfile #将afile的内容按照每次4M*10次,存放到bfile中
dd if=/dev/zero bs=4M count=10 of=afile #预先分配40M内容给afile
ls -lh afile
du -h afile

dd if=/dev/zero bs=4M count=10 seek=20 of=bfile #先跳过20*4M=80M,再写入10*4M
ls -lh bfile #120M
du -h bfile #40M

 

 3、文件系统

ext4
xfs (CentOS7)

ext4文件系统结构
超级块:记录文件系统中包含多少个文件和文件总数
超级块副本
i节点(inode):记录每1个文件,大小,编号,文件权限
ls -l 除文件名以外,所有信息全部记录到i节点

文件名:存放在当前父目录的i节点上,例如pwd  #/root, 则文件名存放到/root节点上

ls -i 第一个编号记载每个文件对应的i节点

数据块(datablock): 记录数据
1个文件可占用多个数据库,du实际计算的是这些数据块大小的总和

linux默认创建一个数据块大小为4K

 

 4、inode演示

cp指令:实际上创建不同的i节点

mv指令:文件名虽然变化了,但是i节点信息并未变,只是修改了父目录的文件名
vim指令:更新内容,实际上inode信息发生了变更
echo 111 > a.txt inode信息不变更

创建硬链接文件(和原有的inode关联) ln <源文件> <目标文件>
创建符号链接文件(产生新的inode关联) ln -s <源文件> <目标文件>

 

 

链接数量为2  =》 权限后面1位,为链接数量

实际上inode和datanode在同一分区都没变化,但是跨越不同分区不能使用硬链接;如果跨越不同分区,需使用软链接ln -s ,俗称符号链接 

 

 

软链接,默认第一位为l, 例如 lrwxrwxrwx

rm指令: 让文件名和inode节点断开,不管文件多大,删除时间都是一致的。

 

5、如何设置具体文件,某个用户可读可写

获取文件ACL权限 getfacl
设置文件ACL权限 setfacl -m u:<用户名>:rwx <文件名>
取消某个用户文件ACL权限:setfacl -x u:<用户名> <文件名>

 

 

 

 

 

6、磁盘分区和挂载
命令:fdisk、mkfs、parted 分区>2T、mount挂载命令
常见配置文件:/etc/fstab


fdisk -l
fdisk /dev/sdd #格式化硬盘,虚拟机先添加硬盘
m #help
n #add a new partition
p #primary主分区 1块硬盘1个主分区
分区号(1-4,默认1):1 #输入1
Last 扇区 : +50G
p #查看当前分区
q #退出,不保存
w #保存
d #不符合,直接删掉

fdisk -l
mkfs.
mkfs.ext4 /dev/sdc1 #将硬盘映射为盘符,创建分区
mkdir /mnt/sdc1
mount -t ext4 /dev/sdc1 /mnt/sdc1 #将盘符挂载到文件系统
mount /dev/sdc1 /mnt/sdc1
mount 查看

 

 

vim /etc/fstab  开启自动挂载

/dev/sdc1 /mnt/sdc1 ext4 defaults 0 0
defaults 代表默认权限

7、分区和挂载磁盘配额 限制用户和用户组创建文件大小或磁盘大小
fdisk /dev/sdb #格式化硬盘
m #help
n #add a new partition
p #primary主分区 1块硬盘1个主分区
分区号(1-4,默认1):1 #输入1
Last 扇区 : +50G
p #查看当前分区
q #退出,不保存
w #保存
d #不符合,直接删掉

mkfs.xfs -f /dev/sdb1 #将硬盘映射为盘符,创建分区 -f强制操作
mkdir /mnt/sdc1
mount -o uquota,gquota /dev/sdb1 /mnt/sdb1 #用户配额,磁盘配额
mount 查看
xfs_quota -x -c 'report -ugibh' /mnt/sdb1 #查看限制
id user1
xfs_quota -x -c 'limit -u isoft=5 ihard=10 user1' /mnt/disk1

7、交换分区swap的查看与创建
增加交换分区大小 mkswap和swapon
使用文件作为交换分区 dd if=/dev/zero bs=4M count=1024 of=/swapfile

7.1 使用硬盘扩充swap分区

umount /dev/sdc1
mkswap /dev/sdc1
swapon /dev/sdc1
free -m
swapoff /dev/sdd1

7.2 使用文件扩充swap分区
dd if=/dev/zero bs=4M count=1024 of=/swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
free -m

7.3 永久生效
vim /etc/fstab
#/dev/sdc1 /mnt/sdc1 ext4 defaults 0 0
/dev/sdd1 swap swap defaults 0 0
#swap虚拟文件 ,第一个0:代表要不要备份,默认为0 第二个0: 代表是否要自检
/swapfile swap swap defaults 0 0

 

8、磁盘RAID与软件RAID技术
RAID 0 striping 条带方式,至少有两块硬盘(分布写50%),提高单盘吞吐率
RAID 1 mirroring镜像方式,提高可靠性,备份
RAID 5 有奇偶校验 至少3块硬盘,第三块硬盘写前两块硬盘的奇偶校验
缺点:如果两块磁盘损坏,数据依旧会丢失
RAID 10是RAID1和RAID0结合体,需要4块硬盘
两块硬盘做RAID1,再拿两块硬盘做RAID0

软件RAID技术
mdadm -C /dev/md0 -a yes -l1 -n2 /dev/sdb1 /dev/sdc1
mdadm -C /dev/md0 -a yes -l1 -n2 /dev/sd[b,c]1
-a: 统一创建设备
-l: RAID1
-n2:至少要两块硬盘

#出现这个错误mdadm: cannot open /dev/sdb1: Device or resource busy
umount /dev/sdb1
umount /dev/sdc1

mdadm -D /dev/md0

Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1

#破坏1个硬盘 dd if=/dev/zero of=/dev/sdc1 bs=4M count=1
echo DEVICE /dev/sd[b,c]1
echo DEVICE /dev/sd[b,c]1 >> /etc/mdadm.conf
mdadm -Evs >> /etc/mdadm.conf

mkfs.xfs /dev/md0

9、逻辑卷管理
pvcreate /dev/sd[b,c]1 #创建逻辑卷
mdadm --stop /dev/md0 #停止RAID
umount /dev/sdb1
umount /dev/sdc1
dd if=/dev/zero of=/dev/sdb1 bs=4M count=1 #破坏超级块
dd if=/dev/zero of=/dev/sdc1 bs=4M count=1 #破坏超级块

pvs #查看物理卷 lvm2 linux逻辑卷管理器
#-------------------------------------------
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 19.51g 4.00m
/dev/sdb1 lvm2 --- 20.00g 20.00g
/dev/sdc1 lvm2 --- 20.00g 20.00g
#-------------------------------------------
vgcreate vg1 /dev/sdb1 /dev/sdc1 #创建VG逻辑卷组
pvs
#-------------------------------------------
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 19.51g 4.00m
/dev/sdb1 vg1 lvm2 a-- 20.00g 20.00g
/dev/sdc1 vg1 lvm2 a-- 20.00g 20.00g
#-------------------------------------------
vgs
#--------------------------------------------
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- 19.51g 4.00m
vg1 2 0 0 wz--n- 39.99g 39.99g
#--------------------------------------------
lvcreate -L 100M -n lv1 vg1 创建逻辑卷 -n 逻辑卷名称 vg1逻辑卷组
lvs
mkdir /mnt/test
mkfs.xfs /dev/vg1/lv1
mount /dev/vg1/lv1 /mnt/test

#扩容现有逻辑分区
vgextend centos /dev/sdd1
lvextend -L +50G /dev/centos/root
df -h #分区并没有扩大
xfs_growfs /dev/centos/root #告诉文件系统,逻辑卷已经扩大

10、综合状态查询
sar、iftop、vmstat

sar -u 1 10 : 1s采样1次,采数10次
sar -r 1 10 : 采样内存
sar -b 1 10: 采样IO磁盘
sar -d 1 10: 对应每快磁盘读写
sar -q 1 10 :进程使用

iftop -p : 观察网络,默认看eth0

posted @   mick0802  阅读(245)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示