タグ

Linuxに関するnaga_sawaのブックマーク (397)

  • 電源を切っても消えないメモリとの付き合い方

    Transcript ిݯΛ੾ͬͯ΋ফ͑ͳ͍ϝϞϦͱͷ෇͖߹͍ํ NAOMASA MATSUBAYASHI https://github.com/Fadis/kernelvm_20191019_samples αϯϓϧίʔυ Ϩδελ L1 cache L2 cache L3 cache DRAM SSD ϋʔυσΟεΫ ߴ଎Ͱ ༰ྔ୯Ձ͕ߴ͍ ௿଎Ͱ ༰ྔ୯Ձ͕͍҆ 1013 100 101 102 103 104 105 106 107 108 109 1010 1011 1012 10−10 10−9 10−8 10−7 10−6 10−5 10−4 10−3 10−2 ༰ྔ[bytes] ॻ͖ࠐΈͷϨΠςϯγ[ඵ] Ϩδελ L1 cache L2 cache 10−1 L3 cache DRAM SSD ϋʔυσΟεΫ ӬଓԽ͞Εͳ͍ ӬଓԽ͞ΕΔ 1013 100 101 10

    電源を切っても消えないメモリとの付き合い方
    naga_sawa
    naga_sawa 2019/10/22
    不揮発だとやはり整合性とかが問題になってくると
  • Linux ファイルシステムを理解したい - Qiita

    ]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) ]# uname -a Linux localhost.localdomain 3.10.0-1062.1.2.el7.x86_64 #1 SMP Mon Sep 30 14:19:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux ファイルシステムとは何か? データを管理/操作するための仕組み。 ファイルとディレクトリで構成されていて、/ を基点とした木構造になっている。 # ls -l / 合計 56 lrwxrwxrwx. 1 root root 7 8月 25 01:17 bin -> usr/bin dr-xr-xr-x. 6 root root 4096 9月 29 15:51 boot drwxr-xr-x. 19

    Linux ファイルシステムを理解したい - Qiita
    naga_sawa
    naga_sawa 2019/10/14
    Linuxファイルシステム周りまとめ
  • [速報]Windows上でフル互換のLinuxシステムコールを実現する「WSL 2」発表、Dockerも実行可能に。Microsoft Build 2019

    マイクロソフトはWindows上でLinux互換機能を提供するWindows Subsystem for Linux(WSL)の次期版となる「WSL 2」を発表しました。 WSL 2には、最初からWSL 2に最適化されたLinuxカーネルが含まれており、フル互換のLinuxシステムコールを実現。またファイルシステム性能は最大20倍もの劇的な向上も実現しているとのことです。 これによりWSL 2上ではDockerも実行可能だとされています。「Announcing WSL 2」から引用します。 Now that WSL 2 includes its own Linux kernel it has full system call compatibility. This introduces a whole new set of apps that you can run inside of W

    [速報]Windows上でフル互換のLinuxシステムコールを実現する「WSL 2」発表、Dockerも実行可能に。Microsoft Build 2019
    naga_sawa
    naga_sawa 2019/05/07
    Windows上のファイルをどう見せるんだろう
  • コピペから脱出!iptablesの仕組みを理解して環境に合わせた設定をしよう

    Linuxのファイアウォール「iptables」について入門から実践まで解説 数回に分けてLinuxのファイアウォール「iptables(アイピーテーブルズ)」について解説します。 ネット上に有益な設定が溢れているので、あまり理解しないままコピーペーストで運用している方も多いはず。 しかしそれでは実際に攻撃された際に対処できません。 そこでこのページでは、初めてファイアーウォールについて学ぶ方でも理解できるように、全体像と細かな設定の意味について解説します。 目次 ファイアーウォールの種類 NATについて パケットフィルタリングの概要と書式 テーブルについて チェインについて オプションについて パラメータについて 拡張パラメータについて iptablesの記述順序とルールの適用順について ポリシーについて ファイアーウォールの種類 ファイアウォールと聞いて、まず何を思い浮かべるでしょうか

    コピペから脱出!iptablesの仕組みを理解して環境に合わせた設定をしよう
    naga_sawa
    naga_sawa 2019/03/21
    iptables の設定パラメータ色々とパケットフローの挙動/中ほどの各テーブル・チェイン間でのパケットの流れがわかりやすい
  • [試して理解] Linuxのプロセススケジューラのしくみ - Speaker Deck

    成長は小さな失敗の積み重ね 事業を支えるCARTAのフルサイクルエンジニアリング / growth-for-small-fail-fast-carta-fullcycle

    [試して理解] Linuxのプロセススケジューラのしくみ - Speaker Deck
    naga_sawa
    naga_sawa 2018/11/25
    Linuxのプロセススケジューラ/マルチコアCPUになるとやはりややこしいことやらないとダメなのね
  • 【謎】本当にあったfindコマンドの怖い話【質問編】

    ※質問受付は終了しました。(3/22) 先にまとめ リネームではinode番号は変わらないけどエントリの位置が変わることがある。 これが一番知りたかった情報。でも文章では理解したけど、検証コードはどう書けばいいかわからん… readdirはアトミックじゃない。読み込み中にエントリ情報が変われば次の読み込みに影響する。 man にも「readdir()は非スレッドセーフです」って書いてある。 fts_readは実行時にreaddirの結果を10万件(ずつ?)キャッシュしていて、途中(たぶん10万件)まではエントリの変更の影響を受けないっぽい。途中からreaddirと同じことが起こる。 ソースコードの斜め読みと挙動を観察した限りそんな感じっぽい。厳密に裏取りしたいけど疲れた。 findコマンドは readdir ではなくそのラッパーの fts_read を使っているので、 fts_read と

    naga_sawa
    naga_sawa 2018/03/21
    未定義なんだ
  • 【謎】本当にあったfindコマンドの怖い話【検証編】

    3/21 22時頃: 質問編へのリンクを撤去し、タイトルを変更しました。(元のタイトルは「【謎】当にあったfindコマンドの怖い話【解決編】」) 昨日のエントリについて、実験にしてはケースが雑だったので再検証していきます。 【謎】当にあったfindコマンドの怖い話【おもしろ現象】 - くんすとの備忘録 ちなみにモチベーションは「問題を回避したい」ではなく「この現象の原因を知りたい」です1。 よろしくお願いします。 現象からしてfindコマンドが処理中に書き換えられたファイルを読み込んでいるのは明白です。 少しずつ仮設を立て見ていきましょう。 まぁまぁお付き合いください。 検証ケース ケース1: 10万ファイルで実行 ケース2: パイプを使わずfindコマンド一発にし、100万ファイルで実行 ケース3: ケース2を10万ファイルで実行 ケース4: ケース2を15万ファイルで実行 ケース1

    naga_sawa
    naga_sawa 2018/03/21
    回避策は色々あるとして/裏でディレクトリ内容が変わった場合のreaddir()の挙動はどうなってんだろう/mv後のエントリを拾い続けて無限ループになりそうだけど/未定義?/未定義と http://yarchive.net/comp/linux/readdir_nonatomicity.html
  • httpに置いたpreseed で自動インストール - それマグで!

    前回は initrd.gz を再構成したpreseedをやりました。 でもちょっと変更するのに、initrdを作りなおすのも面倒だし。preseed.cfg を書き換えるだけで済ませたい。 http に設置した preseed.cfg を取得して展開させたい とっても簡単 preseed.cfg を書いて http サーバーにファイル置いて 起動オプションにurlを書く 2回目からは preseed.cfg を編集するだけで済む preseed.cfg の設置 cp preseed.cfg /var/www/preseed.cfg 起動メニューを変更 これも、grub などのブートメニューを手動で編集すれば済むのです わたしはPXE環境なので、pxe-menu.cfg/defaultをこんな風に書きました。 default syslinux/menu.c32 timeout 30 onti

    httpに置いたpreseed で自動インストール - それマグで!
    naga_sawa
    naga_sawa 2018/01/09
    Debian系 http 経由 Preseed 自動インストール
  • [WIP]Preseed による Ubuntu Server の自動インストール入門(18.04 LTS対応版) - Qiita

    2020-03-15 追記 MAAS への誘い MAAS を入れると下記のようなことから開放されます。死にませんが、死ぬほど簡単なので試してみて さらに Juju を使ってやると OpenStack 等が簡単にデプロイできます References MAAS | Metal as a Service JAAS - Juju as a Service | Juju About Ubuntu Server 18.04 LTS で検証。 そう、時代は Ubuntu Server 。 Ubuntu Server 18.04 LTS で Preseed する際の注意点 これ超重要です。 Subiquity インストーライメージをそのまま流用しても d-i を使った Preseed インストールはできません。この目で boot: で止まったのを確認しました。 せいぜいイメージを見つけて boot=ca

    [WIP]Preseed による Ubuntu Server の自動インストール入門(18.04 LTS対応版) - Qiita
    naga_sawa
    naga_sawa 2018/01/09
    Debian系 Preseed 自動インストール
  • KickStartその1(KickStartによるLinux自動インストール概要) - のぴぴのメモ

    0.関連記事一覧 1.はじめに 1.1KickStartとは 1.2ざっくりした使い方 2.利用手順 2.1ファイル(ks.cfg)の編集 2.2ファイル検証 2.3インストーラを起動しキックスタートをローディングする 2.4インストール完了 3.補足(kickstartファイルを読み込ませるベストプラクティス) (1)ネットワークが利用可能な環境の場合 (2)ネットワークが使えない場合 (2)-1 インストーラをカスタマイズする (2)-2 フロッピーから読み取る (2)-3 KicStartファイル専用のdvd(isoファイル)を準備して差し替える (2)-4 USBメモリor外付けHDDを利用する 4.リファレンス(kickstartドキュメント) 0.関連記事一覧 KickStartによる自動インストールの説明 その1 KickStartによるOS自動インストールの全体の流れ(この

    KickStartその1(KickStartによるLinux自動インストール概要) - のぴぴのメモ
    naga_sawa
    naga_sawa 2018/01/09
    RHEL7系 kickstart 自動インストール
  • 定期的にtcpdumpをある期間だけ実行したいという時 - その手の平は尻もつかめるさ

    tcpdumpの提供する-Wオプションと-Gオプション,ならびにcrontabを併用するといける. tcpdumpの-Wオプションはログローテーションを行う回数で,-Gはそのローテーション期間を秒数で指定できる. 例えば $ tcpdump -w ./%Y%m%d%H%M%S.pcap -W1 -G60などとやると,ログローテーション1回,ローテーション期間は60秒となるので,つまり60秒tcpdumpを実行した後にexitする (ローテーション1回指定なので). ちなみに-wオプションで指定するファイル書き出し先についてはstrptimeと同じフォーマットが利用できるのでこういう時に便利. あとはcrontabでこのコマンドを仕込んでやるとOK (id:hirose31さんから「crontabでは%をエスケープする必要がある」との指摘があり修正しました). 55 * * * * tcpd

    定期的にtcpdumpをある期間だけ実行したいという時 - その手の平は尻もつかめるさ
    naga_sawa
    naga_sawa 2017/11/09
    ある時間帯だけ tcpdump を取るtips
  • カーネルエクスプロイト入門 - Linuxカーネル解析の基礎 - - るくすの日記 ~ Out_Of_Range ~

    0. はじめに 記事は、Linuxを対象としたカーネルエクスプロイトの入門記事です。 カーネルエクスプロイトというのは、Linuxや*BSD、Windowsを始めとするカーネル自身の脆弱性を突くエクスプロイトです。 基的にカーネルはシステム内で最高権限を持つ特権モードで動作しているので、ここを悪用されるとシステムの大部分(ほぼ全て)を掌握されてしまいます。 エクスプロイトと言うと、普通はユーザー空間で動作しているアプリケーションのバグをつく物が多いですが、これだと限られたレベルの権限しか奪えません。 SELinuxやjailを始めとする、OSレベルでの保護機構に阻まれるとたちまち効力を失ったりします。 しかし、カーネル自体の脆弱性をつくカーネルエクスプロイトを利用すると最高権限での任意コード実行が可能なため、大抵の保護機構はものともしません。 このカーネルエクスプロイトが特に効力を発揮

    カーネルエクスプロイト入門 - Linuxカーネル解析の基礎 - - るくすの日記 ~ Out_Of_Range ~
    naga_sawa
    naga_sawa 2017/07/18
    メモリ上書きが基本だからカーネルのメモリ管理を知らないと抜けない
  • ポートノッキングで10秒間だけsshdを公開する設定 - hnwの日記

    先日Twitterに次のような書き込みをしたところ思ったより反応が良かったので、詳細の設定を紹介します。 UDP53番、TCP443番、UDP123番とポートノッキングをするとTCP443番に10秒だけsshdが現れる、という中二病全開の設定をした。皆様にもお勧めしたい。— hnw (@hnw) 2017年3月26日 といっても特殊なことをしたわけではなく、knockdでポートノッキングの設定を行い、iptablesと組み合わせて実現しました。 ポートノッキングとは ポートノッキングというのは、決められたポートを決められた順番で叩くことでファイアーウォールに穴を空けられるような仕組みのことです。ポートノッキングを使えば、TCPの7000番、8000番、9000番の3ポートにパケットを送りつけると22番ポート (SSH) へのアクセスが許可される、といった設定ができます。 ポートノッキングの

    ポートノッキングで10秒間だけsshdを公開する設定 - hnwの日記
    naga_sawa
    naga_sawa 2017/05/26
    10秒間だけ開くsshd/日々殴られっぱなしの sshd が殴られログを吐かなくなるって実用性がある
  • Linux スケジューラーのコア実装とシステムコール - Qiita

    はじめに これは Linux Advent Calendar 2016 の第 11 日目の記事です。Linux のタスクスケジューラーのソースコードや関連するドキュメントなどを読んで分かったことをまとめました。とても長いです・・・ はじめにスケジューラーのアーキテクチャと重要な概念を紹介し、その後はスケジューラーコアとシステムコールの実装について分かったことを延々と述べます。調べきれなかったことや分からなかったことは TODO に残したので、コメント欄とかツイッターで教えてもらえると嬉しいです。間違いの指摘も大歓迎です。 ちなみに私が読み始めたきっかけは、スケジューラーのアーキテクチャ、スケジューリングアルゴリズム、スケジューリングアルゴリズムの切り替え方、nice 値やプロセッサアフィニティがスケジューリングに及ぼす影響、プリエンプションの流れ、マルチプロセッサにおけるタスクのロードバラ

    Linux スケジューラーのコア実装とシステムコール - Qiita
    naga_sawa
    naga_sawa 2017/01/13
    Linuxスケジューラの実装
  • Linuxネットワークドライバの開発 - Handwriting

    この記事はLinux Advent Calendar 2016 9日目の記事です。 遅刻してしまい申し訳ございません。。。 とある事情があって1ヶ月半ほど独自NICのLinux向けのネットワークドライバを開発していた。 今回はARM用のデバイスドライバを開発した。NICはXilinx社のFPGAであるZYBOを用いて開発した。 まだ十分に実用段階というわけではないが、ひとまず独自NIC経由でのpingやiperfが通ったので、後学のために知見を残しておきたい(誰得だ、という感じだが)。 ソースコードはまだ公開されていないが、そう遠くないうちに公開する予定(たぶん)。 はじめに Linuxのデバイスには キャラクタデバイス - バイト単位のデータ通信 (e.g. シリアルポート) ブロックデバイス - ブロック単位のデータ通信 (e.g. ディスク) ネットワークデバイス の3種類がある。ネ

    Linuxネットワークドライバの開発 - Handwriting
    naga_sawa
    naga_sawa 2017/01/13
    Linux ネットワークドライバの書き方
  • LinuxのI/OやCPUの負荷とロードアベレージの関係を詳しく見てみる - Qiita

    大人気TBSドラマ、「逃げるは恥だが役に立つ」でも話題になったインフラエンジニアという言葉ですが、今ではインターネットインフラを知らないまま開発をするのも難しい状況になっています。クラウドが一般化されたからといって単にリソースの調達が簡単になっただけで、つまりハードウェアの知識が無くても何とかやっていけるようになっただけであり、インフラの知識が要らなくなったなどということは全くなく、むしろdevopsの掛け声とともに、ソフトウェア開発者にインフラを見なければならない新たな責務が課せられたという、なかなか痺れる状況なのだろうと思います。 そういった中で、先日のさくらインターネットのAdvent Calendar最終日に「いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方」という記事を書かせて頂きましたが、今回はLinuxサーバの「負荷」と、ロードアベレージに関して、掘り下げ

    LinuxのI/OやCPUの負荷とロードアベレージの関係を詳しく見てみる - Qiita
    naga_sawa
    naga_sawa 2017/01/09
    負荷の発生場所とロードアベレージの関係
  • KVMのなかみ(KVM internals) - るくすの日記 ~ Out_Of_Range ~

    VMMの高速化について学ぶ過程でKVMのコードを読んだので、 メモ代わりに内部構造の解説記事を書きました。 KVMはqemuと連携して動作するため、以前私が書いたQEMU internals( http://rkx1209.hatenablog.com/entry/2015/11/15/214404 ) も合わせてご参照ください。また記事はある程度システムプログラムに慣れており、 VT-xや仮想化の基アーキテクチャは知っている物として進めます。 1.qemu-kvm,kvmの初期化 では早速見て行きましょう。まずはKVMの初期化の入り口となるqemu-kvmサイドから見ていきます。(ちなみに現在qemu-kvmはqemu家に統合されておりconfigを変えることでkvmを有効化する仕様になっています) qemuは/dev/kvmを通してKVMとやり取りを行います。全体的なアーキテクチ

    KVMのなかみ(KVM internals) - るくすの日記 ~ Out_Of_Range ~
    naga_sawa
    naga_sawa 2016/12/26
    ソースで読むKVMの中身
  • いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方 - Qiita

    さくらインターネット Advent Calendar最終日は、硬派にLinuxのメモリに関する基礎知識についてみてみたいと思います。 最近はサーバーを意識せずプログラミングできるようになり、メモリの空き容量について意識することも少なくなりましたが、いざ低レイヤーに触れなければいけないシチュエーションになった際に、OSを目の前に呆然とする人が多いようです。 基的にLinux のパフォーマンスについて、メモリをたくさんつめばいいとか、スワップさせないほうが良い とか、このあたりは良く知られたことだと思います。 ただ、なんとなく ps コマンドや free コマンド などの結果を見るだけでなく、もう少しメモリのことについて掘り下げてみてみたいと思います。 メモリとキャッシュ Linux におけるメモリの状態を大きく分けると「使用中のメモリ」「キャッシュ」「空きメモリ」「スワップ」の 4 つに分

    いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方 - Qiita
    naga_sawa
    naga_sawa 2016/12/26
    空きメモリとIOキャッシュの挙動
  • Linuxの不揮発メモリ対応について - Qiita

    (2019/6/12追記) 今なおこの記事を参照してくれる方がいらっしゃるのですが、現在は以下のスライドのほうが情報が新しいです。 記事は残しておきますが、新しい情報はこちらをご参照ください。 https://www.slideshare.net/ygotokernel/nvdimmlinux-137104084 はじめに Linux Advent Calendarの24日目の記事として不揮発メモリの状況について記載したいと思います。今回はkernelのソースの中とかのあまり技術的に深いところは突っ込まず、概略レベルです。(深いところはまだまだ勉強中の身です)。間違いなどがあればご指摘いただけると幸いです。 不揮発メモリとは これまでPCやサーバなどで主記憶装置といえば、電源を停止させたり再起動させるとデータがクリアされる揮発性のRAMが使われて来ました。この主記憶としてのメモリが不揮発

    Linuxの不揮発メモリ対応について - Qiita
    naga_sawa
    naga_sawa 2016/12/25
    nvmallocして不揮発メモリハンドルが返る。みたいになるんだろうか/メモリシステム扱いだとマルチブート環境でOS跨いだら情報引き継がれなくて破損するみたいな事故起きそう
  • LinuxのARPとL2スイッチのお話 - masayoshiの日記

    この記事は、はてなエンジニアアドベントカレンダー2016の12月19日の記事です。 developer.hatenastaff.com 昨日はid:taketo957くんの 10ms以下のレスポンスタイムを支える継続的負荷テスト - taketo957の日記 でした! Webオペレーションエンジニアのid:masayoshiです。 2016年に入社後、基盤チームとして仮想化、ネットワーク周りを中心に見ています。 さて、この記事ではLinuxのARPの挙動とその挙動から起こった問題を紹介しようと思います。 長々と記事を読みたくない人向けに結論をまとめるとLinuxのARPはTCP通信で使われ続ける限りキャッシュが飛ばないという挙動になるので、複数のL2スイッチにまたがったセグメントや非対称ルーティングをしている場合は気をつけましょうという話が書かれています。 今回紹介する事例自体は別に新規性

    LinuxのARPとL2スイッチのお話 - masayoshiの日記
    naga_sawa
    naga_sawa 2016/12/20
    パケット経路が非対称+LinuxのプロトコルスタックだとスイッチのMACテーブルが初回ARP以降更新されないのでexpireしたらブロードキャストが飛び交うようになる問題