zoukankan      html  css  js  c++  java
  • linux 学习之九、Linux 磁盘与文件系统管理(1)

    原文地址:http://vbird.dic.ksu.edu.tw/linux_basic/0230filesystem.php#filesys

    查看文件系统参数命令
    dumpe2fs 盘符地址
    例: dumpe2fs /dev/sda5


    利用 dumpe2fs 可以查询到非常多的信息,不过依内容主要可以区分为上半部是 superblock 内容, 下半部则是每个 block group 的信息了


    如果想要实际观察 root 家目录内的文件所占用的 inode 号码时,可以使用 ls -i 或者 ls -li


    由上面的结果我们知道目录并不只会占用一个 block 而已,也就是说: 在目录底下的文件数如果太多而导致一个 block 无法容纳的下所有的档名与 inode 对照表时,
    Linux 会给予该目录多一个 block 来继续记录相关的数据;




    [root@www ~]# df [-ahikHTm] [目录或文件名]
    选项与参数:
    -a  :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
    -k  :以 KBytes 的容量显示各文件系统;
    -m  :以 MBytes 的容量显示各文件系统;
    -h  :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
    -H  :以 M=1000K 取代 M=1024K 的进位方式;
    -T  :连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
    -i  :不用硬盘容量,而以 inode 的数量来显示


    范例四:将 /etc 底下的可用的磁盘容量以易读的容量格式显示
    [root@www ~]# df -h /etc
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sda2             9.5G  3.7G  5.4G  41% /


    ---------------------------------


    [root@www ~]# du [-ahskm] 文件或目录名称
    选项与参数:
    -a  :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
    -h  :以人们较易读的容量格式 (G/M) 显示;
    -s  :列出总量而已,而不列出每个各别的目录占用容量;
    -S  :不包括子目录下的总计,与 -s 有点差别。
    -k  :以 KBytes 列出容量显示;
    -m  :以 MBytes 列出容量显示;


    例:
    范例一:列出目前目录下的所有文件容量
    [root@www ~]# du


    范例二:同范例一,但是将文件的容量也列出来
    [root@www ~]# du -a


    范例三:检查根目录底下每个目录所占用的容量
    [root@www ~]# du -sm /*


    -----------------------------------


    磁盘的分割、格式化、检验与挂载:
    磁盘分区: fdisk


    [root@www ~]# fdisk [-l] 装置名称
    选项与参数:
    -l  :输出后面接的装置所有的 partition 内容。若仅有 fdisk -l 时,
          则系统将会把整个系统内能够搜寻到的装置的 partition 均列出来


    范例:找出你系统中的根目录所在磁盘,并查阅该硬盘内的相关信息
    [root@www ~]# df /            <==注意:重点在找出磁盘文件名而已




    进入磁盘操作区域
    [root@www ~]# fdisk /dev/sda  <==仔细看,不要加上数字喔!


    然后显示
    Command (m for help): m   <== 输入 m 后,就会看到底下这些命令介绍
    Command action
       a   toggle a bootable flag
       b   edit bsd disklabel
       c   toggle the dos compatibility flag
       d   delete a partition            <==删除一个partition
       l   list known partition types
       m   print this menu
       n   add a new partition           <==新增一个partition
       o   create a new empty DOS partition table
       p   print the partition table     <==在屏幕上显示分割表
       q   quit without saving changes   <==不储存离开fdisk程序
       s   create a new empty Sun disklabel
       t   change a partition's system id
       u   change display/entry units
       v   verify the partition table
       w   write table to disk and exit  <==将刚刚的动作写入分割表
       x   extra functionality (experts only)




    删除磁盘分区槽


    fdisk /dev/hdc :先进入 fdisk 画面;
    p :先看一下分割槽的信息,假设要杀掉 /dev/hdc1;
    d :这个时候会要你选择一个 partition ,就选 1 啰!
    w (or) q :按 w 可储存到磁盘数据表中,并离开 fdisk ;当然啰, 如果你反悔了,呵呵,直接按下 q 就可以取消刚刚的删除动作了!


    练习新增磁盘分区槽
    # 练习二: 开始新增,我们先新增一个 Primary  的分割槽,且指定为 4 号看看!
    Command (m for help): n
    Command action            <==因为是全新磁盘,因此只会问extended/primary而已
       e   extended
       p   primary partition (1-4)
    p                         <==选择 Primary 分割槽
    Partition number (1-4): 4 <==配置为 4 号!
    First cylinder (1-5005, default 1): <==直接按下[enter]按键决定!
    Using default value 1               <==启始磁柱就选用默认值!
    Last cylinder or +size or +sizeM or +sizeK (1-5005, default 5005): +512M
    # 这个地方有趣了!我们知道 partition 是由 n1 到 n2 的磁柱号码 (cylinder),
    # 但磁柱的大小每颗磁盘都不相同,这个时候可以填入 +512M 来让系统自动帮我们找出
    # 『最接近 512M 的那个 cylinder 号码』!因为不可能刚好等于 512MBytes 啦!
    # 如上所示:这个地方输入的方式有两种:
    # 1) 直接输入磁柱的号码,你得要自己计算磁柱/分割槽的大小才行;
    # 2) 用 +XXM 来输入分割槽的大小,让系统自己捉磁柱的号码。
    #    +与M是必须要有的,XX为数字


    # 练习三: 继续新增一个,这次我们新增 Extended 的分割槽好了!
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    e    <==选择的是 Extended 喔!
    Partition number (1-4): 1
    First cylinder (64-5005, default 64): <=[enter]
    Using default value 64
    Last cylinder or +size or +sizeM or +sizeK (64-5005, default 5005): <=[enter]
    Using default value 5005
    # 还记得我们在第三章的磁盘分区表曾经谈到过的,扩展分配最好能够包含所有
    # 未分割的区间;所以在这个练习中,我们将所有未配置的磁柱都给了这个分割槽喔!
    # 所以在开始/结束磁柱的位置上,按下两个[enter]用默认值即可!




    # 练习四: 这次我们随便新增一个 2GB 的分割槽看看!
    Command (m for help): n
    Command action
       l   logical (5 or over)     <==因为已有 extended ,所以出现 logical 分割槽
       p   primary partition (1-4)
    p   <==偷偷玩一下,能否新增主要分割槽
    Partition number (1-4): 2
    No free sectors available   <==肯定不行!因为没有多余的磁柱可供配置


    Command (m for help): n
    Command action
       l   logical (5 or over)
       p   primary partition (1-4)
    l   <==乖乖使用逻辑分割槽吧!
    First cylinder (64-5005, default 64): <=[enter]
    Using default value 64
    Last cylinder or +size or +sizeM or +sizeK (64-5005, default 5005): +2048M




    在按w保存以后执行一下partprobe命令


    [root@www ~]# partprobe  <==强制让核心重新捉一次 partition table   
    这个命令的运行很简单, 他仅是告知核心必须要读取新的分割表而已,因此并不会在屏幕上出现任何信息才是
       
       
    --------------------------
    磁盘格式化


    [root@www ~]# mkfs [-t 文件系统格式] 装置文件名
    选项与参数:
    -t  :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)


    范例一:请将上个小节当中所制作出来的 /dev/hdc6 格式化为 ext3 文件系统
    [root@www ~]# mkfs -t ext3 /dev/hdc6
    mke2fs 1.39 (29-May-2006)
    Filesystem label=                <==这里指的是分割槽的名称(label)
    OS type: Linux
    Block size=4096 (log=2)          <==block 的大小配置为 4K 
    Fragment size=4096 (log=2)
    251392 inodes, 502023 blocks     <==由此配置决定的inode/block数量   


    [root@www ~]# mkfs[tab][tab]
    mkfs         mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.msdos   mkfs.vfat
    # 按下两个[tab],会发现 mkfs 支持的文件格式如上所示!可以格式化 vfat 喔


    将刚刚的 /dev/hdc6 格式化为 Windows 可读的 vfat 格式吧!
    mkfs -t vfat /dev/hdc6


    -------


    [root@www ~]# mke2fs [-b block大小] [-i block大小] [-L 标头] [-cj] 装置
    选项与参数:
    -b  :可以配置每个 block 的大小,目前支持 1024, 2048, 4096 bytes 三种;
    -i  :多少容量给予一个 inode 呢?
    -c  :检查磁盘错误,仅下达一次 -c 时,会进行快速读取测试;
          如果下达两次 -c -c 的话,会测试读写(read-write),会很慢~
    -L  :后面可以接标头名称 (Label),这个 label 是有用的喔!e2label命令介绍会谈到~
    -j  :本来 mke2fs 是 EXT2 ,加上 -j 后,会主动加入 journal 而成为 EXT3。
    mke2fs 是一个很详细但是很麻烦的命令!因为里面的细部配置太多了!现在我们进行如下的假设:


    这个文件系统的标头配置为:vbird_logical
    我的 block 指定为 2048 大小;
    每 8192 bytes 分配一个 inode ;
    建置为 journal 的 Ext3 文件系统。


    范例一: 
    [root@www ~]# mke2fs -j -L "vbird_logical" -b 2048 -i 8192 /dev/hdc6


    --------------
    [root@www ~]# fsck [-t 文件系统] [-ACay] 装置名称
    选项与参数:
    -t  :如同 mkfs 一样,fsck 也是个综合软件而已!因此我们同样需要指定文件系统。
          不过由于现今的 Linux 太聪明了,他会自动的透过 superblock 去分辨文件系统,
          因此通常可以不需要这个选项的啰!请看后续的范例说明。
    -A  :依据 /etc/fstab 的内容,将需要的装置扫瞄一次。/etc/fstab 于下一小节说明,
          通常启动过程中就会运行此一命令了。
    -a  :自动修复检查到的有问题的扇区,所以你不用一直按 y 啰!
    -y  :与 -a 类似,但是某些 filesystem 仅支持 -y 这个参数!
    -C  :可以在检验的过程当中,使用一个直方图来显示目前的进度!


    EXT2/EXT3 的额外选项功能:(e2fsck 这支命令所提供)
    -f  :强制检查!一般来说,如果 fsck 没有发现任何 unclean 的旗标,不会主动进入
          细部检查的,如果您想要强制 fsck 进入细部检查,就得加上 -f 旗标啰!
    -D  :针对文件系统下的目录进行优化配置。


    范例一:强制的将前面我们创建的 /dev/hdc6 这个装置给他检验一下!
    [root@www ~]# fsck -C -f -t ext3 /dev/hdc6 


    注意:通常只有身为 root 且你的文件系统有问题的时候才使用这个命令,否则在正常状况下使用此一命令, 可能会造成对系统的危害
  • 相关阅读:
    TCP与UDP的区别
    gdb调试入门(上)
    linux开发工具之Makefile(上)
    在kolla中配置cinder ceph多后端
    OpenStack qemu-guest-agent 使用
    Windows 环境下使用强大的wget工具
    Centos 7 GCC 7.3编译器安装方法及C++17标准测试示例
    Neutron 架构图
    openstack 的 lbaas 疑问
    Mounting VMDK files in Linux
  • 原文地址:https://www.cnblogs.com/raphael5200/p/5114833.html
Copyright © 2011-2022 走看看