开发者学堂课程【Linux 磁盘与文件系统管理:文件系统管理-2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/589/detail/8331
文件系统管理-2
内容简介:
一、文件挂载配置文件
二、工具 dd
三、练习
四、什么是 RAID
一、文件挂载配置文件
/etc/fstab 每行定义一个要挂载的文件系统
1要挂载的设备或伪文件系统
设备文件
LABEL:LABEL="" UUID:UUID=""
伪文件系统名称: procsysfs
2、挂载点
3、文件系统类型: ext4xfsnfsnone
4、挂载选项: defaults,ac,bind
5、转储频率:0:不做备份,1:每天转储2:每隔一天转储
6、fsck 检查的文件系统的顺序:允许的数字是0,1和2
0:不自检
1:首先自检;一般只有 rootfs 才用
2:非 rootfs 使用
处理交换文件和分区
交换分区是系统 RAM 的补充基本设置包括:
创建交换分区或者文件
使用 mkswap 写入特殊签名
在 /etc/fstab 文件中添加适当的条目使用 swapon-a 激活交换空间
挂载交换分区
启用: swapon
swapon [OPTION]…. [DEVICE]
-a: 激活所有的交换分区,-p PRIORITY: 指定优先级 /etc/fstab:pri=value
禁用: swapoff[OPTION].. [DEVICE]
SWAP 的优先级
可以指定 swap 分区0到32767的优先级,值越大优先级越高
如果用户没有指定,那么核心会自动给 swap 指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的 swap,会给这个优先级减一先添加的 swap 的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)优化性能:分布存放,高性能磁盘存放
移动介质。
挂载意味着使外来的文件系统看起来如同是主目录树的一部分访问前、介质必须被挂载摘除时,介质必须被卸载
按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)
挂载点通常在 /media或/mnt 下
track/cylinder:10bit 2*10=1024 head数:8bit 255
512*63*1024*255
MBR
主分区:1-4
扩展分区:扩展+主分区 <=4逻辑分区:
k,m,g,t;P;e,z,y,b,n,d
实验:分区表的备份和还原
[root@centos6~]#blkid -U'sed -rn 's#^UUID=(.*)/ .*#\1#p’ /etc/fstab/dev/sda2
在 centos6 之前版手动创建的 ext 分区,默认没有 ACL 功能
一个设备可以同时挂载到多个目录一个目录可挂载多个设备呢?
实验:增加一块新硬盘,分区,创建文件系统 XFS|EXT4,挂载
实验: /etc/fstab 文件错误,无法启动,故障排错 centos6,7
实验:实现 swap 分区
迁移 /home 目录到新分区中
使用光盘
在图形环境下自动启动挂载 /run/media/<user>/<label> 否则就必须被手工挂载.
mount/dev/cdrom/mnt/ eject
命令卸载或弹出磁盘创建 ISO 文件
cp/dev/cdrom /root/centos7.iso mkisofs -r-o /root/etc.iso/etc
刻录光盘
wodim-v-eject centos.iso
常见工具
文件系统空间占用等信息的查看工具:
df [OPTION]... [FILE].. -H 以1000为单位-T文件系统类型
-h:human-readable
-i: inodes instead of blocks -P:以
Posix
兼容的格式输出查看某目录总体空间占用状态:
du [OPTION]... DIR -h:human-readable
-s:summary --max-depth
//FTP 文件不仅可以挂载普通的文件系统,事实上也可以挂载一些其他的文件系统,例如 NFS,NFS 是网络文件系统,意味着可以把网络中的共享资源,挂载到本机,目前来讲,使用各种设备都是本机的设备,例如本地硬盘光,本地光盘,本地目录。
此外,swap 里交换分区,交换设备,它是用来模拟内存来使用的。Swap 可以当物理内存不够用的时候,会拿 swap 这块空间来临时存放。
一部分内存数据把内存中的空间腾出来,运行那些急需要内存的应用程序,所以它可以模拟内存使用,这就叫 swap,因为它是内存和磁盘交换数据,所以称为交换分区,通常来讲设置一定的分区,来模拟来来实现,
分区一般大小,当内存不大的时候,比方说内存四个G以内的两个 G,那一般会乘二,那就是内存两个 G,swap 设四个 G,内存512g乘二,一个T硬盘出去了,是不现实的,一般来讲,超过一定的值,不推荐,实际上 8G 以上不推荐乘2,64G内存,交换分区,一般设置8G 或者16G 就够用,因为内存那么大,只要加个 swap 做一个辅助功能就可以了,避免说4G 真的空间用完了,系统一点空间没有了,系统会崩溃的。
所以准备临时存放磁暴分区,做辅助就够了,一般来讲8G16g就够用。
预留太大也没有意义,在系统中来设置swap,虽然系统中本身已经有了swap分区,但是 swap 比较特殊,用的命令是看不到的。命令里边有 swap 设置,BLKID 是一个特殊的文件系统,和别人的文件系统都不一样,是专门的一个文件系统,用的是 SD5,看看 Sd5 设备挂载信息不能看到。也就是命令默认是不显示 swap 挂载信息的。FFTB 文件中挂载点竟然写的是 swap,并没有写根和目录。
swap 准确的说并不是挂载到文件系统上,因为 swap 是模拟内存,所以根本就不需要挂载到目录里,所以特殊功能就决定了写法,这表示是直接系统,格式就是FTP 文件来配置 swap,假设内存现在不够用了,物理内存通过飞命令是可以看到的。
当前是两个 G 内存,假设因为生产需求,加了一条内存,当加内存以后,Swap 希望随之而调整,假设内存在不大的情况下,一般都是乘二的。
假设要把它内存条调了四个G,那现在乘二不就变成八个G的 swap 就可以了,那八个G swap,现在只有四个G,怎么再增加,或者说把原来 swap 所有变成八个 G?
注意,Swap 目前来讲是拿一个分区来实现的,用的是 SD5分区能变大变小吗?原来是四个 G,现在给他变成八个技能变吗?分区是一个连续的空间,一旦分完了,就不能再改变了,除非删了重新建。
虽然说号称软件可以调分区大小,这些东西都是不可靠的。
所以一般分区认为是不可变化的。当然现在四个G,已经分了这么大了,分小了,想变成8个G,可以采取另外一种思路,就是可以再创建一个分区,原来的已经有四个G,再增加4个,总共8个。
Swap分区是用来和内存交换的,所以速度很大程度上影响进行的,所以swap分区强烈推荐把它存放在一个高性能的磁盘上。
如果是固态硬盘最好了,但是如果没有固态硬盘,就优化swap,把它放到一个硬盘的最快的位置,最外圈快,当然现在swap分区使用Sd5做的的SUV,不是外圈,已经偏离,所以比方说拿一个硬盘的分出一个C1或者第一,某一个外圈的空间,速度更快,比方说在D硬盘上,分出一个分区来,用外道的空间。
这样的话,给它设置一个swap,SDD是没有硬盘分区的,从头到尾来实现一个八个G的swap,先先分区,fdisk dev/sdd,分区、直接分个主分区,默认设区市2048。
这是默认值,要把83改成对应的swap相应的文件系统才行。相应的文件系统在swap上用的文件系统的ID是82,就要改成82,修改类型,要改成了82以后,其他就不用改,退出就行了。
输入L,改成了82,存盘退出。
存盘没有任何警报说明已经同步了,第二步是MK创建文件系统,但是swap文件系统命令不一样,不是用这个命令,用专门的mk swap,然后顺便制定分区的名称,第一出现了swap设备分区,想永久的存到磁盘的挂载上,得改文件,参考格式。
第二点,dv1,把UID自动的复制到当前的VIP界面里面,然后把用不着的删掉,然后把空号去掉,如果不去掉的话,可能会有问题,所以最好还是把对应的后面删了。
对应的格式,参考前面的例子。
四个 G 是旧的那个四 G,正常加上变成八个 G 才对,moun 是针对传统分区的,针对别的是不起作用的,所以要用专门的 swapon- s,但是实际上 S 是可以查看当前有哪些 swap 设备正在生效,看到只有一个生效的是 a5,现在让他生效,swapon- a,swapon-a 之后就开始生效了,-S 生效,然后确实是8个 g,目前来讲swap就可以用。
当然 swap 在使用的时候,能看到当前的使用情况,现在一点都没用,这两个设备都是 swap,实际上这个文件内容一模一样。
能看到,有个优先级的编号,优先级高,自然就是先往上写,当然越高A5优先级高,这个数字越大,优先级越高,外圈空间速度理论上是比内圈空间速度要快,希望把优先级调高一点,可以修改swap文件,修改的优先级,值比负一高就行,比方说随便找一个数字,当然现在改了不能立即生效,它不会立即生效的,把这个设备先禁用。
用 asp 禁用,一旦禁用,就看不到了,然后再重新启用,启用之后再来看优先级,不够用时,要产生大的文件,把内存用的差不多了,才开始使用,往垃圾箱里扔。PS 与 GA,瞬间就要求内存立即分配三个G空间,总共内存才两个 G。赶紧去swap,发现已经开始使用,不用优先级体现出来,这就是优先级。
swap 实际上目前来讲,虽然空间用了,如果说这个数据用不到了,这个空间也没有,这就是 swap 的启用。
把原来的那个区分的 top 分的是两个 G,后来想改成 4G,步骤错了。或者是姿势错误,就是 swap 的条件,swap 可以拿,必须是发现有一个硬盘空间太满,一个硬盘分区快百分百了,那这个分区要满了,系统就该故障崩溃,想腾点空间,不敢删数据,没有 swap。
没有分区,有 swap 功能,拿文件功能来用,这个文件就放在那个99%时期,所以实际上可以把它移到一个稍微空间大一点的,别的分区,是不是就腾出点空间来。横着空间来,至少保证系统不会说满了,
慢慢去在磁盘上找一些用不到的文件,再给腾出点儿,至少不能眼看满,满了就会出问题的。
以文件方式提供 swap,之所以拿文件方式提供swap,后来发现需要 swap 了,拿文件来做,因为文件不需要独立分区,发一个文件就可以。创建文件的方式提供swap 功能,增加一个两个 G 报告。
要求两个 G,比较慢,内存用了这么多,Swap 也用了大量的空间,写两个字,它就立即要求两个 G 的空间。大量的访问,马上有可能音量过大,造成系统过于繁忙,当前的 swap 文件已经生成出来了,也结束了。
二、工具 dd
工具 dd
Dd 命令: convert and copy a file 用法:
dd if=/PATH/FROM/SRCof=/PATH/TO/DEST bs=#:blotk size
复制单元大小 count=#: 复制多少个 bs
of=file 写到所命名的文件而不是到标准输出
if=file 从所命名文件读取而不是从标准输入
bs=size 指定块大小(既是是 ibs 也是 obs)
ibs=size 一次读 size 个 byte
obs=size 一次写 size 个 byte
cbs=size 一次转化 size 个 byte
skip=blocks 从开头忽略 blocks 个 ibs 大小的块
seek=blocks 从开头忽略 blocks 个obs 大小的块
count=n 只拷贝 n 个记录
conv=conversion[conversion...] 用指定的参数转换文件转换参数:
Ascii 转换 EBCDIC 为 ASCII ebcdic 转换 ASCII 为 EBCDIC Icase 把大写字符转换为小写字符 ucase 把小写字符转换为大写字符 nocreat 不创建输出文件 noerror 出错时不停止 notrunc 不截短输出文件
Sync 把每个输入块填充到 ibs 个字节,不足部分用空( NUL )字符补齐 Fdatasync 写完成前,物理写入输出文件
[root@centos6~ ]#
[root@centos6~]#
[root@centos6~ ]#
[root@centos6~]#
[root@centos6~j#cat > f2
123456 AC
[root@centos6 ~]#cat > f1
abcdefghi AC
[root@centos6 ~]#cat f1
abcdefahi
[root@centos6 ~]#cat f2
123456
[root@centos6 ~]#dd if=f2 of=f1bs=1count=2 skip=3 seek=42+0 records in2+0 records out
2 bytes (2 B) copied,0.000540136 s,3.7 kB/s
[root@centos6 ~]#cat f1 abcd45[root@centocat >f1
abcdefghi
[root@centos6 ~]#cat f1
abcdefgh1
[root@centos6 ~]#dd if=f2 of=f1 bs=1 count=2 skip=3 seek=4 conv=notrun2+0 records in2+0records out
2 bytes(2 B)copied,0.00103179 s,1.9 kB/s
[root@centos6 ~]#cat f1
abcd45ghi
[root@centos6~]#
备份MBR
dd if=/dev/sda of=/tmp/mbrbakbs=512 count=1
破坏MBR
中的bootloader
dd if=/dev/zero of=/dev/sdabs=64count=1 seek=446
有一个大与 2K 的二进制文件 fileA 。现在想从第64个字节位置开始读取,需要读取的大小是 128Byts 。
又有 fileB 想把上面读取到的128Bytes 写到第32个字节开始的位置,替换 128Bytes ,
实现如下
ddif=fileAof=fileBbs=1count=128skip=63seek=31 conv=notrunc
备份:
dd if=/dev/sdxof=/dev/sdy
将本地的 /dev/sdx 整盘备份到 /dev/sdy dd if=/dev/sdxof=/path/to/image
将 /dev/sdx 全盘数据备份到指定路径的 image 文件 dd if=/dev/sdx|gzip>/path/to/image.gz
备份 /dev/sdx 全盘数据,并利用 gzip 压缩,保存到指定路径恢复:
dd if=/path/to/image of=/dev/sdx
将备份文件恢复到指定盘
gzip-dc/path/to/imagegz|ddof=/dev/sdx
将压缩的备份文件恢复到指定盘
拷贝内存资料到硬盘
dd if=/dev/mem of=/root/membin bs=1024
将内存里的数据拷贝到 root 目录下的 membin 文件从光盘拷贝 iso 镜像
dd if=/dev/cdrom of=/root/cd.iso
拷贝光盘数据到 root 文件夹下,并保存为 cdiso 文件销毁磁盘数据
dd if=/dev/urandomof=/dev/sda1
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据,执行此操作以后
/dev/sda1 将无法挂载,创建和拷贝操作无法执行
得到最恰当的 block size
dd if=/dev/zero of=/root/1Gbfilebs=1024count=1000000 dd if=/dev/zero of=/root/1Gb.file bs=2048count=500000 dd if=/dev/zero of=/root/1Gbfile bs=4096count=250000
通过比较 dd 指令输出中命令的执行时间,即可确定系统最佳的 blocksize 大小
测试硬盘写速度
dd if=/dev/zero of=/root/1Gb.file b5=1024count=1000000
测试硬盘读速度
dd if=/root/1Gb.file bs=64k|dd of=/dev/null
track/cylinder:10bit210=1024 head
数 :8bit255
512*63*1024*255
MBR
主分区:1-4
扩展分区:扩展+主分区<=4逻辑分区:
k,m,gt,p,e,z,ybin,d
实验:分区表的备份和还原
[root@centos6~]#blkid-U'sed-rn's#^UUID=(*)/.*#\1#p’/etc/fstab/dev/sda2
在 centos6 之前版手动创建的 ext 分区,默认没有 ACL 功能
一个设备可以同时挂载到多个目录一个目录可挂载多个设备呢?不可以
实验:增加一块新硬盘,分区,创建文件系统 XFS|EXT4,挂载
实验: /etc/fstab 文件错误,无法启动,故障排错 centos6,7
实验:实现 swap 分区
实验:迁移 /home 目录到新分区中
三、练习
1、创建一个 2G 的文件系统,块大小为 2048byte,预留1%可用空间文件系统 ext4,卷标为 TEST,要求此分区开机后自动挂载至 /test 目录,且默认有 acl 挂载选项
2、写一个脚本,完成如下功能:
(1)列出当前系统识别到的所有磁盘设备
(2)如磁盘数量为1,则显示其空间使用信息否则,则显示最后一个磁盘上的空间使用信息
3、将 CentOS6 的 CentOS-610-x8664-bin-DVD1.iso和CentOS-6.10 x8664-bin-DVD2iso 两个文件,合并成一个 CentOS-6.10-x86 64- Everything.iso 文件,并将其配置为 yum 源
四、什么是 RAID
RAID:Redundant Arrays of Inexpensive(Independent) Disks
1988年由加利福尼亚大学伯克利分校 (UniversityofCalifornia-
Berkeley)ACase for Redundant Arrays of Inexpensive Disks"
多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供