zoukankan      html  css  js  c++  java
  • Linux入门-3 Linux磁盘及文件系统管理

    1. 磁盘基本概念

    1.1 磁盘结构:盘片(单碟vs多碟)、磁头(读写数据)

    • cylinder(柱面)
    • sector(扇区)
    • head(磁头)

    1.2 磁盘在Linux中的表示

    • Linux所有设备都被抽象为一个文件,保存在/dev目录下
    • 磁盘的名称一般为hd[a-z]或sd[a-z]
    • IDE设备的名称为hd[a-z],SATA、SCSI、SAS、USB等设备的名称为sd[a-z]

    sd表示series disk

    1.3 分区概念

    • 设备名称+分区号:sda1, sda2...
    • 主流的分区机制为MBRGPT

    1.3.1 MBR

    Master Boot Record,主引导记录,传统的分区机制,应用于绝大多数使用BIOS的pc设备。

    • 支持32bit和64bit系统
    • 支持的分区数量有限
    • 只支持不超过2T的硬盘,超过2T将只能使用2T空间(有第三方解决方法)

    主分区、扩展分区、逻辑分区
    Linux最多支持63个IDE分区和15个SCSI分区

    1.3.2 GPT

    GUID Partition Table

    • 支持超过2T磁盘
    • 向后兼容MBR
    • 必须在支持UTFI的硬件上才能使用
    • 必须为64为系统
    • Mac、Linux系统都支持GPT分区
    • Win7 64bit、winServer2008 64bit支持GPT

    2 使用fdisk进行磁盘管理

    来自IBM的老牌分区工具,支持绝大多数操作系统,几乎所有Linux发行版都装有fdisk,rescue模式下也依然能够使用。

    fdisk是基于MBR的分区工具

    • 只有超级用户权限才能运行
    • fdisk -l可以列出所有安装的磁盘及其分区信息
    • 使用fdisk /dev/sda可以对目标磁盘进行分区操作
    • 分区后需要使用partprobe命令让内核更新分区信息,否则需要重启才能识别新分区
    • /proc/partitions文件也可以用来查看分区信息

    3 Linux文件系统

    操作系统通过文件系统管理文件及数据,磁盘或分区需要创建文件系统之后才能被操作系统使用,创建文件系统的过程又称之为格式化。

    • 没有文件系统的设备又称之为裸(raw)设备
    • 常见的文件系统fat32, NTFS, ext2, ext3, ext4, xfs, HFS
    • 文件系统之间的区别:日志、支持的分区大小、支持的单个文件大小、性能等

    mke2fs

    命令mke2fs用来创建文件系统
    mke2fs -t ext4 /dev/sda1

    -b blocksize 指定文件系统快大小
    -c 建立文件系统时检查损坏块
    -L label 指定卷标
    -j 建立文件系统日志

    • 块大小默认4k
    • ext3/ext4默认带日志,不需要-c
    • mkfs也能创建文件系统,更简单,但参数少,不能精细控制

    dumpe2fs

    查看分区的文件系统信息
    dumpe2fs /dev/sda1

    需要对文件系统做微调时使用

    JOURNAL日志

    带日志的文件系统有较强的稳定性,出现错误时可以进行回复。

    • 带日志的文件系统会使用“两阶段提交”的方式进行磁盘操作:
      1. 文件系统将准备执行的事务的具体内容写入日志
      2. 文件系统进行操作
      3. 操作成功后,将事务的具体内容从日志中删去
    • 好处是出现意外后可以通过日志文件进行恢复,缺点是丧失了一定的性能

    e2label

    e2label /dev/sda1 显式系统标签
    e2label /dev/sda1 label 设标签

    fsck

    fsck /dev/sda1
    file system check,检查并修复损坏的文件系统

    • 使用-y参数不提示而直接进行修复
    • 默认会自动判断文件系统类型,但如果损坏严重,则用-t指定文件系统
    • 对于识别为文件的损坏数据(文件系统无记录),fsck会将该文件放入lost+found目录
    • 系统启动时会对磁盘进行fsck

    4 Linux文件系统挂载管理

    磁盘或分区创建好文件系统之后,需要挂载到一个目录才能使用。
    windows和mac会自动挂载,windows上称之为c盘、d盘等。
    LInux需要手动挂载或配置系统进行自动挂载。

    mount

    mount /dev/sda1(需要挂载的磁盘) /mnt(挂载点)

    • 不带参数,显示所有已挂载的文件系统
    • -t指定文件系统类型
    • -o指定挂载选项
      • ro, rw以只读或读写形式挂载,默认rw
      • sync不使用缓存,而是将所有操作直接写入磁盘
      • async使用缓存,默认
      • noatime每次访问文件时不更新文件的访问时间,可以提高性能
      • atime每次访问文件时更新文件的访问时间,默认
      • remount重新挂载

    umount

    相当于windows的弹出
    umount 文件系统或挂载点
    umount /dev/sda1 == umount /mnt/

    如果提示device is busy,则表示文件系统正在被使用,无法卸载,可以使用以下命令查看使用文件系统的进程:
    fuser -m /mnt/
    也可以用以下命令查看正在被使用的文件:
    lsof /mnt/(list open file)

    自动挂载

    配置/etc/fstab用来自定义需要自动挂载的文件系统,fstab中每一行代表一个挂载配置,格式如下:

    /dev/sda1 /mnt ext4 defaults 0 0
    待挂载设备 挂载点 文件系统 挂载选项 dump、fsck相关选项
    • 要挂载的设备也可以用label进行识别,使用LABEL=DISKLABEL取代/dev/sda1
    • mount -a命令会挂载所有fstab中定义的自动挂载选项
  • 相关阅读:
    POJ 3904 Sky Code (容斥原理)
    HDU 4334 Trouble (暴力)
    UVA 10325 The Lottery( 容斥原理)
    HDU 2841 Visible Trees 数论+容斥原理
    UVA11806-Cheerleaders(容斥原理+二进制)
    HDU1695 GCD (欧拉函数+容斥原理)
    HDU 5651 xiaoxin juju needs help (组合数)
    最大子矩阵和 51Nod 1051 模板题
    最大子段和 模板题 51Nod 1049
    51Nod 1006 最长公共子序列Lcs问题 模板题
  • 原文地址:https://www.cnblogs.com/whenyd/p/8426302.html
Copyright © 2011-2022 走看看