Linux文件系统四(文件系统的创建流程与维护)

来源:互联网 发布:hbuilder移动app源码 编辑:程序博客网 时间:2024/06/05 19:05
文件系统管理
重新创建文件系统会损坏原有文件
mkfs:make file systetm
    -t filesystem type
    注:要对某一个分区创建文件系统不要对整个磁盘创建文件系统
mkfs -t ext2 = mkfs.ext2

专门管理ext系列文件:
mke2fs:
        -j :jonourl
        -b:block_size:drfault 4096;use_block:1024,2048
        -L:lable:指定分区卷标
        -m #:指定留给超级用户的块数的百分比
        -i :指定多少个字节创建一个inode,默认为8192
        -n:指定inode的个数
        -F:强制创建文件系统
        -E:用于指定额外的文件系统属性

blkid: 查看磁盘设备的相关属性
    blkid /dev/sda5
        UUID:唯一标识磁盘设备
        TYPE
e2lable :查看定义卷标

    e2lable /dev/sda3 "lable"

tune2fs:调整文件系统属性
    -j:不损坏原有数据,将ext2升级为ext3
    -L:用于设定卷标
    -m:调整预留百分比、

查看系统支持文件系统类型:cat /proc/filesystem


df -[ahikHTm][ 目录或文件名]
    
选项与参数:
    -a:列出所有的文件系统,包括系统特有的/proc等文件系统;
    -k:以KByte的容量显示个文件系统;
    -m:一MBytes的容量显示个文件系统;
    -h:一人们较易阅读的GBytes,MBytes,KBytes等格式自行显示;
    -H:以M=1000K取代M=1024K的进为方式;
    -T:连同2该partition的filesystem名称(例如 ext3)也列出;

    -i:不用硬盘容量,而已inode的数量来显示


注:在使用-a这个参数时,系统会出现/proc这个挂载点,但是里面的东西都是0,/proc的
东西都是Linux系统所需要加载的系统数据,而且挂载在内存中,所以不占用任何硬盘空间。

/dev/shm目录

其实是利用内存虚拟化出来的磁盘空间,由于是透过内存仿真出来的磁盘,

因此正在这个目录下创建的任何数据,访问很速度非常快。因此文件系统的大小在每一台
主机上都不一样,而且建立的东西在下次看机就消失。

硬链接和软链接(Link)
    只是2某一个目录下新增一个文件名链接到某个inode号码的关联记录。

软链接:一种类似Windows的快捷方式,快速链接到目的文件
硬链接:透过文件系统的inode连接来参数新的文件名,而不产生文件

Hard Link(硬链接)
       1.不能跨Filesystem
        2.不能Link目录
Symbolic Link(软链接):
基本上,软连接就是建立一个独立的文件,而这个文件会让数据的指向他链接的那个文件等等文件名,由于只是利用文件做为指向的动作中,所以当源文件被删除后软连接文件就会开不了,会说无法打开某文件。

ln [-sf]来源文件 目标文件
        如果不加任何参数就进行链接,那就是hard link,
    -s:symbolic link;
    -f:如果目标文件存在时,就主动的将目标文件直接移除后再建立!当我们创建一个新的目录时,新的目录LINK数为2,而上层目录的link数则会增加1。
SWAP分区:内存过载使用   
free:查看当前物理内存和交换空间的使用
        -m
buffers:
cashed:

创建交换分区步骤
1.fdisk命令创建swap分区,调整分区类型为82;
2.mkswap /dev/sda8
    -L LABLE
3.swapon
    -a :启用所有的定义在/etc/fstab文件中的设备
4.swapoff

回环设备
loopback,使用软件模拟实现硬件
创建一个镜像文件:120G

dd命令:
    if=数据来源
    of=数据存储目标
    dd if=/etc/initabl of=/test/
底层数据流的备份
dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1  备份MBR
磁盘性能测试

cat /dev/cdrom > /root/rhel5.ios 创建磁盘镜像

/dev/zeros 吐泡设备
/dev/null    数据黑洞

mount 命令,可以挂在IOS镜像
mount -o loop :挂载本地回环设备

文件系统的配置文件/etc/fstab
    系统在初始时,会自动挂载此文件中定要以的每一文件系统

要挂载的设备    挂载点    文件系统类型    挂载选项    存储频率    文件检测次序


fuser:验证进程正在使用的文件套接字
    -v:查看谁使用哪个进程使用
    -km /mnt/test;终止此挂载点的所有进程
新增一个磁盘需要做哪些操作:
1.对磁盘进行分割,以建立可用的partition
2.对该partition进行格式化(format),已建立系统可用的filesystem;
3.若想要仔细一点,则可对刚刚建立好的filesystem进行检验;
4.在Linux系统上,需要建立挂载点,并将他挂载上来;

操作环境说明:
以root的身份进行硬盘的partition时,最好是单人维护模式下比较安全些,此外,在进行fdisk的时候,如果
该硬盘的某个partition还在使用当中,那么内核可能无法重载磁盘的partition table
,解决的方法是将该使用的分区卸除,然后重新进入fdisk一遍,重新写入partition table。

注意事项
    fdisk只有root才能执行,而且分区是针对真个磁盘装置,而不是某一个分区,所以装置名不能加数字
    SATA磁盘最多能支持到15号分割槽,而IDE则可以支持到63号。
磁盘格式化(make filesystem,mkfs)
    mkfs [-t文件系统格式] 装置文件名
    mke2fs [-b block大小] [-i inode个数] [-L 标头] [-cj]
        -c:检查磁盘错误,仅下达一次-c时,会进行快速测试,如果两次-c -c的话,会测试读写,会很慢
        -j:mke2fs是EXT2,加上-j后,会主动加入journal而成为EXT3.
磁盘检验:fsck,badblocks(在日常生产应用中经常使用,特别是对虚拟机的修复)
        fsck [-t 文件系统] [-ACay]装置名称
            -t;指定文件系统,但现在Linux可以透过superblock去分辨文件系统,因此通常可以不需要这个选项
            -A: 依据/etc/fstab的内容,将需要的装置扫描一次(开机过程中就会执行此命令)
            -a: 自动修复检查到的问题扇区
            -y: 某些文件系统仅支持-y这个参数
            -f:强制检查!一般来说,如果fsck没有发现unclean的旗标,不会主动进入
                细部检查,如果想要强制进入细部检查,就得加上-f旗标
            -C: 可以在检验的过程当中,使用一个直方图来显示进度
注意:
         由于fsck在扫描的时候,可能造成filesystem的损坏,所以执行fsck时,被检查的分区务必不可以挂载到系统上个,以及需要在卸载的在状态ext2/ext3文件系统的最顶层(就是挂载点那个目录底下)会存在一个[lost+found]的目录,该目录就是的那个使用fsck检查文件系统后,若出现问题时,有问题的数据就会被放置在这个目录中!所以理论上这个目录不应该有任何数据,若系统自动产生数据在里面,那么就的注意一下文件系统了。
                     -------我们系统时间执行fsck指令,其实是呼叫e2fsck这个软件
badblocks:
    -s:在屏幕上列出进度
    -v:可以在屏幕上看到进度
    -w:使用写入方式测试,建议不要使用此一参数,尤其是待检查的装置已有文件
作用:检查磁盘后软盘扇区有没有坏轨的指令!由于这个指令其实可以透过[mke2fs -c 装置名]
在进行格式化的时候出路磁盘表面的读取测试。

重新挂载根目录与挂载不特定目录
问题:当你的挂载参数要改变,或者谁跟目录出现只读状态,需呀重新挂载
最有可能的处理防水就是重新启动或者
        mount -o remount,rw,auto /
            重点是-o remount,xx的选项参数,尤其当你进入单用户模式时,你的根目录通常会被系统挂载为只读,这个时候这
            指令就用处大了
我们可以利用mount将某个目录挂载到另一个个目录去,并不是挂载文件系统,而是额外挂载某一个目录的方法!
也可以使用符号链接,但某些不支持符号链接的程序,就必须使用这样的方法。
如图:2

使用Lable name 挂载本地回环设备
    1.使用 dumpe2fs -h /dev/sda 查询lable name
    2.mount -L "lable name" /mnt/sds
mknod
    在Linux下所有设备都已文件来表示,那么文件时如何代表该设备的?文件是透过major与minor数值来代替的,
    那个major与minor数值是有特殊含义的,不是随意设定的,我们的内核认识设备数据就是透过这两个数值决定的。
mknod 装置名[bcp][major][minor]
        b:设定装置名称成为一个周边存储文件,例如磁盘
        c:设定装置名称成为一个周边输入设备,例如键盘
        p:设定装置名称成为一个FIFO文件
        

boot sector与superblock   

block_size=1k:boot sector 在superblock前的一个block,也就是0号blcok

block_size=4k:boot sector与superblock在同一block里各站1024bit,其他存储保留。


利用GUN发parted进行分割:

由于fdisk无法支持高于2TB以上的分割槽,所以就需要parted来处理
parted [装置][指令[参数]]
新增分割 mkpart [primary|logical|extend] [ext3|vfat]开始 结束
分割表:print
删除分割:rm[partition]

parted /dev/sda mkpart logical ext3 19.2G 19.7G
0 0