system2之:4-文件系统管理(上)

文件系统

一、文件系统的作用
   管理文件和目录的一套机制
	1.文件存取
	2.文件的查找
	3.文件的大小、文件的多少。
	4.一个目录可以存放多少个文件
	5.文件的命名
	6.一个分区可以多大
	等

  文件系统管理磁盘上的文件。

二、文件系统类型

windows中文件系统类型有:ntfs,fat32

文件类型:普通文件(-),目录文件(d),链接文件(l) ,块文件(b)

文件系统如何得到?
    将一个分区格式化就可以得到一个文件系统了
    分区=文件系统
 
安装系统的时候,默认到底分多少个分区?
	/          根据实际情况,尽可能的大些
	swap       4G
	/boot      500M
==
	/
	swap
	/home
	/boot


如何查看文件系统类型

linux中:

方法1:
[root@station6 ~]# ls   /lib/modules/2.6.32-279.el6.i686/kernel/fs/
autofs4     configfs  exportfs  fat      jbd    mbcache.ko  nls
btrfs       cramfs    ext2      fscache  jbd2   nfs         squashfs
cachefiles  dlm       ext3      fuse     jffs2  nfs_common  ubifs
cifs        ecryptfs  ext4      gfs2     lockd  nfsd        udf
[root@station6 ~]#
ls   /lib/modules/$(uname -r)/kernel/fs/

linux支持的文件系统很多,但是我们平常用到的,常用的也就那么几种,ext2,ext3,ext4,vfat,ntfs,iso9660等。

cifs:windows  和 linux共享数据时用到(common internet file system)
nfs:network file system
vfs:vitual fs

Linux 支持多种文件系统
ext2:Linux基本文件系统
ext3:ext2的增强版本,是Linux的默认文件系统
ext4:ext文件系统的第四个版本
swap:交换文件系统
nfs:网络文件系统,适合Linux或Unix机器间共享
smbfs:适合Linux或Unix和windows机器间共享


其它文件系统
vfat:windows早期文件系统
ntfs:windows默认文件系统,功能非常强大
iso9660:CD光盘的只读文件系统
GFS:google专用存储海量搜索数据而设计的专用文件系统
reiserfs:早期linux使用的日志功能的文件系统


Linux内核采用虚拟文件系统层(VFS ,kernel管理文件通过vfs 接口

mount -t cifs //192.168.1.2/share /mnt -o username=administrator%pwd

smb cifs

方法二:
[root@host ~]# df -Th
文件系统    类型      容量  已用  可用 已用%% 挂载点
/dev/sda3     ext4    321G   32G  274G  11% /
tmpfs        tmpfs    1.9G  212K  1.9G   1% /dev/shm
/dev/sda1     ext4     92G  212M   87G   1% /boot
/dev/sdb1     vfat    7.0G  2.6G  4.5G  37% /media/̷

方法三:
[root@host ~]# mkfs
mkfs          mkfs.ext2     mkfs.ext4     mkfs.msdos    
mkfs.cramfs   mkfs.ext3     mkfs.ext4dev  mkfs.vfat    

这里没有ntfs,需要下载ntfs软件就可以对ntfs文件格式化


如何查看文件系统 的版本?
[root@host ~]# cat /etc/issue
Red Hat Enterprise Linux Server release 6.3 (Santiago)
Kernel \r on an \m

[root@host ~]# lsb_release -a



三、文件存储结构

Linux正统的文件系统(如ext2、ext3)一个文件由目录项、inode和数据块(block)组成。

目录项:包括文件名和inode节点号。

Inode:又称文件索引节点,是文件基本信息的存放地和数据块指针存放地。

数据块:文件的具体内容存放地。

一个块八个扇区,一个扇区512大小 ,所以默认一个块大小就是4096

结构图如下:

                                           图


文件系统的组成:



元数据:是描述数据的数据   (属性)


 
文件系统三个重要参数:

superblock(超级块):记录此 file system 的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式(第二块)
inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的 block 号码
block:实际记录文件的内容,若文件太大时,会占用多个 block




inode用光之后,即使block有空间也不能存入数据



Boot Sector 與 Superblock:       
  最後一個問題,Boot Sector 與 Superblock 是否會位於同一個(第一個) block ?
Boot Sector 與 Superblock 各需要 1 KB,這個問題就取決於 block 的大小定義,假設 block = 1 KB,那 Boot Sector 與 Superblock 自然位於不同的 block 中;但如果 block >= 2 KB 時,那麼 Boot Sector 與 Superblock 就會位於同一個 bloc



inode的结构图:






如下第一列的数字第一列就是inode的表示
[root@station6 ~]# ll -i
总用量 160
10748155 -rw-r--r-- 1 root root 96256 6月  16 20:56 Linux-tcpdump.doc
 1966585 -rw-r--r-- 1 root root 33792 6月  18 20:27 ntp时间服务器搭建.doc
10748089 -rw-r--r-- 1 root root 12800 6月  16 20:56 tcpdump-test.doc
 1966527 drwxr-xr-x 7 root root  4096 6月  21 20:40 vmware
 1966107 drwxr-xr-x 2 root root  4096 6月   6 19:32 YozoWeboffice
 1966082 drwxr-xr-x 2 root root  4096 6月  22 14:28 桌面
[root@station6 ~]#

[root@host ~]# stat /etc/hosts     看文件状态
  File: "/etc/hosts"
  Size: 184           Blocks: 8          IO Block: 4096(每次读的块的大小)   普通文件(regular file)
Device: 803h/2051d    Inode: 12058661    Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
访问时间Access: 2013-07-18 16:12:50.339969307 +0800
修改时间Modify: 2013-07-16 16:08:04.639084950 +0800  
改变时间Change: 2013-07-16 16:08:04.672583679 +0800 文件属性被改变
[root@host ~]#




如何查看文件系统信息?

dumpe2fs命令:
查看ext2和ext3,etx4文件系统信息
格式:dumpe2fs 分区设备

[root@station6 ~]# dumpe2fs /dev/sda1|head -20  可以查看到块的大小
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:  
Last mounted on:          /boot
Filesystem UUID:          cbd9c68b-61bf-4b69-a883-0d995a2b424d
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
Filesystem state:         clean       表示你的文件系统没有出现问题,例如突然停电 数据来不及保存。 日志里有记录,但是没有实际的数据,需要修复,fsck可以根据日志进行修复
  Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              51200
Block count:              204800
Reserved block count:     10240
Free blocks:              56113
Free inodes:              49679
First block:              1
Block size:               1024
Fragment size:            1024
Reserved GDT blocks:      256
[root@li ~]# blkid   
/dev/sda3: UUID="ed56849d-1483-4573-ab3a-df45a9ee2f78" TYPE="ext4" 
/dev/sda1: UUID="198d77c8-04ae-4ccb-91c4-fced324c2bad" TYPE="ext4" 
/dev/sda2: UUID="1a3b7a23-a08d-4874-8cce-0d2db0e4b21f" TYPE="swap" 
/dev/sdb5: UUID="9150a0ae-f691-424b-9d8e-a017d1ebe4e4" TYPE="ext4" 
/dev/sdc1: UUID="942af69a-e741-4b29-bb30-a81ab4ef2c70" TYPE="ext4" 
/dev/sdc2: UUID="df35355a-e0ac-4119-8993-5402fdb74360" TYPE="ext4" 
/dev/sdc3: LABEL="tanghailong" UUID="1930ebcc-fe91-4b9e-9b0a-719f765ebc24" TYPE="ext4" 
[root@li ~]#
[root@station6 ~]# vim /etc/fstab   里面是各个文件系统的信息(blkid命令也可查看)



===============================================================================================================================

 


创建完整的文件系统的四个步骤:


其建立分区  
格式化分区建立文件系统
检验文件系统
装载文件系统(mount)


建立分区前首先如何查看文件系统?

[root@520 ~]# parted /dev/sdc print 也可以查看文件系统  (fdisk -l  常用)
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 2190GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size     File system  Name   Flags
 1      1049kB  3000MB  2999MB   ext4         music
 2      3001MB  10.0GB  6999MB   ext4         m
 3      10.0GB  20.0GB  10000MB               u
  4      20.0GB  60.0GB  40.0GB                movie
[root@520 ~]#

fdisk不能查看lable的原因是不支持gpt格式表


1. fdisk命令 创建分区,MBR分区



也可以用parted,创建gpt分区
(具体用法可以参考: http://dngood.blog.51cto.com/446195/647702/#559183-youdao-1-10240-9d08155edb1d770a7a5fd411dbfab9a6
parted配置gpt分区过程:


ls /dev/sdc* 可以显示说明分区成功。

----------------------------------------------------------------------------------------------------------------------------------
[root@host ~]# parted
GNU Parted 2.1
使用 /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            
Model: ATA ST500DM002-1BD14 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos

Number  Start   End    Size    Type     File system     标志
 1      1049kB  100GB  100GB   primary  ext4            启动
 2      100GB   150GB  50.0GB  primary  linux-swap(v1)
 3      150GB   500GB  350GB   primary  ext4

(parted) quit
[root@host ~]# parted /dev/sdb
GNU Parted 2.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            
Model: TOSHIBA TransMemory (scsi)
Disk /dev/sdb: 7803MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End     Size    Type     File system  标志
 1      323MB  7803MB  7480MB  primary  fat32        启动, lba

(parted)       

2.mkfs命令   格式化
用途:Make Filesystem,创建文件系统(格式化)
格式:mkfs -t 文件系统类型   分区设备


backup   备份

[root@localhost ~]# mkfs -t ext3 /dev/sdb1
等价于:
[root@localhost ~]# mkfs.ext3  /dev/sdb1


创建ext2文件系统:mke2fs
格式:mke2fs -选项 分区设备
选项:
-L:文件系统标签(lable)
-b:指定块大小(块的大小可以自己定义,一个块大小4096字节,加入一个文件21k的话,就绪要6个块来存放,块的大小越小格式化后的块的数量越多查找内容时就会需要更长的时间;块越大,如果有很多小文件的话,
例如:1k的小文件很多,就会导致很多空间就浪费了
-i:指定每个i节点有多少字节()
-j:建立文件系统日志


mke2fs、mkfs.ext2和mkfs -t ext2效果是一样的
mke2fs -j、mkfs.ext2 -j 和mkfs.ext3效果是一样的


如何查看文件系统的标签
blkid命令
语法:blkid   [分区设备文件]

[root@li~]# mkfs.ext4  -L tanghailong /dev/sdc3
==

[root@li ~]# blkid 
/dev/sda3: UUID="ed56849d-1483-4573-ab3a-df45a9ee2f78" TYPE="ext4" 
/dev/sda1: UUID="198d77c8-04ae-4ccb-91c4-fced324c2bad" TYPE="ext4" 
/dev/sda2: UUID="1a3b7a23-a08d-4874-8cce-0d2db0e4b21f" TYPE="swap" 
/dev/sdb5: UUID="9150a0ae-f691-424b-9d8e-a017d1ebe4e4" TYPE="ext4" 
/dev/sdc1: UUID="942af69a-e741-4b29-bb30-a81ab4ef2c70" TYPE="ext4" 
/dev/sdc2: UUID="df35355a-e0ac-4119-8993-5402fdb74360" TYPE="ext4" 
/dev/sdc3: LABEL="tanghailong" UUID="1930ebcc-fe91-4b9e-9b0a-719f765ebc24" TYPE="ext4" 
[root@li ~]#
[root@lichao520 ~]# dumpe2fs /dev/sdc3|more
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   tanghailong
Last mounted on:          
Filesystem UUID:          1930ebcc-fe91-4b9e-9b0a-719f765ebc24
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index f
iletype extent flex_bg sparse_super large_file huge_file uninit_bg dir_
nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean 
[root@station6 ~]# vim /etc/fstab   里面是各个文件系统的信息(blkid命令也可查看)


UUID是块的唯一标识,挂载点,文件系统,最后一个0是检测
MBR--》0赤道,0柱面,1扇区--》512
默认大小inode  256,block 4096
设置lable:e2lable   mkfs.ext4

3.fsck   诊断修复文件系统
fsck命令
用途:file system check,诊断修复文件系统
格式:fsck -t 文件系统类型 分区设备
-y:自动输入yes(与-a相同)

修复文件系统前,建议先将文件系统卸载(umount)。再修复

[root@host ~]# fsck   看能修复的文件系统类系
fsck          fsck.ext2     fsck.ext4     fsck.msdos    
fsck.cramfs   fsck.ext3     fsck.ext4dev  fsck.vfat     

超级块不能被破坏,一旦破坏系统就会被损坏

图2


grub>形式的问题:
dd if=/dev/zero of=/dev/sda1 bs=1024 count=2  破坏/boot系统文件


营救模式下fsck.ext4  /dev/sda1  修复


另外一种修复:
先备份到文件file下
dd if=/dev/sda1 of=file  bs=1024 count=1
然后损坏相同大小的空间
dd if=/dev/zero of=/dev/sda1 bs=1024 count=1
营救模式下cd /mnt/sysimage
然后dd if=file  of=/dev/sda1 bs=1024  count=1

破坏MBR超级块(开头的512字节)
dd if=/dev/zero of=/dev/sda bs=644 count=1
直接在该系统中使用fsck。ext4 /dev/sda   修复便可以了


破坏/目录,也要进营救模式fsck

怎么拿到一个平台??

1.光盘进入营救模式

2.网络进入营救模式 :
URL
ftp://10.0.0.254/rhl6.3


首先破坏/boot目录所在分区的超级块,重启后修复



错误如下所示:




然后破坏/目录所在分区的超级块,重启后修复

命令错了,应改为dd if=/dev/zero of=/dev/sda3   bs=4096 count=1


效果
立马变为以下情况了:

重启后变成下面这样了:


思考上述两种破坏产生的效果有什么区别???


破坏superblock
[root@lichao520 ~]# dd if=/dev/zero of=/dev/sdc1 bs=512 count=5
5+0 records in
5+0 records out
2560 bytes (2.6 kB) copied, 0.00112969 s, 2.3 MB/s
[root@lichao520 ~]#
[root@lichao520 ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda3             18121032   3039168  14161340  18% /
tmpfs                   189948       260    189688   1% /dev/shm
/dev/sda1               495844     35002    435242   8% /boot
/dev/sr0               3027366   3027366         0 100% /media/RHEL_6.3 i386 Disc 1
/dev/sdc1            73786976294838160280 73786976294835347520   2812760 100% /music
[root@lichao520 ~]# umount /music/  卸载(自己破坏后根本无法卸载,提示说系统繁忙)
[root@lichao520 ~]#  
修复文件系统前,建议先将文件系统卸载。再修复(没卸载也没出问题???)
===
[root@lichao520 ~]# mount /dev/sdc1 /music/
mount: you must specify the filesystem type
[root@lichao520 ~]#
===
[root@lichao520 ~]# dumpe2fs /dev/sdc1|more
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:  
Last mounted on:         
Filesystem UUID:          942af69a-e741-4b29-bb30-a81ab4ef2c70
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index f
iletype extent flex_bg sparse_super large_file huge_file uninit_bg dir_
nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    (none)
Filesystem state:         not clean   不是非常纯洁的文件系统了





[root@lichao520 ~]# fsck  /dev/sdc1
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sdc1 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Inode bitmap differences:  -(12--14)
Fix? yes  输入y,修复


/dev/sdc1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdc1: 11/183264 files (0.0% non-contiguous), 28970/732160 blocks
[root@lichao520 ~]# dumpe2fs /dev/sdc1|more
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   
Last mounted on:          
Filesystem UUID:          942af69a-e741-4b29-bb30-a81ab4ef2c70
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index f
iletype extent flex_bg sparse_super large_file huge_file uninit_bg dir_
nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              183264
Block count:              732160
Reserved block count:     36608
Free blocks:              703190
Free inodes:              183253
First block:              0
Block size:               4096
Fragment size:            4096
[root@lichao520 ~]# 
修复好,可以挂载使用
[root@lichao520 ~]# mount /dev/sdc1 /music/
[root@lichao520 ~]# df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda3     ext4     18G  2.9G   14G  18% /
tmpfs        tmpfs    186M  260K  186M   1% /dev/shm
/dev/sda1     ext4    485M   35M  426M   8% /boot
/dev/sr0   iso9660    2.9G  2.9G     0 100% /media/RHEL_6.3 i386 Disc 1
/dev/sdc1     ext4    2.8G   69M  2.6G   3% /music
[root@lichao520 ~]# 
===
[root@lichao520 music]# cd
[root@lichao520 ~]# umount /music/
[root@lichao520 ~]# dumpe2fs /dev/sdc1|more
dumpe2fs 1.41.12 (17-May-2010)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sdc1
Couldn't find valid filesystem superblock.
[root@lichao520 ~]# fsck -y /dev/sdc1 
===
[root@lichao520 ~]# fsck -y /dev/sdc1 
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
fsck.ext2: Superblock invalid, trying backup blocks...
/dev/sdc1 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/dev/sdc1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdc1: 11/183264 files (0.0% non-contiguous), 28970/732160 blocks
[root@lichao520 ~]# 
[root@lichao520 ~]# dumpe2fs /dev/sdc1|more  修复后,可以查看,说明它是用来查看superblock里的信息的
===




破坏boot :情况1

破坏/boot分区---》/dev/sda1
[root@localhost ~]# df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda5     ext4     58G  1.8G   53G   4% /
tmpfs        tmpfs    492M     0  492M   0% /dev/shm
/dev/sda1     ext4    485M   31M  429M   7% /boot
/dev/sda2     ext4     20G  172M   19G   1% /home
[root@localhost ~]# dd if=/dev/zero of=/dev/sda1 bs=512 count=8
8+0 records in
8+0 records out
4096 bytes (4.1 kB) copied, 0.00857931 s, 477 kB/s
[root@localhost ~]# 
出现grub>
进入营救模式
切换根: 



修复:




破坏/boot分区:(没有/boot启动不了)
破坏/分区:(所有数据都存在这里)
营救模式:相当于windows中的PE,光盘启动

LVM和标准分区破坏有些不同


破坏boot :情况2
 dd if=/dev/zero  of=/dev/sda1  bs=512 count=4
umount  /boot
仍然能mkdir等操作,只是重启不能进入系统了

fsck -y   /dev/sda1  修复,但是还是不能重启



重启后的情况:


进入营救模式 情况如下:



需要进入/mnt/sysimage  进行umount  /dev/sda1  再进行修复






分区--》格式化--》生成文件系统--》挂载使用


挂载文件系统

每个文件系统提供一个根目录作为文件系统的基础
挂载文件系统时,这个根目录绑定在系统目录树中一个已经存在的目录上
这个已有的目录叫做文件系统的挂载点


图3


当一个磁盘/空间不足时候,不能删除,要怎么才能扩大容量?
新增加一块硬盘,然后把原/下面的目录数据挂载到新的磁盘去,不挂载到原/下面。

图4


不能进入系统才进营救模式修复,否则可以直接在系统内修复。破坏sdb系统文件对系统无影响,可以直接在系统内修复

[root@host ~]# mount   可以查看正在挂载的分区
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)  从内存中拿出挂载到/proc,耗内存空间
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)
gvfs-fuse-daemon on /root/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev)
[root@host ~]#



创建分区
每个分区进行格式化
挂载各个分区  mount -o ro  dev/sdb1  /linux-1(只读)
mount /dev/sdb2   /windows-1
===
[root@localhost ~]# mkfs.ext4 /dev/sdb1
[root@localhost ~]# mkfs.ext4 /dev/sdb2
[root@localhost ~]# mkdir /linux-1
[root@localhost ~]# mkdir /windows-1
[root@localhost ~]# mount -o ro /dev/sdb1  /linux-1
[root@localhost ~]# mount /dev/sdb2 /windows-1
[root@localhost ~]# df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda5     ext4     58G  1.8G   53G   4% /
tmpfs        tmpfs    492M     0  492M   0% /dev/shm
/dev/sda1     ext4    485M   31M  429M   7% /boot
/dev/sda2     ext4     20G  172M   19G   1% /home
/dev/sdb1     ext4   1020M   34M  935M   4% /linux-1
/dev/sdb2     ext4    2.0G   68M  1.9G   4% /windows-1
[root@localhost ~]# 

方法一查看:



[root@teacher proc]# cat /proc/mounts 
rootfs / rootfs rw 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,nosuid,relatime,size=1957800k,nr_inodes=178887,mode=755 0 0
devpts /dev/pts devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0
/dev/sda3 / ext4 rw,relatime,barrier=1,data=ordered 0 0
/proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0
/dev/sda1 /boot ext4 rw,relatime,barrier=1,data=ordered 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
vmware-vmblock /var/run/vmblock-fuse fuse.vmware-vmblock rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other 0 0
/dev/loop0 /iso-hou iso9660 ro,relatime 0 0
gvfs-fuse-daemon /root/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=0,group_id=0 0 0


方法二:



怎么将/linux-1的权限改为rw??


[root@localhost ~]# umount /dev/sdb1  可以接磁盘名
[root@localhost ~]# df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda5     ext4     58G  1.8G   53G   4% /
tmpfs        tmpfs    492M     0  492M   0% /dev/shm
/dev/sda1     ext4    485M   31M  429M   7% /boot
/dev/sda2     ext4     20G  172M   19G   1% /home
/dev/sdb2     ext4    2.0G   68M  1.9G   4% /windows-1
[root@localhost ~]# umount /windows-1/   也可以接挂载点,都能卸载
 [root@localhost ~]# df -TH
Filesystem    Type     Size   Used  Avail Use% Mounted on
/dev/sda5     ext4      62G   1.9G    57G   4% /
tmpfs        tmpfs     516M      0   516M   0% /dev/shm
/dev/sda1     ext4     508M    32M   450M   7% /boot
/dev/sda2     ext4      21G   181M    20G   1% /home
[root@localhost ~]# 


查看那个程序正在使用某个软件
lsof   fuser


[root@localhost ~]# fuser -mv /linux-1/
                     USER        PID ACCESS COMMAND
/linux-1/:           root       1671 ..c.. bash
[root@localhost ~]# man fuser
[root@localhost ~]# fuser -k /linux-1/  杀死/linux-1的进程
/linux-1/:            1671c
[root@localhost ~]# fuser -mv /linux-1/
当我fuser -k /root的时候,直接返回到登录界面去了。
===
[root@localhost ~]# lsof /linux-1/
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    2153 root  cwd    DIR   8,17     4096    2 /linux-1
[root@localhost ~]# kill -9 2153
[root@localhost ~]# umount /linux-1/
[root@localhost ~]#

查看那个程序正在打开某个文件
      lsof - list open files




看内存使用率:free

[root@host ~]# free
             total       used       free     shared    buffers     cached
Mem:       3984528    3816072     168456          0      20280    2826316
-/+ buffers/cache:     969476    3015052
Swap:     48838648         84   48838564
[root@host ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          3891       3724        167          0         19       2760
-/+ buffers/cache:        944       2947
Swap:        47693          0      47693
[root@host ~]#

buffer 和cache的区别??
buffer---》缓冲器---》内存往磁盘写数据的一个临时存放数据的空间
cached---》高速缓存--》当内存从磁盘读数据的时候,经常使用的数据存放再此
相同点:都是用来加速的。

当交换分区开始使用的时候,说明你的物理内存不够使用了,如何处理?
可以kill掉一些进程 
swap


[root@host ~]# cat /proc/swaps   
Filename                Type        Size    Used    Priority
/dev/sda2                               partition    48838648    84    -1
[root@host ~]#

[root@localhost ~]# mkswap /dev/sdb5
Setting up swapspace version 1, size = 2104476 KiB
no label, UUID=510684f2-b0c9-4951-8e09-6309ec1dc1b0
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           982        140        842          0         12         66
-/+ buffers/cache:         61        921
Swap:         1999          0       1999
[root@localhost ~]#
[root@localhost ~]# swapon /dev/sdb5 不swapon加载swap的话看不到更新
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           982        141        840          0         12         66
-/+ buffers/cache:         62        920
Swap:         4055          0       4055
[root@localhost ~]# 
==
[root@localhost ~]# cat /proc/swaps  查看交换分区的组成
Filename				Type		Size	Used	Priority
/dev/sda3                               partition	2047992	0	-1
/dev/sdb5                               partition	2104472	0	-2
[root@localhost ~]# swapoff /dev/sdb5
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           982        140        841          0         12         66
-/+ buffers/cache:         61        921
Swap:         1999          0       1999
[root@localhost ~]# cat /proc/swaps    相当于swapon -s
Filename				Type		Size	Used	Priority
/dev/sda3                               partition	2047992	0	-1
[root@localhost ~]# 

还有,如果有时候,系统已经有了swap,但是你觉得swap空间太小,但是你又 不想再去建立一个分区来做swap,那么还有另外一种方法扩充swap的容量。
那就是直接用一个文件来做成swap,扩充swap的容量。
先dd命令建一个固定大小的文件。
命令如下:
#dd if=/dev/zero  of=/tmp/swap  bs=1M count=256
#ll  -h  /tmp/swap
#mkswap  /tmp/swap
#free   -m
#mkswapon /tmp/swap   启动
#swapon  -s



文件的路径不一定,后来我到根目录下也建了一个swap文件,依然可以扩充swap:
图3



若创建后ls   /dev/sdb*没有生成该分区,则可能是挂载使用了sdb,要先卸载umount,然后partprobe


使用文件系统标签标识设备
例如LABLE=/和/dev/sda1是一样的
在/etc/fstab文件中使用文件系统标签可以避免由于添加删除设备造成的设备文件标识混乱



e2label命令
查看和设置ext2或ext3,ext4文件系统的标签
语法:e2label 分区设备文件 标签名


e4label命令
查看和设置ext文件系统的标签
语法:e4label 分区设备文件 标签名


blkid命令
查看文件系统的标签
语法:blkid   [分区设备文件]


[ root@localhost ~]# blkid
/dev/sda2: UUID="dceff403-85ea-4849-b95f-45364aafb696" TYPE="ext4"
/dev/sda3: UUID="16500f8a-4334-43fc-94d6-f867ffbc4e63" TYPE="swap"
/dev/sda5: UUID="e725f227-6051-4760-8fed-ccbf561aba44" TYPE="ext4"
/dev/sda1: UUID="2ae8aff8-5175-4bc4-a06d-c798c6b90aa1" TYPE="ext4"
/dev/sdb1: UUID="269709b8-8d60-4b59-adb1-f96700b24ad7" TYPE="ext4"
/dev/sdb2: UUID="1f14c12d-a948-45d4-bd54-e535d8f53bc2" TYPE="ext4"
/dev/sdb5: UUID="510684f2-b0c9-4951-8e09-6309ec1dc1b0" TYPE="swap"
/dev/sdb6: UUID="32fc1f30-5fab-4ffb-9741-e4f706fe92de" TYPE="swap"
/dev/sdc1: LABEL="music" UUID="ede0f887-6df5-4426-a719-cd4b71d00ba4" TYPE="ext4"
[root@localhost ~]# mkdir /music
[root@localhost ~]#
/etc/fstab内容
#
UUID=e725f227-6051-4760-8fed-ccbf561aba44 /                       ext4    defaults        1 1
UUID=2ae8aff8-5175-4bc4-a06d-c798c6b90aa1 /boot                   ext4    defaults        1 2
UUID=dceff403-85ea-4849-b95f-45364aafb696 /home                   ext4    defaults        1 2
UUID=16500f8a-4334-43fc-94d6-f867ffbc4e63 swap                    swap    defaults        0 0
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/sdb1              /linux-1              ext4     defaults      0 0
LABEL=music                /music             ext4   defaults   0 0
第1列可以使用uuid、设备文件的路径、label
第1个0 代表不支持dump备份
第2个0 代表开机的时候不使用fsck进行检测


/etc/fstab配置文件
包含了需要开机后自动挂载的文件系统记录
mount -a命令将逐行读取fstab文件进行所有挂载(已经挂载的不会挂载,没有挂载的就挂载)

[root@localhost ~]# mount -a
[root@localhost ~]# df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda5     ext4     58G  1.8G   53G   4% /
tmpfs        tmpfs    492M     0  492M   0% /dev/shm
/dev/sda1     ext4    485M   31M  429M   7% /boot
/dev/sda2     ext4     20G  172M   19G   1% /home
/dev/sdb1     ext4   1020M   34M  935M   4% /linux-1
/dev/sdb2     ext4    2.0G   68M  1.9G   4% /windows-1
/dev/sdc1     ext4    2.0G   68M  1.9G   4% /music
[root@localhost ~]#
[root@localhost ~]# mount
/dev/sda5 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
/dev/sda2 on /home type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sdb1 on /linux-1 type ext4 (rw)
/dev/sdb2 on /windows-1 type ext4 (rw)
/dev/sdc1 on /music type ext4 (rw)
[root@localhost ~]#






果u盘是fat32文件系统,linux系统自动挂载
===
安装ntfs-3g软件
[root@localhost ntfs-3g]# lftp 10.0.0.253
lftp 10.0.0.253:~> ls
-rw-r--r--    1 0        0         5501525 Jun 02 12:27 FileZilla_3.7.0.2_i586-linux-gnu.tar.bz2
drwxr-xr-x    2 0        0            4096 Mar 31 00:01 centos
-rw-r--r--    1 0        0          492892 Mar 16 19:19 chap09.pptx
drwxr-xr-x    2 0        0            4096 Jun 14 12:23 ftp-yum
drwxr-xr-x    2 0        0            4096 Jun 14 12:23 rhel6.3
drwxr-xr-x   21 0        0            4096 Jul 04 00:37 software
-rwxr-xr-x    1 0        0             716 May 27 01:44 test.sh
-rw-r--r--    1 0        0         1014354 May 20 15:26 wqwq.bmp
drwxr-xr-x    2 0        0            4096 Apr 28 03:28 yum
lftp 10.0.0.253:/> cd software/
lftp 10.0.0.253:/software> get ntfs-3g_ntfsprogs-2011.4.12.tgz
1126704 bytes transferred                                           
lftp 10.0.0.253:/software> quit
[root@localhost ntfs-3g]# ls
ntfs-3g_ntfsprogs-2011.4.12.tgz
[root@localhost ntfs-3g]#
=======
[root@localhost ntfs-3g]# tar xf ntfs-3g_ntfsprogs-2011.4.12.tgz
[root@localhost ntfs-3g]# ls
ntfs-3g_ntfsprogs-2011.4.12  ntfs-3g_ntfsprogs-2011.4.12.tgz
[root@localhost ntfs-3g]#
[root@localhost ntfs-3g_ntfsprogs-2011.4.12]# ./configure
[root@localhost ntfs-3g_ntfsprogs-2011.4.12]# make
[root@localhost ntfs-3g_ntfsprogs-2011.4.12]# make install
[root@localhost ntfs-3g_ntfsprogs-2011.4.12]#
==
使用
        mount -t ntfs-3g /dev/sda1 /mnt/windows
or
        ntfs-3g /dev/sda1 /mnt/windows
===
[root@teacher ~]# ntfs-3g /dev/sdc1 /feng
[root@teacher ~]# df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda3     ext4    321G  170G  136G  56% /
tmpfs        tmpfs    1.9G  312K  1.9G   1% /dev/shm
/dev/sda1     ext4     92G  233M   87G   1% /boot
/var/ftp/software/iso/rhel6.3.x86.iso
           iso9660    2.9G  2.9G     0 100% /iso-hou
/dev/sdb1     vfat    7.2G  6.5G  692M  91% /media/o
/dev/sdc1  fuseblk    932G  262G  670G  29% /feng
===
先fdisk新建一个分区,然后格式化
[root@localhost ~]# mkfs.ntfs /dev/sdc3
Cluster size has been automatically set to 4096 bytes.
Initializing device with zeroes: 100% - Done.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.
[root@localhost ~]#
[root@localhost ~]# mkdir /aa
[root@localhost ~]# ntfs-3g /dev/sdc3 /aa
[root@localhost ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda5             59887732   2118308  54727224   4% /
tmpfs                   503108         0    503108   0% /dev/shm
/dev/sda1               495844     31214    439030   7% /boot
/dev/sda2             20158332    176064  18958268   1% /home
/dev/sdb1              1043548     34076    956460   4% /linux-1
/dev/sdb2              2071416     68636   1897556   4% /windows-1
/dev/sdc3              3156772     16328   3140444   1% /aa
[root@localhost ~]# df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda5     ext4     58G  2.1G   53G   4% /
tmpfs        tmpfs    492M     0  492M   0% /dev/shm
/dev/sda1     ext4    485M   31M  429M   7% /boot
/dev/sda2     ext4     20G  172M   19G   1% /home
/dev/sdb1     ext4   1020M   34M  935M   4% /linux-1
/dev/sdb2     ext4    2.0G   68M  1.9G   4% /windows-1
/dev/sdc3  fuseblk    3.1G   16M  3.0G   1% /aa



ln










总结:

查看文件系统类型:
df -Th
mount
blkid
fdisk -l  (看不到文件系统类型)
ls  /lib/modules/2.6.32*/kernel/fs

查看文件系统的版本:
cat  /etc/issue
lsb_release   -a

查看inode:
ll -i

查看文件状态:
stat命令

查看文件系统信息:
dumpe2fs  /dev/sda1
vim /etc/fstab
blkid

查看文件系统:
fdisk  -l   只能查看BRM
parted  /dev/sda  print

查看文件系统标签:
blkid  命令
修改系统标签:
1.格式化的时候接-L参数

查看文件大小:
du
ll  -h

修改/etc/fstab 实现自动挂载

软链接比硬连接用的多一些   ln  -s

查看缓存,主存,swap的使用情况:free  -m

查看进程:fuser  -mv
                 lsof
杀死进程:fuser  -k  进程名
                lsof  -9 PID



========================================================================================================================




磁盘配额

磁盘配额的目的
为了能够妥善的分配资源,引入配额这一概念,给用户设置空间使用上限,避免个别用户长期大量的占用空间。


实现磁盘限额的条件:
需要Linux内核支持
安装quota软件包

Linux磁盘限额的特点
作用范围:针对指定的文件系统(分区)
限制对象:用户帐号、组帐号
限制类型:
 磁盘容量(默认单位为KB)
 文件数量
限制方法:软限制、硬限制


磁盘配额的步骤:
1.分区
2.格式化
[root@localhost ~]# partprobe  /dev/sdc
[root@localhost ~]# ls /dev/sdc*
/dev/sdc  /dev/sdc1
[root@localhost ~]# partprobe  /dev/sdb
[root@localhost ~]# ls /dev/sdb*
/dev/sdb  /dev/sdb1  /dev/sdb2  /dev/sdb3  /dev/sdb5  /dev/sdb6
[root@localhost ~]#

3.修改/etc/fstab文件(启动文件系统的配额支持

[root@localhost ~]# vim /etc/fstab
加:
/dev/sdc5    /movie      ext4  defaults,usrquota,grpquota
 0 0

inode限制文件数量:因为一个文件一个inode,block控制容量


突破配额的时候,配额则对它不起作用了。
4.挂载使用
[root@localhost ~]# mount -a
mount: mount point /movie does not exist
[root@localhost ~]# mkdir /movie
[root@localhost ~]# mount -a
[root@localhost ~]# df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda5     ext4     58G  2.1G   53G   4% /
tmpfs        tmpfs    492M     0  492M   0% /dev/shm
/dev/sda1     ext4    485M   31M  429M   7% /boot
/dev/sda2     ext4     20G  172M   19G   1% /home
/dev/sdb1     ext4   1020M   34M  935M   4% /linux-1
/dev/sdb2     ext4    2.0G   68M  1.9G   4% /windows-1
/dev/sdc1     ext4    2.0G   68M  1.9G   4% /music
/dev/sdc5     ext4   1020M   34M  935M   4% /movie
[root@localhost ~]# [root@localhost ~]# mount /dev/sda5 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
/dev/sda2 on /home type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sdb1 on /linux-1 type ext4 (rw)
/dev/sdb2 on /windows-1 type ext4 (rw)
/dev/sdc1 on /music type ext4 (rw)
/dev/sdc5 on /movie type ext4 (rw,usrquota,grpquota)

5.生成配额文件
[root@localhost movie]# getenforce
Enforcing
[root@localhost movie]# setenforce 0
[root@localhost movie]# quotacheck -augv
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sdc5 [/movie] done
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Checked 2 directories and 0 files
quotacheck: Old file not found.
quotacheck: Old file not found.
[root@localhost movie]# ls -a
.  ..  aquota.group  aquota.user  lost+found
[root@localhost movie]#
6.开启配额功能
[root@localhost movie]# quotaon  -a开启
[root@localhost movie]# quotaoff  -a 关闭
7。新建用户验证
[root@localhost movie]# useradd xiaoliu
[root@localhost movie]# edquota -u xiaoliu      编辑用户的quota   soft和hard限制
[root@localhost movie]#
Disk quotas for user xiaoliu (uid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdc5                         0          8000          10000          0        0        0
[root@localhost movie]# su - xiaoliu
[xiaoliu@localhost ~]$ cd /movie/
[xiaoliu@localhost movie]$ ls
aquota.group  aquota.user  lost+found
[xiaoliu@localhost movie]$ mkdir xiaoliu
mkdir: 无法创建目录"xiaoliu": 权限不够
[xiaoliu@localhost movie]$ ll -d /movie/
drwxr-xr-x. 3 root root 4096 7月  19 18:56 /movie/
[xiaoliu@localhost movie]$ exit
logout
[root@localhost movie]#
[root@localhost movie]# chmod  777 /movie/
[xiaoliu@localhost movie]$ lftp 10.0.0.253
lftp 10.0.0.253:/software> get setup_kk_Ext_10_0001.exe
sdc5: warning, user block quota exceeded.[正接收数据]
sdc5: write failed, user block limit reached.
中断                                                                                          
lftp 10.0.0.253:/software>
[xiaoliu@localhost movie]$ dd if=/dev/zero of=liu.dd bs=1M count=10
dd: 正在写入"liu.dd": 超出磁盘限额
记录了1+0 的读入
记录了0+0 的写出
0字节(0 B)已复制,0.00373655 秒,0.0 kB/秒
[xiaoliu@localhost movie]$
===
[xiaoliu@localhost movie]$ quota -u xiaoliu  查看配额
Disk quotas for user xiaoliu (uid 500):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdc5   10000*   8000   10000   6days       2       0       0        
[xiaoliu@localhost movie]$ ls
aquota.group  aquota.user  liu.dd  setup_kk_Ext_10_0001.exe
[xiaoliu@localhost movie]$ rm -rf setup_kk_Ext_10_0001.exe 删除些文件
[xiaoliu@localhost movie]$ quota -u xiaoliu
Disk quotas for user xiaoliu (uid 500):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdc5       0    8000   10000               1       0       0        
[xiaoliu@localhost movie]$


遇到mount: wrong fs type, bad option, bad superblock on /dev/sdb5,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so
问题怎么解决???
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Jul 18 21:13:08 2013
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=8ec600aa-0add-4859-b6b3-2e1e21a878be /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
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/sdb5     /movie   ext4    defaults,usrquota,grpquota 0 0
[root@localhost ~]# cat /movie
cat: /movie: 是一个目录
[root@localhost ~]# mount -a
mount: wrong fs type, bad option, bad superblock on /dev/sdb5,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so
[root@localhost ~]#

原因和解决方法:
[root@localhost movie]# blkid                            看不到/dev/sdb5 未进行格式化
/dev/sda1: UUID="8ec600aa-0add-4859-b6b3-2e1e21a878be" TYPE="ext4"
/dev/sda2: UUID="Pap7Ba-SA2w-3Ymo-tLFS-QG8H-bPsl-Tf04iJ" TYPE="LVM2_member"
/dev/sdb1: UUID="f2dd70b1-4e32-43d4-9005-a45c0c142fab" TYPE="ext4"
/dev/sdb2: UUID="f87ca6fd-24b4-4146-8143-e5fc578a0453" TYPE="ext4"
/dev/mapper/VolGroup-lv_root: UUID="35de1c45-4dae-4b5a-8aa3-a5437c5126ac" TYPE="ext4"
/dev/mapper/VolGroup-lv_swap: UUID="38b4b9be-b33c-4f24-a20b-b0805c60d4e9" TYPE="swap"

[root@localhost movie]# dumpe2fs  /dev/sdb5   查看文件系统信息
dumpe2fs 1.41.12 (17-May-2010)
dumpe2fs: Bad magic number in super-block 当尝试打开 /dev/sdb5 时
找不到有效的文件系统超级块.
[root@localhost movie]# mkfs.ext4 /dev/sdb5       格式化
[root@localhost movie]# mount -a    挂载所有的
[root@localhost movie]# df
文件系统             1K-块      已用      可用 已用% 挂载点
/dev/mapper/VolGroup-lv_root
                      18037532   1832136  15289124  11% /
tmpfs                   527648         0    527648   0% /dev/shm
/dev/sda1               495844     31221    439023   7% /boot
/dev/sdb5              5170664    141336   4766668   3% /movie








你可能感兴趣的:(linux学习笔记)