Linux磁盘管理

1.查看磁盘或者目录的容量
     df 【-ihkm】:查看以挂载磁盘(分区)的总容量、使用容量、剩余容量等,默认以 KB 为单位显示
          选项
               -i :查看 inodes 的使用状况
               -h :表示使用合适的单位显示,系统自动调节单位
               -k,-m:分别表示以K、M 为但闻显示
      du【-abckmsh】【文件或目录名】:查看某个目录或者文件所占空间的大小
          选项:
               -a:把全部文件和目录的大小都列出来,如果不加任何选项,则只会列出目录(包含子目录)的大小
               -b、-k、-m、-h:分别表示以byte、kb、mb、合适的单位显示
               -c:在最后加总(使用状况)
               -s:只列出总和


2.磁盘的分区和格式化
     1.增加虚拟硬盘---设置里面扩展
     2.fdisk 【-l】:选项 -l 加上就是显示系统中所有磁盘设备以及分区表,不加就会进入另外一个模式(可以对磁盘进行分区操作)
          另一个模式下:
               ①p:打印当前磁盘的分区状况
               ②n:新建一个新的分区
                         a.选择e: extended(扩展分区) 或者 p:primary(主分区)
                              选择扩展分区时,把全部剩余磁盘空间全部划分给扩展分区,不然就会造成空间浪费。因为创建完扩展分区后,再划分新的分区时是在已经划分的扩展分区里来分的
                              选择主分区时,柱面last cylinder,一般写成+1000M,方便且不会出错。+n M 就是为这个分区划分多少MB的空间
                        b.当之前选择过扩展分区时,再创建的分区时,会选择 logical(逻辑分区:是从扩展分区里面分) 或者 primary分区。1-4 位主分区和扩展分区,5以上为逻辑分区 。在Linux系统中最多只能创建4个主分区,一个扩展分区
               ③w:保存
               ④q:退出
               ⑤d:删除一个分区
             
  3.格式化磁盘分区
     磁盘分区分好过后,暂时不能用, 必须对每个分区进行格式化,所谓格式化,就是安装文件系统。Windows下的文件系统有Fat32和 NTFS,centOS 为ext
      mke2fs 、mkfs.ext4【选项】【分区】:
           选项:①-b:设定每个数据区块占用的空间大小。每个数据块支持 1024,2048,4096 bytes。磁盘在被格式化的时候回预先规定好每一个块的大小,然后再把所有的空间分割成一个一个的小块。存数据的时候也是一个块一个块的写入    
                     ②-i:设定inode的大小
                     ③-N:设定inode的数量。有事使用默认的inode数不够用,所以要自定义inode的数量
                     ④-c:表示在格式化前检测一下磁盘是否有问题。加上这个选项运行速度会非常慢
                     ⑤ -L:预设该分区的标签
                     ⑥-j:表示建立ext3 格式的分区
                     ⑦ -t:用来指定文件系统的类型,ext2、ext3、ext4
           mkfs.ext4 /a/b = mke2fs -t ext4
     
      e2label:用于查看或修改分区的标签
     可重新格式化

4.挂载/卸载磁盘
     格式化后的磁盘其实是一个块设备文件,类型为b。挂载某个分区前需要先建立一个挂载点,这个挂载点时以目录的形式出现的。一旦把某一个分区挂载到了这个挂载点(目录)下,要再往这个目录写数据时,就都会写到该分区中。所以,在挂载该分区前,挂载点(目录)下必须是个空目录。如果该目录不是空目录,但一旦挂载上了,该目录下以前的东西就看不见了,除非卸载该分区
     mount:查看当前系统已经挂载的所有分区、分区文件系统类型、挂载点及一些选项。
      mount 【分区】【目录a/】:把分区挂载到a目录下
      mount LABEL=TEST 目录:通过LABEL的方式挂载分区
          mount的 选项:
               ①-a:会把/etc/fstab中出现的所有磁盘分区挂载上,可以通过修改/etc/fstab配置文件,可以在结尾添加类似如 LABLE=TEST   /newdir    ext4    defaults    0  0 
               ②-t:用来指定挂载的分区类型,默认不指定会自动识别
               ③-o:用来指定挂载分区有哪些特征,为下面第四列下的参数
                可以重新挂载,先卸载再挂载

     /etc/fatab 配置文件 
    
   
   第一列:分区的标识,可以写分区的LABLE、分区的 UUID、分区名 /dev/sda1
   第二列是挂载点
   第三列是分区的格式
   第四列是mount的一些挂载参数,一般情况下,直接写defaults即可
          ①async/async:  async表示与磁盘和内存不同步,系统每隔一段时间会把内存数据写入磁盘中,而 sync 则会时时同步内存和磁盘中的数据
          ②auto/noauto:表示开机自动挂载/不挂载
          ③defualt:表示按照大多数永久文件系统的默认值设置挂载定义,包括了rw、suid、dev、exec、auto、nouser、async
          ④ro:按只读权限挂载
          ⑤rw:表示按可读可写权限挂载
          ⑥exec/noexec:表示允许/不允许可执行文件执行,但千万不要把根分区挂载为noexec,否则将无法使用系统,甚至连mount命令都无法使用,这是只有重新做系统
          ⑦user/nouser:表示允许/不允许分区root以外的其他用户挂载分区,为了安全用nouser     
          ⑧suid/nosuid:表示允许/不允许分区有suid属性,一般设置nosuid
          ⑨usrquota:表示启动用户的磁盘配额模式。磁盘配额会针对用户限定他们使用的磁盘额度
          10 grquota:表示启动群组的磁盘配额模式
   第五列的数字表示是否被dump备份。1表示备份,0表示不备份
   第六列的数字表示开机时是否自检磁盘,1和2 都表示检测,0表示不检测。在RedHat/CentOS中,/分区这一列必须设为1,而且整个fstab中只允许出现一个1.自检时,1比2优先级高,所以先检测1,然后检测2.如果有多个分区需要开机检测,就都设置成2,1检测完后会同时检测2
挂载是为了往一个目录写数据时可以写进对应的分区中
     
     blkid:获取各个分区的UUID.其后可以跟指定的分区,表示查询指定分区的的UUID.
               挂载磁盘是通过/dev/hdb1这样的分区名字来挂载的,如果把磁盘插错插槽,且该分区先前已加入到/etc/fstab 中,系统启动后则会挂错分区, 如何避免?
               mount UUID = “......”  /目录
               UUID支持写入到/etc/fstabl中
                如何让某个分区在开机后自动挂载?
                    ①在/etc/fstabl 中添加上面一行
                    ②把挂载命令写到/etc/rc.d/rc/local 文件中去,系统启动后会执行这个文件命令,可以把开机启动的命令全写入到这个文件中
建议:挂载磁盘分区时,尽量使用UUID 或者 LABLE 这两种方法

     umount:其后可以跟挂载点,也可以跟分区名,但是不可以跟 LABLE 和 UUID。当卸载的时候,提示device is busy 时, 可以使用 -l 选项


5.建立一个swap文件增加虚拟内存
     当遇到虚拟内存不够用的情况,就必须增加一个虚拟磁盘,因为不可能重新给磁盘分区
      增加虚拟磁盘的基本思路:建立swapfile -- 格式化为swap格式 --- 启用该虚拟磁盘
          ①建立一个swapfile :  dd if=/dev/zer0 of=/tmp/newdisk bs=4k count=102400          if 指定源(一般写成/dev/zero,它是Unix系统一个特有的文件,可以源源不断的提供0);of指定目标文件,bs 定义块的大小,count定义块的数量。bs 和 count的大小决定的目标文件的大小,即大小文 bs * count
          ②格式化为 swap 格式: mkswap  -f 目标文件/tmp/newdisk
          ③挂载使用: swapon 目标文件
      free -m :查看内存的使用情况,-m表示以MB 为单位
    


问题
1. 为什么 du -b /etc/passwd  和 du -k  /etc/passwd  所得到的结果不一致呢?按道理讲1024b 等于 1k 阿铭的 /etc/passwd 为 1181b 而 使用k为单位表示它竟然是 4k?
     因为默认格式化磁盘的块大小是4096字节即4K,即使是一个很小的文件也会分得一个块大小为4k。du -b则会以文件大小的b单位来统计,所以结果不一致。

2. /dev/zero 和 /dev/null 在linux系统中是什么文件,有什么作用?
     /dev/zero 是一个造零器,它可以源源不断的提供0,它可以用于向设备或文件写入字符串0,可以用它来创建一个指定长度用于初始化的空文件,比如临时交换文件等。
     /dev/null  它是空设备,也称为位桶(bit bucket),任何写入它的输出都会被抛弃。常用来禁止标准输出和标准错误的输出。如果不想让消息以标准输出显示或写入文件,那么可以将消息

3.有什么方法可以查看某个分区格式化时指定的块大小为多少(1024,2048,4096)?
     有两种方法:
          第一个是个笨方法,touch 1; echo 1 > 1; du -sh 1  看看1的大小事几k,是1k块大小就是1024,2k块大小就是2048,4k块大小就是4096
          第二个方法是,tune2fs -l /dev/sda1 |grep 'Block size'

你可能感兴趣的:(分区,格式化,挂载,Linux磁盘管理)