GPT分区表

前言

翻译自维基百科GUID Partition Table

其实这篇文章维基百科上有相应的中文版本,但是一来有些地方看不太明白,二来内容相比英文已经老旧,因此自己翻译了一遍。实际翻译下来,发现这个英文版本部分内容也是欠推敲的。我的翻译并不好,有些内容还照搬了此文的中文版本,但是对了解GPT分区表来说,已经足够。

GUID分区表

在计算机硬件中,GUID分区表(GPT,GUID Partition Table)是使用全局唯一标识符(GUID, globally unique identifiers),描述物理硬盘分区表结构的一个标准。尽管它属于统一可延伸固件接口(UEFI,Unified Extensible Firmware Interface)标准(统一EFI论坛打算用它代替PC BIOS)的一部分,但也被用在某些BIOS系统上。这是由于使用32比特存储逻辑块地址和大小信息的MBR分区表具有局限性,对每扇区512字节的磁盘 来说,MBR分区表项最大容量为2TiB(241或~2.20x1012字节)。不过,一些磁 盘厂商(希捷和西数)看到了这个正在接近的限制并把他们大容量磁盘的扇区提高到4K,这就把MBR的实际限制提高到了16TiB。由于这个理 论上“正确”的解决方案,这一变化暂时降低了使用GPT的需求,并在市场上带来了“从BIOS启动大容量块设备时如何分区最合适”的疑惑。 GPT把64比特用于逻辑块地址,最大允许大小为264-1个扇区的分区。对于每扇区512字节的磁盘,这会是 9.4ZB(9.4x1021字节)或8ZiB-512字节(9,444,732,965,739,290,426,880字节或18,446,744,073,709,551,615(264−1)扇区×512(29)字节每扇区)。

Continue reading ‘GPT分区表’ »

点击量:101

MySQL同步常用管理任务

翻译自MySQL 5.5 Reference Manual

同步设置好并开始运行后,并不需要许多日常管理操作。取决于同步环境,你会希望偶尔、每天甚至更频繁地检查每一从服务器的同步状态。

1 检查同步状态

管理同步过程的最常用任务是确保同步正在运行并且主服务器和从服务器之间没有发生错误。完成这一任务主要通过在每一从服务器上执行SHOW SLAVE STATUS语句:

mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: master1
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 931
               Relay_Log_File: slave1-relay-bin.000056
                Relay_Log_Pos: 950
        Relay_Master_Log_File: mysql-bin.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
 Continue reading ‘MySQL同步常用管理任务’ »

点击量:25

MySQL同步实现细节

翻译自MySQL 5.5 Reference Manual

MySQL同步是使用三个线程实现的,一个在主服务器上,两个在从服务器上:

  • 二进制日志转储线程(Binlog dump thread)。当从服务器连接时,主服务器创建一个线程用来把二进制日志的内容发给从服务器。在主服务器SHOW PROCESSLIST的输出信息中,它被显示为Binlog Dump。
    binlog dump线程在主服务器的二进制文件上取得一个锁(acquires a lock),用来读取每一个要发给从服务器的事件。读取事件后,锁便会被释放,而不管事件有没有发送给从服务器。
  • 从服务器I/O线程(Slave I/O thread)。当从服务器运行START SLAVE语句时,会创建一个I/O线程。这个I/O线程会连接主服务器,要求主服务器发送记录在二进制日志中的数据库更新信息。
    从服务器的I/O线程读取主服务器Binlog Dump线程发过来的数据库更新信息,并把它们拷贝到本地文件,也就是从服务器的中继日志(relay log)中。
    这一线程的状态,在SHOW SLAVE STATUS的输出信息中显示为Slave_IO_running,在SHOW STATUS的输出信息中显示为Slave running。
  • 从服务器SQL线程(Slave SQL thread)。从服务器读取I/O线程生成的中继日志,并执行包含在日志中的事件。

在上面的描述中,每个主/从服务器连接都有3个线程。如果一个主服务器有多个从服务器,它会给每个连接着的从服务器都创建一个binlog dump线程。每一个从服务器都有自己的I/O和SQL线程。

Continue reading ‘MySQL同步实现细节’ »

点击量:31

为MySQL生成SSL证书和密钥

MySQL支持SSL通信,不过需要自行生成所需要的证书和密钥。

生成过程中请根据提示提供相应的信息。如果证书只是用来测试,一路回车即可;如果在实际环境中使用,尽量提供有意义的信息。如果某个信息要留空,可以输入英文句号(.)。请自行保存生成过程中所输入的证书密码。

1 准备工作

创建干净的环境:

$ rm -rf newcerts
$ mkdir newcerts && cd newcerts

2 生成CA证书

需要注意,CA证书的Comman Name不能与服务器请求文件和客户端的请求文件的Comman Name相同,否则证书验证阶段会报类似“error 18 at 0 depth lookup:self signed certificate”的错误。命令如下:

$ openssl genrsa 2048 > cakey.pem
$ openssl req -new -x509 -nodes -days 3600\
 -key cakey.pem -out cacert.pem

Continue reading ‘为MySQL生成SSL证书和密钥’ »

点击量:143

设置MySQL数据库同步

严格说来,MySQL的数据库同步不能叫“同步”,因为它是单向的,只能从主服务器(master)到从服务器(slave),官方文档称之为“replication(复制)”。

通过同步,可以自动备份数据库到另一台机器;可以负载均衡,把写操作放在主服务器,读操作分散在从服务器;还可以在主服务器故障时,临时进行切换,故障排除后再切回来……当然,本文不会说这么多内容,涉及到的,只是如何设置同步。

1 系统环境

1.1 主服务器

Debian7,MySQL5.5。MySQL使用MyISAM存储引擎,关闭InnoDB存储引擎。

若用到InnoDB的数据库,其同步设置会有差异,本文不涉及。mysql -u root -p登入数据库,然后执行SHOW TABLE STATUS FROM database查看database数据库使用何种存储引擎。

1.2 从服务器

Debian7,MySQL5.5。MySQL使用MyISAM存储引擎,关闭InnoDB存储引擎。

2 准备工作

2.1 主服务器设置

编辑/etc/mysql/my.cnf,在[mysqld]部分,根据下面内容添加或修改相应选项。

 Continue reading ‘设置MySQL数据库同步’ »

点击量:63

网站迁移到linode

BuyVM让我郁闷了两次:

  1. 6月26日,机房断电,服务中断8小时左右;
  2. 7月初Stallion 2上线,我修改了一下启动设备,却导致VPS重启后找不到启动设备;

再加上非电信线路由于网络原因基本无法访问VPS并维护,毅然决然切换到linode。

不过迁移后空闲出来的VPS也不会白白放在那里浪费资源,可以把它作为备用服务器,以备不时之需。现正研究MySQL数据库同步,成功后会写篇文章出来。

点击量:22

深入解析硬盘结构

1.1 硬盘的外部结构

一般硬盘正面贴有产品标签,主要包括厂家信息和产品信息,如商标、型号、序列号、生产日期、容量、参数和主从设置方法等。这些信息是正确使用硬盘的基本依据,下面将逐步介绍它们的含义。

硬盘主要由盘体、控制电路板和接口部件等组成,如图1-1所示。盘体是一个密封的腔体。硬盘的内部结构通常是指盘体的内部结构;控制电路板上主要有硬盘BIOS、硬盘缓存(即CACHE)和主控制芯片等单元,如图1-2所示;硬盘接口包括电源插座、数据接口和主、从跳线,如图1-3所示。

harddisk_structure_indepth_01
图1-1 硬盘的外观

harddisk_structure_indepth_02
图1-2 控制电路板

harddisk_structure_indepth_03
图1-3 硬盘接口

Continue reading ‘深入解析硬盘结构’ »

点击量:33

硬盘结构

追溯历史

从1956年9月,IBM的一个工程小组向世界展示了第一台磁盘存储系统IBM 350 RAMAC(Random Access Method of Accounting and Control)至今,磁盘存储系统已经历了近半个世纪的发展。经历了这45年,磁盘的变化可以说是非常巨大得,最早的那台RAMAC容量只有5MB,然而却需要使用50个直径为24英寸的磁盘。但现在一块容量高达100GB的硬盘只需要3张磁盘片即可。
当然,IBM 350 RAMAC与现在的硬盘有很大的差距,它只能算是硬盘的开山鼻祖。现代硬盘的真正原形,可以追溯到1973年,那时IBM公司推出的Winchester(温氏)硬盘,它的特点是:“工作时,磁头悬浮在高速转动的盘片上方,而不与盘片直接接触。使用时,磁头沿高速旋转的盘片上做径向移动”,这便是现在所有硬盘的雏形。今天高端硬盘容量虽然高达上百GB,但它却仍然没有脱离“温彻斯特”的动作模式。
下面是两张IBM公司于1980年在IBM-XT上的一块10M的硬盘图,可以看出,除了外型略大,无论外观还是内部结构和现在最先进的硬盘并无大的差别。

harddisk_structure_01

图1:IBM 10MB硬盘的内部结构图

Continue reading ‘硬盘结构’ »

点击量:54