磁盘相关的概念

虚拟磁盘 /dev/vd  /dev/xvd   比如云虚拟机
物理磁盘 /dev/sda#    接口的类型:SCSI STATA  SAS  IDE USB
有一种支持Nvme协议的磁盘速度是很快的
速度相关的单位: Gbps是按位来算的, 换成B要除以8 

#磁盘的容量方面的介绍
安照柱面的划分:磁头数(盘面数)*512*每个磁道的扇区数*磁道数
按照扇区的划分  扇区*扇区个数
划分分区就是以每个柱面大小的整数倍来划分的
#机械硬盘和固态硬盘 :机械硬盘数据坏了容易恢复,固态硬盘的里面都是芯片

设备的区分

 分为:字符设备和块设备

linux:全部都是文件的形式,便于访问

[root@centos7 ~]# find / -type b  -ls
c  字符设备的浏览器,没有缓存,比如说磁带  /dev/null  /dev/zero
b  块设备的浏览器,利用缓存来提高效率    /dev/sd#

文件的类型:七种

[root@centos7 ~]# find / -type b  -ls
  9959    0 brw-rw----   1 root     disk     253,   1 Apr 13 20:19 /dev/dm-1
  9861    0 brw-rw----   1 root     disk     253,   0 Apr 13 20:19 /dev/dm-0
  9770    0 brw-rw----   1 root     cdrom     11,   0 Apr 13 20:19 /dev/sr0
  9569    0 brw-rw----   1 root     disk       8,   2 Apr 13 20:19 /dev/sda2
  9568    0 brw-rw----   1 root     disk       8,   1 Apr 13 20:19 /dev/sda1
  9567    0 brw-rw----   1 root     disk       8,   0 Apr 13 20:19 /dev/sda

b 设备的类型
8 主设备号
1 次设备号
三个字符定义了设备的唯一标识
以上的三项相同的话就是同一设备

mknod命令创建设备

mknod /data/zero c 1 5  #这样就创立了一个设备 设备类型为:  字符设备 设备号分别为 1  5
[root@centos7 ~]# ll /dev/zero /dev/null 
crw-rw-rw- 1 root root 1, 3 Apr 13 20:19 /dev/null
crw-rw-rw- 1 root root 1, 5 Apr 13 20:19 /dev/zero

#依据/dev/zero 用mknod创建一个和 /dev/zero 一样的文件
[root@centos7 ~]# mkdir /data
[root@centos7 ~]# mknod /data/testdev  c  1 5
[root@centos7 ~]# ll /data/testdev 
crw-r--r-- 1 root root 1, 5 Apr 14 09:43 /data/testdev
[root@centos7 ~]# dd  if=/data/testdev of=/data/test1.img bs=1 count=10
[root@centos7 ~]# ll /data/testdev 
crw-r--r-- 1 root root 1, 5 Apr 14 09:43 /data/testdev
[root@centos7 ~]# ll /data/test1.img 
-rw-r--r-- 1 root root 10 Apr 14 09:46 /data/test1.img
[root@centos7 ~]# hexdump -C /data/test1.img 
00000000  00 00 00 00 00 00 00 00  00 00                    |..........|
0000000a

rm -rf 删除

#不加参数无法复制
[root@centos7 ~]# cp /dev/zero /data/zero
^C
[root@centos7 ~]# ll -h /dev/zero  /data/zero 
-rw-r--r-- 1 root root 111M Apr 14 09:50 /data/zero
crw-rw-rw- 1 root root 1, 5 Apr 13 20:19 /dev/zero

#保留属性复制
[root@centos7 ~]# cp -a  /dev/zero /data/zero
[root@centos7 ~]# ll -h /dev/zero  /data/zero 
crw-rw-rw- 1 root root 1, 5 Apr 13 20:19 /data/zero
crw-rw-rw- 1 root root 1, 5 Apr 13 20:19 /dev/zero

mknod 创建设备文件,touch创建的是普通文件

磁盘的分区

#分区的作用:
1. 让不同的分区有不同的文件系统

不重启识别硬盘

[root@centos7 ~]# echo '- - -' >/sys/class/scsi_host/host0/scan  
[root@centos7 ~]# echo '- - -' >/sys/class/scsi_host/host1/scan  
[root@centos7 ~]# echo '- - -' >/sys/class/scsi_host/host2/scan  
[root@centos7 ~]# echo '- - -' >/sys/class/scsi_host/host3/scan  

#定义别名识别硬盘:
[root@centos7 ~]# alias scandisk='echo --- > /sys/class/scsi_host/host0/scan;echo --- > /sys/class/scsi_host/host1/scan;echo --- > /sys/class/scsi_host/host2/scan'

虚拟磁盘 : /dev/vd  /dev/xvd

MBR分区表字节

#MBR分区方式和gpt区别
MBR分区方式    (主引导记录)
存放分区表:
 前  446  bootloader启动字节
 中间:16*4=64 ( 分区表 因此只能是主分区和扩张分区个数    一共为4个)

 最后2个校验  55AA标记位
 #一个硬盘最多只有一个扩展分区
 #一个扩展分区被删除,那他的逻辑空间都被全部删除

MBR备份

 #只看前512字节
[root@centos7 ~]# hexdump -C   /dev/sda -n 512  
#区分seek 与skip 的区别
#复制446个字节之后的64个字节(skip:跳过源文件的前446个字节)
[root@centos7 ~]# dd  if=/dev/sda   of=/data/mbr  bs=1  count
=64  skip=446 
[root@centos7 ~]# ll  /data/mbr 
-rw-r--r-- 1 root root 64 Apr 14 20:19 /data/mbr

[root@centos7 ~]# hexdump -C /data/mbr  
00000000  80 20 21 00 83 dd 1e 3f  00 08 00 00 00 a0 0f 00  |. !....?........|
00000010  00 dd 1f 3f 8e fe ff ff  00 a8 0f 00 00 58 70 02  |...?.........Xp.|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000040

-v 显示所有的部分
[root@localhost ~]# hexdump -C /data/mbr  -v
00000000  80 20 21 00 83 dd 1e 3f  00 08 00 00 00 a0 0f 00  |. !....?........|
00000010  00 dd 1f 3f 8e fe ff ff  00 a8 0f 00 00 58 70 02  |...?.........Xp.|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040

#备份mbr分区表
[root@centos7 data]# scp   /data/mbr  10.0.0.130:/  

#将第446个字节后面的64个字节变成0   (seek表示:跳过目标文件的前446个字符)
[root@centos7 data]# dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
512+0 records in
512+0 records out
512 bytes (512 B) copied, 0.000323847 s, 1.6 MB/s

识别前面的512字节无内容,说明是空盘

[root@centos8 ~]#hexdump -C -n 512 /dev/sdb -v  

parted 实现 gpt分区表

#(危险命令,修改立即生效)
#parted, 使用gpt分区表的概念,他解决了传统的MBR超过2T的限制,因为MBR分区是针对 2^32bit  正好是2T
#该命令可以交换和非交互,立即生效

#交互式:
[root@centos8 ~]#parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)                                        

#非交互式
parted /dev/sdb  mklabel msdoc #创建分区类型为mbr
[root@centos8 ~]#parted /dev/sdb  mklabel gpt    #创建分区类型为gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? #更改以后硬盘数据丢失
Yes/No?     
[root@centos8 ~]#parted /dev/sdb   print #显示
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt         #立即生效显示为gpt类型
Disk Flags: 
[root@centos8 ~]#parted /dev/sdb  mkpart primary 1 100 (由于GPT类型分区表只有主分区,所以  只能为primary)
Information: You may need to update /etc/fstab.
[root@centos8 ~]#parted /dev/sdb   print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name     Flags
 1      1049kB  99.6MB  98.6MB               primary      #以M为单位

[root@centos8 ~]#parted /dev/sdb  mkpart primary 101 300
Information: You may need to update /etc/fstab.

 #删除分区
[root@centos8 ~]#parted /dev/sdb   rm 1 
Information: You may need to update /etc/fstab.

[root@centos8 ~]#parted /dev/sdb   print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start  End    Size   File system  Name     Flags
 2      101MB  300MB  199MB               primary

gdisk 管理 gpt 分区表,

[root01:02 AMcentos8 ~]#yum install gdisk -y  

fdisk 擅长处理mbr分区,mbr分区写“msdoc”


#该命令只能root有权限使用
#支持mbr分区表(2T以内)
#大于2T的使用parted, gptf分区表的概念,
l 列出磁盘分区信息
n 创建新的分区
d 删除已有的分区
t  修改分区的类型
w保存且退出
q不保存退出
m 查看帮助信息
P显示现有分区的信息
L查看分区ID
o  把gpt分区类型的处理为mbr类型 

cat /proc/partitions  #查看是否尾文件系统被内核识别
#可以强行让内核识别:
[root@wang ~]# partx -a /dev/sdb1 

#或者是kpartx  -af

#分区肯定会消耗部分磁盘空间,分的越细越浪费
#扩展分区的ID号为5 逻辑分区的ID为83
#交换分区:大小设置内存的2倍替代内存临时用,内存不够用的时候,临时交换到磁盘,id号为82
#让内存继续能用,普通的文件系统不支持交换,要将他装换为swap分区
#缓存 基于内存
#缓冲 基于磁盘
#磁盘和内存之间有部分缓冲区
[root@centos8 ~]#fdisk  /dev/sdb
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): o
Created a new DOS disklabel with disk identifier 0x80c09b08.
The old gpt signature will be removed by a write command.
Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos              #该命令的分区类型为doc
Disk identifier: 0x80c09b08

让内核识别到分区,同步分区表


partprobe  对 centos7/8/5 有效
centos6专用:
[root@centos6-134 ~]# partx -a  /dev/sda  识别 该命令对centos6有效
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
[root@centos6-134 ~]# 

~]# part -d --nr 6-7 /dev/sda

分区是否同步


fdisk -l  查看的是写在磁盘里的信息,
下面的三种方法看到是内存里面的信息

方法一:
[root@localhost ~]# cat /proc/partitions 
major minor  #blocks  name
   8        0   20971520 sda
   8        1     512000 sda1
   8        2   20458496 sda2
  11        0    1048575 sr0
 253        0   18317312 dm-0
 253        1    2097152 dm-1
   8       16   20971520 sdb
   8       32   10485760 sdc
   8       48   10485760 sdd
   8       64   10485760 sde

     方法二:
[root@localhost ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  500M  0 part /boot
└─sda2            8:2    0 19.5G  0 part 
  ├─centos-root 253:0    0 17.5G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
sdc               8:32   0   10G  0 disk 
sdd               8:48   0   10G  0 disk 
sde               8:64   0   10G  0 disk 
sr0              11:0    1 1024M  0 rom  

方法三
[root@localhost ~]# ll /dev/sd*
brw-rw---- 1 root disk 8,  0 Apr  8 09:17 /dev/sda
brw-rw---- 1 root disk 8,  1 Apr  8 09:17 /dev/sda1
brw-rw---- 1 root disk 8,  2 Apr  8 09:17 /dev/sda2
brw-rw---- 1 root disk 8, 16 Apr 15 02:02 /dev/sdb
brw-rw---- 1 root disk 8, 32 Apr 15 02:02 /dev/sdc
brw-rw---- 1 root disk 8, 48 Apr 15 02:02 /dev/sdd
brw-rw---- 1 root disk 8, 64 Apr 15 02:02 /dev/sde
[root@localhost ~]# 

分区克隆

#条件:
1.只能克隆主分区,逻辑分区不在分区表,无法克隆
2 目标分区要比源分区空间大
[root@localhost ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  200G  0 disk 
├─sda1            8:1    0    2G  0 part /boot
└─sda2            8:2    0  108G  0 part 
  ├─centos-root 253:0    0  100G  0 lvm  /
  └─centos-swap 253:1    0    8G  0 lvm  [SWAP]
sdb               8:16   0   15G  0 disk 
├─sdb1            8:17   0    1G  0 part 
├─sdb2            8:18   0    1G  0 part 
└─sdb3            8:19   0    1G  0 part 
sdc               8:32   0   10G  0 disk 
├─sdc1            8:33   0    2G  0 part 
├─sdc2            8:34   0    2G  0 part 
└─sdc3            8:35   0    2G  0 part 
sdd               8:48   0   10G  0 disk 
sr0              11:0    1    4G  0 rom  
[root@localhost ~]# dd if=/dev/sdc of=/dev/sdb bs=1 count=64  skip=446  seek=446
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.000502186 s, 127 kB/s
[root@localhost ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  200G  0 disk 
├─sda1            8:1    0    2G  0 part /boot
└─sda2            8:2    0  108G  0 part 
  ├─centos-root 253:0    0  100G  0 lvm  /
  └─centos-swap 253:1    0    8G  0 lvm  [SWAP]
sdb               8:16   0   15G  0 disk 
├─sdb1            8:17   0    2G  0 part 
├─sdb2            8:18   0    2G  0 part 
└─sdb3            8:19   0    2G  0 part 
sdc               8:32   0   10G  0 disk 
├─sdc1            8:33   0    2G  0 part 
├─sdc2            8:34   0    2G  0 part 
└─sdc3            8:35   0    2G  0 part 
sdd               8:48   0   10G  0 disk 
sr0              11:0    1    4G  0 rom  
[root@localhost ~]# dd if=/dev/sdc of=/dev/sdb bs=1 count=64  skip=446  seek=446

dd 快速删除分区表,清空分区

dd 快速删除分区表,清空分区,分区表都没有了,分区就没有了
[root@centos8 ~]#dd if=/dev/zero  of=/dev/sdc bs=1 count=64 seek=446
[root@centos8 ~]#dd if=/dev/zero  of=/dev/sdc bs=1 count=2 seek=510  将最后的两个标记位也删除

df

-h  带单位的显示
-i  节点号
-T  显示文件系统的类型

自动化批量创立分区

方法一:
[root@localhost ~]# echo -e 'n\np\n\n\n+1G\nw' |fdisk /dev/sdd     (\n 回车的意思)
[root@localhost ~]# fdisk -l /dev/sdd
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048     2099199     1048576   83  Linux

方法二:
[root@localhost ~]# fdisk  /dev/sdb <<EOF
> n
> p
> 
> 
> +1G
> w
> EOF

文件系统

本来都是磁盘上的二进制数据,但是用文件系统以后就看起来比较友好

元数据区和数据区

磁盘被格式化两部分:元数据区和数据区,元数据占据一部分空间
将数据区以磁盘块来存放
元数据区的索引节点INODE
虽然只有2个字节,但是依然占据4K的磁盘块空间
磁盘碎片:把部连续拼在一起
通过inode索引节点找到对应的磁盘块,索引节点起到一个指针的作用
查看文件的iNode    ls  -i   或者 stat
一旦删除文件,那么原有的iNode也就被删除
Linux支持的文件系统
ext2 无日志的
ext3 ext4
xfs  单个文件无上限
reiserfs
btrfs  
iso9660 光盘文件系统
网络文件系统: cifs  nfs
集群文件系统 gfs2 
分布式文件系统 MFS  ceph
#块的查询:
例如:  [root08:02 AMcentos8 ~]#xfs_info /dev/sda2
       [root08:02 AMcentos8 ~]#tune2fs -l /dev/sda1

创建文件系统的最小使用空间block

[root09:03 AMcentos8 /data]#lsblk -f                            
├─sda3 xfs                                fdcd162f-2ea2-4088-9e86-6a911336304a /data        

[root09:07 AMcentos8 /data]#df |grep /data
/dev/sda3       52403200   398412  52004788   1% /data
[root09:08 AMcentos8 /data]#xfs_info /dev/sda3 |grep bsize  看到块的设置大小为4096
data     =                       bsize=4096   blocks=13107200, imaxpct=25
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=6400, version=2

#最少的分配还是给4K,就是说即使没有达到4K
[root09:02 AMcentos8 /data]#echo >  /data/f0
[root09:03 AMcentos8 /data]#du /data/
4   /data/
[root09:03 AMcentos8 /data]#echo aba  >  /data/f1
[root09:03 AMcentos8 /data]#du /data/
8   /data/
[root09:03 AMcentos8 /data]#echo abassssssssss  >  /data/f2
[root09:03 AMcentos8 /data]#du /data/
12  /data/

lsblk -f 列出磁盘的详细信息

显示文件系统的类型
[root08:34 AMcentos8 ~]#lsblk  -f
NAME   FSTYPE  LABEL                      UUID                                 MOUNTPOINT
sda                                                                            
├─sda1 ext4    wanghua                    37e18d75-7231-4d84-8536-18e1b3a891f6 /boot
├─sda2 xfs                                55d00b68-d8ef-4c35-aa11-b8c11b91e867 /
├─sda3 xfs                                fdcd162f-2ea2-4088-9e86-6a911336304a /data
├─sda4                                                                         
├─sda5 swap                               d81ef34a-c3dd-4483-b830-4cf516cbec7c [SWAP]
└─sda6                                                                         
sdb                                                                            
sr0    iso9660 CentOS-8-2-2004-x86_64-dvd 2020-06-08-22-08-25-00           

blkid

#被格式以后才能被此命令识别UUID出来
 -U 根据UUID查找
 -L 根据卷标查找
[root@wang ~]# blkid  -U "d903f5f5-c073-4251-ba07-c92e493e84f4"
/dev/sdb3
[root@wang ~]# blkid  -L oneday
/dev/sdb5
[root@wang ~]# 

mkfs

 #创建文件系统
[root@localhost ~]# mkfs.ext4  /dev/sdc
或者
[root@localhost ~]# mkfs -t  ext4  /dev/sdb1
挂载使用
[root@localhost ~]# mount /dev/sdb1  /mnt
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
lost+found      #此文件相当于收容所,不知道放哪里的文件夹放里面,针对与ext系列的文件系统
mkfs针对的是ext系列的文件系统
mkfs  -t ex2   ext3   ext4   xfs
或者 mkfs.ext2  mkfs.ext3  mkfs.ext4  mkfs.xfs

#参数
-b
mkfs.xfs  -b  size=2048  /dev/sdb
-I 设置block 大小与inode大小

#创建文件系统给块大小
mkfs.ext4 -b 4096 -I 512 /dev/sda3  

#对文件格式化的同时设置卷标和块大小
-L 卷标    (label :卷标)
-b 指明块大小
-f  强制修改文件系统格式
[root@centos8 ~]# mkfs.xfs -f   /dev/sdb1

e2label 查看卷标

设置卷标的命令:
e2label  device  #查看卷标
[root08:45 AMcentos8 ~]#e2label    /dev/sda1  
wanghua

e2label  device  Label  #设置卷标
[root08:43 AMcentos8 ~]#e2label    /dev/sda1  wanghua

findfs

[root09:45 AMcentos8 /data]#findfs --help
Usage:
 findfs [options] {LABEL,UUID,PARTUUID,PARTLABEL}=<value>

Find a filesystem by label or UUID.
Options:
 -h, --help     display this help
 -V, --version  display version

tune2fs 和 xfs_info 看block的信息

[root@localhost ~]# tune2fs -l /dev/sdb1

block是
#centos7以后的系统 有acl默认就有
-l
[root@localhost ~]# tune2fs -l /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          66f088db-b678-47bd-9251-eeca30fa8e3f
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean

#centos6 没有acl
[root@localhost ~]# tune2fs -l /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          9a74230b-8b16-4b6e-be5a-c8b9ecb90983
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
#添加ACL  ,以后就可以用访问控制列表了
[root@localhost ~]# tune2fs -o acl  /dev/sdb1

-u  设置UUID
#生成随机的UUID号
[root@centos8 /]# uuidgen
ca99274a-7c09-4d43-a9e0-31732f1990ec  
[root@centos8 /]# tune2fs -U cd533952-e4e0-4dab-b7b0-9d20dd1d8793 /dev/sdb1
或者方法:
[root12:59 PMcentos8 /mnt/etc]#tune2fs -U `uuidgen`  /dev/sdb3
tune2fs 1.45.4 (23-Sep-2019)
Setting the UUID on this filesystem could take some time.
Proceed anyway (or wait 5 seconds to proceed) ? (y,N) y

#刷新磁盘
[root@centos8 /]#  e2fsck -f /dev/sdb1

-L 贴标签
[root@centos8 /]# tune2fs -L mysql /dev/sdb1
tune2fs 1.45.4 (23-Sep-2019)
[root@centos8 /]# blkid  /dev/sdb1
/dev/sdb1: LABEL="mysql" UUID="cd533952-e4e0-4dab-b7b0-9d20dd1d8793" TYPE="ext4" PARTUUID="447ac64b-01"
[root@centos8 /]# e2label /dev/sdb1  查看标签
mysql

-c 修改挂载次数
[root@centos8 /]# tune2fs -c 10 /dev/sdb1
[root@centos8 /]# tune2fs --help
tune2fs 1.45.4 (23-Sep-2019)
tune2fs: invalid option -- '-'
Usage: tune2fs [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]
    [-i interval[d|m|w]] [-j] [-J journal_options] [-l]
    [-m reserved_blocks_percent] [-o [^]mount_options[,...]]
    [-r reserved_blocks_count] [-u user] [-C mount_count]
    [-L volume_label] [-M last_mounted_dir]
    [-O [^]feature[,...]] [-Q quota_options]
    [-E extended-option[,...]] [-T last_check_time] [-U UUID]
    [-I new_inode_size] [-z undo_file] device

-m  修改预留空间为百分之多少
[root@centos8 /]# tune2fs -m 0.1 /dev/sdb1

tune2fs (针对的是ext系列的文件,centos6没有xfs的文件)  不格式化的情况下调整和查看文件系统的属性
-l 查看块的内容
-j 升级文件系统
[root@wang ~]# tune2fs -j /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
Creating journal inode: done  #升级以后有日志功能了
[root@wang ~]# blkid  /dev/sdb1
/dev/sdb1: UUID="e1064cdc-f656-4748-8426-aea66bdc0ed1" SEC_TYPE="ext2" TYPE="ext3"  由ext2 升级到ext3
 -O extents,uninit_bg,dir_index   
从ext3升级到ext4
 [root@wang ~]# tune2fs -O extents,uninit_bg,dir_index /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
[root@wang ~]# blkid  /dev/sdb1
/dev/sdb1: UUID="e1064cdc-f656-4748-8426-aea66bdc0ed1" TYPE="ext4"
-L 修改卷标
-m 调整预留空间的百分比
-o 开启或关闭某种特性
[root@wang ~]# tune2fs -o acl /dev/sdb3 # -o acl
开启访问控制的功能
tune2fs 1.42.9 (28-Dec-2013)

dumpe2fs 列出块组信息

文件的最小存储单元为block 
windows叫簇
[root@centos7 ~]# dumpe2fs   /dev/sdb1

e2fsck的修复只能是ext系列

只是针对ext系列的文件
[root@wang ~]# e2fsck /dev/sdb3
e2fsck 1.42.9 (28-Dec-2013)
/dev/sdb3: clean, 11/262144 files, 103100/4194304 blocks

#   -y 修复,遇到问题不询问,自动修复
[root@wang ~]# e2fsck /dev/sdb3 - y 
e2fsck 1.42.9 (28-Dec-2013)
/dev/sdb3: clean, 11/262144 files, 103100/4194304 blocks

mount

挂载规则:

-r  只读挂载
=======================
-o  加选项
remount  重挂
sync   同步 (安全但是效率低下)
async  异步

===========================
[root@centos8 mnt]# mount -o remount,ro  /mnt    (以ro的方式重新挂载)
[root@centos8 mnt]# touch ac
touch: cannot touch 'ac': Read-only file system

-B  文件夹挂载到文件夹上
例如:这样的两个文件夹不是硬链接的关系却内容一样
        [root11:16 AMcentos8 ~]#mkdir /mnt/etc
        [root11:16 AMcentos8 ~]#mount /etc/ /mnt/etc/
        mount: /mnt/etc: /etc is not a block device.
        [root11:17 AMcentos8 ~]#mount -B   /etc/ /mnt/etc/
        [root11:17 AMcentos8 ~]#cd /mnt/etc
        [root11:18 AMcentos8 /mnt/etc]#ls
        adjtime                   microcode_ctl
        aliases                   mime.types
        aliases.db                mke2fs.conf 
#不是硬链接但是却一样       
[root11:21 AMcentos8 /mnt/etc]#ll /etc/fstab  /mnt/etc/fstab 
-rw-r--r--. 1 root root 636 Apr 16 14:56 /etc/fstab
-rw-r--r--. 1 root root 636 Apr 16 14:56 /mnt/etc/fstab

-U  加UUID挂载

文件当做移动硬盘

[root11:38 AMcentos8 /mnt/etc]#dd  if=/dev/zero of=/disk.img bs=1M
[root11:38 AMcentos8 /mnt/etc]#mkfs.ext4 /disk.img
[root11:39 AMcentos8 /mnt/etc]#mkdir /mnt/loop
[root11:42 AMcentos8 /mnt/etc]#mount /disk.img  /mnt/loop/
[root11:43 AMcentos8 /mnt/etc]#df
Filesystem          1K-blocks    Used Available Use% Mounted on
devtmpfs               387252       0    387252   0% /dev
tmpfs                  405244       0    405244   0% /dev/shm
tmpfs                  405244    5780    399464   2% /run
tmpfs                  405244       0    405244   0% /sys/fs/cgroup
/dev/mapper/cl-root 104806400 5450096  99356304   6% /
/dev/sda1             1998672  148760   1728672   8% /boot
tmpfs                   81048       0     81048   0% /run/user/0
/dev/sdb1             1998672    6152   1871280   1% /mnt
/dev/loop0               1003      21       911   3% /mnt/loop  ( # /dev/loop0 关联了/disk.img )
[root11:43 AMcentos8 /mnt/etc]#ll /dev/loop*
brw-rw---- 1 root disk  7,   0 May  1 11:43 /dev/loop0
crw-rw---- 1 root disk 10, 237 May  1 11:43 /dev/loop-control
[root11:43 AMcentos8 /mnt/etc]#losetup -a 
/dev/loop0: [64768]:1059175 (/disk.img)   #关联  文件挂文件,就回环了

[root11:43 AMcentos8 /mnt/etc]#cp  /etc/redhat-release /mnt/loop/
[root11:50 AMcentos8 /mnt/etc]#ll /mnt/loop/
total 13
drwx------ 2 root root 12288 May  1 11:39 lost+found
-rw-r--r-- 1 root root    38 May  1 11:50 redhat-release
[root11:51 AMcentos8 /mnt/etc]#touch  /mnt/loop/centos8.txt
[root11:51 AMcentos8 /mnt/etc]#scp /disk.img 10.0.0.131:/

#客服机挂载使用可以看到里面的内容
[root11:52 AMcentos8 /]#blkid  disk.img 
disk.img: UUID="85b7954a-e47e-468c-891f-a29b4431418e" BLOCK_SIZE="1024" TYPE="ext4"
[root11:52 AMcentos8 /]#mount /disk.img  /mnt
[root11:53 AMcentos8 /]#ll /mnt
total 13
-rw-r--r-- 1 root root     0 May  1 11:51 centos8.txt
drwx------ 2 root root 12288 May  1 11:39 lost+found
-rw-r--r-- 1 root root    38 May  1 11:50 redhat-release

fstab表的介绍

1.用设备名UUID做挂载名,因为是不会发生变化的,逻辑分区设备名容易发生改变
2.最后两个数字的含义:
          备份的时间间隔, 0:不备份
          文件系统的检查   0:不做文件系统检查  ,1表示开机的时候检查文件系统
3.写在文件里面以后直接用 mount  -a 就直接写在磁盘了

#快速写入UUID编号到fstab表
:r!blkid  /dev/sdb2   
写入以后mount -a
df -T 就可以看到是否被挂载了,lsblk -f 也可以查看

fstab 的故障处理

[root02:20 PMcentos8 ~]#cat /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Thu Apr 15 08:37:08 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=a1098464-83aa-4e6c-989e-d6826e061d4a /boot                   ext4    defaults        1 2
/dev/mapper/cl-swap     swap                    swap    defaults        0 0
/swapfile             swap  swap   defaults         0 0 
 UUID=334e7802-bb23-4126-abf5-401ae0055e83  /data/mysql  ext4    noatime,ro   0 0 

1. umount 设备
2. mount  -a 就无须重启机器自动挂载的目的了
或者
[root02:23 PMcentos8 ~]#mount -o remount,rw /data/mysql

UUID 的修改

[root12:39 PMcentos8 /mnt/etc]#uuidgen
e7d94e62-be61-434e-aa2d-51fcfffed21f
#修改UUID
[root12:59 PMcentos8 /mnt/etc]#tune2fs -U `uuidgen`  /dev/sdb3

   #UUID更新了,但是文件里面还是旧的UUID

fuser 查看某个文件夹是否在使用

[root11:09 AMcentos8 /mnt]#umount /mnt
umount: /mnt: target is busy.  别的用户也挂载使用
[root11:09 AMcentos8 /mnt]#lsof /mnt  查看哪些在使用
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    1735 root  cwd    DIR   8,17     4096    2 /mnt
bash    1866 wang  cwd    DIR   8,17     4096    2 /mnt
lsof    1895 root  cwd    DIR   8,17     4096    2 /mnt
lsof    1896 root  cwd    DIR   8,17     4096    2 /mnt
[root11:09 AMcentos8 /mnt]#fuser -v  /mnt
                     USER        PID ACCESS COMMAND
/mnt:                root     kernel mount /mnt
                     root       1735 ..c.. bash
                     wang       1866 ..c.. bash
[root11:11 AMcentos8 /mnt]#fuser -km  /mnt   杀进程,所有的人都无法使用
/mnt:                 1735c  1866c

swap

[root@centos7 ~]# dd if=/dev/zero of=/dev/null bs=1G count=1
#swap得到使用
[root@centos7 ~]# free  -h
              total        used        free      shared  buff/cache   available
Mem:           977M         63M        849M        1.6M         64M        809M
Swap:          8.0G         58M        7.9G

#内存无法使用
[root@centos7 ~]# dd if=/dev/zero of=/dev/null bs=9G count=1
dd: memory exhausted by input buffer of size 9663676416 bytes (9.0 GiB)
[root@centos8 ~]# cat /etc/fstab 
[root@centos8 ~]# swapon -a  #识别分区
[root@centos8 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          791Mi       222Mi       321Mi        10Mi       246Mi       432Mi
Swap:           9Gi          0B         9Gi

#当内存达到百分之70的时候使用swap,该值可以修改,但是只是在内存里面修改,重启就还原
[root04:10 PMcentos8 ~]#cat /proc/sys/vm/swappiness 
30

#开启和关闭所有的交换分区
[root@centos7 ~]# swapoff -a 
[root@centos7 ~]# swapon -a 

[root@centos7 ~]# vim  /etc/fstab 
/dev/mapper/centos-root /    

                   xfs     defaults        0 0
UUID=ffe318c4-6b8c-49fc-a43a-7c15d622700e /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
UUID=00f8e18a-11f7-434d-a1bb-9f5efd7f86fa swap                   swap     defaults        0 0
[root@centos7 ~]# swapon -a    #立即生效
#查看优先级
[root@centos8 ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/dm-1                               partition   8388604 0   -2
/dev/sdc1                               partition   2097148 0   -3

[root@centos8 ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/dm-1                               partition   8388604 0   -2
/dev/sdc1                               partition   2097148 0   -3
[root@centos8 ~]# dd if=/dev/zero of=/null bs=3G count=1 
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 47.4639 s, 45.2 MB/s
[root@centos8 ~]# swapon -s    
Filename                Type        Size    Used    Priority
/dev/dm-1                               partition   8388604 95488   -2
/dev/sdc1                               partition   2097148 0   -3
建立的/dev/sdc1未起到作用
#调优先级:
[root@centos8 ~]# cat /etc/fstab |tail -1
UUID=b6f0f2f9-54ae-45fb-a9d1-6e0aeab988f0     swap swap  pri=100        0 0
[root@centos8 ~]# swapoff -a   关闭所有
[root@centos8 ~]# swapon -s
[root@centos8 ~]# free  -h
             total        used        free      shared  buff/cache   available
Mem:          791Mi       205Mi       472Mi        10Mi       113Mi       464Mi
Swap:            0B          0B          0B
[root@centos8 ~]# swapon -a
[root@centos8 ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/dm-1                               partition   8388604 0   -2
/dev/sdc1                               partition   2097148 0   100

[root@centos8 ~]# dd if=/dev/zero of=/null bs=3G count=1 
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 9.08901 s, 236 MB/s
[root@centos8 ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/dm-1                               partition   8388604 76  -2
/dev/sdc1                               partition   2097148 96016   100
#优先用sdc1

创建一个文件,将文件做为交换分区

dd if=/dev/zero of=swapfile bs=1M count=1024 
mkswap  /swapfile
挂载 :但是文件的挂载不能使用UUID,要使用文件名
       文件做的交换分区效果没有直接用磁盘做的效果好
/swapfile             swap  swap   defaults         0 0        

free -h

[root03:13 PMcentos8 ~]#free -h
              total        used        free      shared  buff/cache   available
Mem:          791Mi       205Mi       336Mi       5.0Mi       249Mi       448Mi
Swap:         9.0Gi          0B       9.0Gi

buff     写缓冲
cache    读缓存

扩展分区

[root@centos6 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  3.7G  0 rom  
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0 97.7G  0 part /
├─sda3   8:3    0 48.8G  0 part /data
├─sda4   8:4    0    1K  0 part      #假的信息,真正大小不是4K
└─sda5   8:5    0  3.9G  0 part [SWAP]
[root@centos6 ~]# fdisk -l

Disk identifier: 0x000046eb

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         131     1048576   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             131       12879   102400000   83  Linux
/dev/sda3           12879       19253    51200000   83  Linux
/dev/sda4           19253       26109    55065600    5  Extended
/dev/sda5           19254       19764     4096000   82  Linux swap / Solaris
[root@centos6 ~]# 

移动设备的使用和磁盘空间管理工具

#centos6 上纯文件的挂载 :
mount 文件  挂载点  -o loop

制作ISO文件

[root10:06 PMcentos8 /misc/cd]#cp /dev/sr0 /root/ces
^C
[root10:11 PMcentos8 /misc/cd]#mount /root/ces /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root10:11 PMcentos8 /misc/cd]#cd  /mnt
[root10:11 PMcentos8 /mnt]#ls
AppStream  BaseOS  EFI  images  isolinux  media.repo  TRANS.TBL

mkisofs

[root10:16 PMcentos8 /mnt]#yum install mkisofs -y
[root10:15 PMcentos8 /mnt]#mkisofs -r  -o /root/etc.iso /etc
[root10:18 PMcentos8 /mnt]#ll -h ~/etc.iso 
-rw-r--r-- 1 root root 22M May  1 22:16 /root/etc.iso
[root10:19 PMcentos8 ~]#mount etc.iso /opt
mount: /opt: WARNING: device write-protected, mounted read-only.
[root10:19 PMcentos8 ~]#ls /opt
adjtime                   mke2fs.conf
aliases                   modprobe.d
alternatives              modules-load.d
........
............
..................
[root10:21 PMcentos8 ~]#ll /dev/loop*
brw-rw---- 1 root disk  7,   0 May  1 22:11 /dev/loop0
brw-rw---- 1 root disk  7,   1 May  1 22:19 /dev/loop1
crw-rw---- 1 root disk 10, 237 May  1 22:11 /dev/loop-control

u盘挂载到虚拟机的使用方法:

安装命令:
[root11:06 PMcentos8 ~]#yum install dosfstools -y
#格式化为vfat
[root11:03 PMcentos8 ~]#mkfs.vfat /dev/sdc4
mkfs.fat 4.1 (2017-01-24)                  
[root11:03 PMcentos8 ~]#mkfs.vfat /dev/sdc1
mkfs.fat 4.1 (2017-01-24)
#挂载使用
同步:
[root11:08 PMcentos8 ~]#sync
[root11:09 PMcentos8 ~]#sync

lsusb

[root11:18 PMcentos8 ~]#yum install usbutils -y
[root11:18 PMcentos8 ~]#lsusb

插入U盘后看日志

[root11:18 PMcentos8 ~]#tail /var/log/messages -f

dmesg 查看硬件的状态

[root11:48 PMcentos8 ~]#dmesg

df 挂载的磁盘的信息

-h  
-H
-i 节点的数量
-T 文件信息
-P 对整齐

du 显示目录的大小

-s 显示总空间
例如: du -s /etc

空洞文件

[root12:10 AMcentos8 ~]#dd  if=/dev/zero of=/data/test bs=1M count=1 seek=1024
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00121348 s, 864 MB/s
[root12:10 AMcentos8 ~]#du -sh /data/test 
1.0M    /data/test
[root12:11 AMcentos8 ~]#ll /data/test  -h    #空洞文件
-rw-r--r-- 1 root root 1.1G May  2 00:10 /data/test

dd

#截断
[root12:41 AMcentos8 ~]#cat f1 f2
abcdef
123456789
[root12:41 AMcentos8 ~]#dd if=f1 of=f2 bs=1 count=2 skip=3 seek=4
2+0 records in
2+0 records out
2 bytes copied, 8.079e-05 s, 24.8 kB/s
[root12:41 AMcentos8 ~]#cat f2
1234de[root12:41 AMcentos8 ~]#

#不截断
[root12:44 AMcentos8 ~]#cat f1
abcdef
[root12:44 AMcentos8 ~]#cat f2
123456789
[root12:44 AMcentos8 ~]#dd if=f1 of=f2 bs=1 count=2 skip=3 seek=4 conv=notrunc
2+0 records in
2+0 records out
2 bytes copied, 3.8311e-05 s, 52.2 kB/s
[root12:45 AMcentos8 ~]#cat f2
1234de789

#装换
[root12:45 AMcentos8 ~]#cat f1
abcdef
[root12:47 AMcentos8 ~]#dd  if=f1 of=f2 conv=ucase
0+1 records in
0+1 records out
7 bytes copied, 0.000140841 s, 49.7 kB/s
[root12:48 AMcentos8 ~]#cat  f2
ABCDEF

dd 备份分区

[root01:06 AMcentos8 ~]#dd if=/dev/sda1 of=/data/sda1.img 
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.52887 s, 194 MB/s
[root01:08 AMcentos8 ~]#ll -h /data/sda1.img 
-rw-r--r-- 1 root root 1.0G May  2 01:08 /data/sda1.img
[root01:09 AMcentos8 ~]#ll -h /data/sda1.img ^C
[root01:09 AMcentos8 ~]#mount  /data/sda1.img /media/
[root01:10 AMcentos8 ~]#cd /media/
[root01:10 AMcentos8 /media]#ls
config-4.18.0-193.el8.x86_64                             loader
efi                                                      lost+found
grub2                                                    System.map-4.18.0-193.el8.x86_64
initramfs-0-rescue-9d993b88cfc445b985cdaf1ba56b7fe5.img  vmlinuz-0-rescue-9d993b88cfc445b985cdaf1ba56b7fe5
initramfs-4.18.0-193.el8.x86_64.img                      vmlinuz-4.18.0-193.el8.x86_64
[root01:10 AMcentos8 /media]#blkid  /data/sda1.img 
/data/sda1.img: UUID="37e18d75-7231-4d84-8536-18e1b3a891f6" TYPE="ext4"