Linux磁盘管理

Linux磁盘管理


硬件设备文件名
IDE硬盘             /dev/hd[a-d]    就是N多针的那种
SCSI/SATA/USB硬盘   /dev/sd[a-d]    SCSI为老式的服务器传输接口
光驱                /dev/cdrom或/dev/hdc
软盘                /dev/fd[0-1]
打印机25针          /dev/lp[0-2]
打印机USB           /dev/usb/lp[0-15]
鼠标                /dev/mouse



关于挂载的姿势
    Linux下没有盘符,只有挂载点,当然也是可以私下里称之为盘符的.
    挂载: 即为分配盘符的过程.
    几乎所有目录都可以作为挂载点,但是有一部分目录必须和/在同一分区中.

    必须挂载的分区:
        /           根分区
        swap分区    交换分区(物理内存4G以下内存的2倍,不超过2GB,4G以上,则等于物理内存)
    推荐分区
        boot    启动分区建议200M或几十M,如果不分配,会写在/分区.一旦/分区写满,系统就没法启动了.
    
通过文件系统结构来,理解挂载和目录,同时理解一下,系统分区时和目录的感觉.
    系统的角度来看
    /下的目录
        # 以下所有目录,从系统的角度来讲都在/下
        /boot
        /home
        /etc
        /usr
        /var
        
    磁盘的角度来看
    /boot       /home       /etc        /usr        /var 
    /dev/sda1   /dev/sda2   /dev/sda3   /dev/sda3   /dev/sda3
    
    虽然,所有目录在系统的角度来看,都在/下,
    但是,Linux的所有目录,几乎都可以用作挂载点,
    将不同的目录,挂载不同的分区.可以做到,万一一个分区满了,就无法开机.
    也更加的方便管理了.
    swap是给Linux内核调用用的,其实在安装系统的时候就会注意这一点.
    选择swap是在分区格式的一列中而非挂载点,且选择swap格式后,不能选择挂载点.
    由此可见一斑.也可以理解为,swap是一种分区格式.   
    


  • 磁盘管理
df  检查linux服务器的文件系统的磁盘空间占用情况(同时也可作为查看当前挂载情况)
    -l 仅显示本地磁盘(默认)
    -a 全部文件系统的磁盘使用情况
    -h 以1024进制计算最合适的单位显示磁盘容量
    -H 以1000进制计算最合适的单位显示磁盘容量
    -t <文件系统类型> 只显示选定文件系统的磁盘信息
    -T 显示磁盘分区类型
    -x <文件系统类型> 不显示选定文件系统的磁盘信息
    
du  统计磁盘上的文件大小
    注意:
        如果直接通过bkm统计后的都是四舍五入后的整数结果.
        可以使用-h避免这一点.
    -h 1024进制,以最合适的单位统计显示
    -H 1000进制,以最合适的单位统计显示
    -s 指定统计的目标,如:统计整个目录
    -b 以byte为单位统计文件
    -k 以KB为单位统计
    -m 以MB为单位统计
    
    

分区管理

注意:
    MBR分区
        1.主分区和扩展分区总数不能超过4个
        2.扩展分区只能有一个
        3.扩展分区不能直接存储数据,必须在扩展分区内创建逻辑分区存取数据.
        4.单个分区容量最大2TB
    GPT分区
        1.主分区个数限制128个,使扩展分区和主分区的概念变得模糊.
          因为MBR扩展分区就是为了解决,主分区只能建4个的尴尬.
        2.单个分区容量限制18EB注:1EB=1024PB 1PB=1024TB
        3.GPT主分区中,不适合安装X86架构的系统,即32位的.
        

在保留原硬盘的基础上,给服务器添加新的硬盘
Linux系统中的硬盘设备,都是以文件形式存在于根目录下的dev目录下
硬件设备都是有Linux自动识别的.
此时硬盘并不能直接使用个,需要对硬盘进行,挂载,分区,格式化


MBR分区操作 fdisk该工具只能给硬盘做MBR分区

  • 查看系统分区情况 fdisk -l
    fdisk该工具只能给硬盘做MBR分区

    fdisk -l
        # sdb磁盘当下为为未分区的硬盘,都没有分区信息
        Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
        Units: sectors of 1 * 512 = 512 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes

        # sda磁盘ubuntu16.04下分过区的硬盘显示如下
        Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
        Units: sectors of 1 * 512 = 512 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disklabel type: dos
        Disk identifier: 0x761c815f
        
        Device     Boot    Start      End  Sectors  Size Id Type
        /dev/sda1  *        2048 39845887 39843840   19G 83 Linux
        /dev/sda2       39847934 41940991  2093058 1022M  5 Extended
        /dev/sda5       39847936 41940991  2093056 1022M 82 Linux swap / Solaris
  • 开始分区操作 fdisk /dev/磁盘名称

# 进入sdb磁盘的分区模式,
fdisk /dev/sdb
    # 进入成功,输入m查看帮助信息
    Command (m for help):
    
新建主分区
    n 添加新的分区,随后会让选择是p:主分区 e:扩展分区
        Command (m for help): n
        Partition type
        # 显示当前分区状况,0个主分区,0个扩展分区,还可以建4个主分区
        p   primary (0 primary, 0 extended, 4 free)
        e   extended (container for logical partitions)
    
    p 新建主分区,需要继承n命令后操作
        # 设置新建分区去主分区
        Select (default p): p
        # 设置分区编号为1,默认为1-4顺序
        Partition number (1-4, default 1): 1
        # 设置扇区起始位置,默认为上一个分区的最大扇区.
        # 如果是第一个创建的,默认是2048起始
        First sector (2048-20971519, default 2048): 2048
        # 设置扇区结束位置,默认为磁盘的最后一个扇区,即:磁盘的最大空间.(支持直接用+号指定G和M等)
        Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +1000M
        # 提示成功
        Created a new partition 1 of type 'Linux' and of size 1000 MiB.
    
    p 查看已经添加的分区,未继承任何命令,直接输入p的情况下
        Command (m for help): p
        Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
        Units: sectors of 1 * 512 = 512 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disklabel type: dos
        Disk identifier: 0x69c4a924
        
        Device     Boot Start     End Sectors  Size Id Type
        /dev/sdb1        2048 2050047 2048000 1000M 83 Linux

新建扩展分区
    # 新建分区
    Command (m for help): n
    Partition type
       p   primary (1 primary, 0 extended, 3 free)
       e   extended (container for logical partitions)
    # 选择新建分区为,扩展分区
    Select (default p): e
    # 分区编号为2
    Partition number (2-4, default 2): 2
    # 扇区起始位置,默认为上一个分区的结束位置.
    First sector (2050048-20971519, default 2050048): 2050048
    # 扇区结束位置,默认为为磁盘最大的扇区位置(即:磁盘全部剩余部分)
    Last sector, +sectors or +size{K,M,G,T,P} (2050048-20971519, default 20971519): +2G
    # 提示成功
    Created a new partition 2 of type 'Extended' and of size 9 GiB.
    
# 扩展分区是不能直接使用的,必须在扩展分区里,新建逻辑分区,
# 对比以前装windows系统时,用到的磁盘管理器可以理解到这一点.
 
 第一个逻辑分区
    # 新建分区,此时发现e已经不见了,因为,扩展分区只能有一个
    # 同时提醒我们,新建逻辑分区,分区编号从5开始
    Command (m for help): n
    Partition type
    p   primary (1 primary, 1 extended, 2 free)
    l   logical (numbered from 5)
    # 选择新建逻辑分区,(由上面的from5,可知该分区是建立在扩展分区5号的基础上的)
    Select (default p): l
    # 设置分区编号
    Adding logical partition 5
    # 设置扇区起始位置,该起始位置
    First sector (2101248-6293503, default 2101248):
    # 设置扇区结束位置
    Last sector, +sectors or +size{K,M,G,T,P} (2101248-6293503, default 6293503): +100M
    # 提示创建成功
    Created a new partition 5 of type 'Linux' and of size 100 MiB.

 第二个逻辑分区    
    Command (m for help): n
    Partition type
       p   primary (1 primary, 1 extended, 2 free)
       l   logical (numbered from 5)
    Select (default p): l
    
    Adding logical partition 6
    First sector (2308096-6293503, default 2308096):
    Last sector, +sectors or +size{K,M,G,T,P} (2308096-6293503, default 6293503): 100M
    Last sector, +sectors or +size{K,M,G,T,P} (2308096-6293503, default 6293503): +100M
    
    Created a new partition 6 of type 'Linux' and of size 100 MiB.
    
查看磁盘信息
    # 使用p查看磁盘的分区信息
    Command (m for help): p
    Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x69ab06fd
    
    Device     Boot   Start     End Sectors  Size Id Type
    /dev/sdb1          2048 2099199 2097152    1G 83 Linux
    /dev/sdb2       2099200 6293503 4194304    2G  5 Extended
    /dev/sdb5       2101248 2306047  204800  100M 83 Linux
    /dev/sdb6       2308096 2512895  204800  100M 83 Linux
    
删除分区
    # 使用命令d进入删除分区的操作
    Command (m for help): d
    # 选择要删除的分区编号
    Partition number (1,2,5,6, default 6): 2
    
    Partition 2 has been deleted.
    # 2号分区为扩展分区,旗下有2个逻辑分区.删除了扩展分区后,逻辑分区自然也就没了.
    Command (m for help): p
    Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
    Geometry: 255 heads, 63 sectors/track, 1305 cylinders
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x69ab06fd
    
    Device     Boot Start     End Sectors Size Id Type
    
保存规划好的分区
    # 使用 命令w保存,之前规划好的分区
    Command (m for help):  w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.

GPT分区 parted 既可以进行MBR分区也可以进行GPT分区

parted 同时支持交互模式和命令模式

交互模式
    类似fdisk那样,一问一答的形式进行
    
命令模式



  • parted分区操作
fdisk设置分区需要最后使用w命令进行保存分区设置
parted是及时生效的,设置完之后,quit即可

如果忘了这句话什么一次,可以看下面设置分区时的例子.
我们在设置分区大小的时候,默认起始位置和结束位置是MB的.
如设置一个分区为1G的分区 使用命令 mkpart disk_1 1 1000
可以通过unit来设置MB和GB....等
# 设置,分区模式为GB
unit GB


parted命令进入分区模式,默认进入第一块硬盘
    GNU Parted 3.2
    Using /dev/sda
    Welcome to GNU Parted! Type 'help' to view a list of commands.

select切换硬盘
    (parted) select /dev/sdb
    Using /dev/sdb
    
mklabel设置分区类型MBR或GPT
    mklabel msdos/gpt
    # 如果原磁盘有数据时,转换磁盘类型,所有数据都会被摧毁.
    (parted) mklabel gpt
    Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
    Yes/No? yes

print 查看分区状况, 包含分区类型详情
    (parted) print
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 10.7GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:
    
    Number  Start  End  Size  File system  Name  Flags

print all 查看所有硬盘状况,包含分区类型
    (parted) print all
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sda: 21.5GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags:
    
    Number  Start   End     Size    Type      File system     Flags
     1      1049kB  20.4GB  20.4GB  primary   ext4            boot
     2      20.4GB  21.5GB  1072MB  extended
     5      20.4GB  21.5GB  1072MB  logical   linux-swap(v1)
    
    
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 10.7GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:
    
    Number  Start  End  Size  File system  Name  Flags

mkpart交互模式新建分区
    # 新建分区
    (parted) mkpart
    # 设置分区名
    Partition name?  []? disk_1
    # 设置格式化的格式
    File system type?  [ext2]? ext2
    # 开始位置,此处的开始位置不是fdisk中的扇区位置,而是从多少M开始(可以修改).更加的人性化
    Start? 0
    # 结束位置,到多少M结束
    End? 1000
    # 提示没有4K对齐,这时候我们取消操作,牺牲0-1的空间,达到4K对齐效果
    Warning: The resulting partition is not properly aligned for best performance.
    Ignore/Cancel? cancel
    # 新建分区
    (parted) mkpart
    # 设置分区名
    Partition name?  []? disk_1
    # 设置分区格式化的格式
    File system type?  [ext2]? ext2
    # 设置分区开始位置为1M
    Start? 1
    # 设置分区结束位置为2000M
    End? 2000
    
    # 查看刚才新建的分区,1M-2000M共1999MB的空间
    (parted) print
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 10.7GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:
    
    Number  Start   End     Size    File system  Name    Flags
     1      1049kB  2000MB  1999MB  ext2         disk_1

mkpart命令行模式新建分区
    # mkpart 分区名 起始MB 结束MB
    (parted) mkpart disk_2 2000 3000
    
    注意:如果新建分区的起始位置和上一分区的结束位置重叠,
         系统会提示从上一分区的结束位置开始建一个,如果同意的话,空间肯定会比预期的要小.
         如:上一个1-10,这一个5-20.这时候会提示,是否将这次的新建分区改为10-20的.
         
    (parted) mkpart disk_2 1000 3000
    Warning: You requested a partition from 1000MB to 3000MB (sectors 1953125..5859375).
    The closest location we can manage is 2000MB to 3000MB (sectors 3905536..5859375).
    Is this still acceptable to you?
    Yes/No? No
    
rm删除分区
    # 删除分区使用rm 分区编号
    
    # 打印当前磁盘状况,查看分区编号
    (parted) print
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 10.7GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:
    
    Number  Start   End     Size    File system  Name    Flags
     1      1049kB  2000MB  1999MB  ext2         disk_1
     2      2000MB  3000MB  1000MB               disk_2
    
    # 删除2号分区
    (parted) rm 2
    (parted)
    
quit退出操作, parted是及时生效的.操作完,退出即可.
    

linux 分区的格式化

需要明白一点,格式化(高级格式化)又称逻辑格式化不是用来清除数据的.
他是根据用户选定的文件系统,(如:fat32,ntfs,ext2,ext3,ext4等)
在磁盘特定的区域写入特定的数据,在分区中画出一片用于存放文件分配表,目录表等
用于文件管理的磁盘空间.主要是写入文件系统.
1.将整个分区,分成等大小的数据块.每个数据块(block)默认大小4KB(可以修改).
    如果一个文件,在块里放不下,就会分割在其他块,不是按顺序的.
    没有占满空间的块,即使有剩余空间,也不会再给别的文件用.
    
2.建立分区表,记录了 每个文件的ID号,修改时间,权限,文件保存位置
    这里的ID号,不叫ID号,叫做I节点(英文i node).
    格式化会重置这一切.
可见格式化可以清空数据,但是不是为了这个.而是为了写入文件系统.
  • mkfs 工具
注意MBR分区表中的,扩展分区是不可以格式化的.
只有主分区和逻辑分区可以.
GPT分区格式化之后,使用fdisk是没有办法看到各个分区的文件类型的.
必须使用parted查看.

该工具支持,MBR 和GPT分区格式化,下面两个效果是一样的.
mkfs.格式化类型 分区名
mkfs -t 格式化类型 分区名


# 查看该磁盘的分区
sdb
sdb1
sdb2

# 格式化sdb1为ext3
mkfs.ext3 /dev/sdb1

    # 操作如下
    root@ubuntu-Python:~# mkfs.ext3 /dev/sdb1
    mke2fs 1.42.13 (17-May-2015)
    Creating filesystem with 487936 4k blocks and 122160 inodes
    Filesystem UUID: 4dfd612c-44bf-4886-958b-a22e1b7b074c
    Superblock backups stored on blocks:
    	32768, 98304, 163840, 229376, 294912
    
    Allocating group tables: done
    Writing inode tables: done
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done

挂载与卸载分区分区

  • mount挂载与unmount的卸载

理论上,挂载分区可以挂载到系统的任意位置
挂载必须,挂载到一个已经存在的挂载点.即:已存在的目录位置.

查看系统中已挂载的设备
mount 
按照/etc/fstab的内容,自动挂载. 其实/etc/fstab的内容可以开机挂载的
mount -a
mount -t 文件系统 -o 特殊选项 设备名 挂载点
    -t 文件系统:
        加入文件系统类型来指定挂载的类型,可以ext3,ext4,iso9660(光盘默认)等.
        window中的fat32在这里使用vfat挂载,下面挂载U盘中可以看到
    -o 特殊选项:
        可以指定挂载的额外选项
        rw/ro   读写/只读,默认rw
        exec/noexec 执行/不执行 设定是否允许,在文件系统中执行,可执行文件,默认可执行.
        atime/noatime 更新访问时间/不更新访问时间 默认为更新
        async/sync  异步/同步 默认异步
        user/nouser 允许/不允许 设定文件系统是否允许普通用户挂载,默认不允许.
                    只有root可以挂载分区.
        auto/noauto 自动/手动 mount -a 命令执行时,是否会自动安装/etc/fstab文件内容挂载
                    默认为自动
        defaults    定义默认值相当于,rw,suid,dev,exec,auto,nouser,async这七个选项
        .......太多了,不做累述.
        建议不要进行修改,要不然可能出问题.不够,有时候为了防止U盘病毒的话,可以限制一下exec.

卸载挂载点
unmount 挂载点
unmount /mnt/mydisk    

挂载U盘
# 注意Linux中不支持NTFS文件系统的.
# 想支持,需要重新编译内核支持NTFS.或者安装ntfs-3g.但是注意,最终也只是只读功能.
 
# U盘其实就相当于一个硬盘,查看系统中已识别的硬盘, 查看插入的U盘的设备名
fdisk -l 
# 开始挂载U盘,这里的vfat相当于windows中的fat32
mount -t vfat /dev/sdb1 /mnt/usb/




# 如我们将sdb下的所有分区都挂载到mnt下的mydisk中
1. mkdir -p /mnt/mydisk
2. mount /dev/sdb1 /mnt/mydisk
3. mount /dev/sdb2 /mnt/mydisk

注意mount的挂载不具有永久性,重启系统后就会消失.
设置分区的自动挂载 vim /etc/fstab 
注意,光盘U盘之类的不要配置开机自动挂载,否则不插的话无法开机
# 设备位置      挂载点          分区类型
/dev/sdb1       /mnt/mydisk       ext3    defaults      0       0

Linux的swap交换分区

  • 说明
1. 建立一个普通分区
2. 修改分区类型的16进制编码
3. 格式化交换分区
4. 启用交换分区

这里的swap的设置和分区,格式化.都是用的fdisk.
具体使用parted可不可以,应该也是可以的但是没试过.
swap是给Linux内核调用用的,其实在安装系统的时候就会注意这一点.
选择swap是在分区格式的一列中而非挂载点,且选择swap格式后,不能选择挂载点.
由此可见一斑.也可以理解为,swap是一种分区格式.

  • 操作
1.新建一个普通分区,具体操作不在演示
fdisk /dev/sdb

2.设置分区编号
    # 查看分区信息,可知分区编号
    Command (m for help): p
    Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0xe018a9ad
    
    Device     Boot Start      End  Sectors Size Id Type
    /dev/sdb1        2048 20971519 20969472  10G 83 Linux

    # 通过t命令设置分区编号
    Command (m for help): t
    # 选择分区
    Selected partition 1
    # 通过L命令查看分区编号列表,得知82为Linux的swap分区格式,然后通过p查看分区ID已变成了82
    Partition type (type L to list all types): L
    Changed type of partition 'Linux' to 'Linux swap / Solaris'.
    
    # 保存修改
    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
3.格式化swap分区
    /mkswap 分区位置
    
    # 执行命令格式化,swap分区sdb1
    root@ubuntu-Python:~# mkswap /dev/sdb1
    root@ubuntu-Python:~# mkswap /dev/sdb1
    mkswap: /dev/sdb1: warning: wiping old ext3 signature.
    Setting up swapspace version 1, size = 10 GiB (10736365568 bytes)
    no label, UUID=1fb5ed35-23dd-4bc0-a956-fc53f688ee5f

4.启用swap分区
    swapon 分区位置
    # 启用sdb1交换分区
    swapon /dev/sdb1

5.查看swap分区加载状况
    free
    # 查看分区状况
    root@ubuntu-Python:~# free
                 total        used        free      shared  buff/cache   available
    Mem:         998308      105468      398060        6216      494780      706360
    Swap:       1046524           0     1046524
    
6. 关闭swap交换分区
    swapoff 分区位置
    # 关闭sdb1交换分区
    swapoff /dev/sdb1


转载于:https://my.oschina.net/chinaliuhan/blog/3065336

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值