ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux内存和磁盘管理(入门)

2022-07-15 12:34:07  阅读:151  来源: 互联网

标签:-- bytes dev 内存 hwx Linux 磁盘 afile root


关于对Linux系统的内存和磁盘的操作

内存和磁盘使用率

查看内存使用率: free、top

查看磁盘使用率: fdisk、df、du

free

以KB为单位:

$ free
              total        used        free      shared  buff/cache   available
Mem:       16248492     2179340     8456660      440648     5612492    13299528
Swap:       2097148           0     2097148

以MB为单位:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:          15867        2134        8239         430        5494       12981
Swap:          2047           0        2047

以GB为单位:

$ free -g
              total        used        free      shared  buff/cache   available
Mem:             15           2           8           0           5          12
Swap:             1           0           1

buff/cache是buffers和cache的和,buffer是内核使用的缓冲区,cache是页缓存

Swap是交换分区,程序的内存是虚拟内存,当实际的内存不够用时,会使用换页,如果不使用swap,那么当内存不够时,系统会随机kill掉占用较大的进程

top

top命令可以动态查看内存使用情况,不作赘述

...
MiB Mem :  15867.7 total,   7515.7 free,   2437.6 used,   5914.4 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.  12714.6 avail Mem 
...

fdisk

查看磁盘分区

$ sudo fdisk -l
Disk /dev/loop0: 4 KiB, 4096 bytes, 8 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop1: 133.24 MiB, 139706368 bytes, 272864 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
...
Device         Boot     Start        End   Sectors   Size Id Type
/dev/nvme1n1p1 *         2048    1050623   1048576   512M 83 Linux
/dev/nvme1n1p2        1050624  926812159 925761536 441.4G  5 Extended
/dev/nvme1n1p3      926812160  966658047  39845888    19G 83 Linux
/dev/nvme1n1p4      966658048 1000212479  33554432    16G 82 Linux swap / Solari
/dev/nvme1n1p5        1052672  463931391 462878720 220.7G 83 Linux
/dev/nvme1n1p6      463933440  926812159 462878720 220.7G 83 Linux
....

Linux中将磁盘当作文件来对待

df

查看分区使用和挂载点

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            7.8G     0  7.8G   0% /dev
tmpfs           1.6G  2.5M  1.6G   1% /run
/dev/nvme0n1p5  916G   74G  796G   9% /
tmpfs           7.8G   75M  7.7G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/loop0      128K  128K     0 100% /snap/bare/5
/dev/loop1      134M  134M     0 100% /snap/chromium/2020
/dev/loop2      531M  531M     0 100% /snap/datagrip/144
...

du

查看磁盘占用空间

使用dd创造出一个空洞文件

$ dd if=/dev/zero bs=4M count=10 seek=20 of=afile
10+0 records in
10+0 records out
41943040 bytes (42 MB, 40 MiB) copied, 0.0187228 s, 2.2 GB/s

使用du和ls -l命令查看到的文件大小不一样,因为ls -l显示的文件实际大小,并非在磁盘中的占用空间

常见文件系统

常见文件系统: ext4、xfs、NTFS(需要额外的软件)

一般可以发现windows的文件系统是NTFS,CentOS7是XFS,CentOS6是EXT4

EXT4文件系统

基本结构较为复杂

超级块

超级块记录有关封闭文件系统的各种信息,例如块计数,inode计数,支持的功能,维护信息等,df查看到的信息就是超级块中的信息

i节点

i节点即index node索引节点,可以把i节点看作是一个指向磁盘上该文件存储区的地址,用于存储属性信息

$ ls -l
total 41040
-rw-rw-r--  1 hwx hwx 125829120 7月  14 14:47  afile
drwxrwxr-x  4 hwx hwx      4096 7月  11 08:51  CLionProjects
drwxrwxr-x  3 hwx hwx      4096 7月  12 13:21  DataGripProjects
drwxr-xr-x  2 hwx hwx      4096 7月   9 15:19  Desktop
drwxr-xr-x  8 hwx hwx      4096 7月  13 13:48  Documents
drwxr-xr-x  4 hwx hwx      4096 7月  13 13:42  Downloads
...

ls -l输出的这些权限信息都被记录到i节点中,输入ls -i显示文件对应的i节点

57675187  CLionProjects     57147482  Public
58590896  DataGripProjects  57803301  PycharmProjects
57147479  Desktop           57280593  sdk
57147483  Documents         58590235  sensors
57147480  Downloads         57147872  snap
...

数据块

数据块记录了数据,i节点下会对应有数据块

img

基本操作命令

对i节点和数据块的操作

touch

创建文件

$ touch afile

向文件写入内容,并查看大小:

$ echo 123 > afile
$ du -h afile
4.0K	afile

显示大小为4K,因为ext4中一个块大小最小为4K

cp

复制文件

$ cp afile afile2
$ ls -li afile*
57182948 -rw-r--r-- 1 root root 4 7月  14 21:11 afile
57185789 -rw-r--r-- 1 root root 4 7月  14 21:11 afile2

复制后虽然是同样的文件,但是i节点发生了变化

mv

移动文件

$ mv afile2 afile3
$ ls -li afile*
57182948 -rw-r--r-- 1 root root 4 7月  14 21:11 afile
57185789 -rw-r--r-- 1 root root 4 7月  14 21:11 afile3

可以看到虽然文件名改变了,但i节点并未发生变化

ln

链接文件

$ ln afile bfile

查看i节点可知,i节点相同,因此改变bfile的内容也会改变afile

$ ls -li bfile afile
57182948 -rw-r--r-- 2 root root 4 7月  14 21:11 afile
57182948 -rw-r--r-- 2 root root 4 7月  14 21:11 bfile

这样的链接不能跨越分区,要想跨越分区的话要使用软链接,又称符号链接:

$ ln -s afile aafile
$ ls -li afile aafile
57183495 lrwxrwxrwx 1 root root 5 7月  14 21:30 aafile -> afile
57182948 -rw-r--r-- 2 root root 4 7月  14 21:11 afile

facl

文件访问权限控制列表

使用getfacl可以查看该列表,标记了文件所有者和组

$ getfacl afile
# file: afile
# owner: root
# group: root
user::rw-
group::r--
other::r--

使用setfacl 赋予权限

$ setfacl -m u:hwx:r afile
$ ls -l afile
-rw-r--r--+ 2 root root 4 7月  14 21:11 afile

如上为hwx这个用户赋予只读权限

权限描述符尾部的+号,号表示该文件或目录开启了Access Control Lists功能, 是对rwx权限的扩充

将u改为g,就能对组进行操作

磁盘分区与挂载

常用命令: mount、mkfs、parted

使用fdisk/gdisk可以对硬盘进行分区

mount

参数 作用
-a 挂载所有在/etc/fstab中定义的文件系统
-t 指定文件系统的类型

例如要将设备/dev/sdb2挂载到/backup目录,只要在mount命令中填写设备与挂载目录参数即可,系统会自动去判断挂载文件的类型,因此只要执行下述命令:

mount /dev/sdb2 /backup

将挂载信息按照指定的填写格式设备文件 挂载目录 格式类型 权限选项 自检 优先级写入到/etc/fstab文件中,该文件中包含着挂载所需的诸多信息项目,一旦配置好之后就能永久生效

字段 意义
设备文件 一般为设备的路径+设备名称,可写成唯一识别码(UUID)
挂载目录 指定要挂载到的目录,在挂载前创建好
格式类型 指定文件系统格式
权限选项 权限
自检 为1则开机进行磁盘自检,为0则不检验
优先级 若自检,则可对多块磁盘进行自检优先级设置

umount

与mount相反,作用是撤销挂载

卸载设备文件: umount/dev/sdb2

标签:--,bytes,dev,内存,hwx,Linux,磁盘,afile,root
来源: https://www.cnblogs.com/N3ptune/p/16480965.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有