지돌이의 블로그 입니다!

https://github.com/jc-lab/ubuntu-overlayfs-installer

 

jc-lab/ubuntu-overlayfs-installer

Contribute to jc-lab/ubuntu-overlayfs-installer development by creating an account on GitHub.

github.com

참고

 

힘들었따..ㅠㅠ

 

덕분에 cloud-init 에 많이 배우게 되었다.

 

hostname 및 netplan 등을 cloud-init을 통해 설정한다.

 

datasource에는 몇가지 방법이 있는데 nocloud-net의 경우 /var/lib/cloud/seed/nocloud-net/에 meta-data 와 user-data가 있는 경우 활성화된다.

 

이를 rootfs 이미지 안에 넣지 않고 boot partition으로 빼려고 하는데 이게 쉽지 않다..ㅋ

 

단순히 cloud-init-local.service 전에 서비스를 띄어서 boot partition에서 메타데이터를 복사하면 될 거 같았는데 그 이전에

 

systemd을 통해 작동하는 cloud-init-generator에서부터 해당 파일을 확인하기 때문에 위와 같은 작업은 먹히지 않았다. (generator 가 작동할 당시에는 메타데이터가 없기 때문에 cloud-init.target 자체를 비활성화 한다)

Comment +0

지난 번 rook-ceph 사용시 XFS파일시스템을 사용하면서 osd가 있는 볼륨에서 rbd를 사용하면 Kernel에서 Hang이 걸리는 문제가 있었다.

따라서 storage전용 node에서는 Scheduling을 막아야 한다.

이는 taint 으로 가능하다.

$ kubectl label nodes <storage-node-name> node-type.cluster.label/ceph-storage=true
$ kubectl taint nodes <storage-node-name> node-type.cluster.label/ceph-storage=true:PreferNoSchedule

# CephCluster 에서 아래 내용을 꼭 추가해줘야 한다!

  placement:
    osd:
      tolerations:
      - key: node-type.cluster.label/ceph-storage
        operator: Exists

 잘 된다!

Comment +0

스펙

복잡함..ㅋ HDD여러개.. 네트워크 1Gbps
꾸진..... node들...
가벼운 참고용...

Kubernetes : v1.16.8
rook-ceph : v14.2.8

전체..

Type transactions (per sec) queries (per sec) ignored errors reconnects
MariaDB & HostPath 38.43 (100%) 768.62 (100%) X X
MariaDB & Ceph 20.40 (53%) 407.91 (53%) X X
MariaDB-Galera & CEPH 16.73 (43.5%) 339.32 (44.1%) 16 (0.25/s) X

MariaDB & HostPath

DBMS : mariadb (without clustering)
storage : hostpath (direct)

$ sysbench /usr/share/sysbench/oltp_read_write.lua --db-driver=mysql --threads=10 --time=60 ... --tables=10 --table_size=10000 --histogram run
sysbench 1.0.11 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 10
Initializing random number generator from current time


Initializing worker threads...

Threads started!

Latency histogram (values are in milliseconds)
       value  ------------- distribution ------------- count
      97.555 |                                         1
     139.846 |**                                       10
     142.387 |**                                       10
     144.974 |*                                        6
     147.608 |**                                       12
     150.290 |*****                                    31
     153.021 |**                                       14
     155.801 |*                                        7
     158.632 |******                                   35
     161.514 |******************                       110
     164.449 |                                         1
     167.437 |****************                         93
     170.479 |**********************************       204
     173.577 |************                             73
     176.731 |****                                     26
     179.942 |**************************************** 239
     183.211 |**********                               61
     186.540 |*                                        8
     189.929 |*******************************          184
     193.380 |**********                               60
     196.894 |***                                      20
     200.472 |***************                          92
     204.114 |***                                      17
     207.823 |*                                        8
     211.599 |****                                     24
     215.443 |                                         1
     219.358 |****                                     21
     223.344 |                                         2
     227.402 |*                                        6
     231.534 |*****                                    28
     235.740 |                                         1
     240.024 |*****                                    30
     244.385 |*                                        7
     248.825 |*******                                  44
     253.346 |**                                       14
     257.950 |**                                       10
     262.636 |********                                 49
     267.408 |***                                      15
     272.267 |******                                   36
     277.214 |**                                       13
     282.251 |**********                               58
     292.601 |***                                      17
     297.917 |*                                        5
     303.330 |***                                      18
     308.842 |****                                     21
     314.453 |**                                       9
     320.167 |***                                      19
     325.984 |*                                        4
     331.907 |*******                                  40
     337.938 |*****                                    27
     344.078 |*                                        6
     350.330 |*******                                  39
     356.695 |**                                       10
     363.176 |****                                     22
     369.775 |****                                     25
     376.494 |*                                        3
     383.334 |*******                                  42
     390.299 |***                                      20
     397.391 |                                         1
     404.611 |***                                      15
     411.963 |***                                      16
     419.448 |***                                      16
     427.069 |**                                       10
     434.829 |**                                       9
     442.730 |***                                      16
     450.774 |***                                      18
     458.964 |*                                        8
     467.304 |*                                        6
     475.794 |                                         1
     484.439 |*                                        7
     493.242 |***                                      20
     502.204 |**                                       11
     511.328 |***                                      16
     520.619 |*                                        4
     530.078 |***                                      17
     539.710 |**                                       11
     549.516 |**                                       12
     559.501 |*                                        5
     569.667 |*                                        5
     580.017 |                                         2
     590.556 |*                                        4
     601.286 |*                                        3
     612.211 |*                                        6
     623.335 |*                                        6
     634.661 |*                                        4
     646.192 |*                                        7
     657.933 |**                                       10
     669.888 |                                         2
     682.059 |*                                        4
     694.452 |*                                        3
     707.070 |*                                        3
     719.917 |*                                        4
     732.998 |                                         1
     759.876 |*                                        4
     773.683 |                                         1
     802.053 |*                                        3
     816.626 |                                         2
     846.572 |*                                        3
     893.561 |                                         1
     926.327 |                                         2
     977.743 |*                                        3
    1013.597 |                                         1
    1032.013 |                                         1

SQL statistics:
    queries performed:
        read:                            32368
        write:                           9248
        other:                           4624
        total:                           46240
    transactions:                        2312   (38.43 per sec.)
    queries:                             46240  (768.62 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          60.1592s
    total number of events:              2312

Latency (ms):
         min:                                 97.62
         avg:                                259.75
         max:                               1034.92
         95th percentile:                    530.08
         sum:                             600546.68

Threads fairness:
    events (avg/stddev):           231.2000/5.93
    execution time (avg/stddev):   60.0547/0.04

MariaDB & Ceph

DBMS : mariadb (without clustering)
storage class : hdd & ceph

$ sysbench /usr/share/sysbench/oltp_read_write.lua --db-driver=mysql --threads=10 --time=60 ... --tables=10 --table_size=10000 --histogram run
sysbench 1.0.11 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 10
Initializing random number generator from current time


Initializing worker threads...

Threads started!

Latency histogram (values are in milliseconds)
       value  ------------- distribution ------------- count
      64.474 |*************                            8
      66.838 |******                                   4
      68.053 |*****                                    3
      69.289 |**                                       1
      70.548 |******                                   4
      71.830 |**                                       1
      73.135 |**********                               6
      74.464 |**                                       1
      75.817 |*************                            8
      77.194 |*****************************            18
      80.025 |**********                               6
      81.479 |***********                              7
      84.467 |********                                 5
      86.002 |********                                 5
      87.564 |***********                              7
      89.155 |*********************                    13
      90.775 |***                                      2
      92.424 |***********                              7
      94.104 |*****                                    3
      95.814 |**************                           9
      97.555 |***                                      2
      99.327 |**                                       1
     101.132 |****************                         10
     102.969 |*************                            8
     104.840 |**********                               6
     106.745 |**************                           9
     110.659 |**                                       1
     116.802 |*****************************            18
     118.924 |***                                      2
     121.085 |***********                              7
     123.285 |******************                       11
     125.525 |**                                       1
     127.805 |****************                         10
     130.128 |*********************                    13
     132.492 |***                                      2
     134.899 |************************                 15
     137.350 |**********                               6
     139.846 |**                                       1
     142.387 |**************************************** 25
     144.974 |***********                              7
     147.608 |***                                      2
     150.290 |**************************               16
     153.021 |********                                 5
     158.632 |********                                 5
     161.514 |**                                       1
     164.449 |********                                 5
     167.437 |**********                               6
     170.479 |*****                                    3
     173.577 |*************                            8
     176.731 |*************                            8
     179.942 |**********                               6
     186.540 |**********                               6
     189.929 |**                                       1
     196.894 |**                                       1
     200.472 |***********                              7
     219.358 |*********************                    13
     223.344 |***                                      2
     227.402 |**************                           9
     235.740 |**********************                   14
     240.024 |*************                            8
     244.385 |**************                           9
     248.825 |**********                               6
     253.346 |*************                            8
     257.950 |**********************                   14
     262.636 |**                                       1
     267.408 |******************                       11
     272.267 |*************                            8
     277.214 |***                                      2
     282.251 |*************                            8
     287.379 |*********************                    13
     297.917 |**********                               6
     303.330 |******                                   4
     308.842 |**************                           9
     314.453 |******                                   4
     320.167 |************************                 15
     325.984 |**************                           9
     331.907 |*************                            8
     337.938 |*************                            8
     344.078 |**********************                   14
     350.330 |******                                   4
     356.695 |*****                                    3
     363.176 |*********************                    13
     369.775 |*************************************    23
     376.494 |**************                           9
     383.334 |**********************                   14
     390.299 |**************                           9
     404.611 |******************************           19
     411.963 |****************                         10
     419.448 |**************                           9
     427.069 |**********                               6
     434.829 |***                                      2
     442.730 |******************************           19
     450.774 |******************                       11
     458.964 |*****************************            18
     467.304 |***************************              17
     475.794 |***********                              7
     484.439 |************************                 15
     493.242 |******************                       11
     502.204 |*********************                    13
     511.328 |******************                       11
     520.619 |**************                           9
     530.078 |******************                       11
     539.710 |****************                         10
     549.516 |*****                                    3
     559.501 |*********************                    13
     580.017 |******************************           19
     601.286 |********                                 5
     612.211 |****************                         10
     623.335 |*******************                      12
     634.661 |****************                         10
     646.192 |**************                           9
     657.933 |**************************************** 25
     669.888 |******************                       11
     682.059 |****************                         10
     694.452 |********                                 5
     707.070 |*******************                      12
     719.917 |******                                   4
     732.998 |******                                   4
     746.316 |*******************                      12
     759.876 |******************                       11
     773.683 |******                                   4
     787.741 |***********                              7
     802.053 |**                                       1
     816.626 |**************                           9
     831.464 |*************                            8
     846.572 |******                                   4
     861.954 |***********                              7
     877.615 |******************                       11
     893.561 |**********************************       21
     926.327 |*******************                      12
     960.295 |*********************                    13
     977.743 |****************                         10
    1032.013 |****************                         10
    1050.764 |*************                            8
    1069.856 |*************                            8
    1089.295 |**********                               6
    1109.087 |*****                                    3
    1149.757 |*********************                    13
    1170.648 |****************                         10
    1191.918 |******                                   4
    1213.575 |**                                       1
    1235.625 |*****                                    3
    1258.076 |***********                              7
    1304.208 |*****                                    3
    1401.611 |***                                      2
    1427.078 |***                                      2
    1453.007 |***********                              7
    1479.408 |**                                       1
    1533.657 |**                                       1
    1561.523 |**                                       1
    1589.895 |***                                      2
    1648.196 |*****                                    3
    1708.634 |*****                                    3
    1739.679 |***                                      2
    1771.289 |**                                       1
    1938.162 |********                                 5
    1973.377 |***                                      2
    2238.469 |********                                 5
    2728.806 |***                                      2
    3095.377 |*****                                    3
    3574.989 |**                                       1
    4855.311 |**                                       1

SQL statistics:
    queries performed:
        read:                            17234
        write:                           4924
        other:                           2462
        total:                           24620
    transactions:                        1231   (20.40 per sec.)
    queries:                             24620  (407.91 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          60.3554s
    total number of events:              1231

Latency (ms):
         min:                                 64.54
         avg:                                489.08
         max:                               4820.09
         95th percentile:                   1170.65
         sum:                             602056.82

Threads fairness:
    events (avg/stddev):           123.1000/2.59
    execution time (avg/stddev):   60.2057/0.07

MariaDB-Galera & Ceph

DBMS : mariadb-galera (3 replica)
storage class : hdd & ceph

$ sysbench /usr/share/sysbench/oltp_read_write.lua --db-driver=mysql --threads=10 --time=60 ... --tables=10 --table_size=10000 --histogram run
sysbench 1.0.11 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 10
Initializing random number generator from current time


Initializing worker threads...

Threads started!

Latency histogram (values are in milliseconds)
       value  ------------- distribution ------------- count
       8.895 |**                                       1
       9.560 |**                                       1
       9.734 |**                                       1
       9.910 |*****                                    3
      10.090 |***                                      2
      10.274 |******                                   4
      10.460 |*****                                    3
      10.651 |********                                 5
      10.844 |*************                            8
      11.041 |************************                 15
      11.242 |******************                       11
      11.446 |**************************************   24
      11.654 |**********************************       21
      11.866 |*************************************    23
      12.081 |***********************************      22
      12.301 |*************************************    23
      12.524 |*****************************            18
      12.752 |****************                         10
      12.984 |********************************         20
      13.219 |**************************               16
      13.460 |************************                 15
      13.704 |****************                         10
      13.953 |*******************                      12
      14.207 |*************************************    23
      14.465 |*****************************            18
      14.728 |**************************************   24
      14.995 |************************                 15
      15.268 |*****************************            18
      15.545 |****************                         10
      15.828 |*********************                    13
      16.115 |**************************************** 25
      16.408 |*********************                    13
      16.706 |**************************               16
      17.010 |************************                 15
      17.319 |****************                         10
      17.633 |****************                         10
      17.954 |***********                              7
      18.280 |**********                               6
      18.612 |******                                   4
      18.950 |********                                 5
      19.295 |***                                      2
      19.645 |*****                                    3
      20.002 |*****                                    3
      20.366 |********                                 5
      20.736 |********                                 5
      21.112 |******                                   4
      21.886 |**                                       1
      22.284 |**                                       1
      22.689 |*****                                    3
      23.948 |*****                                    3
      24.384 |*****                                    3
      24.827 |******                                   4
      25.278 |**                                       1
      25.737 |*****                                    3
      27.659 |***                                      2
      29.725 |**                                       1
      31.375 |*****                                    3
      33.116 |******                                   4
      33.718 |**                                       1
      34.330 |**                                       1
      36.236 |**                                       1
      38.247 |**                                       1
      38.942 |**                                       1
      49.213 |**                                       1
      50.107 |**                                       1
      51.018 |**********                               6
      52.889 |**                                       1
      53.850 |**                                       1
      54.828 |**                                       1
      55.824 |********                                 5
      56.839 |**                                       1
      64.474 |******                                   4
      65.645 |**********                               6
      66.838 |***                                      2
      69.289 |**                                       1
      71.830 |*****                                    3
      73.135 |*****                                    3
      80.025 |**                                       1
      81.479 |**                                       1
      92.424 |**                                       1
      94.104 |**                                       1
     104.840 |***                                      2
     106.745 |********                                 5
     108.685 |***                                      2
     116.802 |*****                                    3
     118.924 |**                                       1
     123.285 |*****                                    3
     125.525 |********                                 5
     130.128 |**                                       1
     144.974 |**********                               6
     158.632 |********                                 5
     183.211 |*****                                    3
     204.114 |******                                   4
     207.823 |**                                       1
     211.599 |**********                               6
     248.825 |**                                       1
     272.267 |******                                   4
     277.214 |**                                       1
     331.907 |********                                 5
     337.938 |******                                   4
     350.330 |******                                   4
     356.695 |*************                            8
     363.176 |***                                      2
     369.775 |**********                               6
     376.494 |******                                   4
     383.334 |**********                               6
     390.299 |***********                              7
     397.391 |**************                           9
     404.611 |********                                 5
     411.963 |***                                      2
     434.829 |***                                      2
     442.730 |*****                                    3
     450.774 |***                                      2
     458.964 |**********                               6
     467.304 |**********                               6
     475.794 |*****                                    3
     484.439 |***                                      2
     493.242 |********                                 5
     502.204 |**********                               6
     530.078 |***                                      2
     539.710 |**                                       1
     549.516 |********                                 5
     559.501 |*************                            8
     569.667 |*****                                    3
     580.017 |*****                                    3
     590.556 |***                                      2
     612.211 |**                                       1
     623.335 |**                                       1
     634.661 |********                                 5
     646.192 |*************                            8
     657.933 |*****                                    3
     669.888 |**                                       1
     694.452 |******                                   4
     719.917 |******                                   4
     732.998 |******                                   4
     746.316 |***                                      2
     759.876 |***                                      2
     773.683 |**********                               6
     787.741 |******                                   4
     802.053 |******                                   4
     816.626 |**************                           9
     831.464 |**                                       1
     846.572 |****************                         10
     861.954 |***                                      2
     877.615 |*****                                    3
     893.561 |**                                       1
     926.327 |********                                 5
     943.158 |**                                       1
     960.295 |*****                                    3
     977.743 |********                                 5
     995.508 |******************                       11
    1013.597 |********                                 5
    1032.013 |*****                                    3
    1050.764 |***                                      2
    1069.856 |***                                      2
    1089.295 |****************                         10
    1109.087 |**                                       1
    1129.239 |*************                            8
    1170.648 |***                                      2
    1258.076 |***                                      2
    1327.905 |**                                       1
    1352.033 |********                                 5
    1376.599 |*******************                      12
    1401.611 |***                                      2
    1427.078 |*************                            8
    1479.408 |*****                                    3
    1506.288 |********                                 5
    1533.657 |*******************                      12
    1561.523 |*****                                    3
    1648.196 |***                                      2
    1678.143 |***                                      2
    1708.634 |***********                              7
    1739.679 |********                                 5
    1771.289 |******                                   4
    1803.472 |********                                 5
    1903.575 |*****                                    3
    1973.377 |**                                       1
    2009.233 |**                                       1
    2045.740 |***                                      2
    2082.910 |***********                              7
    2120.756 |**                                       1
    2159.289 |*************                            8
    2198.523 |******                                   4
    2238.469 |**                                       1
    2405.646 |********                                 5
    2493.859 |***                                      2
    2585.308 |**                                       1
    2632.282 |**                                       1
    2778.387 |*****                                    3
    2932.602 |**                                       1
    3040.139 |**                                       1
    3386.993 |**                                       1
    3448.533 |**                                       1
    3574.989 |**                                       1
    3639.945 |***********                              7
    3706.081 |**                                       1
    3773.420 |**                                       1
    4055.231 |*****                                    3
    4128.913 |*****                                    3
    4437.275 |********                                 5
    4599.987 |*****                                    3
    4855.311 |***                                      2
    4943.530 |**********                               6
    5033.352 |**                                       1
    5124.806 |**                                       1
    5507.544 |***                                      2
    6713.971 |***                                      2
    7215.393 |**                                       1
    9284.145 |*****                                    3

SQL statistics:
    queries performed:
        read:                            15162
        write:                           3509
        other:                           2969
        total:                           21640
    transactions:                        1067   (16.73 per sec.)
    queries:                             21640  (339.32 per sec.)
    ignored errors:                      16     (0.25 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          63.7729s
    total number of events:              1067

Latency (ms):
         min:                                  8.93
         avg:                                579.15
         max:                               9363.55
         95th percentile:                   2405.65
         sum:                             617956.25

Threads fairness:
    events (avg/stddev):           106.7000/10.81
    execution time (avg/stddev):   61.7956/1.50

Comment +0

소스 초반에..

import * as uuids from 'uuid';
const promiseMap: Map < string, any > = new Map();
const OrigPromise: PromiseConstructor = global.Promise as PromiseConstructor;
function arrayArguments(input: IArguments): any[] {
    const arr = [];
    for(let i=0; i<input.length; i++) {
        arr[i] = input[i];
    }
    return arr;
}
global.Promise = function(func: any) {
    const stack = new Error().stack;
    return new OrigPromise((resolve, reject) => {
        const uuid = uuids.v4();
        promiseMap.set(uuid, {
            uuid,
            stack
        });
        func(function() {
            promiseMap.delete(uuid);
            resolve.call(null, ...arrayArguments(arguments));
        }, (err: any) => {
            promiseMap.delete(uuid);
            reject(err);
        });
    });
}

참고로 위는 typescript 소스이다.

위 내용을 추가한 뒤에 멈춘 Promise를 보고 싶을 때 showPendingPromise()을 호출하면 된다.

대충

setTimeout(() => showPendingPromise(), 1000);

이렇게 몇초뒤에 출력해도 되구...

그럼 Promise를 생성한 스택프레임을 보여준다.

===== 추가 =====
Proxy가 사용가능한 경우 아래가 더 낫다

import * as uuids from 'uuid';
const promiseMap: Map < string, any > = new Map();
const OrigPromise: PromiseConstructor = global.Promise as PromiseConstructor;
function arrayArguments(input: IArguments): any[] {
    const arr = [];
    for(let i=0; i<input.length; i++) {
        arr[i] = input[i];
    }
    return arr;
}
function newPromise(func: any) {
    const stack = new Error().stack;
    return new OrigPromise((resolve, reject) => {
        const uuid = uuids.v4();
        promiseMap.set(uuid, {
            uuid,
            stack
        });
        func(function() {
            promiseMap.delete(uuid);
            resolve.call(null, ...arrayArguments(arguments));
        }, (err: any) => {
            promiseMap.delete(uuid);
            reject(err);
        });
    });
}

function showPendingPromise() {
    for (let item of promiseMap.entries()) {
        console.log(item[1]);
    }
}

setInterval(() => showPendingPromise(), 3000);

(global as any).Promise = new Proxy((global as any).Promise, {
    construct(target: any, argArray: any, newTarget?: any): object {
        return newPromise(argArray[0]);
    }
});

Comment +0

helm으로 bitnami/mariadb-galera를 설치했을 때 아래와 같은 오류가 난다. (2020-04-23기준 mariadb-galera-2.0.1 차트)

 

(bitnami github에서 받아서 설치하면 Access denied 'root'... 오류가 난다.. 그냥 github안쓰고 직접 해야 오류 안난다..

WSREP_SST: [ERROR] xtrabackup_checkpoints missing, failed innobackupex/SST on donor (20200423 05:34:56.967)
WSREP_SST: [ERROR] Cleanup after exit with status:2 (20200423 05:34:56.969)

 

이런 경우 helm install 하자마자 statefulset의 replica를 1로 바꾼뒤에 첫번째 파드가 뜨면 해당 mysql 서버에 접속해서 mariabackup 사용자에 PROCESS, RELOAD 권한을 추가한 뒤 적용하고 replica를 원래걸로 바꾸면 된다.

Comment +0

https://bintray.com/jc-lab/java-utils/asn1-stream-reader

 

Package asn1-stream-reader - jc-lab

 

bintray.com

 

전에 node.js 에서 ASN1을 Stream형태로 파싱하는 라이브러리를 만든 적이 있습니다.

https://ablog.jc-lab.net/219

 

asn1-stream: Node.JS asn1 stream 파서

https://www.npmjs.com/package/asn1-stream asn1-stream ASN1 parser with a stream interface www.npmjs.com asn1을 stream으로 파싱하는걸 찾았는데 없네요... infinite length 파싱은 구현은 대충 해 놓았지만..

ablog.jc-lab.net

이번에는 해당 라이브러리를 Java용 라이브러리로 만들었습니다.

jcenter에 배포되었으니 jcenter repository을 통해 사용하실 수 있습니다.

 

ASN1Object는 많이들 사용하시는 bouncycastle을 사용하기 때문에 불편함은 없을 것입니다.

 

infinite length(BER)/fixed length(DER) 형식 모두 지원하며 node.js용으로 만든 asn1-stream처럼 stripSequence 최상위 Sequence대신 그 하위 객체들을 리턴하는 기능 또한 지원합니다.

 

포함되어 있는 CallbackInputStream / QueueInputStream 등을 사용하여 폭넓게 원하시는 어플리케이션에 적용 가능하며 Callback을 통한 출력 및 Non-blocking 출력이 가능합니다. (애초에 Nonblocking 쓰려고 만든거라..ㅎㅎ bc의 ASN1InputStream은 Non-blocking이 안돼요ㅠㅠ)

Comment +0

github를 사칭한 피싱메일도 오네요..

 

실제 제가 github에서 사용하고 있는 메일 주소로 아래와 같은 메일이 왔습니다.

 

디자인이 깔끔해서 진짜같네요...ㅎㅎ

 

링크를 클릭하면 두번째 사진 페이지로 갑니다.

 

그런데 아무렇게나 입력하면 비밀번호가 틀렸다고 나오네요.. 보통 피싱사이트를 보면 무조건 맞다고 하거나 진짜 페이지로 니동시키는데 그러진 않습니다.

 

실제로 정보를 확인하는 것 일수도요..

 

암튼 이젠 계장탈취 뿐 아니라 소스까지 탐을 내나 봅니다.. 깃허브 피싱이라니.. 다들 조심하시길 바랍니다.

 

Comment +0

WIMCreateFile에는 CreateFile와는 달리 dwShareMode옵션이 없다.

 

이를 사용할 수 있는지 확인해 보기 위해 분석을 시도한다.

 

volatile const void* p_WIMCreateFile = WIMCreateFile;
const void* p_CreateFileW = CreateFileW;
HANDLE hTemp = CreateFileW(_T("E:\\ISO\\boot.wim"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
CloseHandle(hTemp);
HANDLE hWim = WIMCreateFile(_T("E:\\ISO\\boot.wim"), WIM_GENERIC_READ, WIM_OPEN_EXISTING, 0, 0, 0);
printf("hWim = %p\n", hWim);

 

일단 위 코드를 실행하고 VisualStudio Debug Window중에 디스어셈블창을 열어서 CreateFile의 구현에 브레이크를 건다.

 

[사진1] _CreateFileW@28에 브레이크가 걸린 모습

CreateFileW의 구조는 아래와 같다.

HANDLE CreateFileW(
  LPCWSTR               lpFileName,
  DWORD                 dwDesiredAccess,
  DWORD                 dwShareMode,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  DWORD                 dwCreationDisposition,
  DWORD                 dwFlagsAndAttributes,
  HANDLE                hTemplateFile
);

WIMFileCreateFile에서 _CreateFileW@28을 호출하는 부분을 보면..

[사진2] WIMFileCreateFile함수내에서 _CreateFileW@28 호출하는 부분

dwShareMode에 단순히 0이 아니라 *(ebp+8)의 값을 넣는것을 볼 수 있다. 희망이 있다!

 

[사진3] (사진2)에서 dwShareMode의 값

근데 값을 보면 이미 FILE_SHARE_READ 가 있다... 근데 왜 CreateFile으로 열고 있으면 WIMCreateFile이 안되었던 거지??? 뭔가 잘못했었나 보다...ㅠㅠ

 

아쉬우니 좀더 뒤져보면...

 

v7 = GetWimDesiredAccess(v3) & 0x40000000 /* GENERIC_WRITE */;
v20 = (v7 == 0) ? FILE_SHARE_READ : 0;
if ( GetFlagsAndAttributes(v3) & 0x40 /* FILE_ATTRIBUTE_DEVICE */)
  dwShareMode = 3; // FILE_SHARE_READ | FILE_SHARE_WRITE
else
  dwShareMode = v20;

결국...
GENERIC_WRITE가 없으면 FILE_SHARE_READ를 자동으로 넣는다.

 

끝.

Comment +0

Kubernetes Offline 사용

개요

Kubernetes(이하 K8s)를 인터넷과 연결되지 않은 상태(이하 Offline 상태)에서 정상적으로 동작시킬 수 있도록 한다. K8s는 기본적으로 Docker Image를 인터넷 상에 있는 Docker Registry에서 받아오게 된다. 잘 알려진 Docker Registry는 docker.io, quay.io, k8s.gcr.io 등이 있다. Offline 상태에서는 Docker Image를 Online에 있는 Docker Registry에서 받아올 수 없기 때문에 필요한 이미지를 Offline상에 가지고 있어야 한다. 이를 위해 필요한 사항들을 정리한다.

고려해야 할 부분들

1. K8s 설치

여기서는 K8s 설치를 microk8s를 통한 설치를 사용한다. Ubuntu에서 microk8s는 snap으로 설치할 수 있다. snap은 어플리케이션을 패키징화 하는 것으로 추가적인 dependency없이 즉시 설치 가능하게 한다. microk8s을 오프라인 설치하기 위해 snap을 미리 다운받아야 한다.

2. K8s 내부 동작

K8s는 Pod의 Container를 동작시키기 위한 Docker Image뿐만 아니라 sandbox image 가 필요하다. 이에 대해서는 159. [Kubernetes] Pause 컨테이너의 역할과 원리 (원문: The Almighty Pause Container) 을 참고하길 바란다. 간단히 설명하면 sandbox container는 Pod의 부모 컨테이너로써 하나의 Pod의 Container들을 관리하고 동일한 namespace를 공유할 수 있게 해 주는 K8s의 필수적인 컨테이너이다.

sandbox image 의 위치는 /var/snap/microk8s/current/args/containerd.toml/var/snap/microk8s/current/args/containerd-template.toml 에서 plugins -> plugins.cri -> sandbox_image 에서 위치를 지정할 수 있다. 기본 위치는 k8s.gcr.io/pause:3.1 이다.

(해당 containerd argument는 clustered 서버 구성에서도 자기 자신의 node에만 적용된다.)

Offline 상태에서 K8s을 동작시키기 위해서는 해당 이미지 또한 Offline 상에 저장되어 있어야 한다.

3. Helm

$ microk8s.enable helm 명령을 통해 helm을 쉽게 설치할 수 있다. microk8s.enable 명령은 내부적으로 /snap/microk8s/current/actions/enable.helm.sh을 실행시킨다. 해당 파일은 https://get.helm.sh/helm-$HELM_VERSION-linux-$(arch).tar.gz 을 다운받아 실행한다. 하지만 Offline인 경우에 해당 파일을 다운받을 수 없을 것이다. 따라서 microk8s에 helm을 설치하려면 이를 미리 다운받아 놓아야 한다.

뿐만 아니라 helm을 설치하는 과정에서 _tiller_이미지를 Online에서 다운받게 된다.

4. 사용자가 구성하는 Docker Image

microk8s에서는 microk8s.enable 명령을 통해 local registry를 설치할 수 있다. 이렇게 설치한 local registry의 주소에서 Docker Image를 가져오게 하면 문제되지 않는다.

고려해야 할 것들 총정리...

  1. microk8s 설치
  2. sandbox image (pause 이미지)
  3. microk8s.enable시 사용되는 shell script & helm & tiller
  4. 사용자 docker image들

오프라인 설치 방법

1. microk8s 설치

snap을 오프라인으로 설치하는 방법은 아래와 같다.

Online 상태의 Ubuntu Machine에서 패키지 다운로드

$ snap download microk8s
# 이후 microk8s_xxxx.snap, microk8s_xxxx.assert 두개의 파일이 생성된다.

Offline 상태의 Ubuntu Machine에서 패키지 설치

$ sudo snap ack microk8s_xxxx.assert
$ sudo snap install microk8s_xxxx.snap --classic

2.1. Docker Image

k8s 노드가 한개일 경우에는 야매로 containerd에 이미지를 저장시켜 놓을 수 있다. 그런데 containerd v1.2.x 버전(v1.3.x 이전)에서는 image export/import에 버그(#2862 참고)가 있다... 일단 기본적으로..

$ sudo microk8s.ctr image pull k8s.gcr.io/pause:3.1
k8s.gcr.io/pause:3.1:                                                             resolved
...
elapsed: 2.2 s                                                                    total:  3.7 Ki (1.7 KiB/s)
unpacking linux/amd64 sha256:f78411e19d84a252e53bff71a4407a5686c46983a2c2eeed83929b888179acea...
done

$ sudo microk8s.ctr image export pause.tar k8s.gcr.io/pause:3.1
ctr: export failed: content digest sha256:c84b0a3a07b628bc4d62e5047d0f8dff80f7c00979e1e28a821a033ecda8fe53: not found (헐?)

이렇게 오류가 나는데 이를 해결하기 위해서는 image pull 에 --all-platforms 옵션을 줘서 모든 platform (i386/arm64/arm/arm64/ppc... * linux/windows)의 이미지를 한번에 받아야 하는데 그러면 이미지 크기가 어머어마 하다... 여러 Platform에서 k8s을 동작시킨다면 --all-platforms이 필요하겠지만 그렇지 않다면 특정 platform만 export할 수 있어야 하는데 그럴려면 containerd 1.3.x 을 사용해야 한다.

$ sudo apt install containerd

ubuntu 18.04에서는 기본적으로 apt-get으로 containerd를 설치하면 1.3.3 버전이 설치된다.

$ sudo ctr -a /var/snap/microk8s/common/run/containerd.sock image pull k8s.gcr.io/pause:3.1
$ sudo ctr -a /var/snap/microk8s/common/run/containerd.sock image export --platform linux/amd64 pause.tar k8s.gcr.io/pause:3.1

이렇게 하면 linux/amd64용으로 pause이미지가 export된다.

$ sudo ctr -a /var/snap/microk8s/common/run/containerd.sock image import --base-name k8s.gcr.io/pause pause.tar

이렇게 임포트!

2.2. Docker Registry 사용하기

하지만 위 방법은 노드가 2개 이상이면 골치아파 진다. 모든 노드에 이미지를 저장시켜놓아야 하기 때문이다. 따라서 registry를 구축해놓고 해당 registry에 필요한 이미지들을 모아놓는 것이 좋다.

microk8s에는 local registry을 간편하게 설치할 수 있다. microk8s.enable registry 하면 끝이다! 하지만 여기에는 큰 문제가 하나 있다...

  1. 닭이 먼저냐 달걀이 먼저냐...

    local registry를 돌릴려면 pause 이미지와 registry 이미지가 필요하다.. 근데 이건 어디서 받아오냐...? 클러스터링해서 ceph을 쓰려면 ceph이미지도 필요한데 ceph이미지는 또 어디서 받아오고...?
    물론.. hostPath를 이용한다면 pause이미지와 registry이미지만 먼저 containerd에다가 저장시켜놓고 해당 노드 주소를 이용해서 registry를 이용하면 된다.

  2. 그런데 해당 노드가 죽으면...? 클러스터의 중요한 장점인 HA(고가용성)이 떨어진다..

  3. 근데 또... ctr에 버그가 있어...ㅠㅠ 이어서 설명함..

  4. 그러고 보니 docker 리포 주소를 다 바꾸는 수고가 엄청난데...? 이것도 이어서...

(3. ctr에 버그가 있어... - 1)

일단 registry만 Kubernetes밖에 저장한다 치고, 위에서 export한 도커 이미지를 registry에 다시 부어야 한다.

한가지 예시이다.

$ ctr -a /var/snap/microk8s/common/run/containerd.sock image push 127.0.0.1:32000/quay.io/cephcsi/cephcsi:v1.2.2 quay.io/cephcsi/cephcsi:v1.2.2
...
elapsed: 2.3 s                                                                    total:  302.8  (131.6 MiB/s)
ctr: failed commit on ref "manifest-sha256:fd16e128b5831a4c73e57181b890445c4eb73726f5210ebc8e408855f99912dd": unexpected status: 400 Bad Request

이건 뭘까... (모든 이미지가 위 오류가 나진 않는다. 잘 되는 이미지만 테스트 해보고 offline지역으로 이동해서 이런 이미지를 push 하려고 하면 대략난감... => 물론 나는 이러한 대략난감을 경험했다.. 화가난다.. containerd가 미워진다.. 근데 containerd만큼 잘 만든것도 없고 containerd를 안쓰면 k8s못쓴다..ㅎㅎ)

위 tar 파일을 풀어보면 index.json이 나오는데 manifest파일의 mediaType이 application/vnd.oci.image.manifest.v1+json 인것들이 그렇다. 일단... v2에 맞게 일일히 수정해주면 되긴 하는데.. 노가다이다. (난 nodejs로 짜서 변환했는데... 그래도 이건 아니다 싶었다.. v2.list로 바꾸고 리스트 파일 만들고 blobs에 hash이름으로 추가하고 이렇고 저렇고... ㅠㅠv2.list로 바꾸고 리스트 파일 만들고 blobs에 hash이름으로 추가하고 이렇고 저렇고...ㅠㅠ)

근데 나중에 알아서 이 방법을 썼는데...

$ sudo docker image load < cephcsi_v1.2.0.tar
$ sudo docker tag quay.io/cephcsi/cephcsi:v1.2.0 127.0.0.1:32000/cephcsi/cephcsi:v1.2.0
$ sudo docker push 127.0.0.1:32000/cephcsi/cephcsi:v1.2.0

이렇게 하면 된다... (모든 이미지가 이 방법이 먹히는건 아니다.. 휴...)

(3. ctr에 버그가 있어... - 2)

multi-platform 이미지를 자기 platform 것만 pull받은 경우 push가 되지 않는다. (export -> import 또는 pull) -> push 과정이 안되는 것이다.

#3915 PR에서 해결된거 같은데.. master에 merge되고 아직 release는 안된듯...ㅠㅠ

이건 우째야 할지 모르겠다... 하지만 위 방법처럼 그냥 docker를 통해서는 되는거 같다.

(4. 그러고 보니 docker 리포 주소를 다 바꾸는 수고가 엄청난데...?)

그렇다... 일단 다시 containerd.toml 파일을 보면 중간이 이런 부분이 있다.

    [plugins.cri.registry]
      [plugins.cri.registry.mirrors]
        [plugins.cri.registry.mirrors."docker.io"]
          endpoint = ["https://registry-1.docker.io"]
        [plugins.cri.registry.mirrors."localhost:32000"]
          endpoint = ["http://localhost:32000"]

registry 주소를 override할 수 있는 부분인데 유용하게 사용할 수 있다.

예를 들어 docker.io(docker hub)에 저장되는 이미지들을 로컬에서 받아오고 싶으면

    [plugins.cri.registry]
      [plugins.cri.registry.mirrors]
        [plugins.cri.registry.mirrors."docker.io"]
          endpoint = ["http://10.1.2.3:32000"]

이런식으로 하면 alpine:1.23.4 => 10.1.2.3:32000/library/alpine:1.23.4 에서 받아오게 된다. 이런식으로 override하면 image 를 일일히 바꿔주는 수고는 안해도 된다. (물론 node가 여러개면 여러개 각각 수정해줘야 한다...ㅠㅠ k8s전체 적용하는 방법 있음 알려주오...ㅠㅠ)

위에서 보았던 _sandbox_image_또한 local registry주소로 바꾸는걸 잊지 말길!

2.3. 더 좋은 방법 없을까?

thirdparty들을 쓰다 보면 quay.io, docker.io, k8s.gcr.io 등... 여러 registry를 쓰게 되며 이름이 중복될 가능성도 있고.. registry를 로컬에다 설치해야 하는데 registry들이 다 docker용으로 만들어져 있다...

기쁜 소식은 containerd.toml에서 [plugins.cri.registry.mirrors."*"] 이러한 문법이 동작한다는 것이다!

근데 그럼 뭐해.. 필요한 이미지를 로컬에다 저장하고 이미지를 검색하는 기능을 가진 서버가 없는데...

따라서 그건 내가 만들테니... 조금만 기다리길...ㅠㅠ

Comment +1

Ceph 설치 후 서버 동작중에 서버가 죽어버리는 문제가 발생했다.

 

어떤 상황이냐면...

 

1. 초기 동작시에는 문제가 없지만 IO가 좀 발생하면 문제가 발생함.

2. 문제 발생시 특정 동작에 hangs이 걸리고 아무것도 동작하지 않음 (Deadlock)

-> ps -aux 명령이 그러함.

ps aux 을 하면 프로세스 목록이 보이다가 곧 멈춰버리는데 보여줘야 할 프로세스 (마지막으로 보여지는 pid의 다음 것)에 문제가 있음.

cat /proc/(문제pid)/cmdline 등의 명령도 멈춰버림.

3. 시스템 정상종료 불가

-> unmonut 불가로 보임

 

커널 로그는 아래와 같다.

[ 5092.890984] libceph: osd2 up
[ 6646.588531] INFO: task containerd:18390 blocked for more than 120 seconds.
[ 6646.588868]       Tainted: G          I      4.15.0-91-generic #92-Ubuntu
[ 6646.589070] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 6646.589294] containerd      D    0 18390      1 0x00000000
[ 6646.589297] Call Trace:
[ 6646.589306]  __schedule+0x24e/0x880
[ 6646.589311]  ? __memcg_init_list_lru_node+0x70/0xd0
[ 6646.589313]  schedule+0x2c/0x80
[ 6646.589316]  rwsem_down_write_failed+0x1ea/0x360
[ 6646.589319]  ? ida_get_new_above+0x110/0x320
[ 6646.589325]  call_rwsem_down_write_failed+0x17/0x30
[ 6646.589326]  ? call_rwsem_down_write_failed+0x17/0x30
[ 6646.589328]  down_write+0x2d/0x40
[ 6646.589332]  register_shrinker_prepared+0x19/0x50
[ 6646.589336]  sget_userns+0x419/0x490
[ 6646.589338]  ? get_anon_bdev+0x100/0x100
[ 6646.589340]  sget+0x7d/0xa0
[ 6646.589342]  ? get_anon_bdev+0x100/0x100
[ 6646.589346]  ? ovl_posix_acl_xattr_set+0x300/0x300 [overlay]
[ 6646.589348]  mount_nodev+0x30/0xa0
[ 6646.589351]  ovl_mount+0x18/0x20 [overlay]
[ 6646.589353]  mount_fs+0x37/0x160
[ 6646.589357]  vfs_kern_mount.part.24+0x5d/0x110
[ 6646.589359]  do_mount+0x5ed/0xce0
[ 6646.589361]  ? copy_mount_options+0x2c/0x220
[ 6646.589363]  SyS_mount+0x98/0xe0
[ 6646.589367]  do_syscall_64+0x73/0x130
[ 6646.589370]  entry_SYSCALL_64_after_hwframe+0x3d/0xa2
[ 6646.589371] RIP: 0033:0x55635d40f28a
[ 6646.589372] RSP: 002b:000000c00186e358 EFLAGS: 00000216 ORIG_RAX: 00000000000000a5
[ 6646.589374] RAX: ffffffffffffffda RBX: 000000c00004e000 RCX: 000055635d40f28a
[ 6646.589375] RDX: 000000c0014d8818 RSI: 000000c002ef45a0 RDI: 000000c0014d8810
[ 6646.589376] RBP: 000000c00186e3f0 R08: 000000c0038e8b00 R09: 0000000000000000
[ 6646.589377] R10: 0000000000000000 R11: 0000000000000216 R12: ffffffffffffffff
[ 6646.589378] R13: 0000000000000010 R14: 000000000000000f R15: 0000000000000055
[ 6646.589400] INFO: task containerd:16952 blocked for more than 120 seconds.
[ 6646.589598]       Tainted: G          I      4.15.0-91-generic #92-Ubuntu
[ 6646.589790] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 6646.590013] containerd      D    0 16952      1 0x00000000
[ 6646.590016] Call Trace:
[ 6646.590020]  __schedule+0x24e/0x880
[ 6646.590023]  ? __memcg_init_list_lru_node+0x70/0xd0
[ 6646.590025]  schedule+0x2c/0x80
[ 6646.590028]  rwsem_down_write_failed+0x1ea/0x360
[ 6646.590031]  ? ida_get_new_above+0x110/0x320
[ 6646.590035]  call_rwsem_down_write_failed+0x17/0x30
[ 6646.590037]  ? call_rwsem_down_write_failed+0x17/0x30
[ 6646.590040]  down_write+0x2d/0x40
[ 6646.590043]  register_shrinker_prepared+0x19/0x50
[ 6646.590046]  sget_userns+0x419/0x490
[ 6646.590048]  ? get_anon_bdev+0x100/0x100
[ 6646.590052]  sget+0x7d/0xa0
[ 6646.590054]  ? get_anon_bdev+0x100/0x100
[ 6646.590059]  ? ovl_posix_acl_xattr_set+0x300/0x300 [overlay]
[ 6646.590062]  mount_nodev+0x30/0xa0
[ 6646.590067]  ovl_mount+0x18/0x20 [overlay]
[ 6646.590070]  mount_fs+0x37/0x160
[ 6646.590073]  vfs_kern_mount.part.24+0x5d/0x110
[ 6646.590076]  do_mount+0x5ed/0xce0
[ 6646.590079]  ? copy_mount_options+0x2c/0x220
[ 6646.590082]  SyS_mount+0x98/0xe0
[ 6646.590085]  do_syscall_64+0x73/0x130
[ 6646.590088]  entry_SYSCALL_64_after_hwframe+0x3d/0xa2
[ 6646.590090] RIP: 0033:0x55635d40f28a
[ 6646.590091] RSP: 002b:000000c0018725b0 EFLAGS: 00000202 ORIG_RAX: 00000000000000a5
[ 6646.590094] RAX: ffffffffffffffda RBX: 000000c000054f00 RCX: 000055635d40f28a
[ 6646.590095] RDX: 000000c0030c7ce8 RSI: 000000c00148bf60 RDI: 000000c0030c7ce0
[ 6646.590096] RBP: 000000c001872648 R08: 000000c00300f680 R09: 0000000000000000
[ 6646.590098] R10: 0000000000000000 R11: 0000000000000202 R12: ffffffffffffffff
[ 6646.590099] R13: 00000000000000fc R14: 00000000000000fb R15: 0000000000000100
[ 6646.590540] INFO: task xfsaild/rbd2:8223 blocked for more than 120 seconds.
[ 6646.590743]       Tainted: G          I      4.15.0-91-generic #92-Ubuntu
[ 6646.590939] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 6646.591165] xfsaild/rbd2    D    0  8223      2 0x80000000
[ 6646.591168] Call Trace:
[ 6646.591171]  __schedule+0x24e/0x880
[ 6646.591175]  ? lock_timer_base+0x6b/0x90
[ 6646.591178]  schedule+0x2c/0x80
[ 6646.591245]  _xfs_log_force+0x159/0x2a0 [xfs]
[ 6646.591250]  ? wake_up_q+0x80/0x80
[ 6646.591301]  ? xfsaild+0x1b6/0x7e0 [xfs]
[ 6646.591350]  xfs_log_force+0x2c/0x80 [xfs]
[ 6646.591400]  xfsaild+0x1b6/0x7e0 [xfs]
[ 6646.591404]  ? __schedule+0x256/0x880
[ 6646.591408]  kthread+0x121/0x140
[ 6646.591458]  ? xfs_trans_ail_cursor_first+0x90/0x90 [xfs]
[ 6646.591460]  ? kthread+0x121/0x140
[ 6646.591510]  ? xfs_trans_ail_cursor_first+0x90/0x90 [xfs]
[ 6646.591513]  ? kthread_create_worker_on_cpu+0x70/0x70
[ 6646.591517]  ret_from_fork+0x35/0x40
[ 6646.591539] INFO: task prometheus:10749 blocked for more than 120 seconds.
[ 6646.591740]       Tainted: G          I      4.15.0-91-generic #92-Ubuntu
[ 6646.591936] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 6646.592162] prometheus      D    0 10749  10332 0x00000000
[ 6646.592164] Call Trace:
[ 6646.592168]  __schedule+0x24e/0x880
[ 6646.592171]  schedule+0x2c/0x80
[ 6646.592173]  io_schedule+0x16/0x40
[ 6646.592176]  wait_on_page_bit+0xf4/0x130
[ 6646.592182]  ? page_cache_tree_insert+0xe0/0xe0
[ 6646.592186]  wait_for_stable_page+0x61/0x80
[ 6646.592188]  grab_cache_page_write_begin+0x37/0x40
[ 6646.592192]  iomap_write_begin.constprop.18+0x5b/0x140
[ 6646.592195]  iomap_write_actor+0x92/0x170
[ 6646.592198]  ? iomap_write_begin.constprop.18+0x140/0x140
[ 6646.592200]  iomap_apply+0xa5/0x120
[ 6646.592203]  ? iomap_write_begin.constprop.18+0x140/0x140
[ 6646.592205]  iomap_file_buffered_write+0x6e/0xa0
[ 6646.592207]  ? iomap_write_begin.constprop.18+0x140/0x140
[ 6646.592256]  xfs_file_buffered_aio_write+0xca/0x290 [xfs]
[ 6646.592261]  ? sock_read_iter+0x8f/0xf0
[ 6646.592309]  xfs_file_write_iter+0xac/0x160 [xfs]
[ 6646.592347]  new_sync_write+0xe7/0x140
[ 6646.592350]  __vfs_write+0x29/0x40
[ 6646.592353]  vfs_write+0xb1/0x1a0
[ 6646.592355]  SyS_write+0x5c/0xe0
[ 6646.592359]  do_syscall_64+0x73/0x130
[ 6646.592363]  entry_SYSCALL_64_after_hwframe+0x3d/0xa2
[ 6646.592365] RIP: 0033:0x47a170
[ 6646.592366] RSP: 002b:000000c006545278 EFLAGS: 00000212 ORIG_RAX: 0000000000000001
[ 6646.592369] RAX: ffffffffffffffda RBX: 000000c00004a000 RCX: 000000000047a170
[ 6646.592370] RDX: 000000000000023f RSI: 000000c000b4b88b RDI: 0000000000000026
[ 6646.592372] RBP: 000000c0065452c8 R08: 0000000000000000 R09: 0000000000000000
[ 6646.592373] R10: 0000000000000000 R11: 0000000000000212 R12: 000000000000477e
[ 6646.592374] R13: 000000000000387b R14: 0000000000004785 R15: 000000c000b4b88b
[ 6646.592397] INFO: task WTJourn.Flusher:13661 blocked for more than 120 seconds.
[ 6646.592611]       Tainted: G          I      4.15.0-91-generic #92-Ubuntu
[ 6646.592812] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 6646.593038] WTJourn.Flusher D    0 13661  11503 0x00000000
[ 6646.593040] Call Trace:
[ 6646.593044]  __schedule+0x24e/0x880
[ 6646.593045]  schedule+0x2c/0x80
[ 6646.593048]  io_schedule+0x16/0x40
[ 6646.593049]  wait_on_page_bit_common+0xd8/0x160
[ 6646.593053]  ? page_cache_tree_insert+0xe0/0xe0
[ 6646.593055]  __filemap_fdatawait_range+0xfa/0x160
[ 6646.593057]  ? __filemap_fdatawrite_range+0xcf/0x100
[ 6646.593060]  ? __filemap_fdatawrite_range+0xdb/0x100
[ 6646.593062]  file_write_and_wait_range+0x86/0xb0
[ 6646.593094]  xfs_file_fsync+0x5f/0x230 [xfs]
[ 6646.593100]  vfs_fsync_range+0x51/0xb0
[ 6646.593104]  do_fsync+0x3d/0x70
[ 6646.593107]  SyS_fdatasync+0x13/0x20
[ 6646.593109]  do_syscall_64+0x73/0x130
[ 6646.593112]  entry_SYSCALL_64_after_hwframe+0x3d/0xa2
[ 6646.593113] RIP: 0033:0x7fe3337432e7
[ 6646.593114] RSP: 002b:00007fe32c6c2400 EFLAGS: 00000293 ORIG_RAX: 000000000000004b
[ 6646.593116] RAX: ffffffffffffffda RBX: 0000000000000011 RCX: 00007fe3337432e7
[ 6646.593117] RDX: 0000000000000000 RSI: 0000000000000011 RDI: 0000000000000011
[ 6646.593118] RBP: 00007fe32c6c2440 R08: 0000000000000000 R09: 0000000000000000
[ 6646.593119] R10: 0000000000000020 R11: 0000000000000293 R12: 0000560acb599f40
[ 6646.593120] R13: 0000560ac884130b R14: 0000000000000000 R15: 0000560acdf52158
[ 6646.593235] INFO: task xfsaild/rbd13:20644 blocked for more than 120 seconds.
[ 6646.593444]       Tainted: G          I      4.15.0-91-generic #92-Ubuntu
[ 6646.593640] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 6646.593975] xfsaild/rbd13   D    0 20644      2 0x80000000
[ 6646.593978] Call Trace:
[ 6646.593981]  __schedule+0x24e/0x880
[ 6646.593983]  ? lock_timer_base+0x6b/0x90
[ 6646.593986]  schedule+0x2c/0x80
[ 6646.594020]  _xfs_log_force+0x159/0x2a0 [xfs]
[ 6646.594023]  ? wake_up_q+0x80/0x80
[ 6646.594055]  ? xfsaild+0x1b6/0x7e0 [xfs]
[ 6646.594087]  xfs_log_force+0x2c/0x80 [xfs]
[ 6646.594120]  xfsaild+0x1b6/0x7e0 [xfs]
[ 6646.594123]  kthread+0x121/0x140
[ 6646.594155]  ? xfs_trans_ail_cursor_first+0x90/0x90 [xfs]
[ 6646.594157]  ? kthread+0x121/0x140
[ 6646.594189]  ? xfs_trans_ail_cursor_first+0x90/0x90 [xfs]
[ 6646.594192]  ? kthread_create_worker_on_cpu+0x70/0x70
[ 6646.594195]  ret_from_fork+0x35/0x40
[ 6646.594233] INFO: task mongod:28103 blocked for more than 120 seconds.
[ 6646.594423]       Tainted: G          I      4.15.0-91-generic #92-Ubuntu
[ 6646.594616] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 6646.594839] mongod          D    0 28103  27425 0x00000000
[ 6646.594841] Call Trace:
[ 6646.594843]  __schedule+0x24e/0x880
[ 6646.594845]  schedule+0x2c/0x80
[ 6646.594847]  io_schedule+0x16/0x40
[ 6646.594848]  wait_on_page_bit+0xf4/0x130
[ 6646.594851]  ? page_cache_tree_insert+0xe0/0xe0
[ 6646.594853]  wait_for_stable_page+0x61/0x80
[ 6646.594855]  grab_cache_page_write_begin+0x37/0x40
[ 6646.594856]  iomap_write_begin.constprop.18+0x5b/0x140
[ 6646.594858]  iomap_write_actor+0x92/0x170
[ 6646.594860]  ? iomap_write_begin.constprop.18+0x140/0x140
[ 6646.594862]  iomap_apply+0xa5/0x120
[ 6646.594864]  ? iomap_write_begin.constprop.18+0x140/0x140
[ 6646.594865]  iomap_file_buffered_write+0x6e/0xa0
[ 6646.594866]  ? iomap_write_begin.constprop.18+0x140/0x140
[ 6646.594898]  xfs_file_buffered_aio_write+0xca/0x290 [xfs]
[ 6646.594931]  xfs_file_write_iter+0xac/0x160 [xfs]
[ 6646.594933]  new_sync_write+0xe7/0x140
[ 6646.594935]  __vfs_write+0x29/0x40
[ 6646.594937]  vfs_write+0xb1/0x1a0
[ 6646.594940]  SyS_pwrite64+0x95/0xb0
[ 6646.594942]  do_syscall_64+0x73/0x130
[ 6646.594945]  entry_SYSCALL_64_after_hwframe+0x3d/0xa2
[ 6646.594946] RIP: 0033:0x7f9b8d65e963
[ 6646.594947] RSP: 002b:00007f9b8b2a9970 EFLAGS: 00000293 ORIG_RAX: 0000000000000012
[ 6646.594949] RAX: ffffffffffffffda RBX: 0000000000000100 RCX: 00007f9b8d65e963
[ 6646.594949] RDX: 0000000000000100 RSI: 000055e0a90fd000 RDI: 000000000000000f
[ 6646.594950] RBP: 00007f9b8b2a99c0 R08: 000055e0a90fd000 R09: 0000000000000100
[ 6646.594951] R10: 0000000000064a80 R11: 0000000000000293 R12: 0000000000000100
[ 6646.594952] R13: 000055e0a90fd000 R14: 000055e0a62f4be0 R15: 0000000000064a80
[ 6646.594956] INFO: task WTJourn.Flusher:28149 blocked for more than 120 seconds.
[ 6646.595166]       Tainted: G          I      4.15.0-91-generic #92-Ubuntu
[ 6646.595367] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 6646.595590] WTJourn.Flusher D    0 28149  27425 0x00000000
[ 6646.595592] Call Trace:
[ 6646.595595]  __schedule+0x24e/0x880
[ 6646.595597]  schedule+0x2c/0x80
[ 6646.595598]  io_schedule+0x16/0x40
[ 6646.595600]  wait_on_page_bit_common+0xd8/0x160
[ 6646.595602]  ? page_cache_tree_insert+0xe0/0xe0
[ 6646.595604]  __filemap_fdatawait_range+0xfa/0x160
[ 6646.595606]  ? __filemap_fdatawrite_range+0xcf/0x100
[ 6646.595607]  ? __filemap_fdatawrite_range+0xdb/0x100
[ 6646.595609]  file_write_and_wait_range+0x86/0xb0
[ 6646.595640]  xfs_file_fsync+0x5f/0x230 [xfs]
[ 6646.595644]  vfs_fsync_range+0x51/0xb0
[ 6646.595646]  do_fsync+0x3d/0x70
[ 6646.595649]  SyS_fdatasync+0x13/0x20
[ 6646.595651]  do_syscall_64+0x73/0x130
[ 6646.595654]  entry_SYSCALL_64_after_hwframe+0x3d/0xa2
[ 6646.595655] RIP: 0033:0x7f9b8d39060d
[ 6646.595656] RSP: 002b:00007f9b882a3690 EFLAGS: 00000293 ORIG_RAX: 000000000000004b
[ 6646.595657] RAX: ffffffffffffffda RBX: 000055e0a631b840 RCX: 00007f9b8d39060d
[ 6646.595658] RDX: 000055e0a60bc8d0 RSI: 000000000000000f RDI: 000000000000000f
[ 6646.595659] RBP: 00007f9b882a36c0 R08: 0000000000000020 R09: 0000000000000020
[ 6646.595660] R10: 6769546465726957 R11: 0000000000000293 R12: 000055e0a60bc8d0
[ 6646.595661] R13: 000055e0a3172ef1 R14: 000055e0a60cc138 R15: 0000000000000000
[ 6646.595879] INFO: task msgr-worker-1:14875 blocked for more than 120 seconds.
[ 6646.596083]       Tainted: G          I      4.15.0-91-generic #92-Ubuntu
[ 6646.596277] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 6646.596631] msgr-worker-1   D    0 14875  14766 0x00000000
[ 6646.596634] Call Trace:
[ 6646.596637]  __schedule+0x24e/0x880
[ 6646.596639]  schedule+0x2c/0x80
[ 6646.596641]  rwsem_down_read_failed+0xf0/0x160
[ 6646.596645]  call_rwsem_down_read_failed+0x18/0x30
[ 6646.596647]  ? call_rwsem_down_read_failed+0x18/0x30
[ 6646.596649]  down_read+0x20/0x40
[ 6646.596654]  __do_page_fault+0x40a/0x4b0
[ 6646.596657]  ? vfs_read+0x115/0x130
[ 6646.596659]  do_page_fault+0x2e/0xe0
[ 6646.596662]  ? page_fault+0x2f/0x50
[ 6646.596664]  page_fault+0x45/0x50
[ 6646.596665] RIP: 0033:0x7f2fe6e16628
[ 6646.596666] RSP: 002b:00007f2fe0bdf250 EFLAGS: 00010206
[ 6646.596672] RAX: 00005585a80de000 RBX: 00000000000012ef RCX: 00005585a5208e80
[ 6646.596673] RDX: 0000000000002000 RSI: 0000000000000fff RDI: 00005585a5208880
[ 6646.596675] RBP: 0000000000001000 R08: 00007f2fe71e9f60 R09: 0000000000000060
[ 6646.596676] R10: 00007f2fe0bdf420 R11: 000000000000004a R12: 0000000000001000
[ 6646.596678] R13: 0000000000000030 R14: 00000000000012ef R15: 0000000000000000
[ 6646.596681] INFO: task log:14885 blocked for more than 120 seconds.
[ 6646.596865]       Tainted: G          I      4.15.0-91-generic #92-Ubuntu
[ 6646.597060] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 6646.597408] log             D    0 14885  14766 0x00000000
[ 6646.597419] Call Trace:
[ 6646.597422]  __schedule+0x24e/0x880
[ 6646.597424]  schedule+0x2c/0x80
[ 6646.597426]  schedule_preempt_disabled+0xe/0x10
[ 6646.597427]  __mutex_lock.isra.5+0x276/0x4e0
[ 6646.597430]  __mutex_lock_slowpath+0x13/0x20
[ 6646.597431]  ? __mutex_lock_slowpath+0x13/0x20
[ 6646.597433]  mutex_lock+0x2f/0x40
[ 6646.597467]  xfs_reclaim_inodes_ag+0x2b5/0x340 [xfs]
[ 6646.597471]  ? shrink_page_list+0x3e4/0xbc0
[ 6646.597474]  ? radix_tree_gang_lookup_tag+0xd9/0x160
[ 6646.597478]  ? __list_lru_walk_one.isra.5+0x37/0x140
[ 6646.597482]  ? iput+0x230/0x230
[ 6646.597513]  xfs_reclaim_inodes_nr+0x33/0x40 [xfs]
[ 6646.597545]  xfs_fs_free_cached_objects+0x19/0x20 [xfs]
[ 6646.597549]  super_cache_scan+0x165/0x1b0
[ 6646.597551]  shrink_slab.part.51+0x1e7/0x440
[ 6646.597554]  shrink_slab+0x29/0x30
[ 6646.597555]  shrink_node+0x11e/0x300
[ 6646.597558]  do_try_to_free_pages+0xc9/0x330
[ 6646.597560]  try_to_free_mem_cgroup_pages+0xfa/0x1e0
[ 6646.597565]  try_charge+0x245/0x6a0
[ 6646.597567]  mem_cgroup_try_charge+0x93/0x180
[ 6646.597571]  __handle_mm_fault+0x8de/0x1290
[ 6646.597573]  handle_mm_fault+0xb1/0x210
[ 6646.597576]  __do_page_fault+0x281/0x4b0
[ 6646.597578]  ? SyS_futex+0x13b/0x180
[ 6646.597580]  do_page_fault+0x2e/0xe0
[ 6646.597583]  ? page_fault+0x2f/0x50
[ 6646.597585]  page_fault+0x45/0x50
[ 6646.597588] RIP: 0033:0x55859c29203e
[ 6646.597589] RSP: 002b:00007f2fdfbdda70 EFLAGS: 00010206
[ 6646.597590] RAX: 000055859cc89e60 RBX: 00005585a5ce6200 RCX: 00005585a5ce6240
[ 6646.597591] RDX: 00005585a59ae800 RSI: 00005585a684404f RDI: f0f0f0f0f0f0f0f1
[ 6646.597592] RBP: 000000000000000f R08: 0000000000000000 R09: 0000000000000000
[ 6646.597593] R10: 0000000000000000 R11: 00007f2fe3a63610 R12: 00005585a6844440
[ 6646.597593] R13: 000000000000000a R14: 00005585a59dc780 R15: 15fde929947b3030
[ 7202.983375] libceph: osd2 down

 

이 문제는 CephBlockPool을 사용하며 storage class의 filesystem을 xfs으로 사용할 때 문제가 발생한다.

 

현재 (2020/03/22) rook-ceph v1.2 & ceph v14.2.8으로써 최신버전임에도 문제가 발생하며

지금 kernel 4.15.0-91-generic 을 사용중인데 이후 커널버전에서 패치가 되었단 그런 내용이 있다.

 

관련 이슈는 아래내용을 참고하시길...

 

일단 ext4를 써야겠다.

 

www.github.com/rook/rook/issues/3132#issuecomment-580508760

 

Very high CPU usage on Ceph OSDs (v1.0, v1.1) · Issue #3132 · rook/rook

I am not sure where the problem is but I am seeing very high CPU usage since I started using v1.0.0. With three small clusters load average skyrockets to the 10s quite quickly making the nodes unus...

github.com

satoru-takeuchi 의 코멘트이다.

  • Feb 4, 2020: Fixed the description based on the comments in #4802 .

I got an answer from a Ceph kernel guy. Here is the summary from the user's point of view.

  • When does this problem happen?

    • Making an XFS filesystem on the top of RBD and NDB.
    • Its possibility gets higher when RBD client and OSD daemon are co-located.
  • How to bypass this problem?

    • Use ext4 or any other filesystems rather than XFS. Filesystem type can be specified with csi.storage.k8s.io/fstype in StorageClass resource.
  • Will this problem be fixed?

  • Why does this problem happen?

    • The deadlock of the following logic in the kernel.
      • XFS will start pruning its caches, taking filesystem locks and kicking off I/O on rbd
      • Memory allocation request(s) made by the OSD(s) to service that I/O may recurse back onto the same XFS, needing the same locks.

For more information, please refer to the following URL if you're interested in the detailed kernel logic.

https://marc.info/?l=ceph-devel&m=158029603909623&w=2

@BlaineEXE So, how should we deal with this Rook's issue. My idea is the followings.

  • Close this issue since it's not a Rook's problem.
  • Tell this information to Ceph's issue that you created, not to forget to fix Ceph side.

 

 

Comment +0