磁盘及文件系统管理

磁盘管理

    MBRmaster boot record 主引导记录。位于磁盘的0磁道0扇区共512字节,独立于操作系统之外的。512字节的划分

                     前446字节:bootloader引导加载器,是一段程序代码,可以完成引导分区上的操作系统来启动起来

                     接下来64字节的每16字节,可以标识一个分区,一共可以标识4个分区,所以硬盘上只能划分4个主分区

                     最后2个字节:magic  number 标记MBR是否有效

     

     主+扩展<=4

CHS:柱面,磁头,扇区    最大8G

LBA:新的方式,按线性顺序寻址

 

     硬链接  ln  src  dest

         1,只能对文件创建,不能对目录创建

         2,不能跨文件系统

         3,创建硬链接会增加文件被链接的次数

     软连接  ln -s

         1,可应用于目录

         2,可以跨文件系统

         3,不会增加被链接文件的链接次数

         4,其大小为指定的路径所包含的字符个数

 

du   显示出目录及目录中的子文件,并显示占据空间的大小  

       -s  显示目录包括目录中的文件的整体大小

df :报告文件系统磁盘使用情况

  -h 显示空间大小而不是磁盘块个数

  -i  显示有多少个inode可用

  -P(大) 不换行显示   -Pi  -Ph 

设备文件

    b:按块为单位,随机访问的设备

    c:按字符为单位,线性设备

    

 /dev

   主设备号MAJOR

        标识设备类型

   次设备号MINOR

        表示同一种类型中不同设备

 

mknod:创建块或字符的特殊设备文件

 mknod [OPTION]… NAME TYPE [MAJOR MINOR]   mknod -m 640 mydev c 66 0

     -m MODE    指定mode权限

 

硬盘设备的设备文件名

Ide ,ata  :hd

Sata     :sd

Scsi     :sd

Usb     :sd

     a,b,c…来区分同一种类型下的不同设备

 

Ide:

   第一个ide口,主,从

       /dev/hda,  /dev/hdb

    第二个ide接口,主,从

          /dev/hdc,   /dev/hdd

   

   Sda,sdb,sdc ….

   

   Hda

      Hda1:第一个主分区

      Hda2

      Hda3

      Hda4

      Hda5:第一个逻辑分区

 

     Fdisk -l  查看当前系统识别到了几块硬盘

     Fdisk -l /dev/sda2  查看指定设备信息

 

   管理磁盘分区

   Fdisk  /dev/sda

     m :查看帮助

      p:显示当前硬件的分区,包括没保存的改动

      n:创建新分区

          e:扩展分区

          p:主分区

      d:删除一个分区

      w:保存退出

      q:不保存退出

      t:修改分区类型

         L

      l:显示所支持的所有类型

fdisk最多只能创建15个分区

 

扫描磁盘

echo "-  –  -" > /sys/class/scsi_host/host2/scan

blob.png

blob.png

blob.pngblob.png

Centos 6

增加分区同步

Partx -a /dev/sda

删除分区同步

Partx -d –nr 7-8 /dev/sda

 

Centos7

Partprobe

 

 

设定完成后w退出,虽然此刻ll /dev/sda*或者cat /proc/partitions 或者lsblk 可查看到,但是此刻只是写到硬盘上,内存并没有识别(cat/proc/partitions显示的还是原有的,刚刚新设定的并没有显示出来),此时用partprobe6没效果,57可以用) [/dev/sda]或者portx6中用这个) -a(对增加的有效)  -d –nr 7-8 /dev/sda删分区重读磁盘分区表,再看就有了。

同步的话,新硬盘不用使用上述命令同步,自动就同步了,如果是原有的分过区的硬盘就需要使用命令同步。

 

Gdisk   管理GPT分区,是交互式的,

 

parted 命令 管理GPT分区,不是交互式的,敲命令后就直接生效

v parted 的操作都是实时生效的,小心使用

v  用法:parted [ 选项]… [设备 [命令 [ 参数]…]…]

parted /dev/sdb mklabel gpt|msdos 创建GPTMBR分区

parted /dev/sdb print  显示状态

parted /dev/sdb mkpart  primary 1 200  创建主分区并从第一个起分200

parted /dev/sdb rm 1  删完后GPT分区表还在

parted -l

 

  Linux支持的文件系统

       格式化就是低级格式化,是硬盘厂商就做好了的

       高级格式化就是把指定分区格式化为某种文件系统  mkfs  -t  ext3

   VFSvirtual file system 虚拟文件系统,弥合了各种文件系统的不同,使得linux支持各种类型的文件系统,也是内核中的模块

 

一个文件的存储:写日志的顺序先于写内存

   

   光盘存储格式:iso9660

 

   虚拟机磁盘  /dev/vda


内核模式(空间)ring0

用户模式(空间)ring3

历史原因ring1ring2没有被使用

blob.png

块:存储文件的最小单位

 

块大小:1024字节,2048字节或4096字节,也就是1k,2k,4k

查看块大小  tune2fs -l /dev/sda1 |grep size

 

设备文件只用inode,不占用磁盘块大小,所以设备文件没有大小,管道文件和套接字文件也没有大小,占据磁盘块的通常只有普通文件和目录(存储的文件名称和inode的对应关系)

 

位图分为inode位图和块位图

 

13579组保存了超级快的备份

 

超级块:super block 保存分区中的全局信息,至关重要。Dupme2fs /dev/sda1 查看超级快和块组的信息

            1,有多少块组

            2,每个块组中包含多少个块

            3,块大小

            4,空闲磁盘块,已用磁盘块,空闲inode,已用inode

块组描述符表



文件系统管理

如果重新创建文件系统会损坏原有文件,不要对已有的分区重新创建文件系统

 

Windows里的fat32linux里叫vfat

 

Cat /proc/filesystem查看当前内核所支持的文件系统类型

 

Lsmod :查看支持的文件系统

Df  -T :显示的同时显示文件系统

     

创建文件系统:mkfs

   -t fstype 指定的分区     换成特定的文件系统类型   mkfs  -t ext3  /dev/sda5

   Mkfs  -t ext2相当于mkfs.ext2

   Mkfs  -t ext3相当于mkfs.ext3

   Mkfs  -t ext4相当于mkfs.ext4

   Mkfs  -t vfat相当于mkfs.vfat

创建完成后 blkid UUID显示是否成功

 

自己格式化而不是系统格式化的分区在6不支持ACLuser_xattr,只能自己手工tune2fs -o acl /dev/sdc2,如果是已经挂载过的磁盘,需要重新挂一下就好了,加ACLuser_xattr模块。7支持ACL

 

专门管理 ext系列文件

Mke2fs

-j :创建ext3类型文件系统  相当于 mkfs -t ext3

-b  BLOCK_SIZE:指定块大小,默认为4096,可用取值为102420484096

-L LABEL :指定分区卷标, mke2fs -L MYDATA  /dev/sda5

    -i #:  为数据空间中每多少个字节创建一个inode ;默认为8192,这里给出的数值应该为块大小的2^倍,此大小不应该小于block 的大小

    -N # :手动指定要创建多少个inode

-m #:  手动指定预留给超级用户的块数百分比,默认5%, mke2fs -m 4 /dev/sda5

    -O FEATURE[,…] :启用指定特性,

-O ^FEATURE :关闭指定特性,例如关闭日志功能  tune2fs -O  ^has_journal /dev/sda5

-F:强制创建文件系统

-E:用户指定额外文件系统属性

 

blkid :查看或定位块设备属性信息blkid [OPTION]… [DEVICE] blkid /

-U UUID:  根据指定的UUID(统一的全局标识符) 来查找对应的设备

-L LABEL (卷标):根据指定的LABEL来查找对应的设备

 

e2label :查看或定义ext 系列文件系统的LABEL(卷标)

   e2label /dev/sda5  显示卷标

   e2label /dev/sda5 HELLODATA 自定义卷标

 

findfs  :查找分区

findfs [options] LABEL=<label>

findfs [options] UUID=<uuid>

 

tune2fs :重新设定ext 系列文件系统可调整参数的值,并保存在磁盘的超级块里,重启不会丢失

   -l :查看指定文件系统超级块信息;super block     tune2fs -l /dev/sdb1

   -L  LABEL :设定或修改卷标

   -m # :调整预留给管理员的空间百分比

   -j:  不损坏原有数据情况下,将ext2 升级为ext3

   -O:  文件系统属性启用或禁用, O ^has_journal

   -o:  调整文件系统的默认挂载选项,o ^acl

   -r :指定预留块数

   -U UUID:  修改UUID 号;

   -o #:指定挂载次数达到#次之后进行自检,0-1表示关闭此功能

   -i :每挂载使用多少天后进行自检,0-1表示关闭此功能

 

Uuidgen:随机生成UUID

 

 dumpe2fs:显示超级快和块组信息

-h只查看超级块信息(分组信息),分区用分组管理

 

fsck: File System Check文件系统检测和修复

    fsck.FS_TYPE

    -t  FSTYPE  指定文件系统类型

    -a:  自动修复错误

    -r:  交互式修复错误

注意: FSTYPE 一定要与分区上已经文件类型相同;

 

e2fsck ext 系列文件专用的检测修复工具

    -y :自动回答为yes

-f :强制修复

-p:  自动修复错误

 

 

挂载:将新的文件系统关联至当前根文件系统  /media挂载移动设备  /mnt临时挂载设备

卸载:将某文件系统与当前根文件系统的关联关系移除

 

Mount:显示当先系统上已挂载的设备

挂载

 Mount 设备 挂载点

     设备:

        (1)  设备文件:例如/dev/sda5

        (2)  卷标:-L  LABEL, 例如 -L  MYDATA     

        (3) UUID, -U UUID例如 -U 0c50523c-43f1-45e7-85c0-a126711d406e    

        (4)  伪文件系统名称:proc, sysfs, devtmpfs, configfs

 

      挂载点:其实就是目录

          此目录没有被其他进程使用

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

          进程正在使用中的设备无法被卸载

          目录中的原有的文件将会暂时隐藏

          多个设备不能挂在同一个挂载点

  

  挂载完成后,要通过挂载点访问对应文件系统上的文件

  刚刚挂载完的文件系统可以显示lostfound,否则不显示

 

 卸载:umount

   Umount 设备  或者 umount 挂载点 ,任意一个就可以

 

 卸载注意事项

   挂载的设备没有进程使用

 

Mount [options] [-o  options]  设备  挂载点

mount 常用命令选项

v -t ftype :指定要挂载的设备上的文件系统类型,不使用此选项时,mount会调用blkid命令获取对应文件系统的类型

v -r: readonly ,只读挂载,挂载光盘时常用此选项

v -w: read and write,  读写挂载

v -n:  默认情况下,mount命令每挂载一个设备,都会把挂载的设备信息保存至/etc/mtab文件,使用-n选项意味着挂载设备时,不把信息写入此文件

v -a :有auto 功能,自动挂载/etc/fstab文件中定义中的所有文件系统

v -L 'LABEL':  以卷标指定挂载设备

v -U 'UUID':  UUID 指定要挂载的设备

v -B, –bind:  绑定目录到另一个目录上

 

   ·通过查看/etc/mtab 文件和mount命令可以显示当前已挂载的所有设备但是不是实时的,用查看内核追踪到的实时的已挂载的所有设备:cat /proc/mounts

 

如果有人在用挂载点,就无法卸载挂载点,用Fuser -v /mnt/sdb3查看挂载点谁在用,紧急情况下用fuser -km /mnt/sdb3杀死进程。

 

 -o options ( 挂载文件系统的功能选项) ,多个选项使用逗号分隔

         async :异步模式

         sync :同步模式, 内存更改时,同时写磁盘

         atime/noatime :包含目录和文件

         diratime/nodiratime :目录的访问时间戳

         auto/noauto :是否支持自动挂载, 是否支持-a 选项

         exec/noexec :是否支持将文件系统上运行应用程序

         dev/nodev :是否支持在此文件系统上使用设备文件

         suid/nosuid :是否启用suid sgid 权限

         remount :重新挂载当前文件系统

         ro :挂载为只读

         rw: : 挂载为读写

         user/nouser :是否允许普通用户挂载此设备,默认管理员才能挂载

         acl :启用此文件系统上的acl 功能

v Defaults :相当于rw, suid, dev, exec, auto, nouser, async

 

     练习,

备份/etc目录

 Cp -r  /etc/*  /backup

调整其预留百分比为3%

Tune2fs  -m 3  -L  DATA  /dev/sda7

以重新挂载的方式挂载此文件系统为不更新访问时间戳,并验证其效果

Stat  /backup/inittab

Cat  /backinittab

Stat

 

Mount  -o  remount,noatime  /backup

Cat

Stat

 

对此文件系统强行做一次检测

E2fsck  -f   /dev/sda7

删除复制而来的所有文件,并将此文件系统重新挂载为同步,而后再次复制/etc目录中的所有文件至此挂载点,体验其性能变化

Rm-rf  /backup/*

Mount  -o  remount,sync  /backup

Cp  -r  /etc/*  /backup

        

swap分区

虚拟内存

 

X86:虚拟地址,线性地址

 

Free:查看当前系统物理内存和交换空间使用情况,默认以字节显示

   -m  M显示

 

Fdisk命令中,调整分区类型为82

 

创建交换分区

 Mkswap  /dev/sda8

     -L  LABEL

 

挂载交换分区

Swapon  /dev/sda8

    -a :启用所有的定义在/etc/fstab文件中的交换设备

Swapoff  /dev/sda8

 

回环设备

 Loopback,使用软件来模拟实现硬件

 

dd:转换并复制文件。复制的是底层数据流

   dd  if=/etc/inittab  of=/root/inittab   if 数据来源  of  数据存储目标

   bs=# block size,  复制单元大小

   count=# :复制多少个bs

     备份MBR  dd if=/dev/sda  of=/mnt/usb/mbr.backup  bs=512  count=1

     还原MBR  dd if=/mnt/usb/mbr.backup  of= /dev/sda  bs=512  count=1

of=file 写到所命名的文件而不是到标准输出

if=file 从所命名文件读取而不是从标准输入

bs=size 指定块大小(既是是ibs 也是obs)

ibs=size 一次读size byte

obs=size 一次写size byte

cbs=size 一次转化size byte

skip=# 从开头忽略blocks ibs 大小的块

seek=# 从开头创建数据文件时,跳过的空间大小

count=n 只拷贝n 个记录

 

Mount命令,可以挂载iso镜像

   Mount  device  mount_point

      -o  loop:挂载本地回环设备

 

文件系统的配置文件/etc/fstab

   操作系统初始时,会自动挂载此文件中定义的每个文件系统

   /etc/fstab

      第一段:要挂载的设备

      第二段:挂载点

      第三段:文件系统类型

      第四段:挂载选项

      第五段:转储频率(定义多久对文件系统做一次完全备份 1每天 2每隔一天)

      第六段:文件系统检测次序(只有根可以为1  0表示不检查)

 

Fuser   验证进程正在使用的文件或套接字文件

– v /mnt/test 查看谁正用什么命令访问

-k -m /mnt/test 终止正在访问此挂载点的所有进程,把这个挂在点上的正在访问的进程统统干掉

 

练习

1,创建一个5G分区,文件系统为ext3,卷标为MYDATA,块大小为1024,预留空间为磁盘分区的3%,要求开机后可以自动挂载至/data/目录,并且自动挂载的设备要使用卷标进行引用

2,创建一个本地回环文件/var/swaptemp/swapfile来用于swap。要求大小为512MB,卷标为SWAP-FILE,且开机自动启用此交换设备  

     Mkdir  /var/swaptemp

     Dd  if=/dev/zero  of=/var/swaptemp/swapfile  bs=1M  count=512

     Mkswap  LABLE=SWAP-FILE  /var/swaptemp/swapfile

     

/etc/fstab

/var/swaptemp/swapfile  swap  swap  dafaults  0 0

3,上述第一问,如何让其自动挂载的同时启用ACL功能

/etc/fstab

LABEL=MYDATA   /data   ext3  default,acl  0 0


备份mbr

dd if=/dev/sda of=/root/mbr bs=1 count=512

查看mbr内容

hexdump  -C mbr

显示分区信息

fdisk -l

恢复分区信息

dd if=mbr of=/dev/sdb

fdisk -l /dev/sda

清零boot loader

dd if=/dev/zero of=/dev/sdb  bs=1 count=446

fdisk -l /dev/sdb

hexdump -C -n 512 /dev/sdb

hexdump -C -v  -n 512 /dev/sdb

清零分区表

dd if=/dev/zero of=/dev/sdb  bs=1 count=64 skip=446 seek=446

centos6

增加分区同步

partx  -a /dev/sda

删除分区同步

partx -d –nr 7-8 /dev/sda

centos7

partprobe

物理磁盘分区,真实

fdisk -l /dev/sdb

生效,内存

cat /proc/partitions

lsblk

ll /dev/sdb*

查看ext文件系统超级块

tune2fs  -l /dev/sdb6

创建文件系统

mke2fs /dev/sdb3

取消日志功能

tune2fs  -O ^has_journal /dev/sdb5 

增加日志功能

tune2fs  -O has_journal /dev/sdb3

指定块大小

mkfs.ext4 -b 1024 /dev/sdb1

查看所有文件系统信息

blkid


原创文章,作者:wutianyou,如若转载,请注明出处:http://www.178linux.com/39962

(0)
上一篇 2016-08-25 10:09
下一篇 2016-08-25 10:09

相关推荐

  • 第四周练习

    1、复制/etc/skel目录为/home/tuser1, 要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 cp -r /etc/skel /home/tuser1 chmod -R 700 /home/tuser1 2、编辑/etc/group文件,添加组hadoop。 vi /etc/group hadoop:x:2017 …

    Linux干货 2017-08-04
  • 使用Openssl构建私有CA

    使用Openssl构建私有CA Openssl是SSL的开源实现,是一种安全机密程序,主要用于提高远程登录访问的安全性。也是目前加密算法所使用的工具之一,功能很强大。     Openssl为网络通信提供安全及数据完整性的一种安全协议,包括了主要的密码算法、常用的密钥和证书封装管理功能(CA)以及SSL协议,并提供了丰…

    Linux干货 2015-10-07
  • 权限管理

    权限 权限就是用户或者组对文件或者目录所拥有的能力,所能执行的操作。 权限的分配: 通过ls -l file这个命令可以查看文件或者目录的详细信息:     [root@localhost home]# ls -l /root/   &nb…

    Linux干货 2016-08-05
  • Nginx+Apache+Tomcat实现LANMT动静分离

    Nginx+Apache+Tomcat实现LANMT动静分离          目的:    本次实验主要目的为实现以Nginx作为反向代理,并实现分别访问动静态服务的效果。   拓扑结构:     &nbsp…

    Linux干货 2016-12-05
  • Shell脚本自动部署(编译)LAMP平台

    Shell脚本自动部署(编译)LAMP平台 Shell脚本自动部署(编译)LAMP平台 为什么要用脚本进行部署? 脚本功能介绍 笔者环境 准备工作 声明 使用测试 脚本代码 Shell脚本自动部署(编译)LAMP平台 LAMP是当下非常流行的一套Web架构,我们可以在GNU/Linux下通过其他人打包的程序包来进行安装; 但是在生产环境中,很多时候都需要我们…

    Linux干货 2016-03-26
  • 编译内核

    先把下载的内核解压展开归档 tar -xvf linux-4.12.tar.xz   把linux系统中的/boot/config-3.10.0-514.el7.x86_64 copy到归档文件中并命名为.config   cp config-3.10.0-514.el7.x86_64 /app/linux-4.12/.conf…

    2017-07-12

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-26 11:24

    文章对磁盘管理基础知识和管理工具的用法总结的较为全面。同时,如果能加上一些示例,从增加一块磁盘,分区,格式化,挂载使用能熟练运用这些工具会更好哦