设备文件:

    b:块设备文件,以块为单位,随机访问的设备,如磁盘

    c:字符设备文件,以字符为单位,访问有先后次序的线性设备,如键盘


ls -l查看设备文件,原显示大小的列改显示为

    主设备号(major number)

        用于标识设备类型

    次设备号(minor number)

        用于标识同一种类型的不同设备

[root@localhost tmp]# ls -l /dev
总计 0
brw-r----- 1 root disk     8,    0 10-10 22:31 sda
brw-r----- 1 root disk     8,    1 10-10 05:15 sda1
brw-r----- 1 root disk     8,    2 10-10 05:15 sda2
brw-r----- 1 root disk     8,    3 10-10 05:15 sda3
brw-r----- 1 root disk     8,    4 10-10 22:35 sda4
crw------- 1 root root     4,    0 10-10 05:14 systty
crw-rw-rw- 1 root tty      5,    0 10-10 05:15 tty
crw-rw---- 1 root tty      4,    0 10-10 05:14 tty0
crw------- 1 root root     4,    1 10-10 05:15 tty1
crw------- 1 root root     4,    2 10-10 05:15 tty2


mknod 创建块或字符设备文件

mknod [OPTION]... NAME TYPE [MAJOR MINOR]

    -m MODE 指定权限

例子:mknod -m 640 mydev c 66 0


硬盘设备的设备文件名:

IDE,ATA:hd

SATA:sd

SCSI:sd

USB:sd

    a,b,c,...来区别同一种类型下的不同设备

IDE: 

第一个IDE口:主、从

/dev/hda, /dev/hdb

第二个IDE口:主、从

/dev/hdc, /dev/hdd


sda, sdb, sdc, ...


hda: 

hda1: 第一个主分区

hda2: 

hda3:

hda4:

hda5: 第一个扩展分区


查看当前系统识别了几块硬盘:

fdisk -l [/path/to/some_device_file]

[root@localhost ~]# fdisk -l

Disk /dev/sda: 53.6 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         652     5237158+  83  Linux
/dev/sda2             653        3262    20964825   83  Linux


管理磁盘分区

fdisk /dev/sda

    p:显示当前硬件的分区,包括没保存的改动

    n:创建新分区

        e:扩展分区

        p:主分区

    d:删除一个分区

    w:保存退出

    q:不保存退出

    t:修改分区类型

    l:显示所支持的所有类型

Command (m for help): l

 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       bf  Solaris        
 1  FAT12           24  NEC DOS         81  Minix / old Lin c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          82  Linux swap / So c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   85  Linux extended  da  Non-FS data    
 6  FAT16           42  SFS             86  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi ee  EFI GPT        
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a6  OpenBSD         f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT


重新读取分区表

partprobe


文件系统管理

cat/proc/filesystems:用于显示当前内核所支持的文件系统

[root@localhost ~]# cat /proc/filesystems 
nodev	sysfs
nodev	rootfs
nodev	bdev
nodev	proc
nodev	cpuset
nodev	binfmt_misc
nodev	debugfs
nodev	securityfs
nodev	sockfs
nodev	usbfs
nodev	pipefs
nodev	anon_inodefs
nodev	futexfs
nodev	tmpfs
nodev	inotifyfs
nodev	eventpollfs
nodev	devpts
	ext2
nodev	ramfs
nodev	hugetlbfs
	iso9660
nodev	mqueue
nodev	selinuxfs
	ext3
nodev	rpc_pipefs
nodev	autofs


mkfs:make filesystem 创建文件系统

mkfs [OPTIONS] 设备文件

    -t FSTYPE

mkfs -t ext2 = mkfs.ext2

mkfs -t ext3 = mkfs.ext3


专门管理ext系列文件系统

mke2fs

    -j:创建ext3类型的文件系统

    -b BLOCK_SIZE:指定块大小,默认是4096

    -L LABEL:指定分区卷标,有了卷标以后,可以用卷标来引用分区,例如用卷标来mount

    -m #(不用加%):指定预留给超级用户的块数百分比,-m 2表示预留百分之二

    -i #:用于指定为多字节的空间创建一个inode,默认为8192,数值应该为块大小的2^n倍

    -N #:指定inode的个数

    -F:强制创建文件系统;默认文件系统已经挂载了就不可以重新创建

    -E:用户指定额外文件系统属性,如stride=#(chunk/BLOCK_SIZE),对RAID0和RAID5有作用,         加快运作


blkid 设备文件:用于查看磁盘设备的相关属性,包括UUID、TYPE和LABEL

[root@localhost ~]# blkid /dev/sda1
/dev/sda1: LABEL="/boot" UUID="c9bf9230-cdcd-45aa-89ed-77f11f273d6e" SEC_TYPE="ext2" TYPE="ext3"


e2label:用于查看或定义卷标

    e2label 设备文件:查看卷标

    e2label 设备文件 卷标名:设定卷标


tune2fs:修改文件系统的相关属性,不用重新格式化,无损修改

tune2fs [OPTION] 设备文件

    -j:不损害原有数据,将ext2升级为ext3,但ext3不能降级为ext2

    -L LABEL:设定或修改卷标

    -m:调整预留百分比,用法和mke2fs一样,但不用重新格式化

    -r:直接设定预留块数,不能与-m一起使用

    -c #:指定挂载次数达到#次之后进行自检,0或-1代表关闭此功能

    -i #:指定每挂载使用多少天之后进行自检,0或-1代表关闭此功能

    -l:显示超级块中的信息

[root@localhost ~]# tune2fs -l /dev/sda1
tune2fs 1.39 (29-May-2006)
Filesystem volume name:   /boot
Last mounted on:          <not available>
Filesystem UUID:          c9bf9230-cdcd-45aa-89ed-77f11f273d6e
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              1309440
Block count:              1309289
Reserved block count:     65464
Free blocks:              1231432
Free inodes:              1309406
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      319
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         32736
Inode blocks per group:   1023
Filesystem created:       Wed Aug 19 21:04:51 2015
Last mount time:          Wed Aug 19 16:58:26 2015
Last write time:          Wed Aug 19 16:58:26 2015
Mount count:              4
Maximum mount count:      -1
Last checked:             Wed Aug 19 21:04:51 2015
Check interval:           0 (<none>)
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:		  128
Journal inode:            8
Default directory hash:   tea
Directory Hash Seed:      333d4c06-586d-42f8-b580-5b956bb639a4
Journal backup:           inode blocks


dumpe2fs:显示超级块中的信息和每块组的信息

dumpe2fs [OPTION] 设备文件

    -h:只显示超级块中的信息


fsck:检查并修复Linux文件系统

    -t FSTYPE:指定文件系统类型

    -a:不询问自动修复


e2fsck:专用于检查并修复ext类文件系统

    -f:强制检查

    -p:自动修复,默认选项


挂载/卸载文件系统

挂载:将新的文件系统关联至当前根文件系统

卸载:将某文件系统与当前文件系统的关联关系予以移除


mount:挂载

mount [OPTION] [-o OPTION] 设备 挂载点

    设备:

        设备文件

        卷标:LABEL=""

        UUID:UUID=""

    挂载点:目录

        要求:

            1.没有被其他进程使用

            2.目录得事先存在

            3.目录中原有的文件将会被暂时隐藏,卸载后才可以重新显示出来

    :不跟参数,显示当前系统已经存在的设备和挂载点

    -a:表示挂载/etc/fstab文件中的所有文件系统

    -n:默认情况下,mount命令每挂载一个设备,都会把挂载的设备信息保存至/etc/mtab文件,         使用-n选项则不保存

    -t FSTYPE:指定正在挂载设备上的文件系统的类型;不使用此选项时,mount会自动调用blkid              命令获取对应文件系统的类型

    -r:只读挂载,挂载光盘时常用此项

    -w:读写挂载

    -o:指定额外的挂载选项,也即指定文件系统启动的属性

        remount:重新挂载,可不用指定挂载点

        ro:只读挂载

        rw:读写挂载

        loop:挂载本地回环设备,即挂载ISO镜像

挂载完成后,要通过挂载点访问对应文件系统上的文件


umount:卸载某文件系统

    umount 设备

    umount 挂载点

    -n:

挂载注意事项:挂载的设备或挂载点没有被进程使用

fuser:验证进程正在使用的文件或套接字文件

    -v:查看某文件上正在运行的进程

    -km:终止正在访问此目录的所有进程

fuser -km /path/to/directory

#用另一个ssh登陆shell并cd进/etc,在第一个shell中使用fuser -v
[root@localhost ~]# fuser -v /etc

                     USER        PID ACCESS COMMAND
/etc:                root       3955 ..c.. bash



创建交换分区

free:显示内存和交换分区的情况,包括total、used、free等

    -m:默认单位是KB,选用-m后单位改为MB

[root@localhost ~]# free
             total       used       free     shared    buffers     cached
Mem:        514832     342384     172448          0      17156     199736
-/+ buffers/cache:     125492     389340
Swap:            0          0          0


步骤:

①fdisk命令中,n创建分区

②fdisk命令中,t调整分区类型为82

③创建交换分区:

1.mkswap 设备文件

    -L LABEL

2.swapon 设备文件:启用交换分区

    -a:启用所有的定义在/etc/fstab文件中的交换设备

3.swapoff 设备文件:关闭交换分区


创建回环设备

loopback,使用软件来模拟实现硬件


dd:通过指定数据源和数据存储目标来创建特定的文件

    if=数据来源

    of=数据存储目标

    bs=#:块大小,如bs=1M

    count=#:块个数

    seek=#:创建数据文件时,跳过的空间大小

dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1   备份sda的MBR到u盘

dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1   还原MBR

dd if/dev/zero of=/var/swapfile bs=1M count=1024     创建一个1G大小的空文件


用mount挂载iso镜像、特定文件等

mount -o loop 文件路径 MOUNT_POINT

mount -o loop /var/swapfile /mnt/loopback1


FS的配置文件/etc/fstab

OS在初始时,会自动挂载此文件中定义的每个文件系统

每一行的格式:

要挂载的设备:/dev/sda5

挂载点:/mnt/test

文件系统类型:ext3

挂载选项:defaults

转存频率(每多少天做一次完全备份):0

文件系统检测次序(只有根可以是1):0



练习:

1、创建一个5G的分区,文件系统为ext3,卷标为MYDATA,块大小为1024,预留管理空间为磁盘分区的3%,要求开机后可以自动挂载至/data目录,并且自动挂载的设备要使用卷标进行引用;

# fdisk /dev/sdb

n

p

1


+5G

w

q

# mke2fs -j -b 1024 -L MYDATA -m 3 /dev/sdb1

# vim /etc/fstab

/dev/sdb2    /data    ext3    defaults    0 0


2、创建一个本地回环文件/var/swaptemp/swapfile来用于swap,要求大小为512MB,卷标为SWAP-FILE,且开机自动启用此交换设备;

# mkdir /var/swaptemp

# dd if=/dev/zero of=/var/swaptemp/swapfile bs=1M count=512

# mkswap LABLE=SWAP-FILE /var/swaptemp/swapfile

在/etc/fstab文件中追加

/var/swaptemp/swapfile  swap  swap  defaults 0 0

3、上述第一问,如何让其自动挂载的同时启用ACL功能;

/etc/fstab

LABEL='MYDATA' /data  ext3  defaults,acl 0 0