文件系统进阶(下)

六、文件系统检测和修复

因进程意外中止或系统崩溃等情况导致定稿非正常中止时,可能会导致文件损坏;此时,应该修复文件系统。

  • 常发生于死机或者非正常关机之后
  • 挂载为文件系统标记为“ no clean”
  • 一定不要在挂载状态下修复

1.fsck命令:file system check

常用选项:

-t FS_TYPE:指定文件系统类型,相应地确定调用哪一个修复工具
-a: 自动修复错误
-r: 交互式修复错误

实例:

[[email protected] ~]# blkid /dev/sdb
/dev/sdb: LABEL="YOUNG" UUID="5272519a-039a-4bf0-817a-6014daec5e15" SEC_TYPE="ext2" TYPE="ext3" 
[[email protected] ~]# fsck -t ext3 -a /dev/sdb
fsck from util-linux 2.23.2
YOUNG: clean, 11/1310720 files, 126322/5242880 blocks

2.e2fsck命令

专用于ext系列文件系统检测与修复。

常用选项:

-y:自动回答为yes
-f:强制修复

实例:

[[email protected] ~]# e2fsck -y -f /dev/sdb
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
YOUNG: 11/1310720 files (0.0% non-contiguous), 126322/5242880 blocks

七、文件系统挂在与卸载

将额外的文件系统与根文件系统上现存的目标建立关联关系,进而使得其作为此额外文件系统访问入口的操作过程即为挂载;拆除此关联关系的操作过程卸载。

挂载位置:挂载点,mount point

固定挂载点:/mnt, /media

文件系统挂载后,挂载点下原有的文件将会被临时隐藏;卸载后,隐藏的文件会再次出现;

挂载方法:# mount DEVICE MOUNT_POINT

1.mount命令

格式:

mount [OPTIONS] [-t FS_TYPE] [-o MOUNT_OPTION] DEVICE MOUNT_POINT

说明:

DEVICE:

  • (1) 设备文件,如/dev/sdb1;
  • (2) 卷标,-L LABEL,例如-L MYDATA;
  • (3) UUID, -U UUID,例如-U 3a96edc3-da29-462f-9ca8-14690b5fdd89;

MOUNT_POINT:事先存在;建议使用空闲目录;

常用的命令选项:

-t FS_TYPE: 指定文件系统类型;
-r: read only,只读挂载;
-w: read and write,读写挂载;
-L LABEL:以LABEL格式指定要挂载的设备;
-U UUID:以UUID格式指定要挂载的设备;
-a: 自动挂载所有(/etc/fstab)支持自动挂载(挂载选项auto)的文件系统
-n: 挂载时,不更新/etc/mtab文件;
-B, --bind:关联目录

实例:

[[email protected] ~]# mount -t ext3 -w /dev/sdb /mnt

常用的挂载选项:-o MOUNT_OPTION

async: 使用异步模式;数据的修改操作先于内存中完成,而后根据某策略定期同步至磁盘中实现持久存储;
sync: 同步
atime/noatime:对文件和目录都有效;
diratime/nodiratime:仅对目录有效;
auto/noauto: 设定是否支持mount的-a选项实现自动挂载;
dev/nodev:是否支持在此设备使用设备文件;
exec/noexec: 是否允许执行此设备上的二进制程序;
suid/nosuid:是否允许在此设备上的文件上使用suid;
remount:重新挂载
ro: 只读
rw: 读写
user/nouser:是否允许普通用户挂载设备
acl: 在此设备启用facl的功能,默认为不支持

挂在本地回环设备:

mount -o loop /PATH/TO/FILE MOUNT_POINT

实例:

[[email protected] ~]# mount -o loop ./archlinux-2016.04.01-dual.iso /root/test/
mount: /dev/loop0 is write-protected, mounting read-only
[[email protected] ~]# ls test/
arch  EFI  isolinux  loader

重新挂载已经挂载过的文件系统以支持其它挂载选项:

mount -o remount,... DEVICE [MOUNT_POINT]

实例:

[[email protected] ~]# mount -t ext3 -o remount,acl,rw /dev/sdb /mnt

挂载目录到目录:

[[email protected] ~]# mount --bind vimrc/ test/
[[email protected] ~]# ls test/
spf13-vim
[[email protected] ~]# ls vimrc/
spf13-vim
[[email protected] ~]# umount test/
[[email protected] ~]# ls test/
httpd-2.4.6-40.el7.centos.x86_64.rpm
httpd-devel-2.4.6-40.el7.centos.x86_64.rpm
httpd-manual-2.4.6-40.el7.centos.noarch.rpm
httpd-tools-2.4.6-40.el7.centos.x86_64.rpm
repodata

2.查看已经挂载的所有设备:

# mount
# cat /etc/mtab
# cat /proc/mounts

3.umount命令

umount命令用来卸载已经挂在设备。

格式:

umount DEVICE
umount MOUNT_POINT

实例:

[[email protected] ~]# umount /mnt
[[email protected] ~]# umount /dev/sdb

4.fuser、findmnt、lsof命令

查看有哪些进程正在访问指定挂载点:

# fuser -v MOUNT_POINT
#lsof MOUNT_POINT

强行中止正在使用此挂载点的进程:

# fuser -km MOUNT_POINT

查看挂载情况:

#findmnt MOUNT_POINT

实例:

[[email protected] ~]# fuser -v /media/centos7-mirror/
                     USER        PID ACCESS COMMAND
/media/centos7-mirror:
                     root     kernel mount /media/centos7-mirror
[[email protected] ~]# ls /media/centos7-mirror/
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[[email protected] ~]# fuser -km /media/centos7-mirror/

[[email protected] ~]# findmnt /media/centos7-mirror 
TARGET                SOURCE   FSTYPE  OPTIONS
/media/centos7-mirror /dev/sr0 iso9660 ro,relatime

5.df命令

df命令用于文件系统空间占用等信息查看。

常用选项:

-h: human-readable
-i: 显示inode使用率而非默认的磁盘空间使用率
-T: 文件系统类型
-P: 以Posix兼容的格式输出

实例:

[[email protected] ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G 1022M   19G   5% /
devtmpfs        475M     0  475M   0% /dev
tmpfs           489M   76K  489M   1% /dev/shm
tmpfs           489M   50M  440M  11% /run
tmpfs           489M     0  489M   0% /sys/fs/cgroup
/dev/sda3        20G  2.9G   18G  15% /usr
/dev/sda1       509M  154M  355M  31% /boot
tmpfs            98M   44K   98M   1% /run/user/0
/dev/sr0        7.3G  7.3G     0 100% /media/centos7-mirror

[[email protected] ~]# df -i
Filesystem       Inodes IUsed    IFree IUse% Mounted on
/dev/sda2      20971520 10907 20960613    1% /
devtmpfs         121535   391   121144    1% /dev
tmpfs            125166     4   125162    1% /dev/shm
tmpfs            125166   524   124642    1% /run
tmpfs            125166    13   125153    1% /sys/fs/cgroup
/dev/sda3      20971520 91748 20879772    1% /usr
/dev/sda1        524288   330   523958    1% /boot
tmpfs            125166    12   125154    1% /run/user/0
/dev/sr0              0     0        0     - /media/centos7-mirror

[[email protected] ~]# df -T
Filesystem     Type  1K-blocks    Used Available Use% Mounted on
/dev/sda3      ext4   49207096 7511820  39188988  17% /
tmpfs          tmpfs   1536304       0   1536304   0% /dev/shm
/dev/sda1      ext4     194241  129785     54216  71% /boot

6.du命令

du命令用于某目录树占用空间的情况。

格式:

du [OPTIONS] /PATH/TO/DIR

常用选项:

-s: sumary, display only a total for each argument
-h: human-readable

实例:

[[email protected] ~]# du /etc/httpd/
40      /etc/httpd/conf
16      /etc/httpd/conf.d
28      /etc/httpd/conf.modules.d
84      /etc/httpd/
[[email protected] ~]# du -sh /etc/httpd/
84K     /etc/httpd/

八、文件系统的配置文件: /etc/fstab

1.文件格式:

设备 挂载点 文件系统 挂载选项 转储频率 自检次序

2.格式说明:

1)设备:设备文件、LABLE="lable"、UUID="uuid"、伪文件系统名称

2).挂载点:空闲或专用的目录路径

3).文件系统:指定文件系统类型ext2,ext3,ext4,xfs等

4).挂载选项:defaults: rw, suid, dev, exec, auto, nouser, async, and relatime额外补充其它选项,例如acl,写作“defaults,acl”

5).转储频率(备份频率):能否被dump备份命令作用:dump是一个用来作为备份的命令。通常这个参数的值为0或者1

  • 0:不做备份;
  • 1:每天备份;
  • 2:每隔一天;

6).自检次序:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean)。

  • 0:不自检
  • 1:首先自检;通常只根文件系统可设定为第一自检次序;
  • 2:次级自检,不同设备可以使用同一个自检顺序

九、处理交换文件和分区

交换分区有优先级;性能好的给予较高的优先级;性能一样时使用同等优先级,此时能实现负载均衡的效果;

1.swapon命令

格式:

swapon [OPTIONS] [DEVICE]

常用参数:

-p PRIORITY: 指定优先级,可以指定swap分区0到32767的优先级,
             值越大优先级越高,不指定先添加的swap的缺省优先级比较高              

-a: 启用所有的交换分区

2.关闭交换分区:

swapoff

常用参数:

-a:关闭所有交换分区

3.内存空间空闲及使用状态报告: free

常用参数:

-h:适合阅读形式展现     
-m: 以MB为单位;
-g: 以GB为单位

实例:

[[email protected] ~]# lsblk   #寻找82交换分区设备
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1  3.7G  0 rom  
sda             8:0    0   50G  0 disk 
├─sda1          8:1    0  200M  0 part /boot
├─sda2          8:2    0    2G  0 part 
└─sda3          8:3    0 47.8G  0 part /
sdb             8:16   0   50G  0 disk 
└─sdb1          8:17   0   50G  0 part 
sdc             8:32   0   20G  0 disk 
├─sdc1 (dm-0) 253:0    0  9.2G  0 part 
└─sdc2 (dm-1) 253:1    0  3.9G  0 part 
[[email protected] ~]# swapon /dev/sda2 #打开交换分区
[[email protected] ~]# free -h
             total       used       free     shared    buffers     cached
Mem:          2.9G       1.9G       1.0G       272K       198M       1.5G
-/+ buffers/cache:       245M       2.7G
Swap:         2.0G         0B       2.0G
[[email protected] ~]# swapoff /dev/sda2  #关闭交换分区
[[email protected] ~]# free -h          
             total       used       free     shared    buffers     cached
Mem:          2.9G       1.9G       1.0G       272K       198M       1.5G
-/+ buffers/cache:       244M       2.7G
Swap:           0B         0B         0B     #关闭后交换分区显示为0

:在fstab文件中开机自动挂载交换分区挂载点不存在,要写为none

十、光盘及移动介质

1.卸载或弹出磁盘

eject

2.创建ISO文件

cp /dev/cdrom /root/centos7.iso
mkisofs -r -o /root/etc.iso /etc

3.刻录光盘

wodim –v –eject centos.iso

十一、dd工具使用说明

(一)、dd命令的解释

dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

注意:指定数字的地方若以下列字符结尾则乘以相应的数字:b=512;c=1;k=1024;w=2

常用参数:

if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >

of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >

ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。

obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。

bs=bytes:同时设置读入/输出的块大小为bytes个字节。

skip=blocks:从输入文件开头跳过blocks个块后再开始复制。

seek=blocks:从输出文件开头跳过blocks个块后再开始复制。

注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。

count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。

(二)、dd应用实例

1.将本地的/dev/hdb整盘备份到/dev/hdd

dd if=/dev/hdb of=/dev/hdd

2.将/dev/hdb全盘数据备份到指定路径的image文件

dd if=/dev/hdb of=/root/image

3.将备份文件恢复到指定盘

dd if=/root/image of=/dev/hdb

4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径

dd if=/dev/hdb | gzip > /root/image.gz

5.将压缩的备份文件恢复到指定盘

gzip -dc /root/image.gz | dd of=/dev/hdb

6.备份磁盘开始的512个字节大小的MBR信息到指定文件

dd if=/dev/hda of=/root/image count=1 bs=512

count=1指仅拷贝一个块;bs=512指块大小为512个字节。

恢复:dd if=/root/image of=/dev/hda

7.拷贝内存内容到硬盘

dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k)

8.拷贝光盘内容到指定文件夹,并保存为cd.iso文件

dd if=/dev/cdrom of=/root/cd.iso

9.增加swap分区文件大小

第一步:创建一个大小为256M的文件:

dd if=/dev/zero of=/swapfile bs=1024 count=262144

第二步:把这个文件变成swap文件:

mkswap /swapfile

第三步:启用这个swap文件:

swapon /swapfile

第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap文件:

/swapfile    swap    swap    default   0 0

10.销毁磁盘数据

 dd if=/dev/urandom of=/dev/hda1

注意:利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。

11.测试硬盘的读写速度

 dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file

 dd if=/root/1Gb.file bs=64k | dd of=/dev/null

通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。

12.确定硬盘的最佳块大小:

 dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file

 dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file

 dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file

 dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file

通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。

13.修复硬盘:

 dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda

当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。并且这个过程是安全、高效的。

/dev/null和/dev/zero的区别

/dev/null------它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。 /dev/zero------该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。

14.备份MBR:

dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

15.破坏MBR中的分区表

dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
时间: 2024-11-04 08:37:15

文件系统进阶(下)的相关文章

Hive进阶(下)

Hive进阶(下) Hive的表连接 等值连接 查询员工信息:员工号.姓名.月薪.部门名称 1.select e.empno,e.ename,e.sal,d.dname2.from emp e,dept d3.where e.deptno=d.deptno; 不等值连接 查询员工信息:员工号.姓名.月薪.工资级别 1.select e.empno,e.ename,e.sal,s.grade2.from emp e,salgrade s3.where e.sal between s.losal a

文件系统进阶(上)

一.文件系统类型 Linux文件系统: ext2, ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap 光盘:iso9660 Windows:fat32, ntfs Unix: FFS(fast), UFS(unix), JFS2 网络文件系统:NFS, CIFS 集群文件系统:GFS2, OCFS2(oracle) 分布式文件系统:ceph, moosefs, mogilefs, fastdfs,glusterfs, Lu

Linux文件系统根目录下的主要目录介绍

/bin:保存系统命令,如ls.cd.pwd等常用命令 /dev:存放设备文件,特殊文件保存目录(不可以随意修改) /home:用户目录,存放普通用户相关文件的用户,是我们常用的目录 /lost+found:存放临时文件.此文件夹大多数情况下都是空的,当突然停电或非正常关机后,有些文件就临时存放在这里. /mnt:缺省挂载点,挂载U盘.移动硬盘目录(常用) /sbin:用来存放管理员才能使用的命令,即具有一定权限才可以使用的命令 /proc:进程,该目录不能直接操作,其保存的是内存的过载点 /s

文件系统(下)

接着上文,XDDD! FCB(File Control Block)文件控制块又作文件属性或元数据(为了管理文件,我们又有一些相应信息而该信息又以文件形式保存在磁盘上所以叫做元数据) 目的:OS为了管理文件而设置的数据结构保存管理文件所需的所有有关信息,那么这些信息主要包含:文件名,文件大小,文件地址(文件内容在磁盘上怎么找到),创建时间,修改时间,最后访问时间,文件标识(只读.隐藏...) 文件目录 :统一管理每个文件的元数据以支持文件名到文件物理地址的转换来实现按名存取,将所有文件管理信息组

三、HDFS——Hadoop分布式文件系统

一.hdfs的设计目标 1.1.硬件错误是常态而不是异常.Hadoop的设计理念之一就是它可以运行在廉价的普通PC机上,因而硬件故障是常态.在硬件故障时,可通过容错机制保证数据的正确性.完整性,从而保证系统的正常运行. 1.2.大文件存储.hdfs存储的文件大小一般在GB~TB的级别. 1.3.流式数据访问.由于hadoop处理的都是大文件,因此流式数据访问方式更适合.流式数据访问是指一次性地读取一大块文件后再做处理,其特点是吞吐率高,延迟高:与之相反的是随机数据访问,特点是随机性地读取数据,延

Ubuntu 下Rsync配置及使用

以下系统版本下的的Rsync的配置: 1,[email protected]:/home/zko# cat /etc/issue Ubuntu 14.04.1 LTS \n \l 2,[email protected]:/home/zko# uname -a Linux zko-laptop 3.13.0-36-generic #63-Ubuntu SMP Wed Sep 3 21:30:45 UTC 2014 i686 i686 i686 GNU/Linux 3,[email protecte

Linux下udev详细介绍

每次在搭建OracleRAC环境中,遇到问题最多的就是关于ASM磁盘的的问题,通过查看网上许多搭建RAC的文档,发现Oracle10g RAC大家普遍的修改/etc/udev/rules.d/60-raw.rules,而一些搭建Oracle11R2的RAC,大家都在配置的是/etc/udev/rules.d/99-oracle-asmdevices.rules这个文件,面对这样一种情况,我不是很明白,这两个文件到底有什么区别,这个问题困扰了我很久,直到今天遇到这样一个问题:使用udev管理asm

嵌入式linux下web服务器搭建

一.移植编译生成boa二进制文件 Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右.作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求.但Boa支持CGI,能够为CGI程序fork出一个进程来执行.Boa的设计目标是速度和安全. 首先下载boa源码包,下载链接:http://www.boa.org/. 解压到特定目录,本人使用的是/opt目录,使用命令: # tar zxvf boa-0.94.13.tar.gz –C /op

根文件系统袁丽丽

1.1.根文件系统概述 1.为什么需要根文件系统 (1)init进程的应用程序在根文件系统上 (2)根文件系统提供了根目录/ (3)内核启动后的应用层配置(etc目录)在根文件系统上 (4)shell命令程序在根文件系统上 总结:一套Linux体系,只有内核本身是不能工作,必须要根文件系统相配合,主要是要根文件系统/etc下的配置文件./bin./sbin等目录下的shell命令相配合等等,还有/lib下的库文件(静态链接库,动态链接库)等等 1.2.根文件系统的实质 (1).根文件系统是特殊用