• Linux 笔记


    博客地址:http://www.moonxy.com

    一、前言

    1.1 硬盘

    硬盘一般分为 IDE 硬盘、SCSI 硬盘和 SATA 硬盘。在 Linux 中,IDE 接口的设备被称为 hd,SCSI 和 SATA 接口的设备则被称为 sd。第一块 硬盘被称作 sda,第2块被称作 sdb,以此类推。Linux 规定,一块硬盘上只能存在 4 个主分区,分别被命名为 sda1、sda2、sda3 和 sda4。逻辑分区则从 5 开始标识,每多一个逻辑分区,就在末尾的分区号上加 1。逻辑分区理论上没有数量限制。正是由于 Linux 系统中最多只能创建 4 个主分区,所以当你想多创建几个分区时,那么就应该在创建完第 3 个分区后,创建第四个分区时选择扩展分区,然后,在扩展分区中,再创建逻辑分区,扩展分区并不是真正的分区,而只是概念上的分区,逻辑分区才是实际的分区,且一块硬盘上最多只能创建一个扩展分区,逻辑分区理论上没有数量限制。

    一般来说,每个系统都需要一个主分区来引导。每个分区中存放着引导整个系统所必须的程序参数。在 Windows 环境中常说的 C 盘就是一个主分区,它是硬盘的第一个分区,在 Linux 下被称为 sda1。Windows 中的 D、E、F 等属于逻辑分区,对应于 Linux 下的 sda5、sda6、sda7……。操作系统主体可以安装在主分区,也可以安装在逻辑分区,但引导程序必须安装在主分区内。

    综上,硬盘分区表 64byte,共分为4组记录区,每一组记录区记录了该区段的起始与结束的磁柱号码,这四组记录就是主要(primary)分区或扩展(extended)分区,所以主要分区加上扩展分区最多只能有四个。由于操作系统(包括 Linux、Windows)的限制,扩展分区最多只能有一个,所以一块磁盘最多可以分为 3 个主分区加 1 个扩展分区,扩展分区的目的是使用额外的扇区来记录磁盘分割信息,扩展分区本身不能格式化。逻辑(logical)分区是由扩展分区持续切割出来的,作为数据存储的分区是主要分区和逻辑分区。逻辑分区的数量依操作系统不同而不同,在linux中,IDE硬盘最多有 59 个逻辑分区(/dev/hda5到/dev/hda63),SATA硬盘则最多有11个逻辑分区(/dev/sda5 到 /dev/sda15)。

    1.2 文件系统

    Windows 系统格式化硬盘时会指定格式为 FAT32 或者 NTFS,而 Linux 常见的文件系统格式有 Ext2、Ext3 或者 Ext4 等。Ext3 比 Ext2 多了日志功能,可以跟踪记录文件系统的变化,并将变化内容写入日志。当系统崩溃之后,就可以利用日志恢复文件系统,在很大程度上避免了数据的丢失。当系统崩溃之后,就可以利用日志恢复文件系统,在很大程度上避免了数据的丢失。Ext4 支持的最大文件系统容量和单个最大文件大小比 Ext3 都要大。ReiserFS 是 SuSE 默认的文件系统。swap 是交换分区,可以理解为虚拟内存。实际内存不够时,操作系统从内存中取出一部分暂时不用的数据,放在交换分区中。Windows 不会为 swap 单独划分一个分区,而是使用分页文件实现相同的功能。如何将 NTFS 格式的分区挂载到 Linux 下呢,我们可以通过安装 ntfs-3g 软件包来解决这个问题。

    1.3 设备文件

    /dev 是所有设备文件所在的目录,设备文件格式为 /dev/xxyN。其中,xx:标明分区所在设备的类型,如 hd(IDE 硬盘)或 sd(SCSI 硬盘);y:标明分区所在的设备,如 /dev/hda(第一个 IDE 硬盘)或 /dev/sdb(第二个 SCSI 硬盘);N:这个数字代表分区,前四个分区(主分区或扩展分区)是用数字从1排列到4,逻辑分区从5开始。

    二、查看磁盘或者目录的容量

    2.1 查看磁盘的容量命令 df -h

    df - report file system disk space usage,可以查看已挂载磁盘的总容量、使用容量和剩余容量等。不加选项时,默认单位为 KB。主要选项有 -i、-h、-T、-k 和 -m。其中 -i 表示查看 inodes 使用状况;-T 可以查看文件系统类型;-h 最常用,表示使用合适的单位显示容量,系统会自动判断;-k 和 -m 分别表示以 K 和 M 为单位显示容量。常用格式为: df -h [Filesystem],如果不添加具体的 Filesystem 名称,那么会列出系统所有的分区 。

    [root@ryan ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        19G  1.6G   16G   9% /
    tmpfs           931M     0  931M   0% /dev/shm
    /dev/sda1       190M   35M  145M  20% /boot
    /dev/sr0        3.7G  3.7G     0 100% /mnt/cdrom

    第1列为分区的名字,第2列为该分区的总容量,第3列为已使用容量,第4列为剩余容量,第5列为已使用容量的百分比,第6列为挂载点。

    [root@ryan ~]# df -hT
    Filesystem     Type     Size  Used Avail Use% Mounted on
    /dev/sda3      ext4      19G  1.6G   16G   9% /
    tmpfs          tmpfs    931M     0  931M   0% /dev/shm
    /dev/sda1      ext4     190M   35M  145M  20% /boot
    /dev/sr0       iso9660  3.7G  3.7G     0 100% /mnt/cdrom

    其中,/dev/shm 为内存挂载点,tmpfs 是 Linux/Unix 系统上的一种基于内存的文件系统,tmpfs 可以使用您的内存或 swap 分区来存储文件。iso9660 为光盘的文件系统类型。

    2.2 查看目录或文件所占磁盘空间的大小命令 du -sh

    du - estimate file space usage,用于查看目录或文件所占磁盘空间的大小,默认单位为 KB。格式为 du [-abckmsh] [文件或者目录名],主要选项有 -a、-b、-k、-m、-h、-c、-s。-a 表示列出全部文件和目录的大小,否则只会列出目录(包含子目录)的大小,而不包含文件的大小;-b、-k、-m 分别表示以 byte、KB、MB为单位输出;-h 表示系统自动调节单位;-c 表示最后加总;-s 表示只列出总和。常用格式为 du -sh filename。

    [root@ryan ~]# du -sh /opt
    1.1G    /opt

    综上,统计磁盘分区(即文件系统)的容量大小命令为:df -h;统计文件的实际内容大小命令为:ls -lh;统计目录或者文件占用磁盘空间的大小命令为:du -sh。

    三、磁盘的分区

    新的磁盘在使用之前需要先分区,语法格式为: fdisk [-l ] [设备名称],但是 fdisk 只能划分小于 2TB 的分区,如果要划分大于 2TB 的分区,则需要使用 GPT 分区格式,可利用 parted 命令来完成分区。不管使用哪种分区程序,我们在 Linux 上给新硬盘建立分区时都要遵循以下的顺序:建立主分区 → 建立扩展分区 → 建立逻辑分区 → 指定文件系统类型,格式化所有分区 → 挂载

    [root@ryan ~]# fdisk -l

    Disk /dev/sda: 21.5 GB, 21474836480 bytes
    255 heads, 63 sectors/track, 2610 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x0008da69

    Device Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1          26      204800   83  Linux
    Partition 1 does not end on cylinder boundary.
    /dev/sda2              26         157     1048576   82  Linux swap / Solaris
    Partition 2 does not end on cylinder boundary.
    /dev/sda3             157        2611    19717120   83  Linux

    [root@ryan ~]# fdisk -l /dev/sda2

    Disk /dev/sda2: 1073 MB, 1073741824 bytes
    255 heads, 63 sectors/track, 130 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000

    进入分区模式:

    按 m 进入分区菜单:

    上面常用的几个菜单项:

    d 删除一个分区;
    l 打印分区类型对应的 ID 号;
    n 添加一个分区;
    p 打印分区表;
    q 不保存退出;
    w 保存退出。

    四、磁盘格式化

    磁盘分区好之后,还不能使用,需要对每一个分区进行格式化,其实就是安装文件系统。如 Windows 下有 Fat32 和 NTFS,CentOS 下有 ext2、ext3、ext4 等。

    通过查看 /etc/filesystems 文件列出当前系统所支持的所有文件系统类型:

    [root@ryan ~]# cat /etc/filesystems
    ext4
    ext3
    ext2
    nodev proc
    nodev devpts
    iso9660
    vfat
    hfs
    hfsplus

    可以使用 mke2fs、mkfs.ext2、mkfs.ext3 和 mkfs.ext4 等命令,对分区进行格式话,建议使用 mke2fs 命令,因为它的选项比较多,可以分成 ext2、ext3、ext4 的格式。常用选项有:-b 指定分区时设定每个数据区块占用的空间大小,默认为 4096 bytes,即 4K;-L 预设该分区的标签(Label);-t 用来指定文件系统的类型,如 ext2、ext3、ext4。如 mke2fs -t ext4 /dev/sdb5

    命令 e2label 用于查看或修改分区的标签。

    五、挂载/卸载磁盘

    磁盘分区,然后格式化,此时磁盘已经是一个块设备文件,类型为 b,但是现在还不能直接在该磁盘分区中写入数据,而是先建立一个挂载点,挂载点是以目录的形式出现的。如果挂载点不存在,需要先手工创建挂载点,并且挂载点(目录)下必须是个空目录。如果不是空目录,一旦挂在了新的分区,该目录下以前的数据就看不到了,除非卸载该分区。

    5.1 挂载磁盘

    mount - mount a filesystem,挂载一个文件系统,如果不加任何选项,直接运行 mount 命令,则显示系统所有分区,挂载点,分区文件系统类型等信息:

    [root@ryan ~]# mount
    /dev/sda3 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)
    none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
    /dev/sr0 on /mnt/cdrom type iso9660 (ro)

    常用选项还有 -a、-t 和 -o。-a 会挂载 /etc/fstab 中出现的所有磁盘分区;-t 选项用来指定挂载的分区类型,默认不指定会自动识别;-o 选项用来指定挂载的分区有哪些特性,即 /etc/fstab 配置文件中第 4 列的信息。如

    [root@ryan ~]# mount /dev/sdb5 /newfolder

    表示将分区 /dev/sdb5 挂载到 /newfolder 下,通常第一个参数可以是文件系统,LABEL 或 UUID。

    5.2 /etc/fstab 配置文件

    此配置文件中显示了系统启动时需要挂载的各个分区。

    [root@ryan ~]# cat /etc/fstab

    #
    # /etc/fstab
    # Created by anaconda on Sun Nov 12 07:40:10 2017
    #
    # 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
    #
    UUID=3974d6b2-aa5c-4a43-a296-bf3dc70654e9 /                       ext4    defaults        1 1
    UUID=49d563ca-1c80-47bd-8721-ac2323568655 /boot                   ext4    defaults        1 2
    UUID=796cdd24-f311-407c-9fa8-e272e5b5fd66 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

    第1列是分区的表示,可以写分区的 Label、分区的 UUID、也可以写分区名(/dev/sda1);第2列是挂载点;第3列分区的格式;第4列是 mount 的一些挂载参数,一般情况下,直接写 defaults 即可;第5列的数字表示是否被 dump 备份,1表示备份,0表示不备份;第6列的数字表示开机时是否自检磁盘,1和2都表示检测,1比2优先级高,0表示不检测。

    也可以将需要挂载的命令写入 /etc/rc.local(此为软链接,实际指向 /etc/rc.d/rc.local 文件),系统启动最后会执行这个文件中的命令,这也就是让一些操作行为随系统启动而自动执行。

    5.3 命令 blkid

    blkid - command-line utility to locate/print block device attributes,获取分区的唯一标识 UUID,它是真正的唯一标志符,格式为:blkid [filesystem]

    [root@ryan ~]# blkid
    /dev/sda3: UUID="3974d6b2-aa5c-4a43-a296-bf3dc70654e9" TYPE="ext4"
    /dev/sda1: UUID="49d563ca-1c80-47bd-8721-ac2323568655" TYPE="ext4"
    /dev/sda2: UUID="796cdd24-f311-407c-9fa8-e272e5b5fd66" TYPE="swap"

    5.4 卸载磁盘

    umount - unmount file systems,卸载文件系统,这个命令后可以跟挂载点,也可以跟分区名(如 /dev/hdb1),但是不可以跟 LABEL 和 UUID。如果遇到不能卸载的情况,可以跳转到其他目录,或者使用 umount -l 选项,表示延迟卸载。

    六、关于 swap

    swap 用来做虚拟内存,虽然 swap 无法代替物理内存,但不可缺少。swap 分区的作用是:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到 swap 空间中,等到那些程序要运行时,再从 swap 中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行 swap 交换。查看当前系统中是否已经启用 swap 分区:cat /proc/swaps。
    通常建立 swap 有两种方法:1.建立 swap 分区;2.创建 swap 交换文件。运行速度:物理内存 > swap 分区 > swap 文件。当你的数据盘已经装了很多内容,不方便重新规划的话,也只好使用第二种方法,创建 swap 文件了。如果你只有一块磁盘,而且磁盘已经装了很多内容,所以就不可能再选择对磁盘格式化来给磁盘分区了,而是选择创建 swap 文件的方法。基本步骤是:建立 swapfile → 格式化为 swap 格式 → 启用该虚拟内存。使用 free 命令来查看内存的使用情况,包括物理内存和虚拟内存, -m 选项表示以 MB 为单位显示。

    [root@ryan ~]# free -m
                       total       used       free     shared    buffers     cached
    Mem:          1861        200       1660          0          9         59
    -/+ buffers/cache:        131       1730
    Swap:         1023          0       1023

  • 相关阅读:
    Lc5413_重新排列句子中的单词
    Lc5412._在既定时间做作业的学生人数
    Lc520_检测大写字母
    threadPoolExecutor的参数和拒绝策略
    coutdownlatch的使用
    volatile的个人理解
    Lc292_Nim 游戏
    Lc136_只出现一次的数字
    lc88_合并两个有序数组
    jdk源码_String(1)
  • 原文地址:https://www.cnblogs.com/cnjavahome/p/8541712.html
Copyright © 2020-2023  润新知