天道酬勤,学无止境

磁盘和文件系统小结

磁盘相关的概念

虚拟磁盘 /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"

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Linux运维学习笔记-文件系统知识体系总结
    文件系统知识总结 新买的硬盘要存放数据需要怎么做?首先将硬盘装机做RAID,做完RAID后进行分区,分完区后格式化创建文件系统,最后存放数据。硬盘的内外部结构:物理形状: 接口类型:IDE(Integrated Drive Electronics)即“电子集成驱动器”。SCSI(Small Computer System Interface)小型计算机系统接口。SATA(Serial Advanced Technology Attachment)串口硬盘。SAS(Serial Attached SCSI)串行连接SCSI,是新一代的SCSI技术,向下兼容SATA。 采购磁盘考虑因素:主轴转数:5400/7200/10000/15000/M接口类型:SAS/SATA/SCSI/IDE读写更灵敏的磁头选型:线上的业务,用SAS磁盘线下的业务,用SATA磁盘,磁带库线上高并发、小容量的业务,用SSD磁盘Note:千万不要用SATA磁盘来做在线高并发服务的数据存储或数据库业务。 企业生产环境主流磁盘的相关信息对比:单位容量对比性能和价格:SSD > SAS > SATA >SCSI单位价格购买磁盘容量:SATA > SAS > SSD企业生产场景普及程度:SAS > SATA > SSD SSD固态硬盘(Solid State Drive)用固态电子存储芯片阵列而制成的硬盘
  • Heartbeat基础知识-运维小结
    在日常的集群系统架构中,一般用到Heartbeat的主要就2种:1)高可用(High Availability)HA集群, 使用Heartbeat实现,也称为”双机热备”, “双机互备”, “双机”;2)负载均衡群集(Load Balance Cluster),使用Linux Virtual Server(LVS)实现;Heartbeat 的介绍Heartbeat是Linux-HA项目中的一个组件,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat项目里,由heartbeat模块实现了这两个功能。Heartbeat是目前开源HA项目中十分成功的一个例子,它提供了所有 HA 软件所需要的基本功能,比如心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享 IP 地址的所有者等,自1999年开始到现在,Heartbeat在行业内得到了广泛的应用。heartbeat最核心的功能包括两个部分,心跳监测和资源接管。心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。Hearbeat和Keepalived区别1) Keepalived使用的VRRP协议方式
  • 【数据库】数据库恢复技术
    文来自【风骨散人】 合作整理 文章目录 一、 事务的基本概念1.事务1.1what's the 事务:1.2事务的定义1.2.1 事务的显示定义1.2.2 事务的隐式定义方式 2.事务的ACID特性2.1原子性(Atomicity)2.2一致性(Consistency)2.3一致性与原子性2.4 隔离性(Isolation)2.5 持续性(Durability )2.6 事务特性的保证与破坏 二、 数据库恢复概述1.故障是不可避免的2.故障的影响3.数据库的恢复4.恢复子系统是数据库管理系统的一个重要组成部分5.恢复技术是衡量系统优劣的重要指标 三、 故障的种类1.事务内部的故障1.1 可预期1.2 不可预期 2.系统故障2.1系统故障的常见原因2.2系统故障的恢复 3.介质故障4.计算机病毒4.1计算机病毒种类4.2计算机病毒的危害 5. 小结 四、 恢复的实现技术1. 如何建立冗余数据和如何利用这些冗余数据实施数据库恢复1.1数据转储(backup)1.1.1 什么是数据转储1.1.2 转储方法 1.2登记日志文件(logging)1.2.1.日志文件的格式和内容1.2.2.日志文件的作用1.2.3.登记日志文件 五、 恢复策略1. 事务故障的恢复1.1事务故障的恢复步骤 2 系统故障的恢复2.1系统故障的恢复步骤 3 介质故障的恢复3.1介质故障的恢复步骤3.2
  • Kafka和RocketMQ底层存储:零拷贝技术
    零拷本相关 《【转】零拷贝的实现原理》《【转】零拷贝的实现原理》《搞懂Linux零拷贝,DMA》《通过零拷贝进行有效的数据传输(java、c)》《CUDA零拷贝内存(zerocopy memory)》 IO相关 《Linux文件系统直接IO原理与实现:缓存I/O、直接I/O》《Linux文件系统概述:硬盘驱动>通用块设备层>文件系统>虚拟文件系统(VFS)》《Linux内核:一文读懂文件系统、缓冲区高速缓存和块设备、超级块》《Linux虚拟文件系统概述》《进程、地址空间、文件、I/O、保护、虚拟内存》《ARM SMMU原理与IOMMU技术(“VT-d” DMA、I/O虚拟化、内存虚拟化)》《什么是I/O地址,I/O端口和I/O端口地址?》《Linux虚拟内存管理 | 虚拟地址与物理地址映射、段错误SIGSEGV》 目录 存储介质-磁盘 顺序读写 mmap-文件内存映射 sendfile-零拷贝 RocketMQ 和 Kafka 的应用 RocketMQ 文件预热 - mlock 和 madvise(MADV_WILLNEED) RocketMQ 小结 Kafka - sendfile RocketMQ & Kafka 对比 大家好,我是yes。 我们都知道 RocketMQ 和 Kafka 消息都是存在磁盘中的,那为什么消息存磁盘读写还可以这么快?有没有做了什么优化
  • linux文件和目录的属性及硬链接与软链接
    1.文件属性概述 linux系统中的文件或目录的属性主要包括:索引节点(inode)、文件类型、权限属性、链接数、所归属的用户和用户组、最近修改的时间等内容 我们用ls –lhi命令查看一下结果,也可以用stat详细查看文件属性。 [root@linzhongniao ~]# ls -lhi total 92K 400420 -rw-------. 1 root root 1.1K Jun 14 05:02 anaconda-ks.cfg 400431 -rw-r--r--. 1 root root 112 Jul 16 2018 chuangjianrizhi.sh 404480 -rw-r--r--. 1 root root 52 Jul 17 2018 ddd.txt 404166 drwxr-xr-x. 2 root root 4.0K Jun 28 09:15 Desktop 404170 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Documents 404167 drwxr-xr-x. 2 root root 4.0K Jun 28 09:09 Downloads 390867 -rw-r--r--. 1 root root 292 Jun 20 01:00 ett.txt 390147 -rw-r--r--. 1 root
  • 数据密集型应用系统设计(DDIA)读书笔记(1~5章)
    文章目录 前言一、可靠、可扩展、可维护的应用系统二、数据模型与查询语言三、数据存储与检索四、数据编码与演化五、分布式数据系统参考文档 前言 漫长的内功修炼过程,阅读过程中产生的读书笔记,可以看成是目录的升级版或者正文的简略版(笔记中详略均依据本人主观意见) 每章的小结值得反复阅读 一、可靠、可扩展、可维护的应用系统 构成数据密集型系统的基本模块 P11硬盘的平均无故障时间(MTTF)约为10~50年 P15滚动升级 P16假定“人”是不可靠的,那么该如何保证系统的可靠性呢? P17即使一个系统现在工作可靠,并不意味着他将来一定能够可靠运转。 发生退化的一个常见的原因是负载增加如果系统以某种方式增长,我们应对增长的的措施有哪些。我们该如何添加计算资源来处理额外的负载 描述负载(Twitter的负载) P18描述性能 P20响应时间异常的可能原因 P21如果想知道典型的响应时间,平均值并不是合适的指标,因为他掩盖了一些信息,无法告诉有多少用户实际经历了多少延迟 因此最好使用百分位数 P21中位数称为50百分位数(缩写p50,另外还有p95,p99,p999) 针对负载增加的情况,可采用自动弹性系统和手动 P24可维护性 P25一个优秀的运营团队至少负责以下内容 P25简单性是我们构建系统的关键目标之一 简化系统并不意味着减少系统功能,而主要意味着消除意外方面的复杂性
  • DL380 G9安装centos 7.5小结 各种能用到技术贴汇总
    root@linuxidc ~]# cat /etc/redhat-releaseCentOS Linux release 7.2.1511 (Core) 方法4: [root@linuxidc ~]# rpm -q centos-releasecentos-release-7-2.1511.el7.centos.2.10.x86_64查看内核版本 方法1: [root@linuxidc ~]# cat /proc/versionLinux version 3.10.0-327.18.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu May 12 11:03:55 UTC 2016方法2: [root@linuxidc ~]# uname -aLinux linuxidc 3.10.0-327.18.2.el7.x86_64 #1 SMP Thu May 12 11:03:55 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 图形界面 # yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
  • Linux运维学习笔记-软硬链接知识总结
    文件链接 硬链接,通过索引节点来进行链接 硬链接原理图 硬链接的创建: 直接执行命令“ln 源文件 硬链接文件”,即可完成创建硬链接。硬链接知识小结:1、具有相同Inode节点号的多个文件是互为硬链接文件。2、删除硬链接文件或者删除源文件任意之一,文件实体并未被删除。3、只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除。4、当所有硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收。5、硬链接文件就是文件的另一个入口。6、可以通过给文件设置硬链接文件,来防止重要文件被误删。7、硬链接文件可以用rm命令删除。8、对于静态文件(没有进程正在调用的文件)来说,当对应硬链接数位0(i_link),文件就被删除。i_link的查看方法(ls -l结构的第三列就是) 软链接原理图: 软链接或叫符号链接,相当于windows的快捷方式软链接的创建: 直接执行命令“ln -s 源文件 硬链接文件”,即可完成创建软链接。软链接知识小结:1、 软链接类似windows的快捷方式(可以通过readlink查看其指向)。2、 软链接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体。3、 删除源文件,软链接文件依然存放,但是无法访问指向的源文件路径内容了。4、 失效的时候一般是红字白底闪烁提示。5、
  • OpenStack安装glance组件(三)
    OpenStack安装glance组件 一、glance镜像服务1、镜像服务2、Images API的版本3、镜像格式4、镜像格式5、镜像状态状态1状态2 6、访问权限7、架构图8、工作流程小结 二、部署Glance服务1、创建数据库实例和数据库用户2、创建用户、修改配置文件传参镜像导入 小结部署思路: 一、glance镜像服务 它在OpenStack中的项目名称为Glance。在早期的OpenStack版本中,Glance只有管理镜像的功能,并不具备镜像存储功能。现在,Glance已发展成为集镜像上传、检索、管理和存储等多种功能的OpenStack核心服务。 1、镜像服务 镜像服务就是用来管理镜像的,让用户能够发现、获取和保存镜像。在OpenStack中提供镜像服务的是Glance,其主要功能如下 查询和获取镜像的元数据和镜像本身注册和上传虚拟机镜像,包括镜像的创建、上传、下载和管理维护镜像信息,包括元数据和镜像本身支持多种方式存储镜像,包括普通的文件系统,Swift、Amazon S3等对虚拟机实例执行创建快照命令来创建新的镜像,或者备份虚拟机的状态 2、Images API的版本 Glance提供的RESTful API目前有两个版本: API v1和API v2 v1只提供基本的镜像和成员操作功能,包括镜像创建、删除、下载、列表、详细信息查询、更新,以及镜像租户成员的创建
  • 关于2019的一些面试实战小结
    今日头条屏幕适配的原理? 1:首先计算出 density,计算公式:当前设备屏幕总宽度(单位为像素)/ 设计图总宽度(单位为 dp) = densitydensity 的意思就是 1 dp 占当前设备多少像素计算density 的原因:在布局文件中填写的是什么单位,最后都会被转化为 px,系统就是通过上面的方法,将你在项目中任何地方填写的单位都转换为 px 但是,今日头条适配方案默认项目中只能以高或宽中的一个作为基准,来进行适配 简述Android中的加固和使用平台? 加固:防止代码反编译,提高代码安全性 加固三方平台,梆梆安全,360加固,爱加密等区别:梆梆安全,360加固看不到项目中的类,爱加密看的到Java类,单看不到里面的方法实现体,效果比前面差一点点 加固的底层原理:第三方加固的应用会生成一个Apk,然后把你的APK读取出来,在封装到这个第三方应用的APK里面. 如何对APK瘦身? 1)使用混淆, 2)开启shrinkResourse(shrink-收缩),会将没有用到的图片变成一个像素点 3)删除无用的语言资源(删除国际化文件) 4)对于非透明的大图,使用JPG(没有透明度信息),代替PNG格式 5)使用tinypng进行图片压缩 6)使用webp图片格式,进一步压缩图片资源 7)使用第三方包时把用到的代码加到项目中来,避免引用整一个第三方库
  • shell脚本 追加_sed追加命令a_ 标杆徐2018 Linux自动化运维系列④: Shell脚本自动化编程实战_Linux视频-51CTO学院...
    2019年录制SHell新课地址 贴切企业脚本编写思路讲解,手把手带你玩Shell脚本编程实战。 本套课程从实际项目案例出发,近100个Shell实例讲解,由浅入深,循序渐进,带你玩转Shell编程的方方面面。 内容多面: 知识点覆盖广泛,内容由浅入深,适合学习和提高 实例丰富: 每章知识点都配有实例,重点内容配有经典案例 实战技巧: 依托实例讲解Shell编程技巧,多面提升运维编程者实力 案例分析: 使用专门章节展示和分析经典应用案例, 巩固理论、增强实战 第1章Shell基础概述 Shell脚本能做什么 Shell脚本是什么 Shell脚本特性有哪些 Shell脚本能完成哪些任务 第2章Shell变量详解 Shell自定义变量 Shell系统环境变量 Shell位置参数变量 Shell变量赋值方式 Shell变量数值运算 Shell变量内容替换 Shell变量进行自增 Shell变量整体小结 第2章Shell条件测试 Shell条件测试概述 条件测试案例-MySQL备份 条件测试案例-磁盘使用率 条件测试案例-内存使用率 条件测试案例-系统负载状态 条件测试案例-习题讲解 Shell条件字符串比对 字符串比对案例脚本编写 条件测试案例-批量添加用户 第3章Shell流程控制 Shell流程控制if概述 if流程控制案例-安装Nginx if流程控制案例-配置不同系统仓库
  • MySQL - 存储引擎初探
    文章目录 生猛干货存储引擎概述实例层物理层 内存和物理结构Buffer PoolRedo log 5.7新版本特性8.0 新版本特性InnoDB VS MyISAM功能对比事务支持 其他性能对比 InnoDB 存储引擎核心特性ARIES 三原则 小结搞定MySQL 生猛干货 带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试 存储引擎概述 存储引擎是 MySQL 中具体与文件打交道的子系统,它是根据 MySQL AB 公司提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫作存储引擎 。 常用的存储引擎: 有古老的 MyISAM、支持事务的 InnoDB、内存类型的 Memory、归档类型的 Archive、列式存储的 Infobright,以及一些新兴的存储引擎,以 RocksDB 为底层基础的 MyRocks 和 RocksDB,和以分形树索引组织存储的 TokuDB, 以及国产的分布式存储引擎 ArkDB。 在 MySQL 5.6 版本之前,默认的存储引擎都是 MyISAM,但 5.6 版本以后默认的存储引擎就是 InnoDB 了。 InnoDB 存储引擎的具体架构如下图所示。上半部分是实例层(计算层),位于内存中,下半部分是物理层,位于文件系统中。 实例层 实例层分为线程和内存。InnoDB 重要的线程有 Master Thread
  • 2018年3月29日 11:02:33 关于docker分享之分布式存储 glusterfs
    2018年3月29日 11:02:33 关于docker分享之分布式存储 glusterfs 经典语录: 实际实验搭建:前提 是要保证 一个 /data目录不和根分区在同一个磁盘!1、centos7安装glusterfs参考链接:https://wiki.centos.org/SpecialInterestGroup/Storage/gluster-Quickstart#To Use the RPMs from Storage SIG, you need to install the centos-release-gluster RPM as it will provide the required YUM repository files. This RPM is available from CentOS Extras. yum install centos-release-gluster -y yum --enablerepo=centos-gluster*-test install glusterfs-server -y systemctl enable glusterd systemctl start glusterd systemctl status glusterd 2、组建集群(配置信任存储池):#从glusterfs官网跳转过来的 [root@docker1 ~]
  • MySQL 的
    mysql的"双1验证"指的是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,这两个是是控制MySQL 磁盘写入策略以及数据安全性的关键参数。下面从参数含义,性能,安全角度阐述两个参数为不同的值时对db 性能,数据的影响。一、参数意义innodb_flush_log_at_trx_commit如果innodb_flush_log_at_trx_commit设置为0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作;如果innodb_flush_log_at_trx_commit设置为1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去;如果innodb_flush_log_at_trx_commit设置为2:每次事务提交时MySQL都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。注意:由于进程调度策略问题,这个"每秒执行一次 flush(刷到磁盘)操作"并不是保证100%的"每秒"。sync_binlogsync_binlog 的默认值是0
  • 程序人生-Hello’s P2P 计算机系统2019HITICS
    计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机类 计算机科学与技术学院 2019年12月 摘 要 本文是基于linux对C语言程序hello.c的从编译运行到终止的整个P2P(From Program to Process)和O2O(O2O: From Zero-0 to Zero-0)过程进行了深入分析。涵盖了从C语言代码文件转化为linux下的可执行文件过程中的预处理、编译、汇编和链接阶段,和可执行文件过程中的进程管理、存储管理和I/O管理的原理的内容。 关键词: 程序编译,存储管理,进程管理,I/O管理 ,计算机系统 (摘要0分,缺失-1分,根据内容精彩称都酌情加分0-1分) 目 录 第1章 概述 - 4 - 1.1 HELLO简介 - 4 - 1.2 环境与工具 - 4 - 1.3 中间结果 - 4 - 1.4 本章小结 - 4 - 第2章 预处理 - 5 - 2.1 预处理的概念与作用 - 5 - 2.2在UBUNTU下预处理的命令 - 5 - 2.3 HELLO的预处理结果解析 - 5 - 2.4 本章小结 - 5 - 第3章 编译 - 6 - 3.1 编译的概念与作用 - 6 - 3.2 在UBUNTU下编译的命令 - 6 - 3.3 HELLO的编译结果解析 - 6 - 3.4 本章小结 - 6 - 第4章 汇编 - 7 - 4.1
  • 【OCP|OCM】Oracle培训考证系列
    【OCP|OCM】Oracle培训考证系列 我的个人信息网名:小麦苗QQ:646634621QQ群:618766405我的博客:http://blog.itpub.net/26736162/abstract/1/ 微信公众号:xiaomaimiaolhr,二维码如下:小麦苗的微信二维码如下所示,加我时请备注相关信息: 我的微店地址:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail ?小麦苗出版的数据库类丛书:http://blog.itpub.net/26736162/viewspace-2142121/ 博客链接:http://blog.itpub.net/26736162/viewspace-2152182/ 现有课程 课程名称课时上课时间(可根据情况调整)OCP(从入门到专家)每年1-2期,35课时左右/期每周一、周三、周四、周六20:00-22:00OCM认证每年N期,9课时/期每周二、周五20:00-22:00高可用课程(rac+dg+ogg)未定未定未定注意: 每次上课前30分钟答疑。 OCM实时答疑,提供和考试一样的练习环境。 授课方式:YY语音直播 + QQ互动答疑 + 视频复习。 OCP课时可以根据大家学习情况进行增加或缩减。 OCP报名可以循环听课,但最多不得超过3期课。 12c OCM课程私聊 【OCM
  • MySQL数据库小结
    一、基础概念1.1 数据描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机在计算机中描述一个事物,就需要抽取这一事物的典型特征,组成一条记录,就相当于文件里的一行内容。1.2 什么是数据库数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的过去人们将数据存放在文件柜里,现在数据量庞大,已经不再适用数据库是长期存放在计算机内、有组织、可共享的数据即可。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种 用户共享1.3 什么是数据库管理系统(DataBase Management System 简称DBMS)在了解了Data与DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键这就用到了一个系统软件---数据库管理系统如MySQL、Oracle、SQLite、Access、MS SQL Servermysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。sql server是微软公司的产品,主要应用于大中型企业
  • 再提NTFS压缩功能的优劣
    盆盆 [email]peter@8163.net.cn[/email] 大部分朋友对NTFS的压缩功能已经很了解了,这里兄弟我再小结一下NTFS压缩功能的优 劣,以供菜鸟朋友更好地利用NTFS文件系统: 1.相对于Winrar、Winzip等第三方工具来说,NTFS压缩功能工作在系统的底层,估计直 接在文件系统这一层提供压缩/解压缩服务,所以任何Windows应用程序都可以自由、透 明地读取NTFS压缩后的文件。这对于类似VMware这样的应用程序实在太有用了,因为一 个虚拟磁盘映像文件可以从4GB压缩到2~3GB! 2.只要格式化分区时选择压缩功能,今后保存文件会自动压缩,速度、效率明显高于 Winrar、Winzip等第三方工具,没有办法,微软的技术~~ 3.很多朋友认为NTFS压缩会占用系统资源,此话不假,NTFS确实会消耗一部分系统资 源,所以不建议在系统分区使用该功能,否则会导致系统性能下降! 但是以此来诟病NTFS压缩却是大大的冤枉,大家可以想想,难道Winar、Winzip压缩/解 压就不消耗系统资源吗?我看速度更慢、占用资源更高!毕竟微软更了解自己的文件系 统,相信NTFS压缩功能优化程度更高,同时由于工作在更底层,应该效率更高、资源占 用更少。 4.该说说NTFS压缩的缺点了。同样NTFS压缩也有致命伤,那就是NTFS压缩功能只能自己 “享用”,而在网络传输的时候
  • RocketMQ 和 Kafka 底层优化全解析
    大家好,我是yes。 我们都知道 RocketMQ 和 Kafka 消息都是存在磁盘中的,那为什么消息存磁盘读写还可以这么快?有没有做了什么优化?都是存磁盘它们两者的实现之间有什么区别么?各自有什么优缺点? 今天我们就来一探究竟。 存储介质-磁盘 一般而言消息中间件的消息都存储在本地文件中,因为从效率来看直接放本地文件是最快的,并且稳定性最高。毕竟要是放类似数据库等第三方存储中的话,就多一个依赖少一份安全,并且还有网络的开销。 那对于将消息存入磁盘文件来说一个流程的瓶颈就是磁盘的写入和读取。我们知道磁盘相对而言读写速度较慢,那通过磁盘作为存储介质如何实现高吞吐呢? 顺序读写 答案就是顺序读写。 首先了解一下页缓存,页缓存是操作系统用来作为磁盘的一种缓存,减少磁盘的I/O操作。 在写入磁盘的时候其实是写入页缓存中,使得对磁盘的写入变成对内存的写入。写入的页变成脏页,然后操作系统会在合适的时候将脏页写入磁盘中。 在读取的时候如果页缓存命中则直接返回,如果页缓存 miss 则产生缺页中断,从磁盘加载数据至页缓存中,然后返回数据。 并且在读的时候会预读,根据局部性原理当读取的时候会把相邻的磁盘块读入页缓存中。在写入的时候会后写,写入的也是页缓存,这样存着可以将一些小的写入操作合并成大的写入,然后再刷盘。 而且根据磁盘的构造,顺序 I/O 的时候,磁头几乎不用换道,或者换道的时间很短。
  • 将java进程转移到“解剖台”之前,法医都干了什么?
    原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。作为法医,不怕高度腐烂的尸体,也不怕错综复杂的案情。最怕的,是没留下任何东西。空无一物,任何高超的技术,丰富的经验,都无从下手。生产环境错综复杂,几分钟前活蹦乱跳的进程,此刻就奄奄一息的躺在那里,苟延残喘。作为第一时间发现的目击者,一定要注意保存好现场。有时,最坏的情况就是引火上身,纠缠不清,这都是我们不愿看到的。在进程的生命烟消云散之前,我们还有很多事要做。 本篇文章,将介绍常用的保留线索方法。最后,将这个过程,使用Shell脚本自动化。系统环境,不说谎的案发现场1、系统当前网络连接ss -antp > $DUMP_DIR/ss.dump 2>&1复制代码本命令将系统的所有网络连接输出到ss.dump文件中。使用ss命令而不是netstat的原因,是因为netstat在网络连接非常多的情况下,执行非常缓慢。后续的处理,通过查看各种网络连接状态的梳理,来排查TIME_WAIT或者CLOSE_WAIT,或者其他连接过高的问题,非常有用。2、网络状态统计netstat -s > $DUMP_DIR/netstat-s.dump 2>&1复制代码将网络统计状态,输出到netstat-s.dump文件中。它能够按照各个协议进行统计输出,对把握当时整个网络状态,有非常大的作用。sar -n DEV 1 2 >