第30周-鸟哥的Linux私房菜基础篇第三版-第八章、Linux 磁盘与文件系统管理

来源:互联网 发布:服务器主流软件 编辑:程序博客网 时间:2024/05/01 05:26
1、文件系统:
      权限与属性放在——inode;
      实际数据放在——block;
      记录文件系统整体信息——superblock
   Ext2——索引式文件系统
   区块群组(block group)的六个内容:

      a、date block:资料区块;


      b、inode table:inode表格 每档一个inode,固定128bytes 12直接1单1双1三间接 = 12+256+256^2+256^3 K= 16GB 

            所以,当文件系统将 block 格式化为 1K 大小时,能够容纳癿最大档案为 16GB;


      c、Superblock:超级区块;通常只有第一个block group会有,其它若有只是为了备份而已;
      d、Filesystem Description:文件系统描述说明;
      e、block bitmap:区块对照表 区分出空的block,以便使用;
      f、inode bitmap:inode对照表,记录使用与未用的inode号码。
2、查询每个区段与superblock的信息
      df 叫出目前挂载装置    前半部分superblock 后半部分block group
      dumpe2fs /dev/hdc2   结果有Group 0-N ,数据多

3、inode号码的查询:
      ls -li  结果的第一列
   环境:
      ll -d / /bin /boot /proc /lost+found /sbin 
      结果/proc不占硬盘,其在内存中,而/bin与/sbin目录也都不是1024的倍数;
   档案:若一个block有4 Kbytes,要建立100 Kbytes档案,则会分配1个inode与25个block,但因每个inode         只有12个直接指向,故需多一个block作为区块号码记录!
4、挂载点信息——找到/ inode——/ block——找到读取档案的inode号码——读取block数据  
   例:ll -di / /etc /etc/passwd 
   文件系统最顶层的inode一般为2。
5、inode table与block table称为数据存放区域,而inode bitmap、block bitmap及superblock被称为中介数据。
6、日志式文件系统:解决文件系统不一致的情况,可无需如ext2一样格式化。
7、mount point:挂载点。 
      文件系统与目录树结合的动作称为[挂载];
8、查看Linux支持哪些文件系统:
       ls -l /bin/modules/$(uname -r)/kernel/fs
    系统目前已加载到内存中支持的文件系统:
       cat /proc/filesystems
9、Linux VFS(Virtual Filesystem Switch):Linux核心通过VFS来管理文件系统。
      挂载点一定是目录,该目录为进入该文件系统的入口;
      所以,任何文件系统需[挂载]到目录树的某个目录后,才可使用该文件系统。

      

10、df -[ahikHTm] :列出整体使用量;i用inode表示、h是易读的容量格式。
    du -[ahskm]:评估使用量; s表示总量而不列出各目录占用容量;
    注意:根目录的剩余容量剩下0时,将无法存入,哪怕硬盘还要容量。
    当用df -a时,出现 /proc挂载点为0,因为其挂载在内存中,故不占硬盘空间。
      /shm是内存虚拟的硬盘空间。
      例:du -sm /*   其中*表示每个目录。
    du 这个挃令其实会直接到文件系统内去搜寺所有癿档案数据,而df不会。
      想要列出某目录下的全部数据,可加选项 -S。


    扩展阅读 Ext2/Ext3 文件系统:http://linux.vbird.org/linux_basic/1010appendix_B.php 


11、实体链接与符号链接:ln
      a、Hard link,实体链接:每个档案一个inode,档案内容由其记录指向。
      b、读档需经目录记录文件名指向inode号码读取;
      即,文件名——目录;档案——inode。
        例:ln /etc/crontab . 建立实体链接指令
            ll -i /etc/crontab /root/crontab
            注意:Hard link不能跨Filesystem,且不能link目录;
    Symbolic Link:符号链接,即快捷方式。
        建立一个独立的档案,读取指向link的档名。
          例:ln -s /etc/crontab crontab2
              ll -i /etc/crontab /root/crontab2  这两个指令都错误?
    ln -[sf] 来源文件 目标文件;
         例:cd /tmp
             cp -a /etc/passwd .
             du -sb;df -i .
      将passwd制作成passwd-hd档案:
          ln passwd passwd-hd
          du -sb;df -i .
      建立符号链接:
          ln -s passwd passwd-so
          ls -li passwd*
12、目录的link数量:
      例:ls -ld /tmp
          mkdir /tmp/testing1
          ls -ld /tmp
          ls -ld /tmp/testing1
       结果:/tmp的link多1,/tmp/testing1的link为2,而非1。
13、磁盘的分割、格式化、检验与挂载(挂载点即目录):
      磁盘分区:fdisk -l 装置名称
      例:df / 找出磁盘文件名
          fdisk /dec/sda4  (本机硬盘位SATA)
          (出现Command(m for help):) 
           m   显示出很多指令 (其中q不存离开,w存后离开)
           p   装置文件名device、开机boot、分割槽start与end、blocks、ID与system 
      查阅目前系统的所有partition:
        fdisk -l
      注意:fdisk只有root才能执行!!!

14、删除磁盘分区槽:
      fdisk /dev/sda
      Command(m for help):p  先了解整个分割表情况    
      Command(m for help):d
      Parttion number(1-5):4  选择要删除的  
      Command(m for help):q  退出
    新增一个Primary的分隔槽:
      Command(m for help):n
      p   输入p
      Partition number(1-4):4
      [Enter]
      +512
      Command(m for help):p
    新增一个Extended分隔槽:
      n
      e
      1
      [Enter]
      [Enter]
      p
    新增逻辑分隔槽:(试一试增加2G)
      n
      l (L的小写)
      [Enter]
      +2048
      p  
      q  退出
      partprobe 强制让核心重新捕捉一次partition table 可保存后不用重启。   
15、磁盘格式化:mkfs
       # mkfs -t ext3 /dev/sda5
         mkfs [tab][tab]  显示mkfs支持的文件格式
    mke2fs:mke2fs [-b block大小] [-i block大小] [-L 标头] [-cj] 装置
         例:mke2fs -j -L "lshkinger1987_logical" -b 2048 -i 8192 /dev/sda6
         文件表头设定,此处block指定为2048,每8192bytes分配一个inode,-j为日志系统。
16、磁盘检验(检查与修正文件系统错误的指令,需系统出现大问题才使用):fsck、badblocks,类似windows的scandisk
         fsck [-t 文件系统] [-ACay]装置名称
      例:fsck -C -f -t ext3 /dev/hdc6
          man e2fsck 可找到更多选项(执行fsck指令,是呼叫e2fsck软件)

badblock -[svw]装置文件名
      例:badblock -sv /dev/sda5  效果与mke2fs -c /dev/sda5 一样,所以很少用到
17、挂载:mount  -a [-l] [-t 文件系统] [-L Label] [-o 额外选项][-n]
      例:挂载Ext2/Ext3文件系统
             mkdir /mnt/sda6
             mount /dev/sda6 /mnt/sda6
             df
    需要挂载测试的档案:/etc/filesystems 系统指定的测试挂载的类型和/proc/filesystems 系统加载的文件系统类型
    Linux文件系统支持的驱动程序在:/lib/modules/$(uname -r)/kernel/fs/
    挂载CD或DVD光盘:
       mkdir /media/cdrom  
       mount -t iso9960 /dev/cdrom /media/cdrom  指定-t iso9960挂载
       mount /dev/cdrom /media/cdrom    系统测试挂载        
         以上这两个挂载指令用一个即可。
       df
18、格式化与挂载软盘:
       mkdir /media/floppy
       mount -t vfat /dev/fd0 /media/floppy
       df
    挂载随身碟:
       fdisk -l
       mkdir /mnt/flash
       mount -t vfat -o iocharset=cp950 /dev/sda1 /mnt/flash
       df
    参考学习:NTFS 文件系统官网:Linux-NTFS Project: http://www.linux-ntfs.org/
                       CentOS 5.x 版癿相关驱劢程序下载页面:http://www.linux-ntfs.org/doku.php?id=redhat:rhel5
19、重新挂载根目录与挂载不特定目录:mount -o remount,rw,auto /    
       例:将/home这个目录暂时挂载到/mnt/home底下
           mkdir /mnt/home
           mount --bind /home /mnt/home
           ls -lid /home/ /mnt/home    结果不一样啊 ?
           mount -l
     将装置档案卸除:
         umount [-fn] 装置文件名  (-f强制卸除 -n不更新)
         注意:需要卸除后,才能退出光盘、软盘、USB等设备。 
         若当前的装置无法卸除,可用cd /,即回到根目录,再用mount  
20、Lable name进行挂载:
      dumpe2fs -h /dev/sda6
      mount -L "XXXXX" /mnt/sda6  
21、磁盘参数修订:mknod 装置文件名 [bcp][Major][Minor]  (主要及次要装置代码)存储/输入/FIFO档案
    更多核心支持的硬件装置代码 (major, minor) 请参考官网的连结:
      http://www.kernel.org/pub/linux/docs/device-list/devices.txt
         ll /dev/sda*
         mknod /dev/sda7 b 8 7
      建立FIFO档案:档名为/tmp/testpipe   操作完要删除这个档案,它不一般,不可随便放置。
         mknod /tmp/testpipe p
         ll /tmp/testpipe
22、修改文件系统标头Label名称:e2label 装置名称 新的Label名称
         dumpe2fs -h /dev/sda6
         e2label /dev/sda6 "my_test"
         dumpe2fs -h /dev/sda6
    tune2fs: [-jlL]装置代号  (-l读出superblock数据/-j将ext2转为ext3/-L修改Label)
23、hdparm [-icdmXTt] 该指令对SATA接口几乎没用途。   
       hdparm -Tt /dev/sda  测试硬盘的读取效能   找不到hdparm指令?
24、设定开机挂载:/etc/fstab及/etc/mtab
       /etc/fstab档案内容的六个字段:
            1、Label;2、mount point;3、filesystem;
            4、文件系统参数;5、能否被dump备份指令作用(1or0);6、是否以fsck检验扇区(0/1/2)。
    例:/dev/sda6每次开机自动挂载到/mnt/sda6
       nano /etc/fstab    nano找不到?
       df
    救急:/etc/fstab 输入癿数据错误,导致无法顺利开机成功
        mount -n -o remount,rw
25、特殊装置loop挂载 (映像档不可录挂载使用)
      挂载光盘/DVD映像文件:
        mkdir /mnt/centos_dvd
        mount -o loop /root/centos5.2_x86_64.iso /mnt/centos_dvd
        df
        ll /mnt/centos_dvd
        umount /mnt/centos_dvd/
26、建立大档案以制作loop装置档案:程序dd
      dd if=/dev/zero of=/home/loopdev bs=1M count=512
      mkfs -t ext3 /home/loopdev
    挂载:
      mount -o -loop /home/loopdev /media/cdrom/
      df
27、内存置换空间swap的建置:
       1、fdisk 分割磁盘;
       2、格式化;
       3、swap装置启动;
       4、观察:free指令。
    例:fdisk /dev/sda
          n
          [Enter]
          +256M
          p
          t  (修改系统ID)
          7
          82  (改成swap的ID)
          p
          w
          partprobe
        开始建置swap格式:
             mkswap /dev/sda7
        swapon /dev/sda7
        free
        swapon -s

   mkswap /tmp/swap   将文件格式化为swap格式
   swapoff /tmp/swap 关掉swap file
28、当block为1024时,boot sector与superblock各占用一个block,故前者独立于superblock外面,此时,前者在0号,后者在1号中,若block为2k或4k,则superblock也在0中。
29、磁盘空间的浪费:    
      ll -s  其中total表示block数量*大小的值
    查询某个目彔所耗用癿所有容量:du
       du -sb /etc   单位bytes
       du -sm /etc   单位Kbytes  结果更大,因为文件系统耗费了资源
30、利用GNU的parted进行分割行为:
       parted 装置 指令[参数] 
            print 分割表
            rm [partition] 删除分割
       例:列出目前北京的分割表资料
            parted /dev/sda print
            parted /dev/sda mkpart logical ext3 16.9GB 17.9GB 
            parted /dev/sda print
            parted /dev/sda rm 8

0 0
原创粉丝点击