linux文件系统/磁盘操作/分区操作/卷扩容/swap分区扩容
linux文件系统/磁盘操作/分区操作/卷扩容/swap分区扩容
一、linux文件系统
1.相关概念
文件系统:提供一种对操作系统和计算机系统所有用户的数据和程序的存储与访问机制
文件的概念:一组有结构的信息集合
文件的基础架构是什么?
用户视角:有逻辑的结构(逻辑结构)
系统视角:一堆二进制(物理结构)
如何理解逻辑结构和物理结构?
可以这样理解,计算机本身底层就是一堆二进制的编码堆起来的,直接与计算机底层对接的也就是二进制的物理结构。但是如果你说给一堆二进制的结构给人看,那明显不合理,人们对于存储更偏向于有逻辑、有条理的东西,比如说看一下/etc目录下的结构。
yum install tree -y
tree /etc
可以看到各种文件、目录都是有逻辑的存储在合理的位置。
2.文件权限
对于文件一般有三种操作:读r、写w、执行x,三种归属(权限控制):本人owner、组group、其他人other。
我们不妨拿一个目录中的文件来看看~~
cd /etc
ll
3.字段信息
字段1
从第一个字段看起,有d开头的代表是目录(文件夹),-开头的代表是文件,同时蓝色代表目录,白色代表文件。往后面看,有一些r、w、x组成的一堆字符,可以通过下图理解。
比如
“drwxrwx---”
代表本人和组内成员对该目录拥有所有权限,而其他人没有任何权限。
“-rw-r--r--”
代表本人对该文件可读可写,组内成员和其他人仅可读。
这应该不难,其实有的时候对于r、w、e有更简便的表达,规定用4代表可读、用2代表可写、用1代表可执行。
比如777代表所有人对该文件拥有所有权限,640代表本人对该文件可读可写、组内成员仅可读、其他人无权限。
字段2
第二个字段表示文件的硬连接数
#创建测试目录
mkdir /test
#创建一个first文件后查看详细属性
touch first.txt
ll
软连接
创建软链接,命令ln -s 被连接的文件 连接的文件
ln -s first.txt second.txt
ll
由此可见,软链接并不会增加那个数字,那么来试一下硬链接吧
ln first.txt third.txt
ln first.txt fourth.txt
ll
可以看到每增加一次硬连接,这个数字都会加1,所以这个数字代表硬链接的数量。你可以把fourth.txt删掉,会发现数字减1。
软连接和硬链接的区别是啥? 咱来试试
[root@cd test]# touch raw1.txt
[root@cd test]# touch raw2.txt
[root@cd test]# ln -s raw1.txt softlink1.txt
[root@cd test]# ln -s raw1.txt softlink2.txt
[root@cd test]# ln raw2.txt link1.txt
[root@cd test]# ln raw2.txt link2.txt
[root@cd test]# ll
总用量 0
-rw-r--r-- 3 root root 0 11月 16 19:44 link1.txt
-rw-r--r-- 3 root root 0 11月 16 19:44 link2.txt
-rw-r--r-- 1 root root 0 11月 16 19:44 raw1.txt
-rw-r--r-- 3 root root 0 11月 16 19:44 raw2.txt
lrwxrwxrwx 1 root root 8 11月 16 19:45 softlink1.txt -> raw1.txt
lrwxrwxrwx 1 root root 8 11月 16 19:45 softlink2.txt -> raw1.txt
连接情况如下:
对原始raw1文件进行修改,可以看到两个软连接文件跟随修改
[root@cd test]# vim raw1.txt
[root@cd test]# cat raw1.txt
hello this is raw1
[root@cd test]# cat softlink1.txt
hello this is raw1
[root@cd test]# cat softlink2.txt
hello this is raw1
[root@cd test]#
对softlink2文件进行修改,发现其他三个文件也都跟随修改
[root@cd test]# vim softlink1.txt
[root@cd test]# cat softlink1.txt
hello this is raw1
i have changed it
[root@cd test]# cat raw1.txt
hello this is raw1
i have changed it
[root@cd test]# cat softlink2.txt
hello this is raw1
i have changed it
[root@cd test]#
那来把原始文件删掉,看其他两个链接文件能不能用?
(答案是删掉原始文件,链接文件也就失效了,但是如果再去创建同名的文件,链接文件重新又可以用。可以得知软链接是通过名字来链接的)
rm -rf raw1.txt
ll
cat softlink1.txt
硬链接
对raw2原始文件进行操作,其他两个硬链接文件能够同步;硬链接文件进行操作,原始文件及指向该原始文件的其他链接文件也同步修改
[root@cd test]# vim raw2.txt
[root@cd test]# cat link1.txt
this is raw2
[root@cd test]# cat link2.txt
this is raw2
[root@cd test]# vim link1.txt
[root@cd test]# cat link1.txt
this is raw2
i have changed it
[root@cd test]# cat raw2.txt
this is raw2
i have changed it
[root@cd test]# cat link2.txt
this is raw2
i have changed it
[root@cd test]#
删掉原始文件,其他硬链接文件仍然存在,但是如果此时再创建同名原始文件,那么链接失效了
[root@cd test]# rm -rf raw2.txt
[root@cd test]# cat link1.txt
this is raw2
i have changed it
所以软连接和硬链接的区别是什么?
软链接就像是创建了一个快捷方式,原始文件没了,快捷方式也就没用了,当原始文件恢复的时候,快捷方式也能继续用
硬连接就像是拷贝了一份文件,并且能够同步操作
字段3、4
第三个字段代表所有者,第四个字段代表所属组
touch char_34.txt
ll
我们这里是以root用户创建的文件,所以所属用户和组都是root。我们尝试把该文件的所属用户改为zhangsan,所属组改为lisi
chown zhangsan char_34.txt
chgrp lisi char_34.txt
ll
可以看到这里所属用户和组已经更改。特别提醒:我们在通过cp复制文件的时候如果直接复制会修改文件的所属用户和组,如果想保留文件的属性可以接上-p
的参数,例如cp -p 原始文件 目标目录
字段5、6、7、8、9
第5个字段代表文件的大小,以字节为单位
第6、7、8个字符分别代表文件修改的月、日、小时分钟
第9个字段代表文件名
二、linux磁盘操作
1.查看内存与交换分区信息
free -m
Mem:total总内存、used已经被使用内存、free空闲内存、shared共享内存、buff/cache缓冲区内存、available可用内存。
Swap交换分区的数据。
2.buffer和cache的区别:
buffer是写入缓冲,cache是读取缓冲。
3.虚拟机加盘
将虚拟机关机,加一块盘,然后重启虚拟机。
4.磁盘操作
基本思路是先创建物理卷,然后将物理卷加入卷组,最后将卷组加入逻辑卷。
列出系统块设备信息,可以看到我新加的盘的信息
lsblk
1.创建物理卷
pvcreate /dev/sdb
pvscan
2.创建卷组
vgcreate zhiyoujiu /dev/sdb
vgscan
3.创建逻辑卷
lvcreate -L 4G -n backup zhiyoujiu
lvscan
4.卷挂载
#创建挂载点
mkdir /zhiyoujiu_backup
#格式化逻辑卷位置
mkfs.ext4 /dev/zhiyoujiu/backup
#挂载
mount /dev/zhiyoujiu/backup /zhiyoujiu_backup/
#查看块结构
lsblk
三、磁盘分区操作
1.增加分区(100M)
[root@cd2 dev]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-10485759,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+100M
分区 1 已设置为 Linux 类型,大小设为 100 MiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
同样的操作,第二个分区设为200M
lsblk
2.删除分区1
[root@cd2 dev]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):d
分区号 (1,2,默认 2):1
分区 1 已删除
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@cd2 dev]#
查看块设备信息
lsblk
3.扩展分区
linux默认只能加4个子分区,比如sdb里面就顶多有sdb1,sdb2,sdb3,sdb4这四个区,如要加入更多的分区,就需要将四个分区其中一个设为扩展分区,然后从扩展分区里面分出逻辑分区,这样你就可以拥有sdb5、sdb6…
[root@cd2 dev]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x8955d10b
设备 Boot Start End Blocks Id System
/dev/sdb2 206848 616447 204800 83 Linux
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (1,3,4,默认 1):1
起始 扇区 (2048-10485759,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-206847,默认为 206847):+1M
分区 1 已设置为 Linux 类型,大小设为 1 MiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (2048-10485759,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-206847,默认为 206847):+1M
分区 3 已设置为 Linux 类型,大小设为 1 MiB
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
已选择分区 4
起始 扇区 (2048-10485759,默认为 2048):2048
Last 扇区, +扇区 or +size{K,M,G} (2048-206847,默认为 206847):+10M
分区 4 已设置为 Extended 类型,大小设为 10 MiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (4096-22527,默认为 4096):4096
Last 扇区, +扇区 or +size{K,M,G} (4096-22527,默认为 22527):+1M
分区 5 已设置为 Linux 类型,大小设为 1 MiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 6
起始 扇区 (8192-22527,默认为 8192):8192
Last 扇区, +扇区 or +size{K,M,G} (8192-22527,默认为 22527):+2M
分区 6 已设置为 Linux 类型,大小设为 2 MiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@cd2 dev]# lsblk
删除分区6
[root@cd2 dev]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):d
分区号 (1-6,默认 6):6
分区 6 已删除
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@cd2 dev]# lsblk
四、swap分区扩容
查看swap分区情况
free -m
方法一(格式化文件间接扩容)
在/mnt/下创建一个2G全是0的文件
dd if=/dev/zero of=/mnt/swap bs=1M count=2048
格式化文件
mkswap /mnt/swap
挂载
swapon /mnt/swap
free -m
已扩容2G
方法二(分区扩容)
删除分区5
[root@cd2 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):d
分区号 (1-5,默认 5):5
分区 5 已删除
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@cd2 ~]# lsblk
重新创建分区5
[root@cd2 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (4096-22527,默认为 4096):
将使用默认值 4096
Last 扇区, +扇区 or +size{K,M,G} (4096-22527,默认为 22527):
将使用默认值 22527
分区 5 已设置为 Linux 类型,大小设为 9 MiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@cd2 ~]# lsblk
将分区5设置成swap分区
[root@cd2 ~]# mkswap /dev/sdb5
mkswap: /dev/sdb5: warning: wiping old swap signature.
正在设置交换空间版本 1,大小 = 9212 KiB
无标签,UUID=685c83d4-6613-445d-aaed-b140a0b16631
[root@cd2 ~]# swapon /dev/sdb5
[root@cd2 ~]# free -m
sawp分区扩容成功!!!!