• 有关磁盘与文件系统的命令(16个命令)


    mount命令

    mount命令:用于挂载文件系统

    格式:“mount 文件系统 挂载目录”。

    参数:

    -V:显示程序版本;
    -l:显示已加载的文件系统列表;
    -h:显示帮助信息并退出;
    -v:冗长模式,输出指令执行的详细信息;
    -n:加载没有写入文件“/etc/mtab”中的文件系统;
    -r:将文件系统加载为只读模式;
    -a:加载文件“/etc/fstab”中描述的所有文件系统。
    

    例子:

    # 挂载cdrom
    [root@xxx ~]# mount -t auto /dev/cdrom /mnt/cdrom     
    

    umount命令

    umount命令:用于撤销已经挂载的设备文件

    格式:“umount [挂载点/设备文件]”。

    例子:

    # 撤销挂载
    [root@linuxprobe ~]# umount /dev/sdb2
    

    fsck命令

    fsck命令:用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化,可用fsck指令尝试加以修复。

    格式:

     	 fsck [-lrsAVRTMNP] [-C [fd]] [-t fstype] [filesystem...]  [--] [fs-spe‐
           cific-options]
    

    参数:

    -a:自动修复文件系统,不询问任何问题;
    -A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统;
    -N:不执行指令,仅列出实际执行会进行的动作;
    -P:当搭配"-A"参数使用时,则会同时检查所有的文件系统;
    -r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式;
    -R:当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查;
    -s:依序执行检查作业,而非同时执行;
    -t<文件系统类型>:指定要检查的文件系统类型;
    -T:执行fsck指令时,不显示标题信息;
    -V:显示指令执行过程。
    

    例子:

    # 不确定哪里出错,直接使用fsck
    [root@xxx ~]# fsck
    fsck from util-linux 2.23.2
    
    # 如果硬盘告诉是sda出错,则输入如下命令
    [root@xxx ~]# fsck -y /dev/sda
    fsck from util-linux 2.23.2
    e2fsck 1.42.9 (28-Dec-2013)
    /dev/sda is in use.
    e2fsck: Cannot continue, aborting.
    
    

    dd命令

    dd命令:用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果。用的比较多的还是用dd来备份裸设备。但是不推荐,如果需要备份oracle裸设备,可以使用rman备份,或使用第三方软件备份,使用dd的话,管理起来不太方便。

    格式:

     dd [OPERAND]...
     dd OPTION
    

    参数:

    bs=<字节数>:将ibs(输入)与欧巴桑(输出)设成指定的字节数;
    cbs=<字节数>:转换时,每次只转换指定的字节数;
    conv=<关键字>:指定文件转换的方式;
    count=<区块数>:仅读取指定的区块数;
    ibs=<字节数>:每次读取的字节数;
    obs=<字节数>:每次输出的字节数;
    of=<文件>:输出到文件;
    seek=<区块数>:一开始输出时,跳过指定的区块数;
    skip=<区块数>:一开始读取时,跳过指定的区块数;
    --help:帮助;
    --version:显示版本信息。
    

    例子:

    [root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=1
    1+0 records in
    1+0 records out
    1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s
    
    [root@localhost text]# du -sh sun.txt 
    1.1M    sun.txt
    

    该命令创建了一个1M大小的文件sun.txt,其中参数解释:

    if 代表输入文件。如果不指定if,默认就会从stdin中读取输入。
    of 代表输出文件。如果不指定of,默认就会将stdout作为默认输出。
    bs 代表字节为单位的块大小。
    count 代表被复制的块数。
    /dev/zero 是一个字符设备,会不断返回0值字节()。
    块大小可以使用的计量单位表
    
    单元大小	代码
    字节(1B)	c
    字节(2B)	w
    块(512B)	b
    千字节(1024B)	k
    兆字节(1024KB)	M
    吉字节(1024MB)	G
    

    dumpe2fs命令

    dumpe2fs命令:用于打印“ext2/ext3”文件系统的超级块和快组信息。

    参数:

    -b:打印文件系统中预留的块信息;
    -ob<超级块>:指定检查文件系统时使用的超级块;
    -OB<块大小>:检查文件系统时使用的指定的块大小;
    -h:仅显示超级块信息;
    -i:从指定的文件系统映像文件中读取文件系统信息;
    -x:以16进制格式打印信息块成员。
    

    例子:

    [root@xxx ~]# dumpe2fs /dev/hda1
    

    dump命令

    dump命令:用于备份ext2或者ext3文件系统。可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。

    参数:

    -0123456789:备份的层级;
    -b<区块大小>:指定区块的大小,单位为KB;
    -B<区块数目>:指定备份卷册的区块数目;
    -c:修改备份磁带预设的密度与容量;
    -d<密度>:设置磁带的密度。单位为BPI;
    -f<设备名称>:指定备份设备;
    -h<层级>:当备份层级等于或大于指定的层级时,将不备份用户标示为“nodump”的文件;
    -n:当备份工作需要管理员介入时,向所有“operator”群组中的使用者发出通知;
    -s<磁带长度>:备份磁带的长度,单位为英尺;
    -T<日期>:指定备份的时间与日期;
    -u:备份完毕后,在/etc/dumpdates中记录备份的文件系统、层级、日期与时间等;
    -w:与-W类似,但仅显示需要备份的文件;
    -W:显示需要备份的文件及其最后一次备份的层级、时间与日期。
    

    例子:

    /home目录所有内容备份到/tmp/homeback.bak文件中,备份层级为0并在/etc/dumpdates中记录相关信息:

    dump -0u -f /tmp/homeback.bak /home
    

    /home目录所有内容备份到/tmp/homeback.bak文件中,备份层级为1(只备份上次使用层次0备份后发生过改变的数据)并在/etc/dumpdates中记录相关信息:

    dump -1u -f /tmp/homeback.bak /home
    

    通过dump命令的备份层级,可实现完整+增量备份、完整+差异备份,在配合crontab可以实现无人值守备份。

    fdisk命令

    fdisk命令:用于管理磁盘分区,格式为“fdisk [磁盘名称]”,它提供了集添加、删除、转换分区等功能于一身的“一站式分区服务”。

    格式:

    fdisk [-uc] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device
    
    fdisk -l [-u] [device...]
    
    fdisk -s partition...
    
    fdisk -v
    
    fdisk -h
    

    参数:

    -b<分区大小>:指定每个分区的大小;
    -l:列出指定的外围设备的分区表状况;
    -s<分区编号>:将指定的分区大小输出到标准输出上,单位为区块;
    -u:搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址;
    -v:显示版本信息。
    

    例子:

    首先选择要进行操作的磁盘:

    [root@localhost ~]# fdisk /dev/sdb
    

    输入m列出可以执行的命令:

    command (m for help): m
    Command action
       a   toggle a bootable flag
       b   edit bsd disklabel
       c   toggle the dos compatibility flag
       d   delete a partition
       l   list known partition types
       m   print this menu
       n   add a new partition
       o   create a new empty DOS partition table
       p   print the partition table
       q   quit without saving changes
       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)
    

    输入p列出磁盘目前的分区情况:

    Command (m for help): p
    
    Disk /dev/sdb: 3221 MB, 3221225472 bytes
    255 heads, 63 sectors/track, 391 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1           1        8001   8e  Linux LVM
    /dev/sdb2               2          26      200812+  83  Linux
    

    输入d然后选择分区,删除现有分区:

    Command (m for help): d
    Partition number (1-4): 1
    
    Command (m for help): d
    Selected partition 2
    

    查看分区情况,确认分区已经删除:

    Command (m for help): print
    
    Disk /dev/sdb: 3221 MB, 3221225472 bytes
    255 heads, 63 sectors/track, 391 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
       Device Boot      Start         End      Blocks   Id  System
    
    Command (m for help):
    

    输入n建立新的磁盘分区,首先建立两个主磁盘分区:

    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p    //建立主分区
    Partition number (1-4): 1  //分区号
    First cylinder (1-391, default 1):  //分区起始位置
    Using default value 1
    last cylinder or +size or +sizeM or +sizeK (1-391, default 391): 100  //分区结束位置,单位为扇区
    
    Command (m for help): n  //再建立一个分区
    Command action
       e   extended
       p   primary partition (1-4)
    p 
    Partition number (1-4): 2  //分区号为2
    First cylinder (101-391, default 101):
    Using default value 101
    Last cylinder or +size or +sizeM or +sizeK (101-391, default 391): +200M  //分区结束位置,单位为M
    

    确认分区建立成功:

    Command (m for help): p
    
    Disk /dev/sdb: 3221 MB, 3221225472 bytes
    255 heads, 63 sectors/track, 391 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1         100      803218+  83  Linux
    /dev/sdb2             101         125      200812+  83  Linux
    

    再建立一个逻辑分区:

    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    e  //选择扩展分区
    Partition number (1-4): 3
    First cylinder (126-391, default 126):
    Using default value 126
    Last cylinder or +size or +sizeM or +sizeK (126-391, default 391):
    Using default value 391
    

    确认扩展分区建立成功:

    Command (m for help): p
    
    Disk /dev/sdb: 3221 MB, 3221225472 bytes
    255 heads, 63 sectors/track, 391 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1         100      803218+  83  Linux
    /dev/sdb2             101         125      200812+  83  Linux
    /dev/sdb3             126         391     2136645    5  Extended
    

    在扩展分区上建立两个逻辑分区:

    Command (m for help): n
    Command action
       l   logical (5 or over)
       p   primary partition (1-4)
    l //选择逻辑分区
    First cylinder (126-391, default 126):
    Using default value 126
    Last cylinder or +size or +sizeM or +sizeK (126-391, default 391): +400M    
    
    Command (m for help): n
    Command action
       l   logical (5 or over)
       p   primary partition (1-4)
    l
    First cylinder (176-391, default 176):
    Using default value 176
    Last cylinder or +size or +sizeM or +sizeK (176-391, default 391):
    Using default value 391
    

    确认逻辑分区建立成功:

    Command (m for help): p
    
    Disk /dev/sdb: 3221 MB, 3221225472 bytes
    255 heads, 63 sectors/track, 391 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1         100      803218+  83  Linux
    /dev/sdb2             101         125      200812+  83  Linux
    /dev/sdb3             126         391     2136645    5  Extended
    /dev/sdb5             126         175      401593+  83  Linux
    /dev/sdb6             176         391     1734988+  83  Linux
    
    Command (m for help):
    

    从上面的结果我们可以看到,在硬盘sdb我们建立了2个主分区(sdb1,sdb2),1个扩展分区(sdb3),2个逻辑分区(sdb5,sdb6)

    注意:主分区和扩展分区的磁盘号位1-4,也就是说最多有4个主分区或者扩展分区,逻辑分区开始的磁盘号为5,因此在这个实验中试没有sdb4的。

    最后对分区操作进行保存:

    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    

    建立好分区之后我们还需要对分区进行格式化才能在系统中使用磁盘。

    在sdb1上建立ext2分区:

    [root@localhost ~]# mkfs.ext2 /dev/sdb1
    mke2fs 1.39 (29-May-2006)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    100576 inodes, 200804 blocks
    10040 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=209715200
    7 block groups
    32768 blocks per group, 32768 fragments per group
    14368 inodes per group
    Superblock backups stored on blocks:
            32768, 98304, 163840
    
    Writing inode tables: done                           
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 32 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    

    在sdb6上建立ext3分区:

    [root@localhost ~]# mkfs.ext3 /dev/sdb6
    mke2fs 1.39 (29-May-2006)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    217280 inodes, 433747 blocks
    21687 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=444596224
    14 block groups
    32768 blocks per group, 32768 fragments per group
    15520 inodes per group
    Superblock backups stored on blocks:
            32768, 98304, 163840, 229376, 294912
    
    Writing inode tables: done                           
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 32 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    [root@localhost ~]#
    

    建立两个目录/oracle/web,将新建好的两个分区挂载到系统:

    [root@localhost ~]# mkdir /oracle
    [root@localhost ~]# mkdir /web
    [root@localhost ~]# mount /dev/sdb1 /oracle
    [root@localhost ~]# mount /dev/sdb6 /web
    

    查看分区挂载情况:

    [root@localhost ~]# df -h
    文件系统              容量  已用 可用 已用% 挂载点
    /dev/mapper/VolGroup00-LogVol00
                          6.7G  2.8G  3.6G  44% /
    /dev/sda1              99M   12M   82M  13% /boot
    tmpfs                 125M     0  125M   0% /dev/shm
    /dev/sdb1             773M  808K  733M   1% /oracle
    /dev/sdb6             1.7G   35M  1.6G   3% /web
    
    

    如果需要每次开机自动挂载则需要修改/etc/fstab文件,加入两行配置:

    [root@localhost ~]# vim /etc/fstab
    
    /dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
    LABEL=/boot             /boot                   ext3    defaults        1 2
    tmpfs                   /dev/shm                tmpfs   defaults        0 0
    devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
    sysfs                   /sys                    sysfs   defaults        0 0
    proc                    /proc                   proc    defaults        0 0
    /dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
    /dev/sdb1               /oracle                 ext2    defaults        0 0
    /dev/sdb6               /web                    ext3    defaults        0 0
    
    

    parted命令

    parted命令:是由GNU组织开发的一款功能强大的磁盘分区和分区大小调整工具,与fdisk不同,它支持调整分区的大小。作为一种设计用于Linux的工具,它没有构建成处理与fdisk关联的多种分区类型,但是,它可以处理最常见的分区格式,包括:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交换分区。

    格式:

     parted [options] [device [command [options...]...]]
    
    

    参数

    -h:显示帮助信息;
    -i:交互式模式;
    -s:脚本模式,不提示用户;
    -v:显示版本号。
    
    

    例子:

    [root@localhost ~]# fdisk -l
    Disk /dev/sda: 35.8 GB, 35862976512 bytes
    255 heads, 63 sectors/track, 4360 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
       Device Boot      Start         End      Blocks   id  System
    /dev/sda1   *           1          13      104391   83  Linux
    /dev/sda2              14         144     1052257+  82  Linux swap
    /dev/sda3             145        4360    33865020   83  Linux
    Disk /dev/sdb: 2147 MB, 2147483648 bytes
    255 heads, 63 sectors/track, 261 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk /dev/sdb doesn't contain a valid partition table
    [root@localhost ~]# parted /dev/sdb
    GNU Parted Copyright (C) 1998 - 2004 free Software Foundation, Inc.
    This program is free software, covered by the GNU General Public License.
    This program is distributed in the hope that it will be useful, but WITHOUT ANY
    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
    PARTICULAR PURPOSE.  See the GNU General Public License for more details.
    使用/dev/sdb
    (parted)mklabel gpt    #设置标签
    (parted)print		   #打印信息	
    /dev/sdb的磁盘几何结构:0.000-2048.000兆字节
    磁盘标签类型:gpt
    Minor   起始点       终止点 文件系统   名称                 标志
    (parted)mkpart primary 0 2048  <-----上面print显示的数字
    (parted)print				
    /dev/sdb的磁盘几何结构:0.000-2048.000兆字节
    磁盘标签类型:gpt
    Minor   起始点       终止点 文件系统   名称                 标志
    1          0.017   2047.983
    (parted)quit
    
    

    如果必要,不要忘记更新/etc/fstab

    [root@localhost ~]# fdisk -l
    Disk /dev/sda: 35.8 GB, 35862976512 bytes
    255 heads, 63 sectors/track, 4360 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1          13      104391   83  Linux
    /dev/sda2              14         144     1052257+  82  Linux swap
    /dev/sda3             145        4360    33865020   83  Linux
    WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.
     
    Disk /dev/sdb: 2147 MB, 2147483648 bytes
    255 heads, 63 sectors/track, 261 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1         262     2097151+  ee  EFI GPT
    Partition 1 has different physical/logical beginnings (non-Linux?):
         phys=(0, 0, 1) logical=(0,0, 2)
    Partition 1 has different physical/logical endings:
         phys=(1023, 254, 63) logical=(261, 21, 16)
    
    
    
    [root@localhost ~]# mkfs.ext3 /dev/sdb1
    mke2fs 1.35 (28-Feb-2004)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    262144 inodes, 524279 blocks
    26213 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=536870912
    16 block groups
    32768 blocks per group, 32768 fragments per group
    16384 inodes per group
    Superblock backups stored on blocks:
            32768, 98304, 163840, 229376, 294912
    Writing inode tables: done
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done
    This filesystem will be automatically checked every 28 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    [root@localhost ~]# mount /dev/sdb1 /mnt
    
    
    # 查看挂载文件
    [root@localhost ~]# df -h
    Filesystem            容量  已用 可用 已用% 挂载点
    /dev/sda3              <?xml:namespace prefix = st1 />32G  2.6G   28G   9% /
    /dev/sda1              99M   12M   82M  13% /boot
    none                  252M     0  252M   0% /dev/shm
    /dev/sdb1             2.0G   36M  1.9G   2% /mnt
    
    

    mkfs命令

    mkfs命令:用于在设备上(通常为硬盘)创建Linux文件系统。mkfs本身并不执行建立文件系统的工作,而是去调用相关的程序来执行。

    参数:

    fs:指定建立文件系统时的参数;
    -t<文件系统类型>:指定要建立何种文件系统;
    -v:显示版本信息与详细的使用方法;
    -V:显示简要的使用方法;
    -c:在制做档案系统前,检查该partition是否有坏轨。
    
    

    例子:

    /dev/hda5上建一个msdos的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来:

    mkfs -V -t msdos -c /dev/hda5
    
    mkfs -t ext3 /dev/sda6     //将sda6分区格式化为ext3格式
    mkfs -t ext2 /dev/sda7     //将sda7分区格式化为ext2格式
    
    

    partprobe命令

    partprobe命令:重读分区表,当出现删除文件后,出现仍然占用空间。可以partprobe在不重启的情况下重读分区。

    格式: partprobe [-d] [-s] [devices...]

    参数:

    -d:不更新内核;
    -s:显示摘要和分区;
    -h:显示帮助信息;
    -v:显示版本信息。
    
    

    例子:

    使用partprobe不重启系统添加新的磁盘分区,主机自带硬盘超过300GB,目前只划分使用了3个主分区,不到70GB,如下:

    [root@localhost ~]# df -h 
    Filesystem Size Used Avail Use% Mounted on 
    /dev/sda1 29G 3.7G  24G 14% / 
    /dev/sda2 29G  22G 5.2G 81% /oracle 
    tmpfs    2.0G    0 2.0G  0% /dev/shm
    [root@localhost ~]# cat /proc/partitions
    major minor  #blocks  name
    
       8     0  311427072 sda
       8     1   30716248 sda1
       8     2   30716280 sda2
       8     3    8193150 sda3
       8    16     976896 sdb
       8    32     976896 sdc
    
    …省略其他
    
    

    现在需要给系统添加1个100GB的空间存放数据文件,而又不影响现有系统上业务的运行,使用fdisk结合partprobe命令不重启系统添加一块新的磁盘分区。操作步骤如下:

    第1步 添加新的磁盘分区

    [root@localhost ~]# fdisk /dev/sda
    The number of cylinders for this disk is set to 38770.
    There is nothing wrong with that, but this is larger than 1024,
    and could in certain setups cause problems with:
    1) software that runs at boot time (e.g., old versions of lilo)
    2) booting and partitioning software from other OSs
       (e.g., DOS FDISK, OS/2 FDISK)
    
    command (m for help): p
    
    Disk /dev/sda: 318.9 GB, 318901321728 bytes
    255 heads, 63 sectors/track, 38770 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
       Device Boot      Start         End      Blocks   id  System
    /dev/sda1   *           1        3824    30716248+  83  Linux
    /dev/sda2            3825        7648    30716280   83  Linux
    /dev/sda3            7649        8668     8193150   82  Linux swap / Solaris
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Selected partition 4
    First cylinder (8669-38770, default 8669):
    Using default value 8669
    last cylinder or +size or +sizeM or +sizeK (8669-38770, default 38770): +100G   
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    
    WARNING: Re-reading the partition table failed with error 16: 
    
    Device or resource busy.
    The kernel still uses the old table.
    The new table will be used at the next reboot.
    Syncing disks.
    
    

    第2步 使用工具partprobe让kernel读取分区信息:

    [root@localhost ~]# partprobe
    
    

    使用fdisk工具只是将分区信息写到磁盘,如果需要mkfs磁盘分区则需要重启系统,而使用partprobe则可以使kernel重新读取分区信息,从而避免重启系统。

    第3步 格式化文件系统:

    [root@localhost ~]# mkfs.ext3 /dev/sda4
    mke2fs 1.39 (29-May-2006)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    12222464 inodes, 24416791 blocks
    1220839 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=4294967296
    746 block groups
    32768 blocks per group, 32768 fragments per group
    16384 inodes per group
    Superblock backups stored on blocks:
            32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 
        2654208, 4096000, 7962624, 11239424, 20480000, 23887872
    
    Writing inode tables: done
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information:
    
    done
    
    This filesystem will be automatically checked every 26 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    [root@localhost ~]#
    
    

    第4步 mount新的分区/dev/sda4:

    [root@localhost ~]# e2label  /dev/sda4 /data
    [root@localhost ~]# mkdir /data
    [root@localhost ~]# mount /dev/sda4 /data
    [root@localhost ~]# df
    Filesystem           1K-blocks      Used Available Use% Mounted on
    /dev/sda1             29753556   3810844  24406900  14% /
    /dev/sda2             29753588  11304616  16913160  41% /oracle
    tmpfs                  2023936         0   2023936   0% /dev/shm
    /dev/sda4             96132968    192312  91057300   1% /data
    
    

    使用partprobe可以不用重启系统即可配合fdisk工具创建新的分区。

    e2fsck命令

    e2fsck命令:用于检查第二扩展文件系统的完整性,通过适当的选项可以尝试修复出现的错误。

    参数:

    -a:不询问使用者意见,便自动修复文件系统;
    -b<superblock>:指定superblock,而不使用预设的superblock;
    -B<区块大小>:指定区块的大小,单位为字节;
    -c:一并执行badblocks,以标示损坏的区块;
    -C:将检查过程的信息完整记录在file descriptor中,使得整个检查过程都能完整监控;
    -d:显示排错信息;
    -f:即使文件系统没有错误迹象,仍强制地检查正确性;
    -F:执行前先清除设备的缓冲区;
    -l<文件>:将文件中指定的区块加到损坏区块列表;
    -L<文件>:先清除损坏区块列表,再将文件中指定的区块加到损坏区块列表。因此损坏区块列表的区块跟文件中指定的区块是一样的;
    -n:以只读模式开启文件系统,并采取非互动方式执行,所有的问题对话均设置以"no"回答;
    -p:不询问使用者意见,便自动修复文件系统;
    -r:此参数只为了兼容性而存在,并无实际作用;
    -s:如果文件系统的字节顺序不适当,就交换字节顺序,否则不做任何动作;
    -S:不管文件系统的字节顺序,一律交换字节顺序;
    -t:显示时间信息;
    -v:执行时显示详细的信息;
    -V:显示版本信息;
    -y:采取非互动方式执行,所有的问题均设置以"yes"回答。
    
    

    e2fsck执行后的传回值及代表意义如下:

    • 0 没有任何错误发生。
    • 1 文件系统发生错误,并且已经修正。
    • 2 文件系统发生错误,并且已经修正。
    • 4 文件系统发生错误,但没有修正。
    • 8 运作时发生错误。
    • 16 使用的语法发生错误。
    • 128 共享的函数库发生错误。

    例子:

    检查/dev/sda1是否有问题,如发现问题便自动修复:

    e2fsck -a -y /dev/sda1
    
    

    执行e2fsck或fsck前请先umount partition,否则有机会令档案系统毁损。如果需要对根目录/进行检查及修复,便需要进入singal user mode执行。

    mkswap命令

    mkswap命令:用于在一个文件或者设备上建立交换分区。在建立完之后要使用sawpon命令开始使用这个交换区。最后一个选择性参数指定了交换区的大小,但是这个参数是为了向后兼容设置的,没有使用的必要,一般都将整个文件或者设备作为交换区。

    参数:

    -c:建立交换区前,先检查是否有损坏的区块;
    -f:在SPARC电脑上建立交换区时,要加上此参数;
    -v0:建立旧式交换区,此为预设值;
    -v1:建立新式交换区。
    
    

    例子:

    查看系统swap space大小:

    free -m
    total used free shared buffers cached
    Mem: 377 180 197 0 19 110
    -/+ buffers/cache: 50 327
    Swap: 572 0 572
    
    

    查看当前的swap空间(file(s)/partition(s)):

    swapon -s
    
    等价于
    
    cat /proc/swaps
    
    

    添加交换空间

    添加一个交换分区或添加一个交换文件。推荐你添加一个交换分区;不过,若你没有多少空闲空间可用,则添加交换文件。

    添加一个交换分区,步骤如下:

    使用fdisk来创建交换分区(假设 /dev/sdb2 是创建的交换分区),使用 mkswap 命令来设置交换分区:

    mkswap /dev/sdb2
    
    

    启用交换分区:

    swapon /dev/sdb2
    
    

    写入/etc/fstab,以便在引导时启用:

    /dev/sdb2 swap swap defaults 0 0
    
    

    添加一个交换文件,步骤如下:

    创建大小为512M的交换文件:

    dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
    
    

    使用mkswap命令来设置交换文件:

    mkswap /swapfile1
    
    

    启用交换分区:

    swapon /swapfile1
    
    

    写入/etc/fstab,以便在引导时启用:

    /swapfile1 swap swap defaults 0 0
    
    

    新添了交换分区并启用它之后,请查看cat /proc/swaps或free命令的输出来确保交换分区已被启用了。

    删除交换空间:

    禁用交换分区:

    swapoff /dev/sdb2
    
    

    /etc/fstab中删除项目,使用fdisk或yast工具删除分区。

    swapon命令

    swapon命令:激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存。

    参数:

    -a:将/etc/fstab文件中所有设置为swap的设备,启动为交换区;
    -h:显示帮助;
    -p<优先顺序>:指定交换区的优先顺序;
    -s:显示交换区的使用状况;
    -V:显示版本信息。
    
    

    swapoff命令

    swapoff命令:用于关闭指定的交换空间(包括交换文件和交换分区)。swapoff实际上为swapon的符号连接,可用来关闭系统的交换区。

    参数

    -a:关闭配置文件“/etc/fstab”中所有的交换空间。
    
    

    sync命令

    sync命令:强制被改变的内容立刻写入磁盘,更新超块信息。

    在Linux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率。sync命令则可用来强制将内存缓冲区中的数据立即写入磁盘中。用户通常不需执行sync命令,系统会自动执行update或bdflush操作,将缓冲区的数据写 入磁盘。只有在update或bdflush无法执行或用户需要非正常关机时,才需手动执行sync命令。

    buffer与cache

    • buffer:为了解决写磁盘的效率
    • cache:为了解决读磁盘的效率

    linux系统为了提高读写磁盘的效率,会先将数据放在一块buffer中。在写磁盘时并不是立即将数据写到磁盘中,而是先写入这块buffer中了。此时如果重启系统,就可能造成数据丢失。

    sync命令用来flush文件系统buffer,这样数据才会真正的写到磁盘中,并且buffer才能够释放出来,flush就是用来清空buffer。sync命令会强制将数据写入磁盘中,并释放该数据对应的buffer,所以常常会在写磁盘后输入sync命令来将数据真正的写入磁盘。

    如果不去手动的输入sync命令来真正的去写磁盘,linux系统也会周期性的去sync数据。

    resize2fs命令

    resize2fs命令:用来增大或者收缩未加载的“ext2/ext3”文件系统的大小。如果文件系统是处于mount状态下,那么它只能做到扩容,前提条件是内核支持在线resize。,linux kernel 2.6支持在mount状态下扩容但仅限于ext3文件系统。

    格式:

     resize2fs  [  -fFpPM  ]  [ -d debug-flags ] [ -S RAID-stride ] device [
           size ]
    
    

    参数:

    -d:打开调试特性;
    -p:打印已完成的百分比进度条;
    -f:强制执行调整大小操作,覆盖掉安全检查操作;
    -F:开始执行调整大小前,刷新文件系统设备的缓冲区。
    
    

    例子:

    # 打印已完成的百分比进度条
    [root@xxx ~]# resize2fs -p /dev/storage/vo 120M
    
    
  • 相关阅读:
    java集合类散列表
    记北京挤地铁
    是你的努力,吗?
    letswave-脑电数据处理流程总记
    赵丽颖结婚了,分析下网友评论
    自动线性回归
    ggplot2+treemapify了解一下?
    样本方差的性质及其应用
    5 域名
    4 HTTP的“四层”和“七层”
  • 原文地址:https://www.cnblogs.com/akiz/p/11218763.html
Copyright © 2020-2023  润新知