首页 > 代码库 > 磁盘管理

磁盘管理

1.磁盘有两种分区方式:MBR和GPT 

MBR分区需要注意什么?

(1).MBR使用的是32位表示扇区数,分区不超过2T

(2).磁盘是按照柱面划分区的

(3).MBR的0扇区有512types,有3部分组成: (1)446types是主引导记录boot lader;(2)64types是分区表,每个分区表16types;(3)还有16type是结束标志55AA

(4).磁盘可以分为4个主分区:3个主分区和1个扩展分区

  实例:下面对mbr进行具体分析

(1).备份mbr磁盘0扇区

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

(2).把备份的mbr恢复到sdb磁盘上

dd if=/root/mbr of=/dev/sdb

GTP分区需要注意什么?

(1)GTP:支持128个分区,使用64位,支持8z(512byte/block),64z(4096byte/block)

(2)使用128位UUID表示磁盘和分区GTP分区表自动备份在投河尾两份,并有CRC校验位

(3)UEFI(统一扩展固件接口)硬件支持GTP


在linux系统中磁盘的管理包括以下四个方面:`  

(1).读取新增加磁盘

(2).对新增磁盘进行分区

(3).对分区进行格式化,并设定卷标

(4).对分区进行挂载

一.读取新增加的磁盘

1.一般在新增加磁盘后系统无法立刻识别出来,那么就要进行下面的步骤,扫描生成新磁盘(在生产环境下硬盘支持热插拔,不存在这种情况)

技术分享

2.使用lsblk查看磁盘是否读取出来


二.对磁盘进行分区

1.先学习下分区命令

(1).列出块设备

blkid 查看磁盘格式和UUID

(2). 创建分区使用

(1)fdisk 创建MBR分区,页支持GPT,对于一块硬盘,最多只能管理15个分区

fdisk -l [-u][device]

子命令:

p: 分区列表

t: 更改分区类型

n: 创建新分区

d: 删除分区

w: 保存并退出

q: 不保存并退出

(3)gdisk 创建GTP分区

2.同步分区表(重要操作)

(1)查看内核是否已经识别新的分区

#cat /proc/partitions

(2)通知内核重新读取硬盘分区表

新增分区后用来读取分区

partx -a -n M:N /dev/DEVICE

kpartx -a /dev/DEVICE -f :force

删除分区后用来读取分区

partx -d -n M:N /dev/DEVICE

centos6:-nr N-M

注意:如果是新建磁盘,一般分区后会直接读取到磁盘

(3)Centos 5,7:使用 partprobe

partprobe [/dev/DEVICE]

(4)parted 的操作的都是实时生效的,小心使用

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

parted /dev/sdb mklabel gpt|msdos

arted /dev/sdb print

parted /dev/sdb mkpart primary 1 200

parted /dev/ sdbrm1

parted -l


实例:对/dev/sdb 进行分区

(1)fdisk /dev/sdb

(2)使用选项n进入分区,(sdb1-sdb3设为主分区,sdb4设为扩展分区,sd5,sd6..设为逻辑分区),使用p查看分区

(3)使用w保存 d可以删除分区

(4)读取磁盘partx -a /dev/sdb 执行2遍


三. 创建文件系统

1.文件系统类型

linux 文件系统:ext2,ext3,ext4,xfs(SGI),btrfs(Oracle),reiserfs,jfs(AXI),swap

swap:交换分区

光盘:iso996

windons: fat32,ntfs

Unix:FFS(fast),UFS(unix),JFS2

网络文件系统:NFS,CIFS

集群文件系统:GFS2,OCFS2(oracle)

分布式文件系统:ceph,moosefs,mogilefs,glusterfs,Lustre

RAW: 未经处理或未经格式化产生的文件系统


2.文件系统分类

根据其是否支持"journal"功能:

日志型文件系统: ext3, ext4, xfs, ...

非日志型文件系统: ext2, vfat

文件系统的组成部分:

内核中的模块:ext4, xfs, vfat

用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat

Linux的虚拟文件系统:VFS

查前支持的文件系统:cat /proc/filesystems

2. 文件系统管理工具:

1.磁盘分区格式化三种用法:

(1) mkfs.ext2,mkfs.ext3,mkfs.ext4


(2) mkfs -t ext2=mkfs.ext2=mke2fs -t ext2


(3) mke2fs [options] device (ext文件系统专用工具)

    -t: {ext2,ext3,ext4} 指明要创建的文件系统类型

     -b: {1024,2048,4096} 指明块大小  mkfs.ext4 -b 1024 /dev/sdb1

    -l:  指明卷标

     -j:  相当于-t ext3      mke2fs -j = mke2fs -t ext3

    -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小

    -N #:微数据空间创建多个inode

    -m #:默认5%,位管理人员预留空间占总控键的百分比

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

    -O ^FEATURE: 关闭指定特性

    注意:mkfs -t ext2=mkfs.ext2=mke2fs -t ext2


2.tune2fs  重新设定ext系列文件系统可调整参数的值

 tune2fs [options] device

    -l:查看超级块的内容

    -j :ext2升级为ext3

     -L:修改卷标

     -m #:调整预留空间百分比

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

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

    -U: 修改UUID号

实例:

1.查看ext文件系统超级块

tune2fs -l /de/vsdb6

2.取消日志功能

tune2fs -O ^has_joural /dev/sdb5

3.增加日志功能

tune2fs -O has_journal /dev/sdb3

4.dumpe2fs   显示ext系列文件系统的属性信息

  dumpe2fs [-h] device  查看超级块信息(分组信息)

5.用于实现文件系统检测的工具,常用于发生死机或者非正常关机之后

 e2fsck 检测ext2,ext3,ext4文件系统  

 e2fsck [options] device

  -y:对所有问题自动回答为yes

  -f:强制修复

 fsck 检测和修复文件系统

  -t fstype:指明文件系统类型

  fsck -t ext4 = fsck.ext4

  -a :无需交互而自动修复所有错误

  -r : 交互式修复

三.磁盘挂载

1. mount 挂载

   挂载点  用于作为另一个系统的访问入口,有3点需要注意:

          1.事先存在

          2.未被使用的或进程不会被使用的目录

          3.挂载点原有的文件 会被隐藏

   mount用法: 

    mount [-nrw][-t vfstype][-o options] device  dir

         选项:

          -r: readonly  只读挂载

          -w: read and write 读写挂载 默认就是读写挂载

          -n: 挂载或卸载的操作不同步到/etc/mtab文件中(意思是挂载但不同步到配置文件中,隐藏起来了)

          -a: 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)

          -t vfstype: 指明要挂载的设备的文件类型

          -L :LABEL  挂载以卷标的方式指明设备  

          -U :UUID 挂载以uuid的方式指明设备    例: mount -U UUID dir

          -B :--bind :绑定目录到另一个目录上 例:mount -B /boot /mnt/boot

       查看内核追踪到的已挂载的所有设备:cat /proc/mounts 或者 mount


        mount -o options 挂载选项 

       选项:

          aync: 异步模式

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

          atime/noatime: 文件或目录在被访问时是否更新其访问时间戳

          loop: 用来把一个文件当成硬盘分区挂载在硬盘上

        ro: 只读

         rw: 读写

         dev/nodev: 此设备上是否允许创建设备文件

         exec/noexec: 是否运行此设备上的程序文件

         user/nouser: 是否允许普通用户挂载此文件

         suid/nosuid:   是否允许程序文件上的suid和sgid特殊权限生效 默认nosuid

        remount: 重新挂载 mount -o ro,remount /mnt/sdb2

        acl: 启用此系统上的acl

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

        支持使用facl功能

        挂载默认不开启acl功能,若开启acl功能,执行下面命令

    mount -o acl device dir 

     tune2fs -o acl device

    mount  /testdir/partfile  /mnt/partfile/ -o loop

实例:针对mount 的suid权限做一个实验

如果赋给mount suid权限,那么普通用户就可以挂载可移动设备,而可移动设备上面有一些二进制程序,那么在挂载可移动磁盘时

执行 mount -o suid /dev/sdb2 /mnt/sdb2 n赋予二进制程序suid权限,那么普通用户将会获取部分root权限,造成安全隐患

      

2.卸载命令

1.查看挂载情况

#findmnt MOUNT_POINT

技术分享/mnt/sdb1是挂载点

2.查看正在访问指定文件系统的进程

#lsof MOUNT_POINT

#fuser -v MOUNT_POINT

3.终止所有正在访问指定的文件系统的 

#fuser -km MOUNT_point

4.卸载

# umount DEVICE

# umount MOUNT_POINT

3.文件挂载配置文件

/etc/fstab每行定义一个要挂载的文件系统

要挂载的设备或伪文件系统

设备文件;LABEL(LABEL="");UUID(UUID="");伪文件系统名称(proc,sysfs)

挂载选项:defaults

转储频率: 0: 不做备份

      1:每天转储

       2:每隔一天转储

自检次序: 0:不自检

    1:首先自检:一般只有rootfs才用1


使用mount -a 命令挂载/etc/fstab 中所有的文件系统


实例:在/etc/fstab中写入下面红框的行,没次开机启动就会自动挂载

 技术分享第一次挂载 mount -a 生效

之前挂载过修改后用mount -o remount MOUNT_POINT


实用技巧:

   可以实现将目录绑定在另一个目录上,作为临时访问接口

    mount --blind 源目录 目标目录

查看当前目录已挂载的设备

   mount

   cat /etc/mtab

   cat /proc/mounts



实例:

1.目录挂载到目录

mkdir /testdir/dir

mount -B /testdir/dir /mnt/dir

2.利用文件 ,实现文件系统(作用是代替分区做一些测试工作)

在centos6 上做实验

(1)dd if=/dev/zero of=/testdir/partfile bs=1M count=500

(2)mkfs.ext4 /testdir/partfile

(3)mkdir /mnt/partfile

(4)mount /testdir/paryfile  mnt/partfile -o loop

(5)vim /etc/fstab

losetup /dev/loop1 /testdir/partfile

mount/dev/loop1 /mnt/partfile


附加losetup详解:

Linux losetup命令用于设置循环设备。

循环设备可把文件虚拟成区块设备,籍以模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱或软驱等设备,并挂入当作目录来使用。

语法

losetup [-d][-e <加密方式>][-o <平移数目>][循环设备代号][文件]

参数:

-d 卸除设备。

-e<加密方式> 启动加密编码。

-o<平移数目> 设置数据平移的数目。

实例

(1)创建空的磁盘镜像文件,这里创建一个1.44M的软盘

$ dd if=/dev/zero of=floppy.img bs=512 count=2880

(2)使用 losetup将磁盘镜像文件虚拟成快设备

$ losetup /dev/loop1 floppy.img

(3)挂载块设备

$ mount /dev/loop0 /tmp

经过上面的三步之后,我们就可以通过/tmp目录,像访问真实快设备一样来访问磁盘镜像文件floppy.img。

(4) 卸载loop设备

$ umount /tmp

$ losetup -d /dev/loop1


本文出自 “zhang1003995416” 博客,谢绝转载!

磁盘管理