码迷,mamicode.com
首页 > 系统相关 > 详细

Linux磁盘管理

时间:2017-12-13 17:21:07      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:磁盘   linux   

磁盘管理

设备文件

块设备:相当于一个扇区512字节

并行接口: (传输过程中可能会有干扰,目前都用串口)

      IDE:133MB/s

      SCSI:640MB/s(服务器接口)

串口:

      SATA:6Gbps(家用硬盘接口)

      SAS:6Gbps(现在大部分服务器接口)

      USB:480MB/s


rpm:机械硬盘的转速,转速越快,性能越好


机械硬盘如果数据丢失,有机会恢复一部分数据,而固态磁盘丢失数据的话,不能恢复


磁盘设备的设备文件命名:/dev/DEV_FILE

无论是哪一种接口,最后都命名为/dev/sd..,除了虚拟磁盘的命名为/dev/vd

SCSI,SATA,SAS,IDE,USB:/dev/sd

Centos7使用gnome-disks可在图形化界面查看磁盘分区状态

Centos6则使用palimpsest在图形化界面查看

不同磁盘标识:a-z,如果突破了26个磁盘就会显示aa,ab

            /dev/sda,/dev/sdb....

同一设备上面的不同分区:1,2...

MBR分区主分区最多4个,设备名称为1-4,扩展分区加主分区最多也是4个,一个电脑上至少一个主分区

            /dev/sda1,/dev/sda5

硬盘存储术语

        head:磁头,磁头数=盘面数,支持256个磁头

        track:磁道(磁头要指向的一圈一圈的位置,1024圈)

        cylinder:柱名

        sector:扇区,一圈有63个扇区,每个扇区512bytes字节

计算磁盘大小=扇区(512)x一圈(63)x1024x256得出的结果为字节数)早期的计算公式


分区的目的

    优化I/O性能

    实现磁盘空间配额限制,限制用户在某几个分区占用的空间

    提高修复速度

    隔离系统和程序,防止一个坏了全坏

    安装多个OS

    采用不同的文件系统


pali

两种分区方法: MBR,GPT

   MBR:主引导记录,使用32位表示扇区的数量,2的32次方扇区的总容量,2T,按照柱面分区

   0磁道0扇区:存放关于硬盘的分区信息,0磁道的0扇区就叫做MBR


GPT分区

uuidgen生成随机uuid数

UUID128位,8位后面跟3个4位,再跟12位,唯一标识资源


管理分区:

列出块儿设备:lsblk(查看的是内存中缓存的磁盘信息)

查看分区的方式

(1)ls /dev/sd*(sd后面有数字则说明分区成功)

(2)cat /proc/partitions(查看的也是内存中的磁盘信息)

(3)lsblk(查看的也是内存中的磁盘信息)

(4)fdisk -l(看磁盘里面的分区表)


当内存中的磁盘信息与设备上面的磁盘信息不同时,使用以下解决方案

partprobe "设备名称" 同步某一个设备的分区表

Ctenos6上面同步

增加分区导致不同步使用partx -a "设备名称"

删除分区导致不同步使用partx -d --nr "缺少的分区号" "设备名"


创建分区使用:

   fdisk '设备名称' 创建,管理MBR分区(创建完成后磁盘里面的分区表与内存中的分区表会不同步)

   增加分区后不同步的话在Centos6上使用partx -a '设备名称' 进行同步

   删除分区后导致不同步在Centos6上使用partx -d '设备名称' --nr '删除的分区号' 进行同步

   Centos 7 则使用partprobe进行同步

   fdisk -l [-u] [device...] 查看分区 

   fdisk "设备名称"  管理分区 

子命令: 

 p 分区列表 

 t 更改分区类型 

 n 创建新分区 

 d 删除分区 

 v 校验分区 

 u 转换单位 

 w 保存并退出

当要定义分区大小的时候,first开始那一行一般都是默认,而下面Last cylinder后面可以跟要分区的大小,使用+size{G|M}格式

   gdisk "设备名称" 创建GPT分区,交互式操作

   parted 高级分区操作


SWAP分区编码为8200  

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

   parted "指定一个硬盘" mklabel "msdos(MBR)|gpt(GPT)" 指定创建的是MBR格式还是GPT格式

   parted "设备名称" print 打印指定设备信息

   parted "指定一个硬盘" mkpart primay 1 1000默认为M(创建一个主分区大小为999M)

   parted -l 查看所有设备的信息


文件系统:将分区分完之后要构建一个文件系统,没有文件系统就没有目录和文件

blkid可查看设备的文件系统

Linux文件系统:ext4(扩展的文件系统简称),xfs(支持更大的文件),btrfs(Oracle公司的文件系统),SWAP(当物理内存不够用时使用)

光盘:iso9660

网络文件系统:NFS,CIFS

查看支持的文件系统类型:ls /lib/modules/"本机内核"/kernel/fs/

RAW:光分区不格式化产生的文件系统


创建文件系统 Centos6默认文件系统为ext4,Centos7默认文件系统为xfs

ext2与ext3的区别:ext2没有日志功能,ext3拥有日志功能,ext3与ext4没有本质区别

扩展分区是不可以直接创建文件系统的


mkfs命令:

      mkfs."文件系统类型" "设备分区"

             -b {1024|2048|4096}'设备名称' 给目标设备划分单独块儿大小

             -N 数字 '设备名称' 设置设备名称inode数量

      mke2fs -j '设备名称'(给目标设备划分ext2文件系统类型并且加上日志功能)

      -L(Label):给分区加卷标,也就是分区的描述,挂载点目录叫什么,这个就建议叫什么

      e2label "设备分区" 卷标,划分好文件系统类型之后添加卷标

      tune2fs -l "设备分区":查看分区的一系列的描述信息(针对ext系列的文件系统才能查看)

              -O '属性名称':更改文件系统属性;删除的话要在-O后面的个性前面加上^

              -o 更改挂载选项的;删除的话要在-o后面的挂载选项前面加上^

              fsck '设备名':检查设备状态是否完好,有损坏即进行修复,修复过程中可能会丢失一部分数据

              -U 更改设备的UUID编号


blkid查看创建了文件系统的设备

     -U 根据UUID查找设备

     -L 根据卷标名查找设备

uuidgen生成随机uuid

dumpe2fs '设备名' 可以看某一个设备中的分组

        -h 只显示元数据信息不显示分组信息

findmnt判断目标是否为挂载点


/etc/mtab文件会随着挂载进行更新

cat /proc/mounts会显示比较详细的挂载信息

mount挂载方法:mount DEVICE MOUNT_POINT(挂载点)

如果要卸载的目录正在使用还要卸载的话,则使用lsof '设备名' 查询目标设备的状态

mount:通过查看/etc/mtab文件显示当前已挂载的所有设备

mount -n 不更新/etc/mtab文件挂载,mount命令不可见

      -r 采取只读的方式挂载(默认是拥有rw权限)

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

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

      -B或--bind :将目录挂载到目录里(例子:mount -B /mnt/sdb2 /app/sdb2)两个目录的文件夹就是一样的

      -a 读取/etc/fstab中没有挂载的行并将其挂载


mount常用命令选项

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

      async:异步模式,先将数据写到高速缓冲区(Buffer)中,在系统不繁忙的时候,再将数据写到硬盘中,效率比较高(默认)

缓冲区Buffer:写数据的时候,临时存放写入到磁盘的数据

缓存Cache:

      sync:同步模式,将数据直接写入到硬盘中

      atime/noatime:可以取消设备的atime更新以及开启atime的更新

      diratime/nodiratime:目录的atime更新与不更新

      auto/noauto:是否开启自动挂载

      exec/noexec:该文件系统上的程序是否可以运行

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

      suid/nosuid:是否支持suid和sgid权限

      remount:重新挂载,即时生效(比较常用)

      ro:只读

      rw:读写(默认挂载就拥有读写权限)

      user/nouser:是否允许普通用户挂载设备,在/etc/fstab文件使用

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

      loop:使用loop设备,可以将文件设为挂载点(可以手动创建loop设备文件,mknod /dev/loop[数字] b 设备编号 第几个设


备:mknod /dev/loop8 b 7 8,losetup:人为的将设备与文件做关联losetup /dev/loop8 /app/partfile2 losetup -a显示所有设备


与文件的对应关系)

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


文件挂载配置文件

       /etc/fstab每行定义一个要挂载的文件系统,实现开机自动挂载

文件格式:(比较建议设备名写设备的UUID号,使用blkid查看,也可以写设备卷标,没有文件系统则写none)

     设备名   挂载点 文件系统    挂载选项(mount -o后面的一系列选项) 备份标记   文件系统检查(第几个检查)

     /dev/sdb2  /mnt/sdb2 ext4      defaults,ro                          0             0


处理交换分区

创建swap分区,编号为82

mkswap 设备名 将目标设备划分为swap文件系统

swapon -a 将/etc/fstab中没有起作用的swap挂载开启

swapon -s 查看swap分区的信息,调整swap分区的优先级,在/etc/fstab中将defaults改为pri='大的优先级' swapoff然后swapon生效


移动设备

eject: 弹出光驱

    -t 弹入光驱 

创建ISO文件

    cp /dev/cdrom /root/centos7.iso(将/dev/cdrom中的光盘文件拷贝到/root下并起名为centos7.iso)

将目录打包成iso文件

mkisofs -r -o "打包后文件存放位置" "要打包的目录名称"

将两张光盘合成一个光盘步骤:

进入wiki.centos.org搜索mkdvdiso.sh点击第一个结果下载下来这个脚本


free查看内存

    -m 以兆为单位,默认以k为单位

    -g 以G为单位

    -h 人类易读模式显示

df查看正在挂载的磁盘空间利用率

    -i 查看inode使用率

    -T 文件系统类型

    -P 以Posix兼容的格式输出

du查看目录总体空间占用状态

    -sh 以人类易读方式显示结果

    --max-depth 最大深度目录统计

工具dd

dd命令:将指定的源读出来发送到目标

用法:

    dd if=源路径 of=目标路径

    bs=大小:block 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

转换参数:

notrunc 不截断输出文件

ucase   将小写转换为大写

lcase   将大写转换为小写

nocreat 不创建输出文件,of文件不存在的话不创建

noerror 出错时不停止

sync    将每个输入块填充到ibs个字节,不足部分用空字符补齐


Linux磁盘管理

标签:磁盘   linux   

原文地址:http://blog.51cto.com/kaikai0720/2050220

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!