「2038年問題はなんとなく分かったけど、時計を修正すればいいのでは?」「時計がおかしくてもアプリは動くでしょう?」と思われるかもしれませんが、そうはいきません。32ビットのOS環境では2038年1月19日3時14分7秒以降、正常な時刻をOSが刻めませんので、「なにが起こるかがわからない環境」になり、正常に利用できないのです。
また、32ビット環境や64ビット環境に限らず時計は、コンピュータシステムにおいて非常に重要な役割をします。例えば、物理サーバに障害が発生してもアプリケーションを別のサーバで再起動させることでシステム全体の高可用性を保つHigh Availabilityクラスタ(通称HAクラスタ)などは、通常、複数の物理サーバが協調して動作します。しかし、物理サーバで稼働するOSの時計がおかしくなると、うまく協調動作ができず、障害時のアプリケーションの再起動処理がうまく機能しない、つまり、障害が発生しても業務が停止したままになってしまうのです。
デスクトップOSでは、GUI画面を表示しているソフトウェア同士がうまく連携動作できず、フリーズ発生の原因にもなります。この問題を避けるため、ITシステムではHAクラスタに限らず、物理マシンで稼働するOSの時計を正確な時刻で刻むようにリアルタイムで微調整する仕組みを導入します。この微調整は、NTP(Network Time Protocol)サービスが稼働する時刻同期を行うサーバによって行われます。このように、ITシステムの安定稼働には、正確な時を刻む時計が必須なのです。
2038年問題はどのようなシステムで発生するのでしょうか。考えられる主なパターンは以下の通りです。
OSが64ビットでも、アプリが32ビットの場合、そのアプリ側の内部でシステムの時計を取り扱うときに問題が発生する可能性があります。また、ハイパーバイザー型の仮想化環境だけでなく、Docker環境でも同様の問題が考えられます。そこで、次回から32ビットOSがDocker環境で稼働できるのかも含め、Dockerの2038年問題に迫ります。
日本ヒューレット・パッカード株式会社 オープンソース・Linuxテクノロジーエバンジェリスト
兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師、SIを経験。2006年、米国HPからLinux技術の伝道師として「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。プリセールスMVPを4度受賞。現在は日本ヒューレット・パッカードにて、Linux、FreeBSD、Hadoop、Dockerなどのサーバ基盤のプリセールスSE、文書執筆を担当。Red Hat Certified Virtualization Administrator, Novell Certified Linux Professional, Red Hat Certified System Administrator in Red Hat OpenStack, Cloudera Certified Administrator for Apache Hadoopなどの技術者認定資格を保有。著書に「CentOS 7実践ガイド」「Ubuntu Server実践入門」などがある。趣味はレーシングカートとビリヤード。
古賀氏の最新記事が読めるブログはこちら。
第13回 “根が深い”旧システムからDocker環境への移行をどうするか
第14回 「延命措置」で旧システムからDocker環境に移行する方法
第9回 Dockerfileで“インフラストラクチャ・アズ・コード”を体験Copyright © ITmedia, Inc. All Rights Reserved.