如果你是一位忠实的windows 用户,那么现在请你打开的的c盘,打开WINDWOS目录,下面存放了哪些文件和目录,相信没有人关心过吧!即便是用windows多年的人。额!其实,我也知道WINDOWS目录下面都放了些什么,在我的记忆中,几乎都没打开那个目录过,这就是windows 。linux则需要我们日久生情,我们只有在慢慢的与之了解下才会爱上它。

linux文件系统                                                                              

  

在linux中所有的东西都是文件

    Linux文件系统的组织方式称做Filesystem Hierarchy Standard(文件系统分层标准,简称FHS),即采用层次式的树状目录结构。在此结构的最上层是根目录"/"(斜杠),然后在此根目录下是其他的目录和子目录

    Linux与DOS及Windows一样,采用"路径"来表示文件或目录在文件系统中所处的层次。路径由以"/"为分隔符的多个目录名字符串组成,分为绝对路径和相对路径。所谓绝对路径是指由根目录"/"为起点来表示系统中某个文件或目录的位置的方法。例如如果用绝对路径表示图中第4层目录中的bin目录,应为"/usr/local/bin"。相对路径则是以当前目录为起点,表示系统中某个文件或目录在文件系统中的位置的方法。若当前工作目录是"/home",则用相对路径表示图中第4层目录中的bin目录,应为"hls/bin"或"./hls/bin",其中"./"表示当前目录,通常可以省略。

  Linux文件系统的组织与Windows操作系统不同。对于在Linux下使用的设备,不需要像Windows那样创建驱动器盘符,Linux会将包括本地磁盘、网络文件系统、CD-ROM和U盘等所有设备识别为设备文件,并嵌入到Linux文件系统中来进行管理。一个设备文件不占用文件系统的任何空间,仅仅是访问某个设备驱动程序的入口。Linux 系统中有两类特殊文件:面向字符的特殊文件和面向块(block)的特殊文件。前者允许I/O操作以字符的形式进行,而后者通过内存缓冲区来使数据的读写操作以数据块的方式实现。当对设备文件进行I/O操作时,该操作会被转给相应的设备驱动程序。一个设备文件是用主设备号(指出设备类型)和从设备号(指出是该类型中的第几个设备)来表示的,可以通过mknod命令进行创建。软盘、光盘和硬盘等典型设备文件在Linux系统中的表示方法。

典型设备文件在Linux系统中的表示方法

  Linux文件名最长可允许256个字符,可以包括数字、字符,以及"."、"-"、"_"等符号。Linux文件名不像DOS或Windows由主文件名和扩展文件名两部分组成,Linux中没有扩展名的概念。Linux环境下,文件名对大小写敏感(Case Sensitive),例如test.txt与Test.txt会被识别成两个不同的文件,而DOS或Windows平台是不进行大小写区分的。

文件系统的构成

/usr/bin、/bin : -------------存放所有用户可以执行的命令

/usr/sbin、/sbin : -----------存放只有root可以执行的命令

/home :--------------------用户缺省宿主目录

/proc :---------------------虚拟文件系统,存放当前内存镜像

/dev :----------------------存放设备文件

/lib :-----------------------存放系统程序运行所需的共享库

/lost+foud :---------------存放一些系统出错的检查结果

/tmp :---------------------存放临时文件

/etc :-----------------------系统配置文件

/var :----------------------包含经常发生变动的文件,如:邮件、日志文件、计划任务等

/usr :----------------------存放所有命令、库、手册页等 类似于windows C盘下的WINDOWS目录

/mnt :----------------------临时文件系统的安装点

/boot :---------------------内核文件及自举程序文件保存位置

用windows下我们习惯把安装的程序放在Program files目录下,在linux下面习惯放在/user/local下。

查看文件命令                                                                                   

查看分区使用情况:df

查看文件、目录大小:du

检测修复文件系统: fsck、e2fsck

        (单用户模式执行)

判断文件类型:file

df 查看linux磁盘分区情况

  在windows下查看我们硬盘的分区很简单,打开“我的电脑”就知道有几个盘,鼠标放到盘符上就显示磁盘的大小,那么在linux下如何查看呢,其实也非常简单,一个命令的事儿

[root@bogon ~]# df -h

Filesystem 容量 已用 可用 已用% 挂载点

/dev/sda1 9.7G 3.3G 5.9G 37% /

none 506M 0 506M 0% /dev/shm

/dev/sda2 2.9G 37M 2.7G 2% /hzh

/dev/sda5 6.2G 47M 5.9G 1% /web

du 查看文件、目录的大小

  windows下查看文件、目录的大小右键--属性,linux我们使用du命令进行查看。

root@fnngj-H24X:/hzh# du -h test.test   ------查看文件的大小

4.0K test.test

root@fnngj-H24X:/# du -sh /etc   ------查看目录的大小

7.1M /etc

file判断文件类型

我们知道linux下的文件不是同过后缀名来确定类型的,如果刚好某个文件没有定义后缀名,我们可以通过file命令来查看后缀名。

root@fnngj-H24X:/hzh# file test.test 

test.test: ASCII text

添加磁盘、分区、格式化、挂载                                                           

  这是我们在玩linux服务器时会遇到的一个问题,根据初期的规划,你linux上了一块500GB的硬盘,过了一段时间,不够用了。怎么办?换一个1TB的硬盘,把系统重装一下,把原来的数据拷贝到新硬盘上。这种方式可以,但太笨。直接在原系统上加一块硬盘不就行了。我们现在需要知道的就是如何让新加的这块硬盘给我们工作。

设置---根据图片的提示添加一块新的虚拟硬盘,嗯!这就是虚拟机的好处,可以帮我们模拟添加多块硬盘。呵呵

划分分区(fdisk)

创建文件系统(mkfs)

尝试挂载(mount)

写入配置文件(/etc/fstab)

查看新添加分区的硬盘信息

[root@bogon ~]# dmesg | grep sdb      sdb是我们添加的第二块硬盘

SCSI device sdb: 20971520 512-byte hdwr sectors (10737 MB)

sdb: cache data unavailable

sdb: assuming drive cache: write through

SCSI device sdb: 20971520 512-byte hdwr sectors (10737 MB)

sdb: cache data unavailable

sdb: assuming drive cache: write through

sdb: unknown partition table

Attached scsi disk sdb at scsi0, channel 0, id 1, lun 0

如果敲入dmesg | grep sdb命令没有任何信息,那问题就大了,你的系统没有识别新添加胡硬盘。

 

对硬盘进行分区

  下面先看一下我们添加的第二块硬盘的一些信息。

[root@bogon ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table

  sdb中b表示第二块硬盘,如果想看我们第一块硬盘的信息,可以输入sda

[root@bogon ~]# fdisk -l /dev/sda

Disk /dev/sda: 21.4 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sda1 * 1 1275 10241406 83 Linux

/dev/sda2 1276 1657 3068415 83 Linux

/dev/sda3 1658 1788 1052257+ 82 Linux swap

/dev/sda4 1789 2610 6602715 5 Extended

/dev/sda5 1789 2610 6602683+ 83 Linux

下面开始真正的对硬盘进行分区

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

The number of cylinders for this disk is set to 2610.

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): m   ----- 按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)

------------------------------------------------------添加第一个主分区--------------------------

Command (m for help): p   ----- 显示分区表

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

Command (m for help): n   ----- 添加新分区

Command action

e extended e是扩展分区

p primary partition (1-4)   ----p是主分区,我们最多可以添加4个主分区

p   ----- 按p表示我们要划分主分区

Partition number (1-4): 1    -----给主分区的一个编号1

First cylinder (1-1305, default 1):    -----这1到1305是指扇面,这个比较麻烦,不选择直接回车

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305): +5120M   ---- 这个地方我们要指定分区的大小,我们可以通过字节的方式来指定,国为我的硬盘是10G,我划分5G出来。

Command (m for help): p   ----- 现在再来查看分区表

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdb1 1 623 5004216 83 Linux   ----- 划分的第一个主分区信息出来了

-----------------------------------------------------添加第二个主分区---------------------------------

Command (m for help): n   ----- 按n继续划分分区

Command action

e extended

p primary partition (1-4)

p    -----p再划一个主分区

Partition number (1-4): 2   ----- 这里输入2表示第二个主分区

First cylinder (624-1305, default 624):

Using default value 624

Last cylinder or +size or +sizeM or +sizeK (624-1305, default 1305):   ----- 我们要把剩余空间都给2,这里直接回车

Using default value 1305

Command (m for help): p   ----- 再来查看分区表

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdb1 1    623     5004216   83   Linux

/dev/sdb2 624   1305    5478165    83   Linux   ----- 划分的两个分区都出来了

指定磁盘的格式

  接下来要指这文件系统的类型,现在的window分FAT32和NTFS是两种比较常见的分区,那linux下面磁盘支持的格式就非常多了

注:下面的操作不要退出fdisk模式

Command (m for help): t     ----给分区指定表格

Partition number (1-4): 1    ----我们选编号为1的主分区

Hex code (type L to list codes):   ---- 这里我们不知道编号,可用L来查看所有的分区格式

83 Linux   -----这个也就是我们刚划分的两个主分区的格式。

Hex code (type L to list codes): 83   ---- 如果不想改变原有格式直接输入83回车

删除分区

  如果这时你发现自己的分区划分的不合理,想删除某一个分区,重新划分。

注:下面的操作不要退出fdisk模式

Command (m for help): d    ----删除分区

Partition number (1-4): 2    ----这里选择删除第2个分区

Command (m for help): P

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/sdb1 1 63 506016 83 Linux   ---- 我们划分的两个分区只剩一个了

 

保存退出

  当我们把分区分好以后,需要保存退出才能保存我们划分的分区。其它非正常退出都不能保存我们划好的分区。

注:此处才是我们要退出fdisk模式的时候^_^

Command (m for help): w  --w是保存退出,q是不保存退出

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

磁盘格式话

  ok!分区已经完毕,下面是不是应该对硬盘进行一下格式化了

[root@bogon ~]# mk   -- 输入mk,按两下tab键,你会看到linux下面有许多分区命令

mkafmmap mkdosfs mkfs.ext2 mkisofs mktemp

mkbootdisk mke2fs mkfs.ext3 mklost+found mkxauth

mkcfm mkfifo mkfs.msdos mkmanifest mkzftree

mkcramfs mkfontdir mkfs.vfat mknod mkzonedb

mkdict mkfontscale mkhtmlindex mkSimNodeDir

mkdir mkfs mkhybrid mksock

mkdirhier mkfs.cramfs mkinitrd mkswap

  windwos下我们在格式化的时候,可以指定FAT32和NTFS,那么linux下流行的格式为ext2和ext3 ,这里我们对划分好的第1个分区进行格式化,选用ext3的格式

[root@bogon ~]# 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)

626496 inodes, 1251054 blocks

62552 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=1283457024

39 block groups

32768 blocks per group, 32768 fragments per group

16064 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done

Creating journal (8192 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

挂载分区

  OK!现在硬盘分区也分好了,也进行了格式化,下面要使用这个分区了。在使用的时候我们需要对其进行挂载。就像前面我讲的挂在光盘一样。使用mount命令。

[root@bogon /]# mkdir /newsdb   -----我们在根目录下创建一个做挂载点的目录/newsdb

[root@bogon /]# mount /dev/sdb1 /newsdb/   ---- 然后把格式化好的第1个分区/dev/sdb1 挂载到/newsdb目录下

[root@bogon /]# df  -h

Filesystem 容量 已用 可用 已用% 挂载点

/dev/sda1 9.7G 3.3G 5.9G 37% /

none 506M 0 506M 0% /dev/shm

/dev/sda2 2.9G 37M 2.7G 2% /hzh

/dev/sda5 6.2G 47M 5.9G 1% /web

/dev/sdb1 4.7G 42M 4.5G 1% /newsdb    -----看!我们的系统是不是多了一个盘,嘿嘿!!

如何解决每次重启都要挂载的问题                                                     

  

  上面的方式虽然完成了,但是有一个问题,我们重启系统后,新划分的sdb1分区又不见了,还需要我们重新进行挂载。那么如何解决这个问题,我们需要写入配置文件(/etc/fatab)

[root@bogon /]# vi /etc/fstab   ----先来看一下这个配置文件里都存放了些什么东东

LABEL=/    /    ext3    defaults    1(/0)    1(0/1/2)

LABEL=/    物理分区名/卷标

  /       挂载点

  ext3       文件系统

  defaults   缺省设置

  1(/0)   是否检测,O不检测,1检测

  1(0/1/2)  检测顺序,O不检测,1优先检测,2其次检测

  我们知道了每一部分的含义,把我们创建的分区的信息添加进去,那么在系统重启的时候,就自动加载我们的硬盘分区,我们就不用手动加载了。

/dev/sdb1    /newsdb    ext3    defaults    1   2

增加虚拟内存的方式                                                               

  

  这个虚拟内存是什么东东,此处就不解释了,windows下面增加虚拟内存方式,相信你懂的!如果你不懂,我想些节你可以略过了。呵呵!

下面告诉你如何增加LINUX的虚拟内存。

1、

# mkdir /var/swap

# chmod 700 /var/swap

2、

# dd if=/dev/zero of=/var/swap/file.swp bs=1024 count=65526

3、

# mkswap /wap/swap/file.swp

4、

# vi /etc/fstab

/var/swap/file.swp swap swap defaults 0 0

5、

free

6、

swapon /var/swap/file.swp

7、

free

解释一下思路

1、mkdir 创建一个虚拟内存的目录,chmod 让这个目录只有管理员权限,

2、dd 一个强大的复制命令,神奇的linux可以创建一个空的文件并指定它的大小,windows下面,文件的大小决定于文件中存放的内容的多少,如果文件是空的,那么这一文件一定显示0字节。而linux却可以创建空的又有大小的文件,这个特性刚好满足我们虚拟内存的要求。

3、mkswap 设置交换区,把file.swp设置成交换区。

4、编辑fstab文件,把设置虚拟内存的文件写进去。

5、free 指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等.

6、swapon开启虚拟内存

linux那点事儿(七)----文件系统管理的更多相关文章

  1. linux下的磁盘和文件系统管理

    一.硬盘分区知识 1.分区类型 硬盘分区一共有3种:主分区.扩展分区和逻辑分区.扩展分区只不过是逻辑分区的“容器”,实际上只有主分区和逻辑分区进行数据存储.在一块硬盘上最多只能有4个主分区,可以另外建 ...

  2. Linux学习之四——磁盘与文件系统管理

    一.一些基本定义 1. superblock:记录此 filesystem 的整体信息,包括inode/block的总量.使用量.剩余量, 以及文件系统的格式与相关信息等:2. inode:记录档案的 ...

  3. Linux笔记(十一) - 文件系统管理

    (1)文件系统查看命令:df [选项] [挂载点]-a 显示所有文件系统信息,包括特殊文件系统,如/proc /sysfs-h 使用习惯单位显示容量,如KB,MB或GB-T 显示文件系统类型-m 以M ...

  4. linux命令之磁盘与文件系统管理命令(上)

    1.fdisk:磁盘分区工具 该命令是linux下常用的磁盘分区工具,但是只能给小于2TB的磁盘划分分区. 常用参数为-l,显示所有磁盘分区的信息. 示例: 1)显示磁盘分区列表 [root@boxi ...

  5. Linux磁盘及文件系统管理

    在LINUX中我们知道一个很重要的概念,那就是"一切皆文件",这里的一切表示所有在LINUX系统的对象,自然也包括了LINUX中的硬盘设备.在LINUX中所有设备都被抽象成一个文件 ...

  6. 第八章、Linux 磁盘与文件系统管理

    认识 EXT2 文件系统 Linux最传统的磁盘文件系统(filesystem)使用的是EXT2这个啦!所以要了解文件系统就得要由认识EXT2开始! 而文件系统是创建在硬盘上面的,因此我们得了解硬盘的 ...

  7. linux下fdisk分区管理、文件系统管理、挂载文件系统等

    分区管理工具有:fdisk, parted, sfdisk fdisk:对于一块硬盘来讲,最多只能管理15分区: # fdisk -l [-u] [device...]  查看硬盘设备分区信息 # f ...

  8. 【linux相识相知】磁盘分区及文件系统管理详解

    磁盘,提供持久的数据存储,它不像我们的内存,如果突然断电了,在内存中的数据一般都会被丢掉了,内存中的数据在保存的时候,会被写到硬盘里面,磁盘也是一种I/O设备. 我们都知道磁盘分区完成之后,还要进行格 ...

  9. linux(3)磁盘与文件系统管理/查看硬盘、内存空间/文件系统的操作/ 文件的压缩和打包

    一.磁盘与文件系统管理 1.分区与文件系统分区:记录每一个分区的开始柱面和结束柱面主引导区(master boot recorder):记录分区的数据,记录硬盘里所有的分区信息分区划分好后,要将分区格 ...

  10. Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令

    通过前面两篇博客,我们介绍了Linux系统的权限管理.Linux权限管理之ACL权限 介绍了通过设定 ACL 权限,我们为某个用户指定某个文件的特定权限,这在Linux只能对于一个文件只能有所有者权限 ...

随机推荐

  1. Jexus部署Asp.Net Core项目

    在之前的我的博客项目中,我将.net Core发布到Cent OS 上,使用的Nginx代理以及Supervisor进程守护,看过我的博客的童鞋,也会发现,这种方式比较麻烦,光命令行就看的头大,总共部 ...

  2. 将本地代码提交到gitlub

    第一步:建立git仓库  cd到本地项目根路径下面,执行git命令:git  init $ git init Initialized empty Git repository in D:/my_wor ...

  3. LeetCode OJ:Set Matrix Zeroes(设置矩阵0元素)

    Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. 这题要注意的 ...

  4. request对象和response对象,什么时候用,具体用哪一个,没有感觉

    request对象和response对象,什么时候用,具体用哪一个,没有感觉

  5. 剑指offer--32.把数组排成最小的数

    用to_string()将整形转化为字符串,对字符串进行比较 --------------------------------------------------------------------- ...

  6. js mouseover/out 要用mouseenter/leave 代替

    js中 onmouseover/out 在进入离开绑定事件的子元素时,都会触发一次,因此项目中药尽量少用 可以使用onmouseenter/leave代替,它们在绑定事件上只会触发一次,不会重复触发

  7. Django之搭建学员管理系统

    GET请求传参数的方式: /xxx/?k1=v1&k2=v2 ? 前面的是URL ?后面的是请求的参数 多个参数之间用&分隔 POST请求传数据: 是放在请求体里面的 表结构设计. - ...

  8. 好强大的页面功能调试(js调试,查找js绑定的事件)值得学习

    引自:http://www.poluoluo.com/jzxy/201209/178110_2.html 这篇文章是根据目前 chrome 稳定版(19.0.1084.52 m)写的,因为 googl ...

  9. iOS AnchorPoint 引起的坐标问题

    这里主要讨论设置AnchorPoint 改变时,会影响我们预期的布局问题: 一.初始代码布局     //参照页面     UIView *aView = [[UIView alloc]initWit ...

  10. 【转】C# Socket编程(5)使用TCP Socket

    [转自:https://www.cnblogs.com/IPrograming/archive/2012/10/18/CSharp_Socket_5.html] TCP 协议(Transmission ...