Linux分区
linux系统分区也称磁盘分区,将硬盘分成几个逻辑分区以便于储存和读写。
Linux系统是通过什么方式实现磁盘存储的
linux采用载入的方式将分区和目录联系起来,也就是将一个具体的分区挂载到一个目录上,可以理解为目录是磁盘分区的虚拟映射。linux将整个计算机都整合成一个大的文件目录,我们需要将文件所在的分区挂载到一个目录上,然后通过访问这个目录来读写设备中的数据。
我们通过下图的实例来理解挂载:
/dev/sda2
被挂载到根目录/
,/dev/sda1
被挂载到/boot
,/dev/sda3
被挂载到/home
。也就是说根目录中除了/boot
和/home
这两个文件,其余的内容都被写入/dev/sda2
,而/boot
被写到/dev/sda1
,/home
被写到/dev/sda3
。由此可见挂载并不是和目录在级数上严格一一对应的,而是类似于一种树状的结构。
分区命名方案
/dev : Linux下所有的设备文件所在的目录名
命名格式:/dev/yyxN
- yy为设备类型,IDE为hd,SCSI为sd。Linux硬盘分为IDE硬盘和SCSI硬盘,目前基本为SCSI。还可能会有Vda云服务器。
- x为盘号,a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘
- N代表分区,前四个分区(主分区或扩展分区)用数字1到4表示,从5开始就是逻辑分区(逻辑驱动器)。
常见分区
- /分区(必有):所有的文件从这里开始,至少需要10G
- swap分区(必有):虚拟内存,大小一般是物理内存的两倍
- boot分区:引导分区,包含系统启动的必要内核文件,200M以内
- home分区:存放用户数据,默认在根分区下
- var分区:存放log日志,默认在根分区下
Swap分区
交换分区,用作虚拟内存的磁盘空间。由于直接从物理内存读写内容比从磁盘读写数据要快得多,而物理内存又是非常有限的,因此提出了虚拟内存的概念用于弥补物理内存的不足。
当物理内存不足时,内核会将暂时不用的内存块写到虚拟内存中,使释放出的物理内存用于其他用途,等到需要用到存放于虚拟内存的数据时,再将其写入物理内存中。
Linux内存管理使用分页存取机制,会根据“最近最常使用算法”,时不时地进行页面交换操作。
查看所有设备的挂载情况
指令list block
lsblk
更详细的指令
lsblk -f
- Name 磁盘名称和分区情况
- Fstype 分区类型
ext4就是linux的一中文件系统
swap交换分区,相当于虚拟内存,一般为物理内存的两倍 - Uuid 每个分区的id
- mountpoint 挂载点
样例图的磁盘分区情况:
一块磁盘sda,有三个分区;sr0为默认的光驱。
注意同一个目录不能挂在多个分区,但是已挂载分区的目录的子目录还可以挂载分区。
挂载经典案例——添加硬盘
虚拟机添加硬盘
进入目标虚拟机的设置,点添加-硬盘
一路下一步就行了,在设置磁盘大小的地方修改为目标大小即可。
这样就添加好了,我们可以看到,添加的新硬盘在主机系统上是一个大小为硬盘大小的文件。
重启虚拟机之后即可生效。
如果是直接在物理机运行的linux,新添加一块物理硬盘,系统可以直接识别出来。
添加完硬盘之后查看挂载情况,多了sdb,但是sdb下并没有分区,还不能使用。
分区
分区命令
fdisk /dev/sdb
sdb为硬盘名称
开始对/sdb分区后的指令
m 显示命令列表
p 显示磁盘分区
n 新增分区
d 删除分区
w 写入名退出
输入m可以直接查看帮助
开始分区后输入n
select 选择类型:p是主分区 e是扩展分区 默认主分区 不填直接回车即可 或者输入p之后回车
partition number 选择分区数量:1-4都可以 不填默认是1
first sector和last sector都默认回车即可 表示使用全部剩余空间
这样就创建好分区了。
但是最后还要记得输入w写入分区再退出,如果不保存退出就输入q
这样就成功给新硬盘分区了。
但是该分区还未拥有UUID,即还没有格式化。
格式化
mkfs -t ext4 /dev/sdb1
期中ect4是分区类型,一般除了特殊的swap分区以外,其他分区类型都建议使用ect4
这样就格式化成功了,接下来挂载文件即可。
挂载
mount /dev/sdb1 /root/newdisk
mount 设备名称 挂载目录
卸载
umount /dev/sdb1
umount /root/newdisk
umount 设备名称或挂载目录
mountpoint显示指定挂载的目录就成功了
但是命令行的挂载在每次重启之后就会失效,为了免去每次开机都挂载一次的玛法,我们需要设置永久挂载,也就是开机自动挂载。
设置自动挂载
通过修改/etc/fstab文件实现
打开文件,仿照其他硬盘的格式添加新硬盘的自动挂载。
<file system> 设备文件 可以写硬盘的绝对路径 也可以写uuid
<mount point> 挂载点 也就是挂载的目录
<type> 分区格式 一般为ext4
<options>挂载参数 一般使用默认的defaults
<dump> dump工具决定是否备份 0不备份 1备份
<pass> fsck 决定文件检查顺序 1优先检查-一般为根目录 2一般为普通目录 0 不检查
如果对fstab文件感兴趣的话,可以看大佬的文章 fstab文件详解
最后执行mount -a
即刻生效
磁盘情况查询
查询系统整理磁盘使用情况
df -h
查询指定目录的磁盘占用情况
du 参数 目录 #默认只显示目录
参数
- -s 指定目录占用大小汇总
- -h 人性化单位
- -a 含文件
- –max-depth=1 子目录深度
- -c 列出明细 同时增加 汇总值
磁盘实用指令
- 查看当前目录下文件个数
ls -l | grep "^-" | wc -l
(不包括子目录里的文件)
ls -lR | grep "^-" | wc -l
(包括子目录里的文件) - 查看当前目录下子目录的个数
ls -l | grep "^d" | wc -l
(不包括一级子目录里的目录)
ls -lR | grep "^d" | wc -l
(包括所有目录)